opencode-acp-control

🤖 OpenCode 协议级自动化控制中枢

基于 Agent Client Protocol 的 OpenCode 自动化控制技能,支持会话管理、对话续接与版本更新,为开发者提供可编程的 AI 编码助手集成能力。

收藏
12.8k
安装
2.9k
版本
2.0
CLS 安全性认证2026-05-01
点击查看完整报告 >

使用说明

核心用法

OpenCode ACP Control 是一个面向开发者的协议级控制技能,通过 Agent Client Protocol (ACP) 实现对 OpenCode AI 编程助手的完整生命周期管理。该技能采用 JSON-RPC 2.0 通信协议,支持四大核心操作场景:启动 ACP 服务并建立初始化连接、创建新会话或加载历史会话、发送结构化提示词并轮询流式响应、以及管理 OpenCode 版本更新。

具体工作流程遵循严格的协议握手机制:首先通过 opencode acp 后台启动服务,随后依次完成 initialize 握手、session/new 创建会话,最终通过 session/prompt 发送用户请求。所有交互均采用 newline-delimited JSON-RPC 格式,开发者需维护 messageId 计数器并实施 2 秒间隔的轮询策略,直至收到包含 stopReason 的终止响应。

显著优点

该技能的最大价值在于将 OpenCode 从交互式工具转化为可编程服务。会话持久化机制允许跨进程恢复对话上下文,配合 session/list 和 session/load 能力,实现了类似数据库事务的连续性体验。版本管理功能通过 GitHub releases 自动检测更新,结合进程重启触发自动升级,降低了运维负担。

协议层面的标准化设计带来良好的可扩展性——ACP 规范支持 fs 文件操作和 terminal 终端能力声明,为后续功能迭代预留了接口。此外,纯文档型实现使其具备跨平台兼容性,只要目标系统安装 OpenCode CLI 即可运行。

潜在缺点与局限性

轮询式架构是首要瓶颈:2 秒固定间隔的 process.poll 在 5 分钟超时窗口内最多产生 150 次请求,对于长思考任务效率低下且资源消耗明显。协议状态管理复杂度高,开发者需同时追踪 processSessionId、opencodeSessionId 和 messageId 三类标识符,极易出现状态不一致。

功能层面存在明显边界:该技能仅提供协议封装指导,不包含 OpenCode 本体,用户需自行处理 CLI 安装和环境配置。MCP 服务器参数虽在协议中预留,但实际支持程度取决于 OpenCode 版本实现。此外,流式响应的 session/update 通知需要客户端实现消息重组逻辑,增加了集成复杂度。

适合的目标群体

核心受众为构建 AI 编程工作流的自动化工程师和 DevOps 团队,特别是需要将 OpenCode 集成到 CI/CD 流水线、IDE 插件或自定义开发环境的场景。对于追求对话可审计、可恢复的企业级用户,该技能的会话管理能力具有独特价值。技术文档作者和 AI 工具链开发者也可将其作为 ACP 协议的参考实现。

不适合普通终端用户直接使用——协议级操作要求开发者具备 JSON-RPC、进程管理和异步编程经验。

使用风险

性能风险方面,轮询机制在高频场景下可能触发系统进程句柄限制,background 模式下的僵尸进程需依赖显式 process.kill 清理。依赖风险体现在 OpenCode CLI 的版本兼容性:ACP 协议版本 1 的声明与实际行为可能存在偏差,且自动更新机制依赖 GitHub 可用性。操作风险集中于工作目录参数——错误的 cwd 配置可能导致 OpenCode 在意外路径执行文件操作,建议实施路径白名单校验。

安全解读

核心用法

本 Skill 是一个纯文档型指导工具,教会 LLM/Agent 如何通过 OpenCode 的 Agent Client Protocol (ACP) 直接控制 OpenCode CLI。完整覆盖五大核心场景:

1. 启动与初始化 — 使用 bash 后台启动 opencode acp,通过 process.write 发送 JSON-RPC 初始化握手
2. 会话管理 — 创建新会话 (session/new)、发送提示词 (session/prompt)、轮询响应 (process.poll)

3. 对话续接 — 列出历史会话、让用户选择、通过 session/load 恢复完整对话上下文

4. 自动更新 — 对比当前与 GitHub 最新版本,智能重启触发自动更新

5. 进程控制 — 优雅终止、超时处理、错误恢复策略

所有交互遵循 JSON-RPC 2.0 + 换行分隔 协议,需维护 message ID 计数器和双 session ID(进程 ID + OpenCode 会话 ID)。

显著优点

  • 协议级原生控制:直接对接 ACP 协议,比 GUI 操作更灵活、可脚本化
  • 会话持久化:对话历史服务器端保存,进程重启后可无缝续接
  • 流式响应处理:支持 session/update 通知的实时收集与拼接
  • 更新自动化:内置版本对比与智能重启逻辑,减少人工维护
  • 零依赖:纯 Markdown 文档,无外部代码执行,安全可靠

潜在局限

  • T3 来源等级:作者为个人开发者,未经大型组织安全审计
  • 手动协议繁琐:需自行处理 JSON-RPC 封装、轮询、ID 计数、换行符等底层细节
  • 超时与容错:5 分钟硬超时、进程崩溃需手动重启,无自动重连机制
  • MCP 服务器配置session/newsession/load 要求显式传入 mcpServers 数组,空配置可能影响功能
  • 平台依赖:仅适用于已安装 OpenCode CLI 的环境

适合人群

  • 需要将 OpenCode 集成到自动化工作流的开发者
  • 构建自定义 Agent 界面或 IDE 插件的工程师
  • 希望程序化批量操作 OpenCode 会话的高级用户
  • 对 ACP 协议有学习需求的技术人员

常规风险

  • 进程误杀process.kill 操作若 sessionId 错误可能影响其他进程(需仔细核对)
  • 工作目录注入workdir 参数若来自用户输入需做路径校验,避免目录遍历
  • 轮询资源消耗:2 秒间隔轮询 + 5 分钟超时,高频使用可能占用较多 CPU/网络资源
  • 版本检查依赖webfetch 访问 GitHub releases,网络不可达时更新检查失败
  • JSON-RPC 格式错误:手动拼接 JSON 时转义或换行符处理不当会导致协议解析失败

opencode-acp-control 内容

手动下载zip · 4.0 kB
SKILL.mdtext/markdown
请选择文件