4  快速开始

4.1 安装步骤

4.1.1 通过 npm 安装

Pi 以 npm 包的形式分发。在终端中运行以下命令进行全局安装:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

--ignore-scripts 参数会禁用安装过程中的依赖生命周期脚本。Pi 在正常 npm 安装时不需要这些脚本。

Note

如果你使用 pnpm、Yarn 或 Bun,请使用对应的包管理器命令进行安装。Pi 支持所有主流 Node.js 包管理器。

4.1.2 通过 curl 安装

在 Linux 或 macOS 上,也可以使用官方安装脚本:

curl -fsSL https://pi.dev/install.sh | sh

curl 安装器底层同样使用 npm 进行全局安装,因此后续的卸载方式与 npm 安装完全相同。

4.1.3 卸载

使用安装 Pi 时所用的包管理器进行卸载:

# npm 安装或 curl 安装
npm uninstall -g @earendil-works/pi-coding-agent

# pnpm
pnpm remove -g @earendil-works/pi-coding-agent

# Yarn
yarn global remove @earendil-works/pi-coding-agent

# Bun
bun uninstall -g @earendil-works/pi-coding-agent
Warning

卸载 Pi 不会删除用户数据。设置、凭证、会话和已安装的 Pi 包会保留在 ~/.pi/agent/ 目录中。如果需要完全清除,请手动删除该目录。

4.2 认证方式

Pi 支持两种身份认证方式:订阅登录和 API Key。

4.2.1 方式一:订阅登录

如果你拥有以下任一订阅,可以直接通过 OAuth 登录:

  • ChatGPT Plus/Pro(Codex)
  • Claude Pro/Max
  • GitHub Copilot
  • xAI(Grok/X 订阅)
  • OpenRouter
  • Radius

启动 Pi 后,在交互模式中运行:

/login

然后从列表中选择你的订阅提供商。OAuth 令牌会存储在 ~/.pi/agent/auth.json 中,过期时自动刷新。

Tip

OpenRouter 的登录方式略有不同——它会创建一个用户可控的 API Key,该 Key 从你的 OpenRouter 余额中扣费,不会自动过期。

4.2.2 方式二:API Key

如果你使用 API Key(如 Anthropic、OpenAI、Google 等),可以在启动 Pi 之前设置环境变量:

export ANTHROPIC_API_KEY=sk-ant-...
pi

你也可以在 Pi 中运行 /login,选择 API Key 提供商,将 Key 存储到 ~/.pi/agent/auth.json 中:

# 也可以通过 auth.json 文件存储
# ~/.pi/agent/auth.json
{
  "anthropic": { "type": "api_key", "key": "sk-ant-..." }
}
Note

auth.json 文件创建时使用 0600 权限(仅用户可读写)。Auth 文件中的凭证优先于环境变量。

关于所有支持的提供商和环境变量名称,请参阅模型提供商章节。

4.3 首次会话

安装和认证完成后,进入你想要工作的项目目录并启动 Pi:

cd /path/to/project
pi

启动后,输入你的需求并按 Enter:

Summarize this repository and tell me how to run its checks.

Pi 会自动为模型提供四个内置工具:

工具 功能
read 读取文件
write 创建或覆盖文件
edit 修补文件
bash 执行 Shell 命令

Pi 在你的当前工作目录中运行,可以修改该目录中的文件。建议使用 Git 或其他检查点工作流,以便在需要时轻松回滚。

4.4 AGENTS.md 项目指令

Pi 在启动时会加载上下文文件来了解项目约定。在项目根目录创建 AGENTS.md 文件:

# Project Instructions

- Run `npm run check` after code changes.
- Do not run production migrations locally.
- Keep responses concise.

Pi 会按以下顺序加载上下文文件:

  1. ~/.pi/agent/AGENTS.md:全局指令(适用于所有项目)
  2. 从当前目录的父目录开始,逐级向上查找 AGENTS.mdCLAUDE.md
  3. 当前目录中的 AGENTS.mdCLAUDE.md
Tip

修改上下文文件后,重启 Pi 或运行 /reload 命令即可重新加载。

4.5 常用操作

4.5.1 引用文件

在编辑器中输入 @ 可以模糊搜索项目文件:

# 在命令行中引用文件
pi @README.md "Summarize this"
pi @src/app.ts @src/app.test.ts "Review these together"

在交互模式中,直接输入 @ 即可触发文件搜索。支持粘贴图片(Ctrl+V,Windows 上为 Alt+V),也可将图片拖入支持的终端。

4.5.2 运行 Shell 命令

在交互模式中,以 ! 开头的输入会被当作 Shell 命令执行:

!npm run lint

命令输出会发送给模型。如果你不想让输出进入模型上下文,使用 !! 前缀:

!!git status

4.5.3 切换模型

/model          # 打开模型选择器

快捷键:

  • Ctrl+L:打开模型选择器
  • Shift+Tab:切换思考级别
  • Ctrl+P / Shift+Ctrl+P:在已启用的模型间循环切换

4.5.4 会话恢复

Pi 自动保存所有会话:

pi -c                  # 继续最近的会话
pi -r                  # 浏览并选择历史会话
pi --name "my task"    # 启动时设置会话名称
pi --session <path|id> # 打开特定会话

在 Pi 内部,可以使用 /resume/new/tree/fork/clone 命令管理会话。

4.6 非交互模式

对于一次性提示(prompt),使用 -p / --print 模式:

# 直接输出结果并退出
pi -p "Summarize this codebase"

# 通过管道输入
cat README.md | pi -p "Summarize this text"

# 引用图片文件
pi -p @screenshot.png "What's in this image?"
Tip

非交互模式非常适合在 Shell 脚本中集成 Pi。你还可以使用 --mode json 获取 JSON 事件流输出,或使用 --mode rpc 进行进程间通信。

4.7 完整示例

# 交互模式,带初始提示
pi "List all .ts files in src/"

# 非交互模式
pi -p "Summarize this codebase"

# 非交互模式,带管道输入
cat README.md | pi -p "Summarize this text"

# 带名称的一次性会话
pi --name "release audit" -p "Audit this repository"

# 指定模型
pi --provider openai --model gpt-4o "Help me refactor"

# 使用 provider 前缀
pi --model openai/gpt-4o "Help me refactor"

# 指定思考级别
pi --model sonnet:high "Solve this complex problem"

# 限制模型循环范围
pi --models "claude-*,gpt-4o"

# 只读模式
pi --tools read,grep,find,ls -p "Review the code"

# 禁用特定工具
pi --exclude-tools ask_question

4.8 下一步