Skip to content
Go back

pi:一个可扩展的极简终端编程助手

pi 终端编程助手封面

Mario Zechner 给自己的 AI 编程工具取了个域名叫 shittycodingagent.ai,页面上的第一句话是:“There are many coding agents, but this one is mine.”(有很多编程助手,但这个是我的。)

这种命名往往意味着作者对现有工具有明确的不满,然后做了一个他真正想要的东西。pi 就是这样——一个终端编程助手,核心设计原则是:让它适应你的工作流,而不是反过来。

GitHub 已有 28000+ Star,npm 包名是 @mariozechner/pi-coding-agent

安装和快速开始

npm install -g @mariozechner/pi-coding-agent

认证方式有两种:使用 API Key 或直接通过订阅登录。

# 方式一:设置 API Key(以 Anthropic 为例)
export ANTHROPIC_API_KEY=sk-ant-...
pi

# 方式二:使用现有订阅登录
pi
/login  # 进入交互模式后选择提供商

启动后,pi 默认给模型提供四个工具:readwriteeditbash,模型用这四个工具来完成你的请求。

支持的模型和提供商

pi 维护了一份所有支持工具调用的模型列表,随每个版本更新。支持的提供商覆盖面相当广:

通过订阅认证:

通过 API Key:

在交互模式里用 /model(或 Ctrl+L)随时切换,用 Ctrl+P / Shift+Ctrl+P 在预设的几个模型间循环切换。也可以在 ~/.pi/agent/models.json 里添加自定义提供商,前提是它们支持 OpenAI、Anthropic 或 Google 兼容 API。

交互界面

启动后的界面分几个区域:顶部是启动信息(已加载的 AGENTS.md、提示模板、技能、扩展),中间是对话消息区,底部是编辑器和状态栏(显示工作目录、会话名、Token 用量、费用、当前模型)。

编辑器支持一些实用的快捷操作:

功能操作
引用项目文件输入 @ 触发模糊搜索
路径补全Tab
多行输入Shift+Enter(Windows Terminal 用 Ctrl+Enter)
粘贴图片Ctrl+V(Windows 用 Alt+V)或直接拖到终端
运行命令并发给模型!command
运行命令但不发给模型!!command

在消息发送后、模型还在处理时,也可以继续输入:

Shift+Tab 可以循环切换思考级别(off / minimal / low / medium / high)。

会话管理

会话自动保存到 ~/.pi/agent/sessions/,按工作目录组织。

pi -c          # 继续最近的会话
pi -r          # 浏览历史会话并选择
pi --no-session  # 临时模式,不保存

分支功能是 pi 的亮点之一。按 Escape 两次(或输入 /tree)可以打开树形视图,看到完整的会话历史,选择任意一个节点继续,从那个点分叉出新的对话分支。所有历史都保存在同一个 JSONL 文件里,不会丢失。

上下文压缩(Compaction)用于处理长会话。手动压缩用 /compact,也可以开启自动压缩——上下文溢出时自动触发,或在接近上限时提前触发。压缩是有损的,但完整历史仍然保留在文件里,随时可以通过 /tree 回溯。

定制化体系

pi 有四种定制机制,这也是它区别于其他工具的核心:

技能(Skills)

遵循 Agent Skills 标准 的按需能力包。在交互模式里用 /skill:name 调用,或者让模型自动加载。

技能文件放在 ~/.pi/agent/skills/.pi/skills/.agents/skills/ 里,是 Markdown 文件,里面写给模型看的说明。

扩展(Extensions)

TypeScript 模块,可以给 pi 添加自定义工具、命令、键绑定、事件处理器、UI 组件。

export default function (pi: ExtensionAPI) {
  pi.registerTool({ name: "deploy", ... });
  pi.registerCommand("stats", { ... });
  pi.on("tool_call", async (event, ctx) => { ... });
}

扩展能做的事情范围很广:子 Agent、自定义编辑器、SSH 执行、MCP 集成、Git 检查点、自动提交,甚至让 Doom 在等待时运行。没有内置的功能,都可以通过扩展自己做或安装第三方包来实现。

提示模板(Prompt Templates)

可复用的 Markdown 提示文件,在编辑器里输入 /templatename 展开:

<!-- ~/.pi/agent/prompts/review.md -->
Review this code for bugs, security issues, and performance.
Focus on: {{focus}}

Pi 包

把扩展、技能、提示模板、主题捆绑成一个包,通过 npm 或 git 分发:

pi install npm:@foo/pi-tools
pi install git:github.com/user/repo
pi list
pi update

npmjs.com 上搜索 pi-package 关键词可以找到社区包。

几个有意思的设计决定

README 里有一节”Philosophy”,把几个刻意不做的东西列了出来:

这种设计理念的核心假设是:每个团队和项目的工作流需求不同,通用的内置实现往往不合适,提供一套好用的扩展机制比堆功能更有价值。

程序化使用

除了交互模式,pi 还支持:

打印模式(非交互):

pi -p "总结这个代码库"
cat README.md | pi -p "总结这段文字"

SDK

import { createAgentSession } from "@mariozechner/pi-coding-agent";

const { session } = await createAgentSession({ ... });
await session.prompt("当前目录有哪些文件?");

RPC 模式(用于非 Node.js 集成):

pi --mode rpc

RPC 模式通过 stdin/stdout 通信,使用 LF 分隔的 JSONL 格式。

当前特别说明

如果你现在去 GitHub 提 Issue,会发现 Issue Tracker 暂时关闭了——作者宣布了一个”OSS Weekend”(开源周末),从 2026 年 3 月 27 日到 4 月 6 日,新 Issue 会被自动关闭,需要支持的话去 Discord 找。这段时间的关闭是为了让作者有时间专注开发。

参考


Tags


Previous

揭开黑盒:追踪一次 Copilot CLI 请求的完整链路

Next

Harness Engineering:2026 年最好的 AI 工程师已经停止写代码了