返回顶部
o

opencode-acp-controlOpenCode ACP控制

Control OpenCode directly via the Agent Client Protocol (ACP). Start sessions, send prompts, resume conversations, and manage OpenCode updates.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
4,268
下载量
免费
免费
9
收藏
概述
安装方式
版本历史

opencode-acp-control

OpenCode ACP 技能

通过代理客户端协议(ACP)直接控制 OpenCode。

元数据

  • - ACP 协议文档(供代理/LLM 使用):https://agentclientprotocol.com/llms.txt
  • GitHub 仓库:https://github.com/bjesuiter/opencode-acp-skill
  • 如果此技能出现问题,请在此处提交问题:https://github.com/bjesuiter/opencode-acp-skill/issues

快速参考

操作方法
启动 OpenCodebash(command: opencode acp, background: true)
发送消息
process.write(sessionId, data: \n) | | 读取响应 | process.poll(sessionId) - 每 2 秒重复一次 | | 停止 OpenCode | process.kill(sessionId) | | 列出会话 | bash(command: opencode session list, workdir: ...) | | 恢复会话 | 列出会话 → 询问用户 → session/load | | 检查版本 | bash(command: opencode --version) |

启动 OpenCode

bash(
command: opencode acp,
background: true,
workdir: /path/to/your/project
)

保存返回的 sessionId - 后续所有命令都需要它。

协议基础

  • - 所有消息均为 JSON-RPC 2.0 格式
  • 消息以 换行符分隔(每条以 \n 结尾)
  • 维护一个从 0 开始的 消息 ID 计数器

分步工作流程

步骤 1:初始化连接

启动 OpenCode 后立即发送:

json
{jsonrpc:2.0,id:0,method:initialize,params:{protocolVersion:1,clientCapabilities:{fs:{readTextFile:true,writeTextFile:true},terminal:true},clientInfo:{name:clawdbot,title:Clawdbot,version:1.0.0}}}

轮询响应。期望 result.protocolVersion: 1。

步骤 2:创建会话

json
{jsonrpc:2.0,id:1,method:session/new,params:{cwd:/path/to/project,mcpServers:[]}}

轮询响应。保存 result.sessionId(例如 sess_abc123)。

步骤 3:发送提示

json
{jsonrpc:2.0,id:2,method:session/prompt,params:{sessionId:sess_abc123,prompt:[{type:text,text:您的问题在这里}]}}

每 2 秒轮询一次。您将收到:

  • - session/update 通知(流式内容)
  • 包含 result.stopReason 的最终响应

步骤 4:读取响应

每次轮询可能返回多行。将每行解析为 JSON:

  • - 通知:method: session/update - 收集这些作为响应内容
  • 响应:具有与您的请求匹配的 id - 当出现 stopReason 时停止轮询

步骤 5:取消(如果需要)

json
{jsonrpc:2.0,method:session/cancel,params:{sessionId:sess_abc123}}

无需等待响应 - 这是一个通知。

需要跟踪的状态

每个 OpenCode 实例,跟踪:

  • - processSessionId - 来自 bash 工具(clawdbot 的进程 ID)
  • opencodeSessionId - 来自 session/new 响应(OpenCode 的会话 ID)
  • messageId - 每次发送请求时递增

轮询策略

  • - 每 2 秒 轮询一次
  • 持续直到收到包含 stopReason 的响应
  • 最长等待:5 分钟(150 次轮询)
  • 如果没有响应,视为操作超时

常见停止原因

stopReason含义
end_turn代理完成响应
cancelled
您取消了提示 | | max_tokens | 达到令牌限制 |

错误处理

问题解决方案
空轮询响应继续轮询 - 代理正在思考
解析错误
跳过格式错误的行,继续 | | 进程退出 | 重新启动 OpenCode | | 5 分钟后无响应 | 终止进程,重新开始 |

示例:完整交互

  1. 1. bash(command: opencode acp, background: true, workdir: /home/user/myproject)
-> processSessionId: bg_42
  1. 2. process.write(sessionId: bg_42, data: {jsonrpc:2.0,id:0,method:initialize,...}\n)
process.poll(sessionId: bg_42) -> 初始化响应
  1. 3. process.write(sessionId: bg_42, data: {jsonrpc:2.0,id:1,method:session/new,params:{cwd:/home/user/myproject,mcpServers:[]}}\n)
process.poll(sessionId: bg42) -> opencodeSessionId: sessxyz789
  1. 4. process.write(sessionId: bg42, data: {jsonrpc:2.0,id:2,method:session/prompt,params:{sessionId:sessxyz789,prompt:[{type:text,text:列出所有 TypeScript 文件}]}}\n)
  1. 5. process.poll(sessionId: bg_42) 每 2 秒直到 stopReason
-> 收集所有 session/update 内容 -> 最终响应:stopReason: end_turn
  1. 6. 完成后:process.kill(sessionId: bg_42)

恢复会话

通过让用户从可用会话中选择来恢复之前的 OpenCode 会话。

步骤 1:列出可用会话

bash(command: opencode session list, workdir: /path/to/project)

示例输出:

ID Updated Messages
ses_451cd8ae0ffegNQsh59nuM3VVy 2026-01-11 15:30 12
ses_451a89e63ffea2TQIpnDGtJBkS 2026-01-10 09:15 5
ses_4518e90d0ffeJIpOFI3t3Jd23Q 2026-01-09 14:22 8

步骤 2:询问用户选择

向用户展示列表并询问要恢复哪个会话:

您想恢复哪个会话?

  1. 1. ses451cd8ae...(12 条消息,更新于 2026-01-11)
  2. ses451a89e6...(5 条消息,更新于 2026-01-10)
  3. ses_4518e90d...(8 条消息,更新于 2026-01-09)

输入会话编号或 ID:

步骤 3:加载所选会话

用户响应后(例如 1、第一个 或 ses_451cd8ae...):

  1. 1. 启动 OpenCode ACP

bash(command: opencode acp, background: true, workdir: /path/to/project)

  1. 2. 初始化
json {jsonrpc:2.0,id:0,method:initialize,params:{...}}
  1. 3. 加载会话
json {jsonrpc:2.0,id:1,method:session/load,params:{sessionId:ses_451cd8ae0ffegNQsh59nuM3VVy,cwd:/path/to/project,mcpServers:[]}}

注意:session/load 需要 cwd 和 mcpServers 参数。

加载时,OpenCode 会将完整的对话历史流式传输回给您。

恢复工作流程总结

function resumeSession(workdir):
# 列出可用会话
output = bash(opencode session list, workdir: workdir)
sessions = parseSessionList(output)

if sessions.empty:
notify(未找到之前的会话。重新开始。)
return createNewSession(workdir)

# 询问用户选择
choice = askUser(要恢复哪个会话?, sessions)
selectedId = matchUserChoice(choice, sessions)

# 启动 OpenCode 并加载会话
process = bash(opencode acp, background: true, workdir: workdir)
initialize(process)

session_load(process, selectedId, workdir, mcpServers

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 opencode-acp-control-1776333606 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 opencode-acp-control-1776333606 技能

通过命令行安装

skillhub install opencode-acp-control-1776333606

下载

⬇ 下载 opencode-acp-control v1.0.2(免费)

文件大小: 4.18 KB | 发布时间: 2026-4-17 14:21

v1.0.2 最新 2026-4-17 14:21
- Updated skill metadata to version 1.0.2.
- Added a dedicated metadata section with links to protocol docs, GitHub repo, and issue tracker.
- Minor formatting changes and clarifications in documentation.
- No changes to core skill functionality or usage instructions.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部