编码 Agent 外壳有很多,
但这一个属于你自己
Pi 是一个以 MIT 协议开源的极简编码智能体。它不替你决定工作流,而是给你足以搭出任何工作流的原语。
$ curl -fsSL https://pi.dev/install.sh | bash
OPEN SOURCE · MIT LICENSE · @EARENDIL-WORKS/PI-CODING-AGENT
WHY PI
为什么选择 Pi?
市面上的 Agent 外壳大多替你预设了一整套工作方式。Pi 的思路相反:把内核做小,把可定制性做到极致——扩展、技能、提示词模板、主题,全部开放。
与此同时,Pi 有意不做子智能体(sub-agent)和计划模式(plan mode)这类固化功能。你想要这些?社区里有现成扩展,或者让 Pi 自己给你写一个——这正是它的设计哲学。
> … 正在生成扩展 ext/migrate.ts … ✓ 扩展已注册,输入 /reload 立即生效
EXTENSIBLE BY DESIGN
改的是外壳,
不是你的工作流
缺一个顺手的命令或工具?直接让 Pi 给你写一个,保存为扩展,输入 /reload 即刻生效。不用重启,不用等上游发布新版本。
你的工作流沉淀在你的仓库里,跟随代码一起演进,而不是被锁定在某个工具的版本路线图上。
> /model claude claude-opus-4-6 [anthropic] claude-sonnet-4-6 [anthropic] → claude-sonnet-4-5 [anthropic] claude-haiku-4-5 [github-copilot] (22/60) Model Name: Claude Sonnet 4.5 (latest)
PROVIDERS
15+ 提供商,
数百个模型
Anthropic、OpenAI、Google、Azure、Bedrock、Mistral、Groq、Cerebras、xAI、Hugging Face、Kimi、MiniMax、NVIDIA、OpenRouter、Ollama……通过 API Key 或 OAuth 认证。
同一个会话中途即可用 /model 或 Ctrl+L 换模型;Ctrl+P 在常用模型之间轮换。也支持通过 models.json 或扩展接入自定义提供商。
> /tree 会话分支: ├─ 修好登录 bug │ ├─ 方案 A:改中间件 ← 当前 │ └─ 方案 B:改路由 └─ 重构支付模块
HISTORY
树状结构、
可分享的会话历史
会话以树的形式存储。用 /tree 回到任意一个历史节点,从那里继续分叉——所有分支都收在同一份文件里,还能按消息类型过滤、给关键节点打书签。
用 /export 导出为 HTML,或用 /share 上传到 GitHub gist 生成可分享的只读链接。
项目根目录 AGENTS.md ← 项目约定,自动注入 SYSTEM.md ← 全局系统提示 .pi/skills/ ← 按需加载的技能 .pi/prompts/ ← 提示词模板 上下文过长?自动压缩(compaction) ✓ 保留关键决策与未完成事项
CONTEXT ENGINEERING
上下文工程,
一层层都由你掌控
用 AGENTS.md 沉淀项目约定,用 SYSTEM.md 定制全局系统提示;技能(skills)与提示词模板按需注入;上下文接近上限时自动压缩摘要,动态上下文也可以用扩展注入。
没有魔法目录、没有隐藏配置——你写进上下文的每一行,都由你决定。
… 正在重构 auth/ 目录(12 个文件) … > ✓ 已收到引导,调整执行方向 (Alt+Enter 可把追问排进队列,不中断当前任务)
STEERING
边跑边引导,
还是先排队追问?
任务跑偏了,不必停手重来:直接打字回车(Enter)即可实时引导正在运行的智能体。
想补充后续要求又不想打断当前工作?用 Alt+Enter 把消息排进队列,Pi 会在合适的时机依次处理。
MODES
四种运行模式,同一个内核
交互终端只是 Pi 的一个形态。同一个智能体内核可以嵌入脚本、服务与你自己的应用。
交互式 TUI
功能完整的终端界面:树状历史、引导、模型切换、全屏视图。日常开发的主战场。
Print / JSON 模式
pi -p "…" 一次性执行,--mode json 输出结构化事件流,方便脚本与 CI 消费。
RPC 模式
以 JSON-RPC 暴露会话控制,适合给 Pi 套一层自己的前端或集成进现有工具链。
TypeScript SDK
把智能体循环直接嵌进你的程序。OpenClaw 就是一个用 Pi SDK 构建的例子。
// ext/commit.ts — 一个 20 行的 /commit 命令
export default function (pi) {
pi.registerCommand("commit", async (ctx) => {
const diff = await ctx.exec("git diff --staged");
await pi.agent.prompt(
`根据以下 diff 写一条提交信息:\n${diff}`
);
});
}
PRIMITIVES, NOT FEATURES
原语,而非功能
Pi 的扩展就是一个 TypeScript 文件:注册命令、工具、事件处理器,甚至接管整个 UI。社区扩展用 pi install npm:@foo/pi-tools 一条命令安装。
有人给 Pi 加过完整的多智能体计划模式,也有人给它接上了 DOOM(图 01:在编码智能体里打 DOOM)。原语够了,功能自己长。
WHAT WE DIDN'T BUILD
我们有意没有构建什么
Pi 把可扩展性做足,所以它不必替你规定工作流。以下这些都没有内置——但如果你需要,扩展生态里大概率能找到,或者让 Pi 帮你写一个。
无 MCP
不内置 Model Context Protocol。想要?装个适配器扩展即可。
无子智能体
没有内置 sub-agent。社区扩展提供了多种多智能体方案。
无权限弹窗
默认不弹权限确认框;路径保护与沙箱可自行配置。
无计划模式
没有固化 plan mode。一个扩展示例就能把它加回来。
无内置待办
没有内置 to-do 列表。你的任务管理方式由你自己选。
无后台 bash
没有内置后台 shell。需要长任务时扩展一样能做。
GET INVOLVED
参与 Pi 的建设
Pi 采用 MIT 协议开源,由社区推动。提 issue、写扩展、翻译文档,或者只是来 Discord 聊聊你怎么定制自己的外壳。