技能简介
这个技能通过代理客户端协议(ACP)直接控制OpenCode。支持启动会话、发送提示、恢复对话和管理OpenCode更新。使用JSON-RPC 2.0格式进行通信,支持后台运行和会话管理。
业务背景
OpenCode协议控制技能让业务人员无需手动操作命令行,即可通过标准化接口直接驱动OpenCode执行代码任务。支持会话保持与恢复,适合需要长时间运行的自动化开发场景,如批量代码审查、持续集成中的智能补全等,降低技术门槛,提升研发流程的自动化程度。
落地案例:某团队需对遗留项目进行批量重构:运维人员在低代码平台配置工作目录与重构规则,该技能自动启动OpenCode会话并发送提示;后台轮询获取AI生成的重构建议,5分钟内完成代码分析后返回结果。若网络中断,可凭会话ID恢复进度,避免重复劳动。
能做什么
- 启动OpenCode ACP会话
- 发送JSON-RPC消息与OpenCode交互
- 轮询获取响应内容
- 恢复之前的会话
- 管理和终止会话
- 处理流式内容更新
使用说明
安装技能:
clawhub install opencode-acp-control
前置要求:需要安装opencode CLI工具
快速参考:
# 启动OpenCode
bash(command: "opencode acp", background: true)
# 发送消息
process.write(sessionId, data: "\n")
# 读取响应
process.poll(sessionId) # 每2秒重复
# 停止OpenCode
process.kill(sessionId)
# 列出会话
bash(command: "opencode session list")
# 检查版本
bash(command: "opencode --version")
工作流程:
1. 启动OpenCode:
bash(command: "opencode acp", background: true, workdir: "/path/to/project")
# 保存返回的sessionId
2. 初始化连接:
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{"fs":{"readTextFile":true,"writeTextFile":true},"terminal":true},"clientInfo":{"name":"clawdbot","version":"1.0.0"}}}
3. 创建会话:使用session/new方法,保存返回的sessionId
4. 发送提示:使用session/prompt方法,包含sessionId和prompt内容
5. 轮询响应:每2秒轮询一次,收集session/update通知,直到出现stopReason
6. 终止会话:使用process.kill(sessionId)
停止原因:
end_turn– 代理完成响应cancelled– 已取消max_tokens– 达到token限制
状态追踪:需要记录processSessionId(bash工具返回)、opencodeSessionId(session/new返回)、messageId(每次请求递增)
ACP协议文档:https://agentclientprotocol.com/llms.txt
输入与输出
见下方输入与输出表格。
| 项目 | 内容 |
|---|---|
| 输入 | 工作目录路径、提示内容、会话ID |
| 输出 | JSON-RPC响应、流式内容更新、会话状态、stopReason |
| 适用人群 | 开发者、OpenCode用户、自动化工程师、CLI工具集成者 |
| 不包含 | OpenCode CLI(需单独安装)、ACP协议服务器、目标项目代码 |
风险提示
- 原始页信息不足:缺少opencode CLI安装命令
- 需要轮询获取响应,最多等待5分钟(150次轮询)
- 所有消息必须以换行符结尾
- messageId需要自行维护计数器
- 网络问题可能导致进程退出,需重新启动
来源信息
原始链接:https://github.com/openclaw/skills/tree/main/skills/bjesuiter/opencode-acp-control/SKILL.md
来源类型:github
