mcpField
O
opencode

opencode

github.com/nousresearchAgent 工作流258.1k477 次安装今天更新
代码仓库

关于 opencode

此技能通过 Hermes 的终端和进程工具编排 OpenCode,这是一款开源、支持多模型提供方的编码 Agent。内容涵盖单次任务、交互会话、进度监控、PR 审查,以及在独立工作目录中并行执行任务。

主要功能

  1. 01使用 opencode run 执行有界任务
  2. 02管理交互会话并恢复工作
  3. 03通过进程工具监控进度
  4. 04使用 OpenCode 审查拉取请求
  5. 05在独立工作目录并行执行任务
  6. 06跟踪会话、令牌用量和费用

适用场景

  1. 01在代码仓库中实现或重构代码
  2. 02监控长时间运行的编码任务
  3. 03审查拉取请求并报告问题
  4. 04将独立修改分配到不同工作目录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nousresearch/hermes-agent --skill opencode

安装后在 Claude Code 中输入/opencode确认已加载。

详细介绍

OpenCode CLI

将 OpenCode 作为自主编码 Agent 使用,并通过 Hermes 终端/进程工具进行编排。OpenCode 是一个与提供商无关的开源 AI 编码 Agent,提供 TUI 和 CLI。

何时使用

  • 用户明确要求使用 OpenCode
  • 你希望使用外部编码 Agent 来实现、重构或审查代码
  • 你需要检查进度的长时间编码会话
  • 你希望在隔离的工作目录/工作树中并行执行任务

前置条件

  • 已安装 OpenCode:npm i -g opencode-ai@latest 或 brew install anomalyco/tap/opencode
  • 已配置认证:opencode auth login 或设置提供商环境变量(OPENROUTER_API_KEY 等)
  • 验证:opencode auth list 应至少显示一个提供商
  • 用于代码任务的 Git 仓库(推荐)
  • 交互式 TUI 会话需要 pty=true

二进制文件解析(重要)

Shell 环境可能会解析到不同的 OpenCode 二进制文件。如果终端与 Hermes 中的行为有所不同,请检查:

terminal(command="which -a opencode")
terminal(command="opencode --version")

如需固定使用明确的二进制文件路径:

terminal(command="$HOME/.opencode/bin/opencode run '...'", workdir="~/project", pty=true)

一次性任务

使用 opencode run 执行范围明确的非交互式任务:

terminal(command="opencode run 'Add retry logic to API calls and update tests'", workdir="~/project")

使用 -f 附加上下文文件:

terminal(command="opencode run 'Review this config for security issues' -f config.yaml -f .env.example", workdir="~/project")

使用 --thinking 显示模型思考过程:

terminal(command="opencode run 'Debug why tests fail in CI' --thinking", workdir="~/project")

强制指定特定模型:

terminal(command="opencode run 'Refactor auth module' --model openrouter/anthropic/claude-sonnet-4", workdir="~/project")

交互式会话(后台)

对于需要多轮交互的迭代工作,在后台启动 TUI:

terminal(command="opencode", workdir="~/project", background=true, pty=true)
# Returns session_id

# Send a prompt
process(action="submit", session_id="<id>", data="Implement OAuth refresh flow and add tests")

# Monitor progress
process(action="poll", session_id="<id>")
process(action="log", session_id="<id>")

# Send follow-up input
process(action="submit", session_id="<id>", data="Now add error handling for token expiry")

# Exit cleanly — Ctrl+C
process(action="write", session_id="<id>", data="\x03")
# Or just kill the process
process(action="kill", session_id="<id>")

重要: 请勿使用 /exit——它不是有效的 OpenCode 命令,而是会打开 Agent 选择器对话框。请使用 Ctrl+C(\x03)或 process(action="kill") 退出。

TUI 快捷键
按键操作
Enter提交消息(必要时按两次)
Tab在 Agent(build/plan)之间切换
Ctrl+P打开命令面板
Ctrl+X L切换会话
Ctrl+X M切换模型
Ctrl+X N新建会话
Ctrl+X E打开编辑器
Ctrl+C退出 OpenCode
恢复会话

退出后,OpenCode 会打印会话 ID。使用以下命令恢复:

terminal(command="opencode -c", workdir="~/project", background=true, pty=true)  # Continue last session
terminal(command="opencode -s ses_abc123", workdir="~/project", background=true, pty=true)  # Specific session

常用标志

标志用途
run 'prompt'一次性执行并退出
--continue / -c继续上一个 OpenCode 会话
--session <id> / -s继续指定会话
--agent <name>选择 OpenCode Agent(build 或 plan)
--model provider/model强制指定模型
--format json机器可读的输出/事件
--file <path> / -f将一个或多个文件附加到消息
--thinking显示模型思考块
--variant <level>推理强度(high、max、minimal)
--title <name>为会话命名
--attach <url>连接到正在运行的 opencode 服务器

操作流程

  1. 验证工具是否就绪:
    • terminal(command="opencode --version")
    • terminal(command="opencode auth list")
  2. 对于范围明确的任务,使用 opencode run '...'(无需 pty)。
  3. 对于迭代任务,使用 background=true, pty=true 启动 opencode。
  4. 使用 process(action="poll"|"log") 监控长时间任务。
  5. 如果 OpenCode 要求输入,请通过 process(action="submit", ...) 响应。
  6. 使用 process(action="write", data="\x03") 或 process(action="kill") 退出。
  7. 向用户总结文件更改、测试结果和后续步骤。

PR 审查工作流

OpenCode 内置 PR 命令:

terminal(command="opencode pr 42", workdir="~/project", pty=true)

或者在临时克隆中审查,以实现隔离:

terminal(command="REVIEW=$(mktemp -d) && git clone https://github.com/user/repo.git $REVIEW && cd $REVIEW && opencode run 'Review this PR vs main. Report bugs, security risks, test gaps, and style issues.' -f $(git diff origin/main --name-only | head -20 | tr '\n' ' ')", pty=true)

并行工作模式

使用独立的工作目录/工作树来避免冲突:

terminal(command="opencode run 'Fix issue #101 and commit'", workdir="~/.hermes/cache/scratch/issue-101", background=true, pty=true)
terminal(command="opencode run 'Add parser regression tests and commit'", workdir="~/.hermes/cache/scratch/issue-102", background=true, pty=true)
process(action="list")

会话与成本管理

列出历史会话:

terminal(command="opencode session list")

检查词元用量和成本:

terminal(command="opencode stats")
terminal(command="opencode stats --days 7 --models anthropic/claude-sonnet-4")

常见陷阱

  • 交互式 opencode(TUI)会话需要 pty=true。opencode run 命令不需要 pty。
  • /exit 不是有效命令——它会打开 Agent 选择器。请使用 Ctrl+C 退出 TUI。
  • PATH 不匹配可能导致选择错误的 OpenCode 二进制文件或模型配置。
  • 如果 OpenCode 看起来卡住了,请先检查日志,再终止进程:
    • process(action="log", session_id="<id>")
  • 避免在并行 OpenCode 会话之间共用同一个工作目录。
  • 在 TUI 中,可能需要按两次 Enter 才能提交(一次用于确认文本,一次用于发送)。

验证

冒烟测试:

terminal(command="opencode run 'Respond with exactly: OPENCODE_SMOKE_OK'")

成功标准:

  • 输出包含 OPENCODE_SMOKE_OK
  • 命令退出时没有服务商或模型错误
  • 对于编码任务:预期文件已更改,且测试通过

规则

  1. 对于一次性自动化任务,优先使用 opencode run——它更简单,且不需要 pty。
  2. 仅当需要迭代时才使用交互式后台模式。
  3. 始终将 OpenCode 会话限定在单个仓库或工作目录内。
  4. 对于长任务,通过 process 日志提供进度更新。
  5. 报告具体结果(已更改的文件、测试情况、剩余风险)。
  6. 使用 Ctrl+C 或 kill 退出交互式会话,绝不要使用 /exit。

评论

支持 Markdown