Langcli logoAI编程助手
ACP整合

ACP是什么

了解什么是ACP

一、功能概述

ACP (Agent Client Protocol) 是一种标准化的 stdio 协议,允许 IDE 和编辑器通过 stdin/stdout 的 NDJSON 流驱动 AI Agent。Langcli 实现了完整的 ACP agent 端,可以被 Zed、Cursor、VScode 等支持 ACP 的客户端直接调用。

核心特性

  • 会话管理:新建 / 恢复 / 加载 / 分叉 / 关闭会话
  • 历史回放:恢复会话时自动加载并回放对话历史
  • 权限桥接:ACP 客户端的权限决策映射到 Langcli 的工具权限系统
  • 斜杠命令 & Skills:加载真实命令列表,支持 /commit、/review 等 prompt 型 skill
  • Context Window 跟踪:精确的 usage_update,含 model prefix matching
  • Prompt 排队:支持连续发送多条 prompt,自动排队处理
  • 模式切换:auto / default / acceptEdits / plan / dontAsk / bypassPermissions
  • 模型切换:运行时切换 AI 模型

二、架构

┌──────────────┐    NDJSON/stdio    ┌─────────────────────-┐
│  Zed / IDE   │ ◄────────────────► │  Langcli ACP Agent   │
│  (Client)    │   stdin / stdout   │  (Agent)             │
└──────────────┘                    │                      │
                                    │  entry.ts            │ ← stdio → NDJSON stream
                                    │  agent.ts            │ ← ACP protocol handler
                                    │  bridge.ts           │ ← SDKMessage → ACP SessionUpdate
                                    │  permissions.ts      │ ← 权限桥接
                                    │  utils.ts            │ ← 通用工具
                                    │                      │
                                    │  QueryEngine         │ ← 内部查询引擎
                                    └──────────────────────┘

三、ACP 协议支持矩阵

方法状态说明
initialize✅返回 agent 信息和能力
authenticate✅无需认证(自托管)
newSession✅创建新会话
resumeSession✅恢复已有会话(含历史回放)
loadSession✅加载指定会话(含历史回放)
listSessions✅列出可用会话
forkSession✅分叉会话
closeSession✅关闭会话
prompt✅发送消息,支持排队
cancel✅取消当前/排队的 prompt
setSessionMode✅切换权限模式
setSessionModel✅切换 AI 模型
setSessionConfigOption✅动态修改配置

SessionUpdate 类型

类型状态说明
agent_message_chunk✅助手文本消息
agent_thought_chunk✅思考/推理内容
user_message_chunk✅用户消息(历史回放)
tool_call✅工具调用开始
tool_call_update✅工具调用结果/状态更新
usage_update✅token 用量 + context window
plan✅TodoWrite → plan entries
available_commands_update✅斜杠命令 & skills 列表
current_mode_update✅模式切换通知
config_option_update✅配置更新通知

最后更新