在 GitHub 上有一个项目叫 pi,英文全称 Pi Agent Harness,一个 AI Agent 工具包,集编码 CLI、统一 LLM API、TUI 和 Web UI 库于一身,目前已经揽获 57 K+ Stars。
简单说,pi 做了三件事:一是给你一个终端里的 AI 编码助手(类似 Claude Code),二是统一了 20+ 个大模型供应商的 API 接口,三是让你可以通过插件、技能、主题任意扩展它的能力。
pi 交互模式界面截图
安装
bash npm install -g @earendil-works/pi-coding-agent
装好之后,设置 API 密钥,直接运行 pi 就能进交互界面。也支持用浏览器 OAuth 登录,如果你有 Claude Pro 或 ChatGPT Plus 订阅,直接用订阅身份认证就行。
bash export ANTHROPIC_API_KEY=sk-ant-... pi
进去之后按一下回车,告诉 pi 你想做什么,它就开始分析、写代码、改文件、执行命令。
支持的模型
pi 支持的模型供应商列表很长,整理一下:
订阅登录: Anthropic Claude Pro/Max、OpenAI ChatGPT Plus/Pro(Codex)、GitHub Copilot。
API 密钥: Anthropic、OpenAI、DeepSeek、Google Gemini、Mistral、Groq、Cerebras、xAI、OpenRouter、Together AI、Hugging Face、Fireworks、Kimi For Coding、小米 MiMo…… 一共 20 多家。
自定义: 如果你有自己的 OpenAI 兼容接口(Ollama、vLLM、LM Studio),也可以加进去。
跨模型切换: 在一轮对话中,可以把上下文传给另一个模型继续。比如先用 DeepSeek 做前期分析,再用 Claude 写代码。上下文是序列化的,能直接在模型间迁移。
编码助手 CLI
这是 pi 最核心的部分——一个在终端里跟你协作的 AI 编码助手。
默认情况下,pi 给模型四个工具:读文件(read)、写文件(write)、编辑代码(edit)、执行命令(bash)。你在终端里说需求,pi 用这四把刀干活。
交互模式:
在终端输入 pi,你会看到一个带编辑器的界面。顶部是快捷提示,中间是对话记录,底部是输入行,再下面是状态栏显示当前目录、session 名、token 用量和费用。
编辑器支持 @ 模糊搜索文件、Tab 补全路径、Shift+Enter 换行、Ctrl+V 粘贴图片、!command 直接执行 bash 并把结果发给 AI。这些特性让跟 AI 聊代码的时候不用频繁切窗口。
Session 管理:
pi 的 session 是按树形结构存的。每次对话都记录在一份 JSONL 文件里,支持在任意节点直接分支,不会覆盖之前的内容。
/tree 命令进入树状导航,能搜索、折叠展开、给节点加标签做书签。选中任意一个历史节点,按回车就能从那继续聊——有点像 Git 的分支概念,但托管的是对话而不是代码。
pi 的对话树导航
还有几个实用功能:/fork 从历史消息创建新 session,/compact 手动压缩上下文(session 太长时能自动压缩,只保留最近的关键信息)。
消息队列:
AI 干活的时候你可以继续打字。普通 Enter 是插队消息(当前轮工具调用结束后发送),Alt+Enter 是后续消息(等 AI 干完所有活才发)。不需要干等着。
统一 LLM API(pi-ai)
pi 的 AI 核心包 @earendil-works/pi-ai 是一个 Node.js 库,把 20+ 家模型供应商的 API 统一成了一个接口。
核心功能:
- 统一的 streaming 和 completion 接口:不管用 OpenAI 还是 Anthropic 还是 DeepSeek,代码写法一样
- 工具调用(function calling):用 TypeBox 定义工具参数的类型,运行时能校验参数
- thinking/reasoning 支持:统一处理各家推理模型的思维链事件
- token 和费用追踪:每次调用记录输入/输出 token 和费用,精确到分
- 上下文序列化:可以把整段对话序列化成 JSON,传给别的模型继续
- 图片和图片生成:支持多模态输入和图片生成
- OAuth 认证:内置 Google、GitHub、OpenAI 等 OAuth 登录流程
它的设计理念是:别管底层是哪家模型,写一次代码全通。
扩展能力
pi 设计了一个挺有意思的理念——不做子代理、不做计划模式这些内置功能,而是提供一整套扩展机制,让你自己插拔。
有四种扩展方式:
Extensions(扩展):TypeScript 模块,可以注册自定义工具、命令、快捷键、事件处理和 UI 组件。可以做子代理、计划模式、权限控制、Git 自动提交、SSH 远程执行、MCP 服务器集成。甚至有人做了个 Doom 小游戏,在等 AI 回复时能玩两把。
pi 的 Doom 扩展
Skills(技能):遵循 Agent Skills 标准的 Markdown 文件。定义一个 skill,告诉 AI 在什么场景下调用它。
Prompt Templates: 把常用的 prompt 存成 Markdown 模板,打 /模板名 就展开。
Themes: 主题支持热重载,改完文件终端里立刻生效。
Pi Packages: 把上面的扩展、技能、模板、主题打包成一个 npm 包分享给别人。pi install npm:@foo/pi-tools 就装上了。
适合谁用
- 开发者:需要一个终端里的 AI 编码助手,不想在网页和 IDE 之间切来切去
- 团队:把项目规范放到 context 文件里,团队所有人都统一行为
- LLM 应用开发者:pi-ai 库帮你屏蔽了 20+ 家模型 API 差异
- AI 工具作者:基于 pi 的扩展机制写自定义 agent,不用从头搭框架
不适合:
只是偶尔用 AI 查个问题,用网页版更方便 对终端操作不熟悉的用户
GitHub:https://github.com/earendil-works/piStars:57K+语言:TypeScript许可证:MIT
夜雨聆风