Pi:极简可扩展的终端编码代理工具

badlogic 发布于 2026-07-27 阅读 21

Pi 是一个极简的命令行编码Agent,支持多种 AI 模型提供商(如 Anthropic、OpenAI、DeepSeek 等),通过 TypeScript 扩展、技能和提示模板提供高度可定制的工作流。文章详细介绍了 Pi 的安装、交互模式、会话管理、上下文文件、自定义能力以及包管理,强调核心最小化并通过社区包扩展功能。适合寻求灵活 AI 编程助手的开发者。

Pi 是一个极简的终端编码工具。让 Pi 适应你的工作流程,而不是让你去适应它,而且无需 fork 和修改 Pi 的内部实现。通过 TypeScript 扩展技能提示模板主题 来扩展它。将你的扩展、技能、提示模板和主题放入 Pi 包 中,并通过 npm 或 git 与他人分享。

Pi 自带强大的默认功能,但省略了子代理和规划模式等功能。相反,你可以让 Pi 构建你想要的任何东西,或者安装一个符合你工作流程的第三方 Pi 包。

Pi 以四种模式运行:交互模式、打印或 JSON 模式、用于进程集成的 RPC 模式,以及用于嵌入到你自己的应用中的 SDK 模式。

分享你的开源编码Agent会话

如果你将 Pi 用于开源工作,请分享你的编码Agent会话。

公开的开源会话数据有助于利用真实的开发工作流程来改进模型、提示、工具和评估。

完整解释,请参阅 X 上的这篇文章

要发布会话,请使用 badlogic/pi-share-hf。阅读其 README.md 以获取设置说明。你只需要一个 Hugging Face 账户、Hugging Face CLI 和 pi-share-hf

你也可以观看 这个视频,其中我展示了如何发布我的 pi-mono 会话。

我定期在此发布我自己的 pi-mono 工作会话:


快速开始

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

--ignore-scripts 在安装期间禁用依赖生命周期脚本。Pi 在正常的 npm 安装中不需要安装脚本。

安装器替代方案:

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

使用 API 密钥进行身份验证:

export ANTHROPIC_API_KEY=sk-ant-...
pi

或使用你现有的订阅:

pi
/login  # 然后选择提供商

然后直接与 Pi 对话。默认情况下,Pi 为模型提供四个工具:readwriteeditbash。模型使用这些工具来满足你的请求。通过 技能提示模板扩展Pi 包 添加功能。

平台说明: Windows | Termux (Android) | tmux | 终端设置 | Shell 别名


提供商与模型

对于每个内置提供商,Pi 维护一个支持工具的模型列表。配置的提供商目录会自动刷新;运行 pi update --models 强制立即刷新。通过订阅(/login)或 API 密钥进行身份验证,然后通过 /model(或 Ctrl+L)从该提供商中选择任何模型。

订阅:

  • Anthropic Claude Pro/Max
  • OpenAI ChatGPT Plus/Pro (Codex)
  • GitHub Copilot

API 密钥:

  • Anthropic
  • Ant Ling
  • OpenAI
  • Azure OpenAI
  • DeepSeek
  • NVIDIA NIM
  • Google Gemini
  • Google Vertex
  • Amazon Bedrock
  • Mistral
  • Groq
  • Cerebras
  • Cloudflare AI Gateway
  • Cloudflare Workers AI
  • xAI
  • OpenRouter
  • Vercel AI Gateway
  • ZAI Coding Plan (Global)
  • ZAI Coding Plan (China)
  • OpenCode Zen
  • OpenCode Go
  • Hugging Face
  • Fireworks
  • Together AI
  • Kimi For Coding
  • MiniMax
  • Xiaomi MiMo
  • Xiaomi MiMo Token Plan (China)
  • Xiaomi MiMo Token Plan (Amsterdam)
  • Xiaomi MiMo Token Plan (Singapore)

Pi 还支持 llama.cpp 路由器服务器。通过 /login llama.cpp 配置,通过 /llama 管理下载和加载的模型,然后通过 /model 选择一个已加载的模型。有关设置和使用,请参阅 docs/llama-cpp.md

其他提供商的设置说明,请参阅 docs/providers.md

自定义提供商和模型: 如果它们使用支持的 API(OpenAI、Anthropic、Google),则通过 ~/.pi/agent/models.json 添加提供商。对于自定义 API 或 OAuth,请使用扩展。请参阅 docs/models.mddocs/custom-provider.md


交互模式

交互模式

界面从上到下:

  • 启动头 - 显示快捷键(所有快捷键用 /hotkeys)、已加载的 AGENTS.md 文件、提示模板、技能和扩展
  • 消息 - 你的消息、助手响应、工具调用及其结果、通知、错误和扩展 UI
  • 编辑器 - 你输入的地方;边框颜色表示思考级别
  • 页脚 - 工作目录、会话名称、总 Token/缓存使用量( 输入, 输出,R 缓存读取,W 缓存写入,CH 最新缓存命中率)、成本、上下文使用量、当前模型。总计包括助手响应、工具报告的使用量和摘要生成。

编辑器可以临时被其他 UI 替换,例如内置的 /settings 或来自扩展的自定义 UI(例如,一个问答工具,让用户以结构化格式回答模型问题)。扩展 还可以替换编辑器,在其上方/下方添加小部件、状态行、自定义页脚或覆盖层。

编辑器

功能 操作方法
文件引用 输入 @ 进行项目文件模糊搜索
路径补全 Tab 键补全路径
多行输入 Shift+Enter(或在 Windows Terminal 上按 Ctrl+Enter)
外部编辑器 Ctrl+G 打开 externalEditor$VISUAL$EDITOR、Windows 上为记事本,其他系统上为 nano
剪贴板 Ctrl+V 粘贴图片或文本(Windows 上为 Alt+V),或将图片拖拽到终端上
Bash 命令 !command 运行并将输出发送给 LLM,!!command 运行而不发送

标准编辑键绑定,用于删除单词、撤销等。请参阅 docs/keybindings.md

命令

在编辑器中输入 / 触发命令。扩展 可以注册自定义命令,技能 可以通过 /skill:name 使用,提示模板 通过 /templatename 展开。

命令 描述
/login/logout 管理提供商凭据
/llama 下载、加载和卸载 llama.cpp 路由器模型
/model 切换模型
/scoped-models 启用/禁用用于 Ctrl+P 循环的模型
/settings 思考级别、主题、消息投递、传输方式
/resume 从之前的会话中选择
/new 开始新会话
/name <name> 设置会话显示名称
/session 显示会话信息(文件、ID、消息、Token、成本)
/tree 跳转到会话中的任何点并从那里继续
/trust 保存项目信任决策以供将来会话使用(需要重启)
/fork 从先前的用户消息创建新会话
/clone 将当前活动分支复制到一个新会话中
/compact [prompt] 手动压缩上下文,可选用自定义指令
/copy 将最后一条助手消息复制到剪贴板
/export [file] 将会话导出为 HTML 或 JSONL 文件
/import <file> 从 JSONL 文件导入并恢复会话
/share 作为私有 GitHub Gist 上传,附带可共享的 HTML 链接
/reload 重新加载键盘绑定、扩展、技能、提示、主题和上下文文件
/hotkeys 显示所有键盘快捷键
/changelog 显示版本历史
/quit 退出 Pi

键盘快捷键

参见 /hotkeys 获取完整列表。通过 ~/.pi/agent/keybindings.json 自定义。请参阅 docs/keybindings.md

常用快捷键:

操作
Ctrl+C 清空编辑器
两次 Ctrl+C 退出
Escape 取消/中止
两次 Escape 打开 /tree
Ctrl+L 打开模型选择器
Ctrl+P / Shift+Ctrl+P 向前/向后循环限定模型
Shift+Tab 循环思考级别
Ctrl+O 折叠/展开工具输出
Ctrl+T 折叠/展开思考块
Ctrl+X 复制最后一条助手消息

消息队列

在代理工作时提交消息:

  • Enter 队列一条 steering 消息,在当前助手轮次完成工具调用后投递
  • Alt+Enter 队列一条 follow-up 消息,仅在代理完成所有工作后投递
  • Escape 中止并将队列中的消息恢复到编辑器
  • Alt+Up 将队列中的消息取回编辑器

在 Windows Terminal 上,Alt+Enter 默认为全屏功能。请在 docs/terminal-setup.md 中重新映射,以便 Pi 能够接收后续快捷键。

设置 中配置投递方式:steeringModefollowUpMode 可以是 "one-at-a-time"(默认,等待响应)或 "all"(一次性投递所有队列中的消息)。transport 为支持多种传输方式的提供商选择偏好传输方式("sse""websocket""auto")。


会话

会话以 JSONL 文件存储,具有树状结构。每个条目都有一个 idparentId,允许在原地进行分支而无需创建新文件。文件格式请参阅 docs/session-format.md

管理

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

pi -c                  # 继续最近的会话
pi -r                  # 浏览并从过去的会话中选择
pi --no-session        # 临时模式(不保存)
pi --name "my task"    # 启动时设置会话显示名称
pi --session <path|id> # 使用特定的会话文件或 ID
pi --fork <path|id>    # 将特定的会话文件或 ID 分支到新会话

在交互模式下使用 /session 查看当前会话 ID,然后在 --session <id>--fork <id> 中重用该 ID。

分支

/tree - 在原地导航会话树。选择任何先前的点,从那里继续,并在分支之间切换。所有历史记录保存在单个文件中。

树视图

  • 通过输入搜索,使用 Ctrl+←/Ctrl+→ 或 Alt+←/Alt+→ 折叠/展开并在分支间跳转,使用 ←/→ 翻页
  • 过滤模式(Ctrl+O):默认 → 无工具 → 仅用户 → 仅标签 → 全部
  • 按 Ctrl+X 复制所选消息
  • 按 Shift+L 标记条目为书签,按 Shift+T 切换标签时间戳

/fork - 从活动分支上的先前用户消息创建新的会话文件。打开选择器,复制到该点的活动路径,并将选中的提示放入编辑器以便修改。

/clone - 将当前活动分支复制到当前位置的新会话文件中。新会话保留完整活动路径历史,并以空编辑器打开。

--fork <path|id> - 直接从 CLI 分支现有的会话文件或部分会话 UUID。这将完整的源会话复制到当前项目的新会话文件中。

压缩

长时间会话可能会耗尽上下文窗口。压缩会总结较早的消息,同时保留较新的消息。

手动: /compact/compact <自定义指令>

自动: 默认启用。在上下文溢出时触发(恢复并重试),或在接近限制时(主动)触发。通过 /settingssettings.json 配置。

压缩有损。完整历史保留在 JSONL 文件中;使用 /tree 重新访问。通过 扩展 自定义压缩行为。内部原理请参阅 docs/compaction.md


设置

使用 /settings 修改常用选项,或直接编辑 JSON 文件:

位置 范围
~/.pi/agent/settings.json 全局(所有项目)
.pi/settings.json 项目(覆盖全局)

所有选项请参阅 docs/settings.md

项目信任

在交互式启动时,如果项目文件夹包含项目本地设置、资源或项目 .agents/skills,并且该文件夹或其父文件夹在 ~/.pi/agent/trust.json 中没有保存的决策,Pi 会询问是否信任该文件夹。信任一个项目允许 Pi 加载 .pi/settings.json.pi 资源、安装缺失的项目包以及执行项目扩展。

在信任决策之前,Pi 只加载上下文文件、用户/全局扩展和 CLI -e 扩展,以便它们可以处理 project_trust 事件。项目本地扩展、项目包管理的扩展和项目设置仅在项目被信任后加载。当切换到来自不同 cwd 且其信任在当前进程中尚未解决的会话时,这种拆分也适用。

非交互模式(-p--mode json--mode rpc)不会显示信任提示。如果没有适用的已保存信任决策,则使用全局设置中的 defaultProjectTrustask(默认)和 never 忽略那些项目资源,而 always 信任它们。传递 --approve/-a--no-approve/-na 以覆盖单次运行的项目信任。

如果没有适用的扩展或已保存决策,则 defaultProjectTrust 控制回退行为。在 ~/.pi/agent/settings.json 中将其设置为 "ask""always""never",或通过 /settings 更改它。

pi config 和包命令使用相同的项目信任流程,但 pi update 从不提示。传递 --approve 以信任单次命令的项目本地设置,或 --no-approve 以忽略它们。

在交互模式下使用 /trust 保存项目信任决策以供将来会话使用,包括对直接父文件夹的信任。它仅写入 ~/.pi/agent/trust.json;当前会话不会重新加载,因此重启 Pi 以使更改生效。

遥测和更新检查

Pi 有两个独立的启动功能:

  • 更新检查: 获取 https://pi.dev/api/latest-version 以检查是否有更新的 Pi 版本。使用 PI_SKIP_VERSION_CHECK=1 禁用它。禁用更新检查仅关闭此检查。
  • 安装/更新遥测: 在首次安装或通过变更日志检测到更新后,向 https://pi.dev/api/report-install 发送匿名版本 ping。此设置还控制 OpenRouter、Cloudflare 和直接 NVIDIA NIM 请求的可选提供商归属标头。通过在 settings.json 中将 enableInstallTelemetry 设置为 false,或设置 PI_TELEMETRY=0 来选择退出。这不会禁用更新检查;Pi 可能仍会联系 pi.dev 以检查最新版本,除非更新检查被禁用或离线模式已启用。

使用 --offlinePI_OFFLINE=1 禁用此处描述的所有启动网络操作,包括更新检查、包更新检查和安装/更新遥测。


上下文文件

Pi 在启动时加载 AGENTS.md(或 CLAUDE.md),来源如下:

  • ~/.pi/agent/AGENTS.md(全局)
  • 父目录(从 cwd 向上遍历)
  • 当前目录

用于项目指令(AGENTS.md/CLAUDE.md)、约定、常用命令。所有匹配的文件都会被连接。

使用 --no-context-files(或 -nc)禁用上下文文件加载。

系统提示

使用 .pi/SYSTEM.md(项目)或 ~/.pi/agent/SYSTEM.md(全局)替换默认系统提示。通过 APPEND_SYSTEM.md 追加而不替换。


自定义

提示模板

作为 Markdown 文件的可重用提示。输入 /name 展开。

<!-- ~/.pi/agent/prompts/review.md -->
审查此代码中的错误、安全问题和性能问题。
重点关注:{{focus}}

放在 ~/.pi/agent/prompts/.pi/prompts/Pi 包 中与他人分享。请参阅 docs/prompt-templates.md

技能

随需应变的能力包,遵循 Agent Skills 标准。通过 /skill:name 调用,或让代理自动加载它们。

<!-- ~/.pi/agent/skills/my-skill/SKILL.md -->
## 我的技能
当用户询问 X 时使用此技能。

### 步骤
1. 执行此操作
2. 然后执行那个操作

放在 ~/.pi/agent/skills/~/.agents/skills/.pi/skills/.agents/skills/(从 cwd 向上遍历父目录)或 Pi 包 中与他人分享。请参阅 docs/skills.md

扩展

Doom 扩展

TypeScript 模块,使用自定义工具、命令、键盘快捷键、事件处理程序和 UI 组件扩展 Pi。

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

默认导出也可以是 async 的。Pi 在继续启动之前会等待异步扩展工厂完成,这对于一次性初始化(如在调用 pi.registerProvider() 之前获取远程模型列表)很有用。

可能实现的功能:

  • 自定义工具(或完全替换内置工具)
  • 子代理和规划模式
  • 自定义压缩和总结
  • 权限门和路径保护
  • 自定义编辑器和 UI 组件
  • 状态行、标题、页脚
  • Git 检查点和自动提交
  • SSH 和沙箱执行
  • MCP 服务器集成
  • 让 Pi 看起来像 Claude Code
  • 等待时的游戏(没错,Doom 可以运行)
  • ...任何你能想到的功能

放在 ~/.pi/agent/extensions/.pi/extensions/Pi 包 中与他人分享。请参阅 docs/extensions.mdexamples/extensions/

主题

内置主题:darklight。主题热重载:修改活动主题文件后,Pi 立即应用更改。

放在 ~/.pi/agent/themes/.pi/themes/Pi 包 中与他人分享。请参阅 docs/themes.md

Pi 包

通过 npm 或 git 捆绑和分享扩展、技能、提示和主题。在 npmjs.comDiscord 上查找包。

安全性: Pi 包以完全系统权限运行。扩展执行任意代码,技能可以指示模型执行任何操作,包括运行可执行文件。在安装第三方包之前,请审查源代码。

pi install npm:@foo/pi-tools
pi install npm:@foo/pi-tools@1.2.3      # 固定版本
pi install git:github.com/user/repo
pi install git:github.com/user/repo@v1  # 标签或提交
pi install git:git@github.com:user/repo
pi install git:git@github.com:user/repo@v1  # 标签或提交
pi install https://github.com/user/repo
pi install https://github.com/user/repo@v1      # 标签或提交
pi install ssh://git@github.com/user/repo
pi install ssh://git@github.com/user/repo@v1    # 标签或提交
pi remove npm:@foo/pi-tools
pi uninstall npm:@foo/pi-tools          # remove 的别名
pi list
pi update                               # 仅更新 Pi
pi update --all                         # 更新 Pi 和包
pi update --extensions                  # 仅更新包
pi update --models                      # 仅刷新模型目录
pi update --self                        # 仅更新 Pi
pi update --self --force                # 即使是最新版本也重新安装 Pi
pi update npm:@foo/pi-tools             # 更新一个包
pi config                               # 启用/禁用扩展、技能、提示、主题

包安装到 ~/.pi/agent/git/(git)或 ~/.pi/agent/npm/(npm)。使用 -l 进行项目本地安装(.pi/git/.pi/npm/)。Git @ref 值是固定的标签或提交;固定的包会被 pi update --extensionspi update --all 跳过,因此使用 pi install git:host/user/repo@new-ref 将现有包移动到新的引用。Git 包默认使用 npm install --omit=dev 安装依赖,因此运行时依赖必须列在 dependencies 下;当配置了 npmCommand 时,git 包使用普通的 install 以与包装器兼容。如果你使用 Node 版本管理器并希望包安装重用稳定的 npm 上下文,请在 settings.json 中设置 npmCommand,例如 ["mise", "exec", "node@20", "--", "npm"]

通过在 package.json 中添加 pi 键来创建包:

{
  "name": "my-pi-package",
  "keywords": ["pi-package"],
  "pi": {
    "extensions": ["./extensions"],
    "skills": ["./skills"],
    "prompts": ["./prompts"],
    "themes": ["./themes"]
  }
}

如果没有 pi 清单,Pi 会从常规目录(extensions/skills/prompts/themes/)自动发现。

请参阅 docs/packages.md


编程使用

SDK

import { createAgentSession, ModelRuntime, SessionManager } from "@earendil-works/pi-coding-agent";

const modelRuntime = await ModelRuntime.create();
const { session } = await createAgentSession({
  sessionManager: SessionManager.inMemory(),
  modelRuntime,
});

await session.prompt("当前目录中有哪些文件?");

对于高级的多会话运行时替换,请使用 createAgentSessionRuntime()AgentSessionRuntime

请参阅 docs/sdk.mdexamples/sdk/

RPC 模式

对于非 Node.js 集成,使用基于 stdin/stdout 的 RPC 模式:

pi --mode rpc

RPC 模式使用严格的 LF 分隔的 JSONL 帧。客户端必须仅在 \n 上分割记录。不要使用通用的行读取器(如 Node 的 readline),因为它也会在 JSON 负载内的 Unicode 分隔符上分割。

协议请参阅 docs/rpc.md


哲学

Pi 具有极强的可扩展性,因此它不必规定你的工作流程。其他工具内置的功能可以通过 扩展技能 构建,或者从第三方 Pi 包 安装。这使得核心保持最小化,同时让你能够塑造 Pi 以适应你的工作方式。

没有 MCP。 构建带有 README 的 CLI 工具(参见 技能),或构建一个添加 MCP 支持的扩展。为什么?

没有子代理。 有很多方法可以实现这一点。通过 tmux 生成 Pi 实例,或使用 扩展 构建你自己的,或安装一个以你的方式实现的包。

没有权限弹窗。 在容器中运行,或使用 扩展 根据你的环境和安全要求构建你自己的确认流程。

没有规划模式。 将计划写入文件,或使用 扩展 构建,或安装一个包。

没有内置待办事项。 它们会混淆模型。使用 TODO.md 文件,或使用 扩展 构建你自己的。

没有后台 Bash。 使用 tmux。完全可观察,直接交互。

阅读 博客文章 了解完整原理。


CLI 参考

pi [options] [@files...] [messages...]

包命令

pi install <source> [-l]     # 安装包,-l 表示项目本地
pi remove <source> [-l]      # 删除包
pi uninstall <source> [-l]   # remove 的别名
pi update [source|self|pi]   # 仅更新 Pi,或一个包源
pi update --all              # 更新 Pi 和包
pi update --extensions       # 仅更新包
pi update --models           # 仅刷新模型目录
pi update --self             # 仅更新 Pi
pi update --self --force     # 即使是最新版本也重新安装 Pi
pi update --extension <src>  # 更新一个包
pi list                      # 列出已安装的包
pi config                    # 启用/禁用包资源

pi config 和项目包命令接受 --approve/--no-approve 以信任或忽略单次命令的项目本地设置。pi update 从不提示项目信任。

模式

标志 描述
(默认) 交互模式
-p--print 打印响应并退出
--mode json 将所有事件输出为 JSON 行(请参阅 docs/json.md
--mode rpc 用于进程集成的 RPC 模式(请参阅 docs/rpc.md
--export <in> [out] 将会话导出为 HTML

在打印模式下,Pi 还会读取通过管道输入的 stdin 并将其合并到初始提示中:

cat README.md | pi -p "总结这段文本"

模型选项

选项 描述
--provider <name> 提供商(anthropic、openai、google 等)
--model <pattern> 模型模式或 ID(支持 provider/id 和可选的 :<thinking>
--api-key <key> API 密钥(覆盖环境变量)
--thinking <level> offminimallowmediumhighxhighmax
--models <patterns> 用于 Ctrl+P 循环的逗号分隔模式
--list-models [search] 列出可用模型

会话选项

选项 描述
-c--continue 继续最近的会话
-r--resume 浏览并选择会话
--session <path|id> 使用特定的会话文件或部分 UUID
--fork <path|id> 将特定的会话文件或部分 UUID 分支到新会话
--session-dir <dir> 自定义会话存储目录
--no-session 临时模式(不保存)
--name <name>-n <name> 启动时设置会话显示名称

工具选项

选项 描述
--tools <list>-t <list> 在内置、扩展和自定义工具中仅允许特定的工具名称
--exclude-tools <list>-xt <list> 在内置、扩展和自定义工具中禁用特定的工具名称
--no-builtin-tools-nbt 默认禁用内置工具,但保留扩展/自定义工具启用
--no-tools-nt 默认禁用所有工具

可用的内置工具:readbasheditwritegrepfindls

资源选项

选项 描述
-e--extension <source> 从路径、npm 或 git 加载扩展(可重复)
--no-extensions 禁用扩展发现
--skill <path> 加载技能(可重复)
--no-skills 禁用技能发现
--prompt-template <path> 加载提示模板(可重复)
--no-prompt-templates 禁用提示模板发现
--theme <path> 加载主题(可重复)
--no-themes 禁用主题发现
--no-context-files-nc 禁用 AGENTS.md 和 CLAUDE.md 上下文文件发现

--no-* 与显式标志结合使用以加载你所需的内容,忽略 settings.json(例如,--no-extensions -e ./my-ext.ts)。

其他选项

选项 描述
--system-prompt <text> 替换默认提示(上下文文件和技能仍然追加)
--append-system-prompt <text> 追加到系统提示
--verbose 强制详细启动信息
-a--approve 信任本次运行的项目本地文件
-na--no-approve 忽略本次运行的项目本地文件
-h--help 显示帮助
-v--version 显示版本

文件参数

使用 @ 前缀将文件包含在消息中:

pi @prompt.md "回答这个问题"
pi -p @screenshot.png "这张图片里有什么?"
pi @code.ts @test.ts "审查这些文件"

示例

## 交互式,带初始提示
pi "列出 src/ 下所有 .ts 文件"

## 非交互式
pi -p "总结这个代码库"

## 非交互式,带管道输入 stdin
cat README.md | pi -p "总结这段文本"

## 命名的一次性会话
pi --name "发布审计" -p "审计此仓库"

## 不同模型
pi --provider openai --model gpt-4o "帮我重构"

## 带提供商前缀的模型(无需 --provider)
pi --model openai/gpt-4o "帮我重构"

## 带思考级别简写的模型
pi --model sonnet:high "解决这个复杂问题"

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

## 只读模式
pi --tools read,grep,find,ls -p "审查代码"

## 禁用一个扩展或内置工具,同时保留其余可用
pi --exclude-tools ask_question

## 高思考级别
pi --thinking high "解决这个复杂问题"

环境变量

变量 描述
PI_CODING_AGENT 由 CLI 和 RPC 入口点设置为 true,以便子进程可以检测它们正在 Pi 内部运行
PI_CODING_AGENT_DIR 覆盖配置目录(默认:~/.pi/agent
PI_CODING_AGENT_SESSION_DIR 覆盖会话存储目录(被 --session-dir 覆盖)
PI_PACKAGE_DIR 覆盖包目录(对于存储路径分词不佳的 Nix/Guix 很有用)
PI_OFFLINE 禁用启动网络操作,包括更新检查、包更新检查和安装/更新遥测
PI_SKIP_VERSION_CHECK 在启动时跳过 Pi 版本更新检查。这会阻止 pi.dev 最新版本请求
PI_TELEMETRY 覆盖安装/更新遥测和提供商归属标头。使用 1/true/yes 启用,或 0/false/no 禁用。这不会禁用更新检查
PI_CACHE_RETENTION 设置为 long 以延长提示缓存(Anthropic:1 小时,OpenAI:24 小时)
VISUALEDITOR externalEditor 未设置时,用于 Ctrl+G 的回退外部编辑器;Windows 默认使用记事本,其他系统默认使用 nano

由 LLM 可调用的 bash 工具运行的命令也会接收当前会话元数据:

变量 描述
PI_SESSION_ID 当前会话 ID
PI_SESSION_FILE 会话 JSONL 的绝对路径;临时会话未设置
PI_PROVIDER 当前选择的模型提供商
PI_MODEL 当前选择的模型 ID
PI_REASONING_LEVEL 当前有效的推理级别

这些值在每个命令启动时解析。有关语义、示例和自定义工具选择退出,请参阅 环境变量


贡献与开发

有关指导,请参阅 CONTRIBUTING.md;有关设置、分支和调试,请参阅 docs/development.md

许可证

MIT

另请参阅

pi.dev 域名由 exe.dev 慷慨捐赠 Exy 吉祥物

  • 原文链接: github.com/badlogic/pi-m...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论