← 返回更新日志

Pi v0.51.0

2026-02-01 · GitHub 原文
### 不兼容变更 - **扩展工具签名变更**:`ToolDefinition.execute` 现在使用 `(toolCallId, params, signal, onUpdate, ctx)` 的参数顺序以匹配 `AgentTool.execute`。此前为 `(toolCallId, params, onUpdate, ctx, signal)`。这使得包装内置工具变得简单,因为前四个参数现在已对齐。通过交换 `signal` 和 `onUpdate` 参数来更新您的扩展: ```ts // 之前 async execute(toolCallId, params, onUpdate, ctx, signal) { ... } // 之后 async execute(toolCallId, params, signal, onUpdate, ctx) { ... } ``` ### 新功能 - **Android/Termux 支持**:Pi 现在可通过 Termux 在 Android 上运行。安装命令如下: ```bash pkg install nodejs termux-api git npm install -g @mariozechner/pi-coding-agent mkdir -p ~/.pi/agent echo "You are running on Android in Termux." > ~/.pi/agent/AGENTS.md ``` 当 `termux-api` 不可用时,剪贴板操作会优雅降级。([#1164](https://github.com/badlogic/pi-mono/issues/1164)) - **Bash 派生钩子**:扩展现在可以通过 `pi.setBashSpawnHook()` 在执行前拦截并修改 Bash 命令。调整命令字符串、工作目录或环境变量。详见 [docs/extensions.md](docs/extensions.md)。([#1160](https://github.com/badlogic/pi-mono/pull/1160) by [@mitsuhiko](https://github.com/mitsuhiko)) - **Linux ARM64 musl 支持**:通过更新剪贴板依赖,Pi 现在可在 Alpine Linux ARM64 (linux-arm64-musl) 上运行。 - **Nix/Guix 支持**:`PI_PACKAGE_DIR` 环境变量可覆盖内容寻址包管理器的包路径,这些管理器的存储路径分词效果不佳。详见 [README.md#environment-variables](README.md#environment-variables)。([#1153](https://github.com/badlogic/pi-mono/pull/1153) by [@odysseus0](https://github.com/odysseus0)) - **命名会话过滤器**:`/resume` 选择器现在支持通过 Ctrl+N 过滤以仅显示命名会话。可通过 `toggleSessionNamedFilter` 快捷键进行配置。详见 [docs/keybindings.md](docs/keybindings.md)。([#1128](https://github.com/badlogic/pi-mono/pull/1128) by [@w-winter](https://github.com/w-winter)) - **类型化工具调用事件**:扩展开发者可使用 `isToolCallEventType()` 缩小 `ToolCallEvent` 的类型,以获得更好的 TypeScript 支持。详见 [docs/extensions.md#tool-call-events](docs/extensions.md#tool-call-events)。([#1147](https://github.com/badlogic/pi-mono/pull/1147) by [@giuseppeg](https://github.com/giuseppeg)) - **扩展 UI 协议**:提供扩展对话框和通知的完整 RPC 文档及示例,使无头客户端能够支持交互式扩展。详见 [docs/rpc.md#extension-ui-protocol](docs/rpc.md#extension-ui-protocol)。([#1144](https://github.com/badlogic/pi-mono/pull/1144) by [@aliou](https://github.com/aliou)) ### 新增 - 通过更新剪贴板依赖,新增 Linux ARM64 musl (Alpine Linux) 支持 - 新增 Android/Termux 支持,并实现剪贴板优雅降级 ([#1164](https://github.com/badlogic/pi-mono/issues/1164)) - 新增 Bash 工具派生钩子支持,用于在执行前调整命令、工作目录和环境变量 ([#1160](https://github.com/badlogic/pi-mono/pull/1160) by [@mitsuhiko](https://github.com/mitsuhiko)) - 为每个工具新增类型化的 `ToolCallEvent.input`,并添加 `isToolCallEventType()` 类型守卫以缩小内置工具事件范围 ([#1147](https://github.com/badlogic/pi-mono/pull/1147) by [@giuseppeg](https://github.com/giuseppeg)) - 从包中导出 `discoverAndLoadExtensions`,以便在不克隆本地仓库的情况下测试扩展 ([#1148](https://github.com/badlogic/pi-mono/issues/1148)) - 在 RPC 文档中新增扩展 UI 协议文档,涵盖扩展对话框和通知的所有请求/响应类型 ([#1144](https://github.com/badlogic/pi-mono/pull/1144) by [@aliou](https://github.com/aliou)) - 新增 `rpc-demo.ts` 示例扩展,用于测试所有 RPC 支持的扩展 UI 方法 ([#1144](https://github.com/badlogic/pi-mono/pull/1144) by [@aliou](https://github.com/aliou)) - 新增 `rpc-extension-ui.ts` TUI 示例客户端,演示带有交互式对话框的扩展 UI 协议 ([#1144](https://github.com/badlogic/pi-mono/pull/1144) by [@aliou](https://github.com/aliou)) - 新增 `PI_PACKAGE_DIR` 环境变量,用于覆盖内容寻址包管理器(Nix、Guix)的包路径,解决存储路径分词不佳的问题 ([#1153](https://github.com/badlogic/pi-mono/pull/1153) by [@odysseus0](https://github.com/odysseus0)) - `/resume` 会话选择器现在支持仅显示命名会话的过滤切换(默认 Ctrl+N,可通过 `toggleSessionNamedFilter` 配置) ([#1128](https://github.com/badlogic/pi-mono/pull/1128) by [@w-winter](https://github.com/w-winter)) ### 修复 - 修复了在没有传入参数时调用 `pi update` 无法更新 npm/git 包的问题 ([#1151](https://github.com/badlogic/pi-mono/issues/1151)) - 修复了 `models.json` 验证逻辑错误地要求将文档中标记为可选的字段为必填的问题。现在模型定义仅要求 `id`;其他所有字段(`name`, `reasoning`, `input`, `cost`, `contextWindow`, `maxTokens`)均设有合理的默认值。 ([#1146](https://github.com/badlogic/pi-mono/issues/1146)) - 通过向技能文件(skill files)的 preamble 添加明确指引,修复了模型解析技能文件中的相对路径时错误地从当前工作目录(cwd)而非技能目录进行解析的问题 ([#1136](https://github.com/badlogic/pi-mono/issues/1136)) - 修复了在导航条目时树形选择器丢失焦点状态的问题 ([#1142](https://github.com/badlogic/pi-mono/pull/1142) by [@Perlence](https://github.com/Perlence)) - 修复了 `buildBaseOptions` 中未透传 `cacheRetention` 选项的问题 ([#1154](https://github.com/badlogic/pi-mono/issues/1154)) - 修复了 OAuth 登录/刷新令牌时未使用 HTTP 代理设置(`HTTP_PROXY`, `HTTPS_PROXY` 环境变量)的问题 ([#1132](https://github.com/badlogic/pi-mono/issues/1132)) - 修复了当源仅在全局注册时,`pi update <source>` 仍会将包安装到本地的问题 ([#1163](https://github.com/badlogic/pi-mono/pull/1163) by [@aliou](https://github.com/aliou)) - 修复了在进行树形导航并启用摘要功能时,摘要等待期间用户输入的编辑器内容被覆盖的问题 ([#1169](https://github.com/badlogic/pi-mono/pull/1169) by [@aliou](https://github.com/aliou))