Pi Coding Agent:一个 418 行代码的终端 AI 编码代理
Pi(全称 pi-coding-agent)是一个开源的终端 AI 编码代理(CLI coding harness),目前在 GitHub 上已获得超过 17,500 个 star,npm 周下载量峰值达 130 万。它由 Mario Zechner(知名游戏框架 libGDX 的作者,GitHub @badlogic)开发,近期在 OpenRouter 的 trending 榜单上位列第一。

核心理念:极简主义与可扩展性
Pi 的诞生源于 Zechner 对现有编码代理的不满。他在博客中写道:"Claude Code 已经变成了一艘宇宙飞船,80% 的功能我用不上。系统提示和工具每次发布都在变,破坏我的工作流。"
Pi 的哲学可以概括为:"如果我不需要它,就不会把它造出来。"
与同类工具相比,Pi 在多个维度上选择了极端的精简:
| 维度 | Claude Code 等主流工具 | Pi |
|---|---|---|
| 核心 agent 循环 | 数千行代码 | 418 行 TypeScript |
| 系统提示 + 工具定义 | 数千 tokens | < 1,000 tokens |
| 默认工具 | 十几个 | 4 个(read, write, edit, bash) |
| 内置功能 | 大而全 | 极简,靠扩展补全 |
Zechner 的核心假设是:所有前沿模型都经过大量 RL 训练,它们本身就理解什么是编码代理。 因此代理框架(harness)不需要过度指导模型,越轻量越好。
四层架构设计
Pi 采用严格的自底向上分层设计,下层对上层零依赖:
┌─────────────────────────────────────────────┐
│ 你的应用 (OpenClaw, Slack Bot 等) │
├─────────────────────┬───────────────────────┤
│ pi-coding-agent │ pi-tui │
│ 会话、工具、扩展、技能 │ 终端 UI、diff 渲染 │
├─────────────────────┴───────────────────────┤
│ pi-agent-core │
│ Agent 循环、工具执行、事件流 │
├─────────────────────────────────────────────┤
│ pi-ai │
│ 流式传输、多提供商 LLM 统一 API │
└─────────────────────────────────────────────┘pi-ai:跨提供商上下文迁移
pi-ai 是底层的统一 LLM API,支持 15+ 提供商和 300+ 模型。它将 OpenAI Completions、OpenAI Responses、Anthropic Messages、Google Generative AI 四种协议归一化为统一的事件流格式。
其杀手级功能是跨提供商上下文迁移:你可以在一个会话中先用 Claude 思考,再切换到 GPT-4o 验证,上下文无缝携带。Claude 的 thinking traces 会自动转成 `` 标签供 OpenAI 模型读取。
pi-agent-core:418 行的双循环
这是 Pi 的核心,采用 AgentMessage(应用层)与 LLM Message(模型层)的双层分离设计:
- 无最大步数限制:循环一直执行到代理自己声明完成
- 运行时热插拔:
setModel()、setTools()、setSystemPrompt()随时生效 - Steering 机制:用户可以在代理执行工具时发送"转向消息",代理完成当前工具后立即响应,跳过剩余排队的工具调用
- 三层事件系统:agent / turn / message / tool 级别全流式事件订阅
pi-coding-agent:终端应用层
提供四种运行模式:
| 模式 | 用途 |
|---|---|
| Interactive | 完整 TUI 交互体验 |
Print (-p) |
生成 shell 脚本并打印 |
JSON (--mode json) |
结构化事件流,适合管道化处理 |
RPC (--mode rpc) |
JSON protocol over stdin/stdout,可嵌入其他应用 |
| SDK | 直接嵌入 Node.js 应用 |
扩展性:Pi 的真正杀手锏
Pi 把"别人内置的功能"变成"你自己造或安装的扩展",这是它与 Claude Code 等工具最根本的区别。
- Extensions:TypeScript 模块,可访问工具、命令、快捷键、事件、完整 TUI
- Skills:按需加载的能力包(指令 + 工具)
- Prompt Templates:
/name快速展开的可复用 Markdown 提示 - Pi Packages:通过 npm 或 git 分发扩展包
官方提供了 50+ 扩展示例,包括子代理、计划模式、权限门控、路径保护、SSH 执行、沙箱、MCP 集成等。
上下文工程机制
Pi 提供了多种机制来精确控制上下文:
| 机制 | 用途 |
|---|---|
| AGENTS.md | 项目级指令,放在 ~/.pi/agent/ 或项目目录 |
| SYSTEM.md | 替换或追加默认系统提示 |
| Compaction | 接近上下文上限时自动摘要,可自定义 |
| Dynamic Context | 通过扩展注入消息、过滤历史、RAG、长期记忆 |
社区定位与 Harness 效应
根据 Pawel Jozefiak 于 2026 年 4 月发布的六大 harness 横评,Pi 的定位是可塑的极简 harness。
该评测提出了一个重要的"Harness Effect"(框架效应):同一模型在不同 harness 中表现差异可达 5-40 个百分点。例如,Claude Opus 在 Claude Code 中得分为 77%,在 Cursor 中则达到 93%。Pi 的价值在于它提供了一个高度可调、完全透明的基础,让用户自己优化这个效应。
| 工具 | 定位 | 特点 |
|---|---|---|
| Claude Code | Agent Orchestrator | 上下文连贯性最强,适合复杂多文件任务和夜间自主运行 |
| Codex CLI | Coding Tool | 执行干净但缺乏上下文连贯感 |
| Aider | Coding Tool | 编辑精度高,但不追求自主代理 |
| OpenCode | 中间地带 | SST 团队出品,功能全面 |
| Pi | 可塑的极简 harness | 轻量、透明、可深度定制 |
它能用来做什么
- 日常编码代理:替代 Claude Code/Codex CLI,在终端里完成代码生成、重构、调试
- 自定义工作流:通过扩展构建自己的"计划模式"、"权限门控"、"子代理协调"
- 嵌入其他应用:通过 SDK 或 RPC 模式把 Pi 作为引擎嵌入自有工具(OpenClaw 即采用此方案)
- 多模型协作:在一个任务中切换不同模型,利用各自优势
- 夜间自主运行:结合 steering 和 follow-up 机制,实现长时间自主任务
- 团队标准化:通过 AGENTS.md、Skills、Pi Packages 在团队内共享编码规范和工作流
快速上手
Pi 的安装与启动流程极为简洁。
安装
npm install -g @mariozechner/pi-coding-agent进入项目目录后启动:
cd /path/to/project
pi添加模型(认证)
Pi 支持两种认证方式:
方式一:订阅登录
在 Pi 交互界面内执行:
/login然后选择提供商。内置支持 Claude Pro/Max、ChatGPT Plus/Pro(Codex)、GitHub Copilot、Google Gemini CLI 等。
方式二:API Key
启动前设置环境变量:
export ANTHROPIC_API_KEY=***
pi也可通过 /login 选择 API Key 提供商,将密钥存入 ~/.pi/agent/auth.json。
任务对话
启动后直接输入需求即可:
Summarize this repository and tell me how to run its checks.默认提供四个工具:read(读文件)、write(写文件)、edit(编辑文件)、bash(执行命令)。另有 grep、find、ls 等只读工具可通过选项启用。
常用操作:
- 引用文件:输入
@进行模糊搜索,或命令行直接指定pi @README.md "Summarize this" - 执行命令:
!npm run lint(输出送入模型上下文),!!command(执行但不送入上下文) - 切换模型:
/model或Ctrl+L - 继续会话:
pi -c(最近会话),pi -r(浏览历史),/resume、/new、/tree(会话管理) - 非交互模式:
pi -p "Summarize this codebase"(单次输出)
项目指令
在项目根目录创建 AGENTS.md,Pi 启动时自动加载:
# Project Instructions
- Run `npm run check` after code changes.
- Do not run production migrations locally.
- Keep responses concise.修改后执行 /reload 生效。
总结
Pi 不是"又一个 Claude Code 替代品"。它是一个激进的极简主义实验,证明了一个精心设计的轻量 harness 可以匹配甚至超越复杂框架。
它最适合对现有代理的"黑盒行为"感到不满的开发者,以及想要完全控制系统提示、工具、上下文流程的高级用户。如果你只是想要"开箱即用、功能最全"的体验,Claude Code 可能仍是首选;但如果你想理解并掌控代理的每一行行为,Pi 是目前最透明的选择之一。
参考来源
Member discussion