← 返回更新日志

Pi v1.0.0

2026-10-01 · GitHub 原文
### 新功能 - **默认全屏** — TUI 现在默认以全屏模式运行。将 `tuiMode` 设置为 `"regular"` 可保留终端的正常回滚缓冲区。请参阅[终端与显示](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/settings.md#terminal-and-display)。 - **更精简的 codemode** — 提示词令牌减少约 40%,错误消息还会告诉模型如何恢复。请参阅 [Codemode](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/codemode.md)。 - **在 codemode 中生成图像** — 脚本使用会话凭据调用 `models.generateImages()`。请参阅[生成图像](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/codemode.md#generate-images)和[使用图像模型](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/models.md#use-image-models)。 - **`/login` 中的 Radius** — 登录 Radius,并一步完成其 MCP 服务器的设置。请参阅 [Radius](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/providers.md#radius)。 - **Anthropic 复制代码登录** — 当浏览器运行在另一台计算机上时也可登录。请参阅[交互式身份验证](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/providers.md#authenticate-interactively)。 - **强化 MCP OAuth 安全性** — 新增 `oauth.authServerMetadataUrl`、RFC 9207 `iss` 检查、按服务器存储凭据,以及保留已授权作用域的升级登录。请参阅[使用 OAuth 进行身份验证](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/mcp.md#authenticate-with-oauth)。 - **仅显示标题的安静启动** — `quietStartup: "header"` 会保留版本和快捷键提示,并隐藏其余内容。请参阅[终端与显示](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/settings.md#terminal-and-display)。 ### 新增 - 为声明了错误 OAuth 授权服务器或未声明授权服务器的 MCP 服务器新增 `oauth.authServerMetadataUrl` 设置。Pi 将使用配置的元数据文档,而不再执行自动发现([#10172](https://github.com/earendil-works/pi/issues/10172))。 - 新增 `quietStartup: "header"`,保留包含版本和快捷键提示的启动标题,但隐藏模型作用域行和已加载资源列表。 - 在 codemode 脚本中新增 `models.generateImages()`。它使用会话凭据运行图像模型(例如 OpenRouter 的图像模型),并返回 base64 图像块,由 `image()` 将其附加到结果中;其用量与 `models.classify()` 一样计入会话成本。扩展可调用 `ctx.modelRegistry.generateImages()`。请参阅[使用图像模型](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/models.md#use-image-models)。 - 为 Anthropic `/login` 新增复制代码登录方式,适用于浏览器运行在另一台计算机上的无头环境(由 [@lucasmeijer](https://github.com/lucasmeijer) 提交的 [#10194](https://github.com/earendil-works/pi/pull/10194))。 ### 变更 - 将 TUI 的默认模式改为全屏。将 `tuiMode` 设置为 `"regular"` 或传入 `--tui-mode regular`,可保留终端的正常回滚缓冲区。 - `/login` 现在会在顶层菜单的最后一个选项中显示“使用 Radius 登录”,并显示其状态。登录 Radius 后,`/login` 会提示在全局 `mcp.json` 中使用 `"auth": { "provider": "radius" }` 配置 Radius MCP 服务器,然后重新加载。取消登录后会返回启动该登录流程的菜单。 - 提供商文档页面已更名为[提供商](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/providers.md),其中的“云提供商”部分现已改为“提供商特定配置”,并将 Radius 放在首位介绍。 - MCP OAuth 凭据现在按服务器名称和 URL 存储,因此 URL 相同的 MCP 服务器可以使用不同账户登录。仅按 URL 存储的凭据会迁移到第一个使用它们的服务器([#10252](https://github.com/earendil-works/pi/issues/10252))。 - Codemode 消耗的提示词令牌大幅减少:启用默认工具和 codemode 时,一次 GPT-5.6 请求从约 5,300 个令牌缩减至 3,300 个。`codemode` 描述现在以每项一行的方式列出脚本全局变量,并指向新的 [Codemode](https://github.com/earendil-works/pi/blob/v1.0.0/packages/coding-agent/docs/codemode.md) 参考文档;模型会在需要时读取其中的 `models` API。已声明的工具现在只用一行说明脚本如何调用它们以及调用会解析为何种结果,不再重复完整声明;系统提示词中的 codemode 指南和 MCP 服务器部分也更加简短。 - Codemode 错误现在会说明恢复方法:读取不存在的工具或 `models` 成员时,会列出相近的匹配项(例如 `tools.Bash` 会建议 `tools.bash`);`models.classify()` 和 `models.generateImages()` 会拒绝格式错误的参数,并说明预期格式;使用未知模型时会提示调用 `models.getAvailableOfType()`;向 `store()` 传入过大值时会解释存储区的用途;脚本生成图像却未显示时会收到提示。原先使用 `typeof tools.name` 探测工具的脚本必须改用 `"name" in tools`。 - `/login` 和 `/logout` 现在将没有凭据的提供商标记为“未配置”,而不再使用原先的“未配置”措辞。 - OAuth 浏览器页面现在会显示彩色 Pi 徽标。 ### 修复 - 修复了 MCP OAuth 登录会接受 `iss` 参数指向另一授权服务器的授权响应的问题;现在会在交换授权码之前拒绝该授权码(RFC 9207)。 - 修复了当令牌响应包含 `"scope": ""` 时 MCP OAuth 登录因 `Invalid scope` 而失败的问题,以及其他可选 OAuth 字段为空字符串或 `null` 时的类似故障([#10266](https://github.com/earendil-works/pi/issues/10266))。 - 修复了 `/mcp login` 输出的登录 URL 换行后无法点击的问题([#10186](https://github.com/earendil-works/pi/issues/10186))。 - 修复了在未指定 `--model` 时,`--provider` 会被静默忽略,并运行另一提供商的默认模型的问题;现在会报错([#10236](https://github.com/earendil-works/pi/issues/10236))。 - 修复了请求更多作用域(`insufficient_scope`)的 MCP 服务器反复要求登录的问题。此前新登录只请求缺少的作用域,导致新令牌失去旧令牌已有的访问权限;现在会保留已授权的作用域。 - 修复了会话记录中的用户消息为每个渲染行保留两个全宽副本的问题;现在只保留一个,输出保持一致。 - 修复了 `/login` 和 `/logout` 将包括 Radius 在内的所有 OAuth 登录都标记为订阅的问题;现在只有由订阅支持的提供商显示“订阅”,其他 OAuth 登录显示“账户”。 - 修复了启动标题徽标在 Apple Terminal 中显示间隙的问题;现在改为显示带版本号的彩色“Pi”。 - 修复了由 `tool_search` 加载的延迟 MCP 工具在恢复会话和执行 `/reload` 时被丢弃的问题,即使其服务器已在下一次提示之前重新连接;这是因为会话先于 MCP 服务器重新连接恢复了工具。 - 修复了系统主题导致 Catppuccin Frappe 等柔和调色板变得鲜艳许多的问题;调色板颜色现在会保持其色度(由 [@dgtlntv](https://github.com/dgtlntv) 提交的 [#10293](https://github.com/earendil-works/pi/pull/10293),另见 [#10255](https://github.com/earendil-works/pi/issues/10255))。 - 修复了输入内容以空白字符开头时,斜杠命令自动补全不会触发的问题(由 [@haoqixu](https://github.com/haoqixu) 提交的 [#10218](https://github.com/earendil-works/pi/pull/10218))。 - 修复了全屏模式下,当带样式的词元恰好在高亮边界处结束时,颜色会溢出鼠标选区和搜索高亮范围的问题([#10169](https://github.com/earendil-works/pi/issues/10169))。 - 修复了会话记录中每条已渲染消息所占内存无法释放的问题;现在一条较长的助手消息所占用的堆内存约为此前的五分之一。