mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
Major changes: - Add A2A protocol (Google Agent-to-Agent) - Add ACP protocol (Agent Communication) - Add MCP protocol (Model Context Protocol) - Add LSP protocol (Language Server Protocol) - Add environment variables spec (env.md) - Add path spec with XDG and Linux server support (path.md) - Update ABP protocol to plugin-as-service model - Delete legacy OpenSpec change proposals New protocol specs: - a2a.md: Cross-platform agent interoperability - acp.md: Local agent control (IDE integration) - mcp.md: AI model to tools/data connection - lsp.md: Editor language features - abp.md: AstrBot plugin protocol - env.md: Environment variable conventions - path.md: XDG + Linux server paths
3.5 KiB
3.5 KiB
ACP (Agent Communication Protocol) 协议规范
概述
ACP 是一个开放协议,用于多智能体系统中的智能体间通信。 AstrBot 将 ACP 实现为客户端,连接到暴露智能体能力的 ACP 服务器/服务。
参考: 受 [Google A2A](https://google-a2a.10140099 .io/) (Agent-to-Agent Protocol) 启发
架构
┌─────────────────────────────────────┐
│ AstrBot (ACP 客户端) │
└─────────────────────────────────────┘
│ JSON-RPC 2.0
▼
┌─────────────────────────────────────┐
│ ACP 服务器/服务 │
│ - 智能体注册表 │
│ - 任务委托 │
│ - 状态同步 │
└─────────────────────────────────────┘
传输层
TCP 传输
- 适用场景: 本地或云端智能体服务
- 协议: 基于 TCP 的 JSON-RPC 2.0
- 头部:
Content-Length前缀(与 LSP 相同)
Unix Socket 传输
- 适用场景: 高性能本地进程间通信
- 协议: 通过 Unix 域套接字的 JSON-RPC 2.0
消息格式
所有消息均为 JSON-RPC 2.0,带 Content-Length 头:
Content-Length: <字节数>\r\n
\r\n
<json_body>
请求
{
"jsonrpc": "2.0",
"id": "唯一标识",
"method": "agent/call",
"params": {
"agent": "智能体名称",
"action": "动作名称",
"args": { ... }
}
}
响应
{
"jsonrpc": "2.0",
"id": "唯一标识",
"result": {
"status": "success",
"data": { ... }
}
}
错误
{
"jsonrpc": "2.0",
"id": "唯一标识",
"error": {
"code": -32600,
"message": "无效请求",
"data": { ... }
}
}
核心方法
智能体管理
| 方法 | 描述 |
|---|---|
agent/list |
列出可用智能体 |
agent/info |
获取智能体能力和状态 |
agent/call |
调用智能体的动作 |
agent/subscribe |
订阅智能体事件 |
任务操作
| 方法 | 描述 |
|---|---|
task/create |
创建新任务 |
task/status |
获取任务状态 |
task/result |
获取任务结果 |
task/cancel |
取消运行中的任务 |
通信
| 方法 | 描述 |
|---|---|
message/send |
向智能体发送消息 |
message/broadcast |
向所有智能体广播 |
错误码
| 码值 | 名称 | 描述 |
|---|---|---|
| -32700 | Parse Error | 无效的 JSON |
| -32600 | Invalid Request | 格式错误的请求 |
| -32601 | Method Not Found | 未知方法 |
| -32602 | Invalid Params | 无效参数 |
| -32603 | Internal Error | 服务器错误 |
| -32000 | Agent Not Found | 未找到智能体 |
| -32001 | Agent Busy | 智能体正在处理另一请求 |
| -32002 | Task Not Found | 未找到任务 |
智能体发现
智能体公布其能力:
{
"agent": "code-reviewer",
"version": "1.0.0",
"capabilities": ["review", "lint", "suggest"],
"endpoints": {
"tcp": "127.0.0.1:9001",
"unix": "/var/run/acp/code-reviewer.sock"
}
}
实现注意事项
- ACP 客户端维护多个智能体的连接池
- 请求可按智能体名称或能力路由
- 通过分块传输支持流式响应
- 心跳机制保持连接健康