关于 Pi Durateam
Pi Durateam 是一个 MCP 服务,可为 Claude Code 和 Codex 调度 Pi Agent,并支持在多个模型提供商间并行执行任务。它返回报告或文件路径,并提供运行预算、可选持久化会话及逐个委派任务的 MCP 工具权限控制。
主要功能
- 01并行运行委派任务
- 02将同一提示词分配给多个模型
- 03从已完成会话分叉任务
- 04引导、继续或中止运行
- 05设置运行预算和答案检查
- 06可选恢复持久化会话
适用场景
- 01用多个模型审查代码差异
- 02拆分研究或交叉核查任务
- 03跨会话继续委派工作
- 04向委派 Agent 提供指定 MCP 工具
MCP 相关
向 Claude Code、Codex 等 MCP 客户端提供任务委派和会话管理工具。委派任务可按任务获准使用已配置 MCP 服务中的指定工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cwd | string | 否 | 计划委派任务的仓库;会加载其项目本地的 pi 模型范围 |
| models | string | 否 | 用于筛选模型列表的子字符串,例如 "deepseek" |
详细介绍
已从
pi-durabletask-mcp更名为pi-durateam:请安装pi-durateam。旧命令仍可使用;配置、PI_DELEGATE_*变量、已存储状态和工具名称均未更改。
主 Agent 负责规划、选择模型并评估结果。阅读、搜索和交叉核查任务交由 Pi 代理执行——可使用 Gemini、Grok、GPT、DeepSeek 或 Pi 支持的其他提供商——消耗这些提供商的配额,而不是 Claude Code 或 Codex 的配额;返回内容是简明状态和最终报告,或者仅提供文件路径。在我们的发布前评审中,4 个 Agent 使用 Gemini、Grok 和 GPT 模型阅读了约 200 万个 token 的代码库,而 Claude 会话收到的报告约为 7 KB。
- team — 执行一个或多个并行任务,将同一问题交给多个模型,分叉后只读一次并回答多个问题,选择启用协调器,以及按代理授予 MCP 服务(只读 GitHub、浏览器)。
- dura — 每次运行都设有轮次、时间和工具调用预算,并预留最后一轮用于作答且不调用工具。还可选择启用软截止时间、提供商出错时的模型回退,以及在服务重启后仍可保留的会话。
例如,可以向 Agent 提出:“使用 Pi 并行调用 Gemini、Grok 和 GPT 审查附带的 diff。不要编辑文件。仅报告确实存在的缺陷,并注明 file:line。” 它会使用一个共享的 prompt 和 3 个模型调用 spawn_batch,再通过 wait 收集结果,并得到 3 份独立报告,其中包含 token 用量和费用。
快速开始
需要 macOS 或 Linux、Node.js 22.19+ 和 Pi。 CI 使用 Node.js 22 和 24,针对 Pi 1.0.0、1.0.4、1.1.0 和 1.3.0 运行测试。模型调用使用你自己的提供商凭据。
1 · 安装 Pi(如果已安装可跳过),并登录提供商:
curl -fsSL https://pi.dev/install.sh | sh
pi # then /login, or configure a provider
2 · 安装 pi-durateam:
npm install -g pi-durateam@latest
或从源代码安装
git clone https://github.com/Nyarlathoteppppp/pi-durateam.git
cd pi-durateam && npm ci && npm run build
# below, use `node /absolute/path/pi-durateam/dist/index.js` instead of `pi-durateam`
3 · 连接。 Claude Code:
claude mcp add --scope user pi -- pi-durateam
Codex(~/.codex/config.toml):
[mcp_servers.pi]
command = "pi-durateam"
Codex 桌面应用使用精简的 PATH 启动 MCP 服务(不包含 Homebrew 或 nvm 目录),因此可能既找不到 pi-durateam,也找不到用于运行它的 node。这样服务就无法启动,会话中也不会出现 Pi 工具。请在此处使用绝对路径:
[mcp_servers.pi]
command = "/opt/homebrew/bin/node" # output of `which node`
args = ["/opt/homebrew/lib/node_modules/pi-durateam/dist/index.js"] # under `npm root -g`
[mcp_servers.pi.env]
PATH = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" # inherited by what the server starts
更新 pi-durateam 或 Pi 后,请重新连接 MCP 服务。其他客户端 →
4 · 试试看:“使用 Pi 检查 auth 模块是否缺少权限检查。只读。” init 会显示模型、提供商凭据和设置;models 会列出代理可以使用的模型。
可选:安装 Agent Skill
skill 会向 Agent 介绍工作流。将 SKILL.md 放入客户端的技能目录:
dir="$HOME/.claude/skills/pi-durateam" # Claude Code
# dir="$HOME/.agents/skills/pi-durateam" # Codex: use instead
mkdir -p "$dir"
curl -fsSL https://raw.githubusercontent.com/Nyarlathoteppppp/pi-durateam/main/skills/pi-durateam/SKILL.md \
-o "$dir/SKILL.md"
- 委派。
spawn在后台启动一项任务,并立即返回一个sessionId。spawn_batch默认每次最多启动 4 项(PI_DELEGATE_BATCH_MAX),并会先检查每项任务;只要有一项无效,就不会启动任何任务。run会阻塞,适合快速提问。使用wait和until: "settled"收集结果。 - 一个问题,多个模型。 批次级的
prompt会发送给每项任务;每项任务指定自己的model,并附加自己的prompt。不同模型系列会遗漏不同内容,但达成一致并不代表结论正确:采取行动前请核实发现。 - 只读一次,多方提问。
forkFrom会根据已完成会话的转录启动新任务,包括该会话已读取的文件;每个分支都会获得新的预算。 - 引导并继续。 使用
steer引导正在运行的委派任务,使用answer回答其问题,使用follow_up跟进已完成的任务(它会保留已读取的内容),必要时使用abort中止。status会报告idleMs和phase,帮助区分缓慢推理和请求卡住。 - 输入材料,输出报告。
attachments通过绝对路径传递差异或笔记;saveTo/saveDir将长篇报告写入文件并返回路径;usage提供令牌用量和费用。 - 协调器(可选启用)。 向
spawn传入coordinator计划:Pi 协调器会分派成员、向其中一名成员提出有针对性的后续问题,并撰写一份引用原始报告的综合报告。需要在PI_DELEGATE_ALLOW_TOOLS中启用codemode。对于大多数工作,使用spawn_batch并自行判断更简单。工作流 →
每个委派任务可用的 MCP 工具
委派任务可以使用 Pi 的 mcp.json 中配置的 MCP 服务,例如只读 GitHub、Serena、浏览器和网络搜索;可按任务选择,默认不启用任何服务。将服务添加到 ~/.pi/agent/mcp.json,在 pi-durateam 的环境中允许其确切工具名称(PI_DELEGATE_ALLOW_TOOLS="mcp__github__get_file_contents,mcp__github__search_code"),然后重新连接。之后可在每次调用时选择:
{
"cwd": "/absolute/repo",
"nativeMcp": true,
"mcpServers": ["github"],
"tools": ["mcp__github__get_file_contents"],
"prompt": "Read package.json of OWNER/REPO with GitHub MCP and report its version."
}
- 只有
mcpServers中的服务会连接。在这些服务的工具中,委派任务只能使用tools中列出且经PI_DELEGATE_ALLOW_TOOLS允许的mcp__<server>__<tool>名称;选择某个服务并不会授予其所有工具的访问权限。 - 如果调用选择了服务,却未授予其中任何工具的权限,请求会在启动前被拒绝——例如省略
tools(只读默认设置),或只指定codemode或tool_search,因为它们只能访问tools中列出的工具。tools: []仍会启动不使用工具的任务。 - 按照
mcp.json中服务的exposure设置可访问的名称来指定工具:使用direct时,只需提供mcp__<server>__<tool>名称(如上例);使用codemode时,需添加codemode;使用deferred时,需添加tool_search。 extensions可以保持为false。批次任务会继承nativeMcp和mcpServers;协调器成员各自选择服务,且这些服务需要使用direct暴露模式。- 获准使用的 MCP 工具可能会在
cwd之外写入内容或执行操作,而机密路径防护不涵盖外部服务。请谨慎授予功能权限。
GitHub、Serena 和 agent-browser 的设置:可选工具。网络搜索:研究。暴露模式与恢复:原生 MCP。
Dura:为顺利完成而运行
始终启用
- 轮次、时间和工具调用预算。
spawn和spawn_batch默认最多运行 30 轮、10 分钟;run默认最多运行 12 轮、5 分钟;上限由PI_DELEGATE_MAX_TURNS(默认值为 50)和PI_DELEGATE_MAX_DURATION_MS(默认值为 15 分钟)设定。maxToolCalls限制委派任务自身的调用次数。 - 当轮次或工具调用预算达到 75%,或已用时达到总时长的 2/3 时,委派任务会收到收尾提示;最后一轮不可使用工具,专用于给出答案。
answerState用于标记答案为空(missing)或被截断(partial)。运行结束时若没有答案(aborted、error),则会将最近一段有实质内容的文本作为salvagedText返回。已完成的结果会标明作答所用的模型。
选择启用
- 软截止时间(
PI_DELEGATE_DEADLINE_GRACE_MS):到达截止时间后,工具调用会被禁用,且不会启动新的工具调用;委派任务会在这段宽限时间内作答,只有仍未给出答案的运行才会中止。 - 模型回退(
PI_DELEGATE_FALLBACK_MODELS,或按调用设置的fallbackModels):如果供应商错误在 Pi 重试后仍未解决,运行会在同一会话中继续使用下一个列出的模型,例如"xai/*:high,antigravity/gemini-*"。在我们的使用场景中,Codex 配额错误现在会在几秒内切换到 Grok 继续运行。 - 对于持续调用工具的模型:
PI_DELEGATE_ANSWER_GRACE=1会额外提供一轮不可使用工具的机会;PI_DELEGATE_TOOL_CHOICE_NONE会在该轮发送toolChoice: "none";运行即将结束时,PI_DELEGATE_FINISH_THINKING会降低思考级别。 - 持久会话(
durable: true):使用 SQLite 检查点;服务器重启后,会话会使用原有 ID、历史记录和预算恢复;结果未知的工具调用绝不会盲目重放。默认保留已完成的会话 7 天(retentionDays、PI_DELEGATE_RETENTION_DAYS)。 handoff:在一个 Claude/Codex 窗口中用save保存备注,再在另一个窗口中用read读取,以继续同一个持久会话。
安全默认设置
- 未提供
tools的调用会获得只读工具集(read、grep、find、ls或你设置的PI_DELEGATE_DEFAULT_TOOLS);其他工具必须通过PI_DELEGATE_ALLOW_TOOLS授权。这并非沙箱:如果委派任务获得了bash,它就能执行你能执行的任何操作。 - 附件、读取和搜索均会拒绝访问机密路径(
.env、~/.ssh、凭据);将PI_DELEGATE_SECRET_GUARD=0设为 0 可关闭此保护。 - 会话保存在内存中,并在 MCP 进程结束时终止。除非手动启用,否则持久化存储、模型回退、软截止时间、答案宽限轮次、原生 MCP 和协调器均处于关闭状态。
- 默认情况下,每个服务进程最多同时运行 4 个委派任务(
PI_DELEGATE_MAX_CONCURRENT)。无法解析的模型名称会被拒绝,不会替换为默认模型。
文档
MIT · 基于 howznguyen/pi-delegate-mcp 和 Pi Durable 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。