通信模型
该协议遵循 JSON-RPC 2.0 规范,包含两种类型的消息:- 方法:期望返回结果或错误的请求-响应对
- 通知:单向消息,不期望响应
消息流
典型的流程遵循以下模式:代理
代理是使用生成式 AI 自主修改代码的程序。它们通常作为客户端的子进程运行。基线方法
initialize
authenticate
与代理进行身份验证(如果需要)。
可选方法
session/set_mode
通知
客户端
客户端提供用户与代理之间的接口。它们通常是代码编辑器(IDE、文本编辑器),但也可以是用于与代理交互的其他 UI。客户端管理环境、处理用户交互并控制对资源的访问。基线方法
可选方法
terminal/output
获取终端输出和退出状态(需要
terminal 功能)。terminal/release
释放终端(需要
terminal 功能)。terminal/wait_for_exit
等待终端命令退出(需要
terminal 功能)。terminal/kill
在不释放的情况下终止终端命令(需要
terminal 功能)。通知
参数要求
- 协议中的所有文件路径必须是绝对路径。
- 行号从 1 开始
错误处理
所有方法都遵循标准 JSON-RPC 2.0 错误处理:- 成功响应包含
result字段 - 错误包含带有
code和message的error对象 - 通知永远不会收到响应(成功或错误)
可扩展性
协议提供了内置机制来添加自定义功能,同时保持兼容性:- 使用
_meta字段添加自定义数据 - 通过在名称前加下划线(
_)创建自定义方法 - 在初始化期间宣告自定义功能