SuperAPI AI 工具集

acp

智能体与模型

查看项目

更新于 10-26 18:53

技能介绍

用途 该技能用于将 ACP 客户端接入 bro 的钩子接缝。客户端不再直接与真实 agent 通信,而是先启动 bro 作为代理,由 bro 启动真实 agent,从而在会话首个提示前注入 bro 的上下文。所有机制由 bro CLI 实现,本技能仅承载策略。

主要能力 bro acp proxy -- <agent cmd> 在前台运行代理:stdin/stdout 即上游线路;-- 为必需分隔符,其后命令直接 exec 执行(不经 shell),并设置 BRO_HOOKS=0,使下游进程树不再重复运行钩子。请求、通知、_ 方法、_meta 和错误信封均原样双向透传。唯一改写是接缝:会话首个 session/prompt 前置一个文本块,携带与 bro 钩子相同的 session-start 和 prompt-submit 上下文,探测在 session/new 的 cwd 内进行;后续提示仅携带 prompt-submit 上下文。

使用方式 接入客户端时,按各客户端配置自定义 ACP 服务器(stdio)的方式,把 argv 指向 bro。例如 devin 使用 bro acp proxy -- devin acp,kilo 使用 bro acp proxy -- kilo acp;Zed、JetBrains、Neovim 以相同 argv 形式添加为外部 agent。代理可在任意位置运行,接缝探测的是 session/new 的 cwd,因此在其他仓库打开的会话会获得该仓库的上下文,若不可用则失败开放(与钩子一致)。

退出码:0 表示客户端结束线路;1 表示下游先退出;2 表示用法错误。

接缝细节 会话上下文在进程内收集(钩子收集器以库形式使用,不启动 bro hooks 子进程),每个会话仅一次,且只在首个提示时进行。若接缝收集期间收到 session/cancel,被挂起的提示以 stopReason:'cancelled' 应答,线路上不会出现取消后的提示。session/update 块不承担探测开销,接缝映射到线路级事件而非增量。权限策略(bro-9qopj)、工具调用守卫与停止门(bro-u2eps)、agent 模式(bro-tegz2)属于独立事项,目前权限请求原样转发。

遥测 acp.proxy.session 和 acp.proxy.turn 两个 otel span 包裹每个会话与提示;session/update 供给 agentTurnPlane(by: 'acp proxy')。未打标运行(无 BRO_AGENT_ID,即人工驱动代理)仍会记录日志:<git-common>/bro/proxy/acp-<session>.events.jsonl。

适用场景 需要在 ACP 客户端与真实 agent 之间插入 bro 上下文、统一钩子行为的开发环境。

限制 当前仅实现首个提示的上下文注入;权限请求尚未定制;其他钩子能力仍为独立待办。