
Pi Agent Harness 架构解析一个轻量可扩展的 Agent 开发底座1. 概述Pi 是一个 Agent Harness由 Mario Zechner知名游戏开发框架 libGDX 的创建者开发。它不是一个单一产品而是一个 Agent 开发底座——同时提供两种用法轻量编程助手直接使用 CLI在项目目录运行 pi让模型读代码、修改文件、执行命令Agent 开发底座使用底层 SDK、RPC 模式或 TUI 组件构建自己的 Agent 产品2. 四层软件包架构Pi 包含四个核心软件包从底层到顶层逐层组装。2.1 pi-ai模型接入层pi-ai 负责统一接入各种模型。它把 OpenAI、Anthropic、Google、OpenRouter、Ollama 等不同模型接口统一起来处理以下能力流式输出工具调用图片输入推理内容Token 与费用统计2.2 pi-agent-coreAgent 循环层pi-agent-core 负责 Agent 的核心运行循环。流程如下模型发起工具调用 → 执行工具 → 校验参数 → 把结果送回模型 → 继续下一轮直到任务完成循环结束。这一层不关心模型来源也不关心终端界面只负责 Agent 的核心逻辑。2.3 pi-tui终端界面层pi-tui 负责终端界面使用差分渲染技术——只更新发生变化的内容减少终端闪烁。同时这一层的组件是可复用的开发者可以拿它构建自己的终端应用。2.4 pi-coding-agent组装成品层pi-coding-agent 是前面三个包的组装成品。在项目目录中运行 pi即可获得一个完整的 Coding Agent具备读代码、修改文件、执行命令、运行测试的能力。3. 设计哲学3.1 极简的核心Pi 默认只给模型四个工具工具功能read读取文件write创建或重写文件edit精确修改文件bash执行终端命令作者认为主流前沿模型已经非常熟悉 Coding Agent 的工作方式读文件、改代码和运行命令足够覆盖绝大部分编程任务。Pi 最初的系统提示词和工具描述合计不到 1000 Token模型不需要先读大量产品规则更多上下文可以留给项目代码和当前任务。3.2 可扩展的体系Pi 默认没有内置 MCP、子 Agent、计划模式和待办列表。需要这些能力时可以安装社区 Package或者用 TypeScript 写一个扩展。扩展可以注册新工具、命令、快捷键和 Provider也能改变上下文压缩方式、接管 Bash 执行、增加自定义界面。修改完成后执行 /reload当前会话即可继续使用。3.3 模型无关Pi 支持 15 个以上的模型 Provider 和数百个模型。可以在同一段会话中从 Claude 切换到 GPT再换成 Gemini也可以连接 Ollama、llama.cpp 等本地模型。3.4 会话管理会话历史采用树状结构。走错方向时可以回到之前的节点重新开一条分支原来的尝试仍然保留在同一个会话文件里。长对话接近上下文上限后Pi 会自动压缩历史也允许开发者替换自己的压缩策略。除了交互式终端Pi 还提供单次执行、JSON 事件流、RPC 和 SDK 四种接入方式。4. 安全边界Pi 没有内置沙箱它会继承当前用户的文件、进程、网络和凭证权限扩展代码也运行在相同权限下。项目信任机制可以阻止陌生仓库在未经确认时加载本地扩展但它无法限制模型后续执行的命令。处理陌生代码、无人值守任务或者重要凭证时官方建议把 Pi 放进容器、虚拟机、微型虚拟机或策略沙箱并且只挂载任务需要的目录。5. 部署与使用Pi 是一个本地命令行程序不需要单独部署数据库或常驻网关。环境要求Node.js 22.19.0 或更高版本安装方式# npm 全局安装npminstall-g--ignore-scripts earendil-works/pi-coding-agent# macOS / Linux 安装脚本curl-fsSLhttps://pi.dev/install.sh|sh基本使用命令命令用途pi进入交互式会话/login配置模型支持 Claude Pro/Max、ChatGPT Plus/Pro、GitHub Copilot、API Key/model切换模型pi -c继续上次会话pi -p “任务描述”单次执行一次性任务6. 总结Pi 同时提供两种用法轻量编程助手和 Agent 开发底座。核心设计原则是极简、可扩展、模型无关。它适合愿意掌控工作流的开发者从一个很小的核心开始只把自己需要的东西装进去。