编码 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 自己给你写一个——这正是它的设计哲学。

Pi · 让它给自己写一个命令
> 
… 正在生成扩展 ext/migrate.ts …
 扩展已注册,输入 /reload 立即生效
自定义命令 = 一个 TypeScript 扩展

EXTENSIBLE BY DESIGN

改的是外壳,
不是你的工作流

缺一个顺手的命令或工具?直接让 Pi 给你写一个,保存为扩展,输入 /reload 即刻生效。不用重启,不用等上游发布新版本。

你的工作流沉淀在你的仓库里,跟随代码一起演进,而不是被锁定在某个工具的版本路线图上。

Pi · 会话中途切换模型
> /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)
Ctrl+L 切换模型 · Ctrl+P 在常用模型间轮换

PROVIDERS

15+ 提供商,
数百个模型

Anthropic、OpenAI、Google、Azure、Bedrock、Mistral、Groq、Cerebras、xAI、Hugging Face、Kimi、MiniMax、NVIDIA、OpenRouter、Ollama……通过 API Key 或 OAuth 认证。

同一个会话中途即可用 /modelCtrl+L 换模型;Ctrl+P 在常用模型之间轮换。也支持通过 models.json 或扩展接入自定义提供商。

AnthropicOpenAIGoogleAzureBedrockMistralGroqCerebrasxAIKimiMiniMaxNVIDIAOpenRouterOllama
Pi · 树状会话历史
> /tree
会话分支:
  ├─ 修好登录 bug
      ├─ 方案 A:改中间件 ← 当前
      └─ 方案 B:改路由
  └─ 重构支付模块
所有分支保存在同一个会话文件里

HISTORY

树状结构、
可分享的会话历史

会话以树的形式存储。用 /tree 回到任意一个历史节点,从那里继续分叉——所有分支都收在同一份文件里,还能按消息类型过滤、给关键节点打书签。

/export 导出为 HTML,或用 /share 上传到 GitHub gist 生成可分享的只读链接。

Pi · 上下文工程
项目根目录
  AGENTS.md      ← 项目约定,自动注入
  SYSTEM.md      ← 全局系统提示
  .pi/skills/    ← 按需加载的技能
  .pi/prompts/   ← 提示词模板

上下文过长?自动压缩(compaction)
 保留关键决策与未完成事项
AGENTS.md · SYSTEM.md · compaction · skills

CONTEXT ENGINEERING

上下文工程,
一层层都由你掌控

AGENTS.md 沉淀项目约定,用 SYSTEM.md 定制全局系统提示;技能(skills)与提示词模板按需注入;上下文接近上限时自动压缩摘要,动态上下文也可以用扩展注入。

没有魔法目录、没有隐藏配置——你写进上下文的每一行,都由你决定。

Pi · 边跑边引导
… 正在重构 auth/ 目录(12 个文件)

> 
 已收到引导,调整执行方向
(Alt+Enter 可把追问排进队列,不中断当前任务)
Enter 引导 · 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 构建的例子。

Pi · 扩展即 TypeScript
// 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}`
    );
  });
}
pi install npm:@foo/pi-tools

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 聊聊你怎么定制自己的外壳。