
throng
io.github.agent-runbooks由 GitHub 帳號 agent-runbooks 發布v0.9.0更新於 Nov 7, 2026
Hands work to another coding agent over ACP: Claude Code, Codex, OpenCode, Gemini CLI and others
概覽
讓助理透過 ACP 把編碼工作交給其他代理(Claude Code、Codex、OpenCode、Gemini CLI、Cursor、Copilot),支援追問與結構化結果。
- 可以做什麼
- 依指定的 harness、模型與強度啟動巢狀代理工作階段並執行第一輪
- 對既有工作階段送出後續輪次,或中斷正在執行的輪次
- 在背景執行輪次、稍後收取結果、列出工作階段並取消執行中的輪次
- 列出已安裝的 harness 及其模型與強度等級
- 要求回傳符合 JSON Schema 的結構化資料,而非一般文字
- 適用情境
- 適合需要另一家廠商的模型做審查或第二意見、用較便宜的模型做機械性處理,或讓多個代理平行工作而呼叫端繼續推進的情況。也適合把多步驟 runbook 的每一步交給不同 harness。
- 執行需求
- 需要 Node.js ^22.13 或 >=24,以 stdio 在本機執行,可用 npx 或全域安裝。每個被委派的代理都需自行安裝並登入對應 CLI,Claude Code 與 Codex 還需 ACP 轉接器。Gemini CLI 需要 Gemini API 金鑰或 Vertex,Cursor 與 Copilot 需各自登入。選用設定檔位於 ~/.config/throng/config.yaml。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 throng,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
throng-mcp
An MCP server that lets your agent hand work to another one. Any MCP client can call it, and the task goes to any supported harness.
- Another model's view. A review by another vendor's model, a design critique, a cheaper model for a mechanical pass.
- Second opinions. Hand one agent's result to another: Codex reviews, Claude fixes, Codex checks again, each in its own long-lived session.
- Real sessions, not one-shots. The nested agent keeps running; a follow-up goes to the same agent with everything it already knows.
- Background work. Several agents run at once while you carry on.
- Answers by schema. Pass a JSON Schema and the result comes back as data that fits it, not prose to parse: a list of findings, a verdict, a plan, ready to feed into the next step.
Supported harnesses: Claude Code, Codex, OpenCode (and every model it can reach), Gemini CLI, Cursor CLI, GitHub Copilot CLI. Setup for each is under Install.
Any other ACP agent can be described in the config as a custom harness: its command, and the mode or options that make it auto-approve or ask. throng installs nothing for it and guesses nothing; see Custom harnesses.
Example
You're in Claude Code and have just changed the payment flow.
Ask Codex to find a way this payment flow could charge someone twice. Don't change any files.
Claude calls run_thronglet with agent: "codex/gpt-6-sol:high", a self-contained prompt, the repository path and a schema, so the findings come back as data: file, line, steps to reproduce.
Give the findings to Opus. Have it fix each one, add a test for it and run the tests.
A second run_thronglet, with agent: "claude/opus". Codex's findings go into its prompt; Opus edits the code and runs the tests.
Now show the same Codex session what changed. Can it still make a customer pay twice?
That is send_message into the first session: Codex still has its findings in context and checks the fixes against them instead of starting over.
Any of these calls takes background: true: it returns at once and wait_thronglet collects the result later, which is how several agents work while you carry on.
Install
Three parts, in order: the server, the agents it may run, and the client it is called from. The skill at the end is optional.
Claude Code: the plugin, server and skill in one go
The plugin covers parts 1, 3 and 4; the agents from part 2 you still install yourself.
1. The server
The npm package throng-mcp. Needs node ^22.13 || >=24. Tested with node 24.11.1, claude 2.1.282, codex 0.156.1, opencode 1.18.30.
Two ways to run it:
-
npx -y throng-mcpstraight in the client config, below. Nothing to install: npx fetches the package on the first start and caches it. The package has no dependencies, so that is one tarball and nothing else. -
A global install, then the command is
throng-mcp. Starts faster than going through npx.
2. The agents to run
Each agent needs its own CLI installed and logged in. throng talks to agents over ACP (Agent Client Protocol); Claude Code and Codex need an ACP adapter, and throng ships none. Install only the agents you want to delegate to.
Claude Code
throng passes the path of the claude it finds on PATH to the adapter (CLAUDE_CODE_EXECUTABLE), so the nested agent runs your installed, logged-in CLI. If claude auth status says not logged in, put CLAUDE_CODE_OAUTH_TOKEN into the config, see docs/configuration.md.
Codex
The adapter gets the path of your codex the same way (CODEX_PATH).
OpenCode
OpenCode speaks ACP itself (opencode acp), so there is no adapter. Install it per https://opencode.ai/docs, then:
Custom providers live in your ~/.config/opencode/opencode.json; throng doesn't touch it.
Gemini CLI
Gemini CLI speaks ACP itself (gemini --acp), so there is no adapter.
Gemini CLI needs a Gemini API key (Google AI Studio) or Vertex: run gemini once, choose "Use Gemini API Key" and paste the key, or set GEMINI_API_KEY. The nested agent uses that key. Signing in with a personal Google account no longer works for Gemini CLI. Its limits under throng: docs/harnesses.md.
Cursor CLI
Cursor CLI speaks ACP itself (cursor-agent acp), so there is no adapter.
throng finds cursor-agent on PATH and authenticates with the login agent login saved; without that login every run fails with harness_unavailable and Cursor's message asking to run agent login. Its limits under throng: docs/harnesses.md.
GitHub Copilot CLI
Copilot CLI speaks ACP itself (copilot --acp), so there is no adapter.
throng finds copilot on PATH; the nested agent uses the login copilot login saved, or the GitHub CLI's. With a login from the GitHub CLI only, Copilot offers no model choice and every run fails with model_rejected; run copilot login. Its limits under throng: docs/harnesses.md.
3. The MCP client
The client is the session that calls throng. It may be the same program as one of the agents above, or a different one. The server speaks stdio and the command is npx -y throng-mcp, or throng-mcp after a global install.
Claude Code
--scope user registers it for every project; without it, for the current project only. claude mcp list shows the result.
Codex
OpenCode
In ~/.config/opencode/opencode.json:
Any other MCP client: register a stdio server with that command.
4. The skill, optional
skills/throng tells the calling agent how to use the server: when to delegate, how to write the prompt, background runs, follow-ups, structured output, what a refused permission means. It is a file for the agent and does not install the server.
skills CLI: Claude Code, Codex, opencode and others
-g installs into the agent's user directory, for every project; without it, into the current project. -a codex or -a opencode for the other agents. npx skills update pulls later changes.
By hand
Copy skills/throng into your agent's skills directory: ~/.claude/skills, ~/.codex/skills, ~/.config/opencode/skills. A global install also leaves it under the installed package, $(npm root -g)/throng-mcp/skills/throng.
Agents pick skills up at session start, so open a new session after installing.
Check
In a new session, ask the agent to call list_harnesses. It starts each installed adapter without a prompt (seconds, no tokens) and lists the installed harnesses with their models and effort levels; unavailable holds the ones that are configured or installed but broken, with the reason. A built-in harness you haven't installed is not listed, and run_thronglet on it says what to install. If a run then fails during the handshake, the usual cause is auth: claude auth status, codex login, opencode auth login, gemini (set the API key once), agent login (Cursor), copilot login (Copilot). More in troubleshooting.
Before the first run, two things to know. The agent edits the directory you name, with your user's rights; throng adds no isolation and rolls nothing back. Give it only trees you would let an agent edit unattended, and give parallel writers a worktree each.
Using throng
agent names harness, model and effort in one string, <harness>/<model>[:<effort>]:
The model is one of the harness's own values; list_harnesses has the current list. Effort is low | medium | high | xhigh | max; omitted means the harness default.
A call:
The prompt is self-contained: the nested session sees nothing of the calling conversation. The call returns the agent's final message, a session_id for follow-ups, and why the turn stopped.
background: true on run_thronglet or send_message returns as soon as the turn is running; wait_thronglet collects the result later, which is how several agents run at once. schema asks for structured output: the agent ends with a JSON value matching the JSON Schema, and the result comes back as structured instead of text.
A failure is an MCP tool error with code, message and, when the session exists, session_id and the partial text. Every field, error code and stop reason of every tool is in DESIGN §3.
Permissions and safety
What a nested agent may do comes from the config file, never from a tool parameter, so the calling model cannot grant itself more than you allowed. Optional ~/.config/throng/config.yaml:
harness_modeis the mode the harness runs in:auto(the default) is its own auto-approve mode (Claudeauto, Codexagent, OpenCode as configured, Geminiyolo, Cursor--force, Copilotallow_all),askits asking mode.permission_answersis how throng answers what the harness still asks:deny(the default) refuses,allowallows once,elicitshows you a dialog in the MCP client (needs elicitation support; Claude Code has it),autoshows the dialog when the client can and refuses otherwise.harness_mode: autowithpermission_answers: allowis effectively bypass.- Both settings govern what a harness asks about. Some harnesses act without asking: Cursor CLI applies file edits on its own in either mode (docs/harnesses.md).
- The older
permissions: auto | allow_all | deny_all | elicitstill works as a shorthand for a pair (auto + deny, ask + allow, ask + deny, ask + elicit).
throng never answers "always allow", so no rule gets written into the agent's project settings. Per-harness overrides, extra env for an adapter, timeouts and the nesting limit are in docs/configuration.md.
Documentation
- docs/configuration.md: the config file, environment variables, permissions in detail, auth, troubleshooting.
- docs/harnesses.md: how each harness behaves under throng, its limits and quirks.
- DESIGN §3: the exact inputs, results, error codes and stop reasons of every tool.
- skills/throng/SKILL.md: working patterns for the calling agent.
- docs/development.md: for maintainers; tests, smoke runs against real harnesses, files on disk.
- Agent Runbooks: multi-step procedures a session runs through subagents. Any step of a runbook can go to any harness through throng.
License
MIT, see LICENSE.
來源:README.md,提交 033bf0b
工具
0版本歷史
1- v0.9.0最新Nov 7, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分