重读 OpenClaw 背后的 Agent 框架「pi」,作者 @badlogicgames 对主流 Coding Agent 的反思还是太超前了,pi 的极简设计即使现在带着上帝视角往回看,仍然是精妙,不得不佩服! mariozechner.at/posts/2025-11-… 可复制学习的经验
即使你不使用 pi,这些经验也适用于其他 Agents:
- 保持系统提示简洁:模型已理解 Coding Agents 模式,冗长的提示反而有害
- 最小化工具集:四个基本工具(读、写、改、执行)已足够
- 文件化状态管理:使用文件而非内置功能管理 TODO、计划等状态
- 追求可观察性:选择能让你看到完整交互过程的工具
- 上下文工程优先:精确控制进入模型的上下文比工具数量更重要
· Mario 曾使用 Claude Code,但随着时间推移,该工具变得臃肿(80% 的功能他用不到)
· 系统提示和工具在每个版本中都会变化,破坏了他的工作流程
· 现有工具缺乏可见性(无法查看与模型的交互细节)
· 自托管模型支持不佳
pi 的三层技术架构
- pi-ai(统一的 LLM API)
· 多提供商兼容:统一支持 OpenAI、Anthropic、Google、xAI 等四种 API 格式
· 上下文切换:可以在会话中切换模型(如从 Claude 切换到 GPT),保留完整对话历史
· 工具调用分割:将工具结果分为 LLM 可见部分和 UI 展示部分
· 中断请求支持:支持 AbortController 中止请求并返回部分结果
- pi-tui(终端 UI 框架)
· 采用追加模式:不同于全屏 TUIs(如 Amp、opencode),pi 采用类似 Claude Code 的追加输出模式
· 保留滚动历史:不接管终端视口,保留原生滚动和搜索功能
· 差异渲染:只重绘变化的行,配合同步输出转义码实现无闪烁更新
- pi-coding-agent(核心 CLI)
· 仅有 4 个核心工具:read、write、edit、bash
· 支持项目上下文文件(AGENTS.md)分层加载
设计哲学与反常规选择
- YOLO 模式(默认开放权限)
· 既然 Agent 可以写代码和执行代码,真正的安全防护实际上是不可能的
· 默认赋予文件系统和命令执行的完整权限
- 不做内置 TODO 功能
· 替代方案:直接写入 TODO.md 文件,用复选框标记进度
- 不做计划模式
· 持久化计划应写入文件(如 PLAN.md),跨会话可见
- 不支持 MCP
· 替代方案:构建简单的 CLI 工具 + README,按需读取
- 没有后台 Bash
· 提供更好的可观察性,且用户可以主动进入会话
- 没有 Sub-agents
· 解决方案:通过 bash 直接调用 pi 自身,获得完整输出可见性