用途
本技能用于通过 Agent Client Protocol(ACP)直接控制 OpenCode。它定义了一套让 AI 智能体(如 Clawdbot)与 OpenCode 进程交互的操作流程,涵盖启动、通信、会话恢复和版本更新。
主要能力
- 启动 OpenCode:使用
bash(command: "opencode acp", background: true, workdir: "...")后台启动 OpenCode,并保存返回的进程会话 ID(processSessionId)。 - 发送提示词:通过
process.write(sessionId, data: "<json-rpc>\n")向 OpenCode 会话写入 JSON-RPC 消息。 - 读取响应:通过
process.poll(sessionId)每 2 秒轮询一次响应,收集session/update流式通知,直到收到包含stopReason的最终响应。 - 取消操作:发送
session/cancel通知(无需响应)取消当前提示。 - 列出与恢复会话:通过
opencode session list列出历史会话,让用户选择后使用session/load加载并恢复完整对话历史。 - 检查与更新 OpenCode:通过
opencode --version检查当前版本,抓取 GitHub Releases 最新版本并比较;若需更新,停止所有 OpenCode 进程后重启以触发自动下载新二进制文件,并再次验证版本。
使用方式
所有消息为 JSON-RPC 2.0 格式,以换行符(\n)结尾。消息 ID 从 0 开始递增。核心工作流:
- 启动 OpenCode 并保存 processSessionId。
- 发送
initialize请求,期望返回protocolVersion: 1。 - 发送
session/new请求,保存返回的sessionId(opencodeSessionId)。 - 使用
session/prompt发送提示词,每 2 秒轮询,处理session/update通知和最终响应(stopReason)。 - 完成后使用
process.kill(sessionId)终止进程。
恢复会话时:先 opencode session list 列出会话,展示给用户选择,然后启动 OpenCode、初始化、再 session/load(需 sessionId、cwd、mcpServers 参数)。加载后对话历史会完整流式回传。
适用场景
- 需要在 AI 智能体中自动化调用 OpenCode 进行编码辅助。
- 需要管理多个 OpenCode 会话并恢复历史对话。
- 需要自动检查并触发 OpenCode 版本更新。
限制
- 轮询最大等待时间为 5 分钟(150 次轮询),超时视为操作失败。
- 自动更新依赖 OpenCode 重启时自动下载二进制文件,若失败需手动执行
curl -fsSL https://opencode.dev/install | bash。 - 本技能文档未提供具体的收费、价格或平台支持信息。
元数据
- 协议文档:https://agentclientprotocol.com/llms.txt
- GitHub 仓库:https://github.com/bjesuiter/opencode-acp-skill
- 问题反馈:https://github.com/bjesuiter/opencode-acp-skill/issues