opencode-acp-control

🎮 OpenCode ACP 协议智能控制

基于 Agent Client Protocol 标准,提供 OpenCode 程序化控制能力,支持会话管理、自动化工作流集成与版本更新管理。

收藏
762
安装
313
版本
latest
CLS 安全性认证2026-07-01
点击查看完整报告 >

使用说明

核心用法

OpenCode ACP Skill 是一套纯文档型的协议控制指南,旨在通过 Agent Client Protocol (ACP) 实现对 OpenCode 的完整程序化控制。该 Skill 不提供可执行代码,而是详细规定了通过 JSON-RPC 2.0 协议与 OpenCode CLI 通信的标准流程。

使用时,首先需要通过 bash 工具在后台启动 OpenCode ACP 服务(opencode acp --cwd /path),获取进程会话 ID。随后通过 process.write 发送 JSON-RPC 消息进行初始化(initialize)、创建新会话(session/new)或加载已有会话(session/load)。发送提示(session/prompt)后,需以 2 秒为间隔轮询(process.poll)接收流式响应,直至收到包含 stopReason 的最终响应。整个交互过程严格遵循请求-响应模式,支持会话的持久化存储与恢复。

显著优点

协议标准化:采用通用的 JSON-RPC 2.0 格式,消息结构清晰,便于与各类编程语言和工具集成。会话管理能力:支持完整的会话生命周期管理,包括创建、恢复、取消操作,且会话数据在 OpenCode 服务端持久保存,进程重启后可通过 session/load 恢复历史对话。自动化友好:详细的轮询策略(2秒间隔、5分钟超时)和错误处理指南(空响应、解析错误、进程退出),为构建可靠的自动化工作流提供了坚实基础。版本管理:内置 OpenCode 自动更新检查机制,通过比对当前版本与 GitHub Releases 最新版本,可触发自动更新流程。

潜在缺点与局限性

外部依赖严格:该 Skill 本质上是"使用说明书",完全依赖用户预装 OpenCode CLI 工具,若环境未安装 opencode 命令则无法使用。交互模式繁琐:采用轮询(polling)机制而非回调或 WebSocket,需要手动管理消息 ID 计数器、维护轮询循环,增加了集成复杂度。纯文档限制:作为无代码执行的文档型 Skill,它不能自动处理协议细节,所有 JSON 消息构造、会话状态跟踪、错误重试逻辑都需要调用方自行实现。来源可信度:作者为个人开发者(T3 来源),虽代码透明但缺乏组织级维护保障。

适合的目标群体

主要面向需要将 OpenCode 集成到自有工作流中的开发者DevOps 工程师,特别是构建 CLI 工具、IDE 插件或自动化脚本的场景。适合熟悉进程管理、理解 JSON-RPC 协议、具备一定错误处理能力的开发人员。对于希望实现"用 AI 控制 AI"(即通过 LLM Agent 控制 OpenCode Agent)的高级用户,该 Skill 提供了必要的协议规范。不推荐无开发背景的普通终端用户直接使用。

使用风险

进程管理风险:需要手动管理后台进程(启动、轮询、杀死),若未正确处理 process.kill 可能导致僵尸进程残留。超时与挂起:文档建议最大等待 5 分钟(150 次轮询),但在复杂代码生成任务中可能超出此时限,导致误判为超时。版本兼容性:依赖特定版本的 OpenCode CLI,若 ACP 协议版本变更可能导致通信失败。路径注入:虽然示例中的 bash 命令参数固定,但在实际集成时若直接将用户输入拼接到 cwd 参数,可能存在路径遍历风险,需确保路径校验。网络依赖:检查更新功能依赖 webfetch 访问 GitHub,在网络受限环境可能失败。

安全解读

核心用法

opencode-acp-control 是一个纯 Markdown 文档型 Skill,用于通过 Agent Client Protocol (ACP) 协议与 OpenCode 进行远程交互。该 Skill 本身不包含任何可执行代码,而是作为协议参考指南,指导 LLM Agent 使用 bash、process.write、process.poll 等工具与 OpenCode 实例通信。

主要功能模块:

1. 启动与管理 OpenCode 实例

  • 使用 bash(command: "opencode acp --cwd /path/to/project", background: true) 启动后台进程
  • 通过返回的 processSessionId 进行后续进程控制
  • 支持 process.kill 终止实例

2. ACP 协议通信

  • 采用 JSON-RPC 2.0 格式,消息以换行符分隔
  • 标准流程:initialize → session/new → session/prompt → 轮询响应
  • 每 2 秒轮询一次,最长等待 5 分钟
  • 支持 session/cancel 取消正在进行的提示

3. 会话恢复

  • 通过 opencode session list 列出历史会话
  • 使用 session/load 方法加载指定会话 ID
  • 会话历史会自动流式回放,保持上下文连续性

4. 版本管理

  • 检查当前版本:opencode --version
  • 对比 GitHub releases 最新版本
  • 自动更新机制:重启 OpenCode 实例触发二进制文件自动下载

显著优点

  • 零代码风险:纯文档型 Skill(T-MD 分类),319 行 Markdown + 11 行 JSON,无可执行文件
  • 协议标准化:基于 ACP(Agent Client Protocol)开放标准,非私有协议
  • 会话持久化:OpenCode 会话 ID 独立于进程生命周期,支持崩溃恢复和跨实例恢复
  • 流式响应支持:完整支持 session/update 通知机制,可实时收集流式输出
  • 完整的错误处理指南:文档详细覆盖空响应、解析错误、进程退出、超时等场景

潜在缺点与局限性

  • 依赖外部二进制:必须预先安装 OpenCode CLI,Skill 本身不管理安装
  • 手动更新兜底:自动更新失败时需用户手动执行 curl | bash 安装
  • T3 来源可信度:作者为个人开发者(Benjamin Jesuiter),非企业级背书
  • 轮询效率:基于 process.poll 的轮询模式相比原生 WebSocket 实时性稍弱
  • 状态管理复杂:需要同时跟踪 processSessionId、opencodeSessionId、messageId 三个状态

适合人群

  • 需要通过编程方式控制 OpenCode 的自动化工作流开发者
  • 构建 OpenCode 集成工具或扩展的 MCP 服务器开发者
  • 需要会话持久化和崩溃恢复能力的生产环境用户
  • 熟悉 JSON-RPC 协议和进程间通信的技术用户

常规风险

| 风险类别 | 说明 | 缓解措施 |
|---------|------|---------|
| 进程管理风险 | background 进程可能异常退出 | 实现进程健康检查和自动重启逻辑 |
| 超时处理 | 复杂提示可能超过 5 分钟轮询上限 | 监控 stopReason,合理设置任务拆分策略 |
| 版本漂移 | OpenCode 自动更新可能失败 | 实现版本检查工作流,失败时提示手动更新 |
| URL 可信度 | 文档引用外部安装脚本 | 仅使用官方域名(opencode.dev、github.com) |
| 会话 ID 泄露 | session ID 在日志中可能暴露 | 避免在持久化日志中记录敏感会话标识 |

安全认证摘要

  • 安全等级:A(92 分)
  • 来源可信度:T3(个人开发者/社区项目)
  • 静态分析:95 分通过,无可执行代码
  • 网络分析:6 个外部 URL 均为可信域名(GitHub、OpenCode 官方、ACP 协议站)
  • 隐私合规:GDPR/CCPA 全项通过,无用户数据收集

opencode-acp-control 内容

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