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_updatetoken 用量 + context window
planTodoWrite → plan entries
available_commands_update斜杠命令 & skills 列表
current_mode_update模式切换通知
config_option_update配置更新通知

最后更新