← 返回更新日志

Pi v0.63.0

2026-03-27 · GitHub 原文
### 破坏性变更 - `ModelRegistry.getApiKey(model)` 已被 `getApiKeyAndHeaders(model)` 替代,因为 `models.json` 的认证和头部值现在可以在每次请求时动态解析。以前仅获取 API Key 的扩展和 SDK 集成现在必须每次调用时获取请求认证,并转发 `apiKey` 和 `headers`。仅在明确需要仅针对提供商级别查找 API Key,而不处理模型头部或 `authHeader` 时,才使用 `getApiKeyForProvider(provider)` ([#1835](https://github.com/badlogic/pi-mono/issues/1835)) - 移除了已弃用的直接 `minimax` 和 `minimax-cn` 模型 ID,仅保留 `MiniMax-M2.7` 和 `MiniMax-M2.7-highspeed`。请将固定的模型 ID 更新为支持的直接 MiniMax 模型之一,或使用仍暴露旧 ID 的其他提供商路由 ([#2596](https://github.com/badlogic/pi-mono/pull/2596) by [@liyuan97](https://github.com/liyuan97)) #### 迁移说明 之前: ```ts const apiKey = await ctx.modelRegistry.getApiKey(model); return streamSimple(model, messages, { apiKey }); ``` 之后: ```ts const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model); if (!auth.ok) throw new Error(auth.error); return streamSimple(model, messages, { apiKey: auth.apiKey, headers: auth.headers, }); ``` ### 新增 - 在全局和项目 `settings.json` 中添加了 `sessionDir` 设置支持,以便在不每次传入 `--session-dir` 的情况下配置会话存储 ([#2598](https://github.com/badlogic/pi-mono/pull/2598) by [@smcllns](https://github.com/smcllns)) - 在交互式头部添加了启动引导提示,告知用户 pi 可以解释其自身功能与文档 ([#2620](https://github.com/badlogic/pi-mono/pull/2620) by [@ferologics](https://github.com/ferologics)) - 为 `edit` 工具添加了多区域编辑支持,单次调用即可更新同一文件中多个独立且不重叠的区域,同时所有替换均基于原始文件内容进行匹配 - 支持 `PI_TUI_WRITE_LOG` 目录路径,为每个实例创建独立的日志文件(`tui-<timestamp>-<pid>.log`),便于调试多个 pi 会话 ([#2508](https://github.com/badlogic/pi-mono/pull/2508) by [@mrexodia](https://github.com/mrexodia)) ### 变更 ### 修复 - 修复了文件变更队列的顺序,使针对同一文件的并发 `edit` 和 `write` 操作保持按请求顺序串行执行,而不是在队列键解析时被重新排序 - 修复了 `models.json` 中 shell 命令认证和头部的解析时机,改为在请求时解析,而非缓存到长期存在的模型状态中。pi 现在将 TTL、缓存和恢复策略交由用户提供的包装命令处理,因为任意 shell 命令需要依赖特定提供商的策略 ([#1835](https://github.com/badlogic/pi-mono/issues/1835)) - 修复了 Google 和 Vertex 的成本计算,当提供商报告 `cachedContentTokenCount` 时,从计费输入 token 中减去缓存的 prompt token,避免重复计算 ([#2588](https://github.com/badlogic/pi-mono/pull/2588) by [@sparkleMing](https://github.com/sparkleMing)) - 补充了缺失的 `ajv` 直接依赖;此前依赖通过 `@mariozechner/pi-ai` 的间接安装,导致独立安装失败 ([#2252](https://github.com/badlogic/pi-mono/issues/2252)) - 修复了 `/export` 的 HTML 背景色,使其正确遵循 `theme.export.pageBg`、`cardBg` 和 `infoBg` 设置,而非始终从 `userMessageBg` 派生 ([#2565](https://github.com/badlogic/pi-mono/issues/2565)) - 修复了交互式 bash 执行折叠预览的视觉换行计算时机,改为在渲染时重新计算,使预览在终端窗口调整大小或分栏宽度变化后能正确适应当前宽度 ([#2569](https://github.com/badlogic/pi-mono/issues/2569)) - 修复了 RPC `get_session_stats`,使其暴露 `contextUsage` 字段,以便无头客户端能够读取实际的当前上下文窗口使用情况,而非从 token 总量中推导 ([#2550](https://github.com/badlogic/pi-mono/issues/2550)) - 修复了 `pi update` 对 git 包的处理,使用 `--no-tags` 仅拉取跟踪的目标分支,减少无关分支和标签的干扰,同时保留支持强制推送的安全更新机制 ([#2548](https://github.com/badlogic/pi-mono/issues/2548)) - 修复了打印和 JSON 模式,使其在退出前触发 `session_shutdown` 事件,以便扩展能释放长期资源,并确保非交互式运行能够干净终止 ([#2576](https://github.com/badlogic/pi-mono/issues/2576)) - 修复了 GitHub Copilot OpenAI Responses 请求,在未请求推理努力时完全省略 `reasoning` 字段,避免 Copilot `gpt-5-mini` 在内部摘要调用时因拒绝 `reasoning: { effort: "none" }` 而返回 `400` 错误 ([#2567](https://github.com/badlogic/pi-mono/issues/2567)) - 修复了引用块文本颜色在行内链接(及其他行内元素)后失效的问题,原因是缺少样式恢复前缀 - 修复了斜杠命令 Tab 补全在完成命令名后立即链接到参数自动补全的问题,恢复了如 `/model` 等提交到选择器对话框的交互流程 ([#2577](https://github.com/badlogic/pi-mono/issues/2577)) - 修复了 TUI 内容收缩或临时组件膨胀工作区后,出现的内容陈旧和视口跟踪错误问题 ([#2126](https://github.com/badlogic/pi-mono/pull/2126) by [@Perlence](https://github.com/Perlence)) - 修复了 `@` 自动补全功能,对编辑器触发的搜索进行防抖处理,干净取消进行中的 `fd` 查找,并在结果刷新时保持建议可见 ([#1278](https://github.com/badlogic/pi-mono/issues/1278))