拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Pi实战 04:多智能体与高级工作流篇

Pi实战 04:多智能体与高级工作流篇

Pi实战 04:多智能体与高级工作流篇

来源:Pi 作者 Mario Zechner 博客、ruizrica2 开源项目 “agent”、HN 讨论、Reddit r/PiCodingAgent、cmux 演示。

Pi没有内置子代理(sub-agents)、没有 plan mode、没有后台 bash。官方态度很明确:“Ask Pi to build what you want, or install a package that does it your way.” 但正因如此,社区玩出了花。这一篇讲三件事:

  1. 用 bash 自举子代理(作者 Mario Zechner 的做法)
  2. 多代理编排(ruizrica2 的 28 个扩展)
  3. tmux 并行 + 会话树

一、经验 1:让 Pi "自己跑自己"做子代理

Mario Zechner 在博客里说得很直白:

“If you need pi to spawn itself, just ask it to run itself via bash. You could even have it spawn itself inside a tmux session for full observability.”

他的典型场景是代码审查:写一个自定义斜杠命令,让主 Agent 通过 bash 再启动一个 Pi 进程去跑审查,主进程拿到输出即可。

他给出的子代理命令 frontmatter 骨架(description: Run a code review sub-agent):

--- description: Run a code review sub-agent --- pi --print \ --provider <provider> \ --model <model> \ --tools read,grep,find,ls \ -p "Review the current diff for correctness and security issues."

怎么用:

  1. 把这个做成一个 prompt template(见第 02 篇),比如/review-pr。
  2. 用简单提示词选具体要 review 什么、用哪个模型,甚至设思考等级。
  3. 可以存成临时会话(ephemeral,不落盘),或存盘后跳进那个会话继续看。

这一切最终被翻译成一个 prompt,主 Agent 读完后通过 bash 再次执行自己。虽然不如原生子代理那样"全 observable",但足够用,而且模型/工具/思考等级都能按需指定。

关键点:Pi 没有task工具,所以"多代理"本质是你用 bash/tmux 把它编排出来的。这恰恰是 Pi 的哲学——能力给你,怎么组你自己定。


二、经验 2:多代理编排——ruizrica2 的 “agent”

一位开发者(ruizrica2)把 Pi 改造成了一个多代理系统并开源。他的原话:

“One turned into five, five turned into 28, and at some point the whole thing became its own project: agent.”

核心做法:

  • 全是扩展 + 配置文件,不 fork、不打补丁,全部通过 Pi 的扩展 API 和一个settings.json加载 → 可移植、Pi 升级时好更新。
  • Agent 定义是带 YAML frontmatter 的 Markdown 文件。加一个专家角色 = 写一个.md文件并在配置里引用:
--- name: backend-reviewer model: anthropic/claude-sonnet-4-20250514 thinking: high tools: read,grep,bash mcp: github --- You review backend code for security and correctness. Focus on SQL injection, auth, and error handling.
  • 生命周期钩子 + 持久化 UI:他们 hook 进生命周期事件,在需要时更新 UI,让"主 Agent 收到子 Agent 回复"这种交互可视化。

安全层(他早期就加了,因为"不敢让 Agent 无人监督跑命令"):

  1. pre-tool-hook:危险命令执行前拦截。
  2. content scanner:检查工具返回里有没有提示词注入。
  3. session start 时加固系统提示词。
  4. 一个/secure命令,能审计项目并安装基础防护。

“It’s not bulletproof, but it gives me peace of mind.”

配套:还有个叫Commander的 companion 项目,充当 dashboard / Kanban / spec wizard / Jira 集成,“agent” 通过 MCP 和它双向同步任务。(两者独立,可分开用。)


三、经验 3:tmux 并行跑多个 Pi

既然 Pi 不做后台 bash,官方建议就是两个字:tmux。

  • Mario Zechner:让 Pi 在 tmux session 里启动自己,获得"完全可观测 + 能直接和子代理交互"的能力。
  • Reddit 有开发者晒四屏(4 个 pane)多代理setup,还做了个 Pi package 管理这些 tmux session。
  • 更进阶的用cmux这类工具编排:一个just命令一键拉起一支"agent 小队",每个 pane 一个 agent,完成后通知你。演示里甚至同时开 Claude Code、Codex、Pi(配 MiniMax 和 GLM)组成"安全小队"扫仓库漏洞。

最小可用做法(不用任何编排工具):

# 开一个 tmux 会话,里面并排放两个 Pitmux new-session-d-spi-nmain'pi'tmux split-window-h-tpi'pi --model gpt-5-codex'tmux attach-tpi

左边用便宜模型跑探索,右边用强模型收尾,一个屏幕看两个 agent 干活。


四、经验 4:会话树——对话的"版本控制"

这是 HN 用户一致好评的功能(vorticalbox:“Sessions are stored as trees, that is actually really nice.”)。Pi 的会话不是线性列表,是一棵树,底层就是按位置存的.jsonl文件(每条消息 append 一行,极易文档化)。

实战命令:

命令作用
/tree把会话历史画成树,跳到任意节点继续
/fork从当前某条消息分支,开一条新工作线
/clone把当前活跃分支复制成一个新会话
/resume捡起之前的会话继续
/new开全新会话

典型用法:探索复杂问题时,用/fork试方案 A,不满意再回到分叉点/fork试方案 B——不同解法互不污染。还能"rewind to any prior message, branch from there and share the entire session with others"(回退到任意消息、从那里分支、把整条会话分享给别人)。


五、实战:一套"计划-实现-验证"流水线

结合前面几篇,一个可落地的多步工作流:

  1. 计划:用一个/planprompt template,让 Agent 把计划写进PLAN.md(Pi 没有 plan mode,就自己写文件)。
  2. 实现:主 Agent 跑;需要审查时/review-pr起一个只读子代理(第一节)。
  3. 并行:把子代理丢进 tmux pane 跑,主进程继续干别的(第三节)。
  4. 分支复盘:对结果不满意?/tree回到分叉点重来,不丢上下文(第四节)。
  5. 安全:全程有 permission-gate 拦危险命令(第 03 篇)。

社区现成的包能直接给你这套流水线,比如pi-dynamic-workflow(灵感来自 Claude Code 的 dynamic workflows)、TrailStep(把过程编码成 TS 工作流,每步有独立 scoped agent session,失败可续跑)。


六、小结

  • Pi 没有原生子代理 → 用bash 自举或tmux 并行自己编排。
  • 多代理 = 一堆扩展 +settings.json+ Markdown 定义的"专家角色"。
  • 安全层要自己加:pre-tool-hook 拦命令、content scanner 防注入、/secure审计。
  • 会话树是 Pi 的隐藏神器,把对话变成可分支、可回退、可分享的版本历史。

参考资料

  • Hacker News 讨论《Pi – A minimal terminal coding harness》:https://news.ycombinator.com/item?id=47143754
  • Ricardo Ruiz(ruizrica2)《How I Turned Pi Into a Multi-Agent Coding Assistant》:https://medium.com/@ruizrica2/how-i-turned-pi-into-a-multi-agent-coding-assistant-cb1c2f1c8145
  • jasonzhou1993《Pi agent 101 — How to extend and build your own harness》:https://x.com/jasonzhou1993/article/2074471761715077153
  • Reddit r/PiCodingAgent:https://www.reddit.com/r/PiCodingAgent/
  • Pi 官方pi-multiagent/pi-crew包:https://pi.dev/packages/pi-multiagent | https://pi.dev/packages/pi-crew

上一篇:03 · 扩展篇 | 下一篇:05 · 本地模型 · MCP · 安全沙箱篇

返回列表