mcpField
O
opencode subagents

opencode subagents

本地服务
github.comAI 与智能体05 周前更新

关于 opencode subagents

opencode-subagent-mcp 是面向 Claude Code 的 stdio MCP 服务,可将委派任务交给 opencode 模型运行的子 Agent,同时让主会话继续连接 Anthropic。它保留后台运行、恢复会话、工作树隔离及权限提示等功能。

主要功能

  1. 01运行和管理子 Agent
  2. 02通过 send_message 恢复任务
  3. 03后台运行并等待完成
  4. 04支持 Git worktree 隔离
  5. 05映射权限规则与提示

适用场景

  1. 01将搜索任务委派给 opencode 模型
  2. 02在隔离工作树中执行重构
  3. 03继续已完成或中断的 Agent 会话
  4. 04后台执行任务并收集结果

MCP 相关

stdio MCP 服务提供 agent、send_message、wait、stop 和 list 工具,使 Claude Code 能通过本地启动的 opencode serve 管理子 Agent。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sebstaq-opencode-subagent": {
"command": "npx",
"args": [
"-y",
"opencode-subagent-mcp"
]
}
}
}
启动命令npx -y opencode-subagent-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmopencode-subagent-mcp0.1.3

工具

5

收录的工具列表 · 更新于 3 周前

参数类型必填说明
cwdstring否工作目录(默认:项目目录)
modelstring否opencode 模型,格式为 provider/model(默认:opencode-go/deepseek-v4.1-flash)
toolsarray否允许使用的工具列表(Claude 或 opencode 名称)
effortstring否模型变体/推理力度,例如 low、high、max
promptstring是Agent 要执行的任务
isolationenum否worktree
max_turnsinteger否
descriptionstring是任务的简短描述(3–5 个词)
output_schemaobject否最终答案必须符合的 JSON Schema;以结构化输出形式返回
subagent_typestring否Claude Agent 定义名称或 opencode Agent 名称(默认:general)
permission_modeenum否权限模式(默认:auto)default | acceptEdits | auto | bypassPermissions | plan
disallowed_toolsarray否
run_in_backgroundboolean否

详细介绍

opencode-subagent-mcp

通过更便宜的 opencode 模型运行 Claude Code 子 Agent,例如使用 opencode Go 订阅中的 opencode-go/deepseek-v4.1-flash(DeepSeek),同时 Claude Code 本身仍直接与 Anthropic 通信。将搜索、重构、修复 Bug、测试和研究任务委派给成本仅为 Opus 或 Sonnet 一小部分的模型,同时保留你已在使用的工具:后台 Agent、通过 send_message 恢复任务、工作树隔离、.claude/agents 定义、权限提示和结构化输出。

这是一个 stdio MCP 服务。你的 Claude Code 主会话不会被代理或路由到任何地方;此服务只会运行你委派给它的子 Agent,并使用它自行启动的专用 opencode serve 实例。

安装

需要 Node 22+、git,以及已登录到所需提供商的 opencode CLI(opencode auth login)。

作为 Claude Code 插件安装(还会添加一项技能,告知 Claude 何时将任务委派给 opencode):

claude plugin marketplace add sebstaq/opencode-subagent-mcp
claude plugin install opencode-subagent-mcp@sebstaq-opencode

或作为普通 MCP 服务安装:

claude mcp add -s user opencode -- npx -y [email protected]

运行和发送的内容

  • 它会在随机的 localhost 端口上启动一个专用的 opencode serve 进程,并使用随机密码;Claude Code 退出时,该进程也会停止。每次运行都会生成密码,且只在此服务与该本地进程之间使用。该进程会继承你的环境,因此 opencode 可以使用你已为其配置的提供商登录信息和 API 密钥;此服务本身绝不会读取、存储或发送这些凭据。
  • 你委派的提示词,以及子 Agent 读取的文件和命令输出,都会通过 opencode 发送给你选择的模型提供商(默认为 opencode Go),并受该提供商的数据保留条款约束。opencode 会在你机器上的本地数据库中保留会话历史记录。不会向其他任何地方发送任何内容;此服务没有遥测功能,也不会进行其他网络调用。
  • 它会读取 ~/.claude/settings.json、项目的 .claude/settings.json 和 .claude/settings.local.json、.claude/agents/*.md(用户和项目级别),以同步你的权限规则和 Agent 定义;如果存在,还会读取 ~/.config/opencode-subagent-mcp/config.json。
  • 使用 isolation: "worktree" 时,它会在项目的 .claude/worktrees/ 下创建 git 工作树,并在工作树没有改动时将其移除。

这是一个独立项目,与 Anthropic 或 opencode 团队均无关联。

工具

工具原生对应项功能
agentAgent 工具运行子 Agent;返回最终报告、用量和工作树结果
send_messageSendMessage使用完整历史记录继续已结束的 Agent;重启后也可继续
wait后台完成通知收集通过 run_in_background 运行的 Agent(可选超时时间)
stopTaskStop中止正在运行的 Agent,并返回其已生成的内容
list/agents列出此会话的 Agent、Claude Agent 定义和 opencode Agent

agent_id 在 MCP 服务或 Claude Code 重启后仍可继续使用:wait 和 stop 会返回该 Agent 的运行情况,而 send_message 会继续运行它。重启前的 Agent 在再次使用其 ID 前不会出现在 list 中,但仍保留在 opencode 的本地会话存储中。

agent 参数:description、prompt、subagent_type、model、isolation: "worktree"、permission_mode、tools、disallowed_tools、max_turns、effort、output_schema、run_in_background、cwd。

与原生子 Agent 的功能对等

原生行为此处
全新上下文,只返回最终消息相同。长输出会被截断(maxResultChars),完整文本会写入文件
在项目目录中运行相同(依次使用 MCP 根目录中的 cwd、CLAUDE_PROJECT_DIR,然后是服务端的 cwd)
isolation: worktree布局相同(.claude/worktrees/<name>,分支为 worktree-<name>,基于默认分支)。内容未更改时会移除,否则会保留并附带提交/文件摘要。禁止访问外部路径
权限提示显示在主会话中opencode ask 规则会显示为 MCP 询问对话框(允许一次/始终允许/拒绝,可选提供反馈)
权限模式default、acceptEdits、auto、bypassPermissions、plan 会映射到 opencode 规则;用户、项目和本地设置中的 Claude permissions.allow/ask/deny 均适用
后台 Agent 完成时发送通知Claude Code 会自动将耗时较长的 MCP 调用转入后台,并在完成时通知;使用 run_in_background 和 wait 可进行显式控制
使用完整历史记录恢复send_message(也适用于先前会话中的 Agent 或重启后的 Agent,因为 opencode 会持久化这些 Agent)
.claude/agents/*.md 定义通过 subagent_type 使用:prompt、tools、disallowedTools、permissionMode、maxTurns、effort、isolation。仅当 model 为 opencode 的 provider/model 时才适用
maxTurns 返回部分输出相同;状态为 max_turns,可恢复
UI 中的进度工具调用会作为 MCP 进度通知发送
子 Agent 无法生成子 Agent,也无法向用户提问opencode 的 task 和 question 工具已禁用
结构化输出output_schema(JSON Schema)→ opencode 结构化输出,以 structuredContent 的形式返回
已知缺口:Agent 不会显示在 Claude Code 的 /tasks Agent 视图中;不支持携带父级上下文的分叉;Workflow 工具的 agent() 无法将任务交给它们;auto 模式没有安全分类器(除你配置的规则和固定的一组会要求确认的破坏性命令外,它允许所有操作,包括访问项目外的路径:rm -r/-rf、git push --force、git reset --hard、git clean -f、git restore/git checkout --、`curlsh、sudo、chmod -R/chown -R、dd、mkfs、npm/pnpm publish;opencode 会分别匹配命令链中的每条命令);父级的权限模式对 MCP 服务不可见,因此默认模式来自配置;钩子、技能预加载、memory` 和每个 Agent 独立的 MCP 服务都未映射。

引导 Claude

Claude Code 会自行决定使用其原生 Agent 工具还是此工具,因此路由行为不可预测。若要将 opencode 设为默认选项,用于处理易于验证的委派工作,请将 docs/claude-md-snippet.md 中的代码片段粘贴到全局 ~/.claude/CLAUDE.md 中。

配置

可选的 ~/.config/opencode-subagent-mcp/config.json(或 $OPENCODE_SUBAGENT_CONFIG):

{
  "defaultModel": "opencode-go/deepseek-v4.1-flash",
  "defaultPermissionMode": "auto",
  "pure": true,
  "opencodeBin": "opencode",
  "maxConcurrent": 8,
  "maxResultChars": 80000
}

OPENCODE_SUBAGENT_MODEL 和 OPENCODE_SUBAGENT_MODE 可覆盖前两项。pure 会在不加载外部插件的情况下启动 opencode。

工作原理

首次使用时,服务会在随机的本地回环端口上启动 opencode serve,并使用随机密码,订阅其事件流,同时为每个 Agent 启动一个 opencode 会话(Agent ID = 会话 ID)。opencode 发出的权限请求会通过 MCP 询问机制进行响应。MCP 服务停止时,opencode 进程也会停止;崩溃服务遗留的进程会在下次启动时清理。

开发

pnpm check   # typecheck, lint, format check, unit tests
pnpm smoke [provider/model]   # end-to-end run against a real model in a temp repo

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。