新闻
Pi Coding Agent 及其子包的版本发布记录。
v1.0.0(2026-10-01)
Pi Coding Agent
新功能
- 默认全屏 – TUI 现在默认全屏运行。将
tuiMode设为"regular"可保留终端的正常回滚。详见 终端与显示。 - 更精简的 codemode – Prompt Token 大约减少 40%,错误信息会告诉模型如何恢复。详见 Codemode。
- codemode 中生成图片 – 脚本用会话凭证调用
models.generateImages()。详见 生成图片 和 使用图片模型。 /login支持 Radius – 用 Radius 登录,并一步配置其 MCP 服务器。详见 Radius。- Anthropic 复制验证码登录 – 浏览器在另一台机器上时也能登录。详见 交互式认证。
- MCP OAuth 加固 –
oauth.authServerMetadataUrl、RFC 9207iss校验、按服务器存储凭证,以及保留已授权 scope 的升级登录。详见 用 OAuth 认证。 - 只保留页头的安静启动 –
quietStartup: "header"保留版本和快捷键提示,隐藏其余内容。详见 终端与显示。
新增
- 为声明了错误 OAuth 授权服务器或未声明授权服务器的 MCP 服务器添加
oauth.authServerMetadataUrl设置。Pi 使用配置的 metadata 文档,而不走发现(#10172)。 - 添加
quietStartup: "header",保留带版本和快捷键提示的启动页头,但隐藏模型范围行和已加载资源列表。 - 为 codemode 脚本添加
models.generateImages()。它用会话凭证运行 OpenRouter 等图片模型,返回image()可附加到结果的 base64 图片块;用量像models.classify()一样计入会话费用。扩展可调用ctx.modelRegistry.generateImages()。详见 使用图片模型。 - 为 Anthropic
/login添加复制验证码登录方式,适用于浏览器在另一台机器上的无头环境(#10194 由 @lucasmeijer 贡献)。
变更
- 将默认 TUI 模式改为全屏。将
tuiMode设为"regular"或传入--tui-mode regular可保留终端的正常回滚。 /login现在在顶级菜单末尾提供「用 Radius 登录」,并显示状态。Radius 登录后,/login会提议在全局mcp.json中配置 Radius MCP 服务器("auth": { "provider": "radius" })并重新加载。取消登录会回到启动它的菜单。- Provider 文档页更名为 Providers,「Cloud Providers」一节改为「Provider Specific Config」,并首先介绍 Radius。
- MCP OAuth 凭证现在按服务器名和 URL 存储,同一 URL 的 MCP 服务器可以用不同账号登录。仅按 URL 存储的凭证会迁移到第一个使用它们的服务器(#10252)。
- Codemode 消耗的 Prompt Token 大幅减少:默认工具且 codemode 开启时,一次 GPT-5.6 请求从大约 5,300 Token 降到 3,300。
codemode描述用一行列出每个脚本全局变量,并指向新的 Codemode 参考文档中的modelsAPI,模型需要时再去读。已声明工具用一行说明脚本如何调用、调用解析成什么,而不再重复完整声明;系统 Prompt 中的 codemode 指南和 MCP 服务器分区也更短。 - Codemode 错误现在会说明如何恢复:读取不存在的工具或
models成员时会给出相近匹配(tools.Bash会建议tools.bash);models.classify()和models.generateImages()会拒绝畸形参数并给出期望形状;未知模型会指向models.getAvailableOfType();过大的store()值会解释 store 的用途;生成了图片却没展示的脚本会收到提示。用typeof tools.name探测工具的脚本必须改用"name" in tools。 /login和/logout现在把没有凭证的 Provider 标为 "not configured",而不再是 "unconfigured"。- OAuth 浏览器页面现在显示彩色 Pi logo。
修复
- 修复 MCP OAuth 登录会接受
iss参数指向另一授权服务器的授权响应;现在在兑换前就会拒绝该 code(RFC 9207)。 - 修复 Token 响应包含
"scope": ""时 MCP OAuth 登录失败并报Invalid scope,以及其他空或null可选 OAuth 字段的类似失败(#10266)。 - 修复
/mcp login打印的登录 URL 换行时无法点击的问题(#10186)。 - 修复只传
--provider不传--model时被静默忽略、改用另一 Provider 默认模型的问题;现在会报错退出(#10236)。 - 修复请求更多 scope(
insufficient_scope)的 MCP 服务器反复要求登录的问题。新登录只请求缺失的 scope,导致新 Token 丢失旧 Token 已有的权限;现在会保留已授权的 scope。 - 修复 transcript 中用户消息为每行渲染结果保留两份全宽副本的问题;现在只保留一份,输出相同。
- 修复
/login和/logout把包括 Radius 在内的所有 OAuth 登录都标成 subscription;只有订阅制 Provider 才写 "subscription",其他 OAuth 登录写 "account"。 - 修复启动页头 logo 在 Apple Terminal 中出现空隙的问题;现在显示带版本号的彩色 "Pi"。
- 修复
tool_search加载的 deferred MCP 工具在 resume 和/reload时被丢掉的问题,即使服务器在下一次 Prompt 前已重连;原因是会话在 MCP 服务器重连前就恢复了工具。 - 修复系统主题让 Catppuccin Frappe 等粉彩色板变得过艳;色板颜色现在保留原有色度(#10255、#10293 由 @dgtlntv 贡献)。
- 修复输入以空白开头时斜杠命令自动补全不触发的问题(#10218 由 @haoqixu 贡献)。
- 修复全屏模式下,带样式的 Token 刚好结束在高亮边界时,颜色会渗出鼠标选区和搜索高亮的问题(#10169)。
- 修复 transcript 中每条已渲染消息占用的内存;一条长 assistant 消息现在大约只保留原来五分之一的堆。
Pi AI
新增
- 为 Anthropic OAuth 添加复制验证码登录。登录时询问浏览器登录(默认)或复制验证码登录:Anthropic 页面会显示授权码,粘贴到 pi 即可,适用于浏览器在另一台机器上的场景(#10194 由 @lucasmeijer 贡献)。
变更
- OAuth 浏览器页面改用彩色 Pi logo。
修复
- 修复从另一 Provider 或 Radius 等网关重放 grammar 工具调用(如
codemode)时,OpenAI Responses 请求失败并报Expected an ID that begins with 'ctc'的问题。
Pi Agent
不兼容变更
- 从
@earendil-works/pi-agent-core移除实验性 harness:AgentHarness、会话和会话存储、durable runtime、pico3、harness 工具、压缩、Skill、Prompt 模板、系统 Prompt 辅助函数、telemetry schema、search service 类型,以及uuidv7和 pi-telemetry 的再导出。./node、./harness/*和./experimental/pico3子路径导出已移除。该包现在只包含Agent、agent loop、proxy stream 及其类型。持久会话请使用@earendil-works/pi-durable。
Pi TUI
新增
- 添加
TuiAltScreen.getScreenLines(),返回上一帧已渲染的行。
修复
v0.99.2(2026-09-30)
Pi Coding Agent
新功能
- MCP 服务器不再挡路 – 默认
codemode暴露的服务器不再出现在codemode描述中,也不再阻塞第一次 Prompt。它们出现在一段简短的系统 Prompt 分区里,脚本通过searchTools()和describeNamespace()查找工具。详见 控制工具暴露。 - 更多 MCP 认证选项 –
oauth.clientName用于只接受已知 OAuth 客户端的服务器;"auth": { "provider": "<provider>" }用 Provider 的/loginToken 认证 HTTP 服务器。详见 用 OAuth 认证。 - Anthropic 工作负载身份联合 – 从 Anthropic SDK 环境变量读取。详见 从环境读取 API key。
/reload启用新加入的工具 – 会启用defaultTools设置里新加入的工具。详见 工具。
新增
- 为 MCP 服务器添加
description字段(pi mcp add --description),随服务器出现在系统 Prompt 中,并用于 tool search 的工具排序;同时添加describeNamespace(name)codemode 辅助函数,返回命名空间的说明和工具名。describeNamespace()和searchTools()接受mcp__dev-radius、mcp__dev_radius、dev-radius或dev_radius作为命名空间。 - 为 MCP 服务器添加
oauth.clientName设置(pi mcp add --oauth-client-name),用于在 OAuth 客户端注册时发送的客户端名称,面向只接受已知客户端的服务器(#10226)。 - 为 HTTP MCP 服务器添加
"auth": { "provider": "<provider>" },把 Provider 当前的/loginToken 作为 bearer Token 发送,而不走 MCP OAuth。每次请求都会读取 Token,因此 Provider 刷新会生效。仅允许出现在全局mcp.json和扩展中,除回环主机外必须使用 https。 - 从
ANTHROPIC_FEDERATION_RULE_ID、ANTHROPIC_ORGANIZATION_ID和ANTHROPIC_IDENTITY_TOKEN_FILE环境变量添加 Anthropic 工作负载身份联合(见 Provider)(#10177、#10242 由 @philfreo 贡献)。 /reload现在会启用defaultTools设置里新加入的工具。从中移除的工具保持启用,会话中关掉的工具除非新加入否则保持关闭,--tools、--no-tools和--no-builtin-tools仍然覆盖该设置(#10245)。
变更
- 默认
codemode暴露的 MCP 服务器不再出现在codemode描述中;脚本通过searchTools()查找它们。codemode-deferred现在是codemode的别名。需要模型不经搜索就能看到的工具,请用direct暴露(#10212)。 codemode描述不再包含 deferred 工具、工具数量或 MCP 服务器说明,因此 MCP 服务器连接或工具变化时描述不会变。tool_search描述同样不再列出它能加载工具的服务器。服务器改为出现在mcp_servers系统 Prompt 分区,带一行摘要,每次 Prompt 开始时更新;分区有变化时会追加到对话。脚本通过describeNamespace()读取服务器说明(#10212)。- 第一次 Prompt 不再等待没有
direct工具的 MCP 服务器。它们在后台连接,当 codemode 脚本点名它们、脚本搜索工具,或tool_search运行时再等待(#10212)。
修复
- 修复新会话间歇性忽略已保存的默认模型,或在该模型属于带已存储凭证的扩展注册原生 Provider 时警告没有可用模型的问题(#9962、#10190 由 @davidbrai 贡献)。
- 修复
/mcp登录 URL 换行时无法点击的问题:改为像/login一样发出终端超链接,并附带Cmd/Ctrl+click to open一行(#10186)。 - 修复 codemode
image()接受畸形 base64 数据或不支持的图片类型,导致无效图片块被持久化、之后每次 Provider 请求都 HTTP 400 失败的问题(#10215)。 - 修复独立 Windows 可执行文件中 codemode 无法启动脚本 worker 的问题(#10204)。
- 修复 Prompt 提交随会话变长而变慢的问题:解析会话模型选择时,曾对每条 assistant 消息查找一次模型目录(#10198)。
- 修复带已刷新 pi.dev 目录的 Provider 模型查找变慢的问题:合并远程目录模型曾是二次时间。
- 修复
built-in-tool-renderer.ts和minimal-mode.ts扩展示例从系统 Prompt 移除内置工具摘要和指南的问题(#10072、#10193 由 @christianklotz 贡献)。 - 修复 Z.AI 国内端点
Prompt exceeds max length错误的上下文溢出检测(#10208)。 - 修复工具 schema 使用 Anthropic strict tool use 拒绝的关键字(如
minimum/maximum)时 Anthropic 请求失败的问题;这类工具现在以非 strict 方式发送(#9953)。 - 修复
Retry-After头包含无法解析的日期时 Provider 重试立即触发的问题;现在改用指数退避(#9571)。 - 修复扩展命令未注册字符串名称或 handler 时,输入
/会让 pi 崩溃的问题;现在扩展会加载失败并报错(#10054)。 - 修复折叠的
codemode和 MCP 工具结果在输出是一行很长(例如压缩 JSON)时占满屏幕的问题。预览现在像 bash 输出一样按换行后的行数限制,而不是按逻辑行。 - 修复
codemode.mode: "only"在系统 Prompt 的工具列表中列出read、bash、edit和write,但请求只声明codemode的问题(#10192)。 - 修复两个 MCP 工具名仅
-和_不同时(如read-file和read_file),codemode 脚本会调用错误工具的问题。与 Codex 一样,MCP 工具和命名空间名现在把-替换为_(mcp__my-server__x变为mcp__my_server__x),同一服务器冲突的工具都会加哈希后缀,仅-和_不同的服务器名会被拒绝(#10239)。
Pi AI
新增
- 添加轻量入口
@earendil-works/pi-ai/models,用于模型集合和 Provider 构造,不加载 TypeBox、内置目录或 Provider SDK。 - 从 Anthropic SDK 环境变量
ANTHROPIC_FEDERATION_RULE_ID、ANTHROPIC_ORGANIZATION_ID和ANTHROPIC_IDENTITY_TOKEN_FILE(以及可选的ANTHROPIC_SERVICE_ACCOUNT_ID和ANTHROPIC_WORKSPACE_ID)添加 Anthropic 工作负载身份联合。API key 和ANTHROPIC_AUTH_TOKEN优先(#10177、#10242 由 @philfreo 贡献)。
修复
v0.99.1(2026-09-29)
Pi Coding Agent
新功能
- GPT-6.1 Sol – 可在 OpenAI、Azure OpenAI 和 OpenAI Codex 上使用,现为 OpenAI Codex 的默认模型。详见 选择模型。
新增
- 为 OpenAI、Azure OpenAI Responses 和 OpenAI Codex Provider 添加 GPT-6.1 Sol(
gpt-6.1-sol)。
变更
- 把 OpenAI Codex 默认模型改为 GPT-6.1 Sol(
gpt-6.1-sol)。
修复
- 修复打包发行版中
/login登录 OpenAI 因缺少openai-chatgpt.js模块而失败的问题。
Pi AI
新增
- 为 OpenAI、Azure OpenAI Responses 和 OpenAI Codex Provider 添加 GPT-6.1 Sol(
gpt-6.1-sol)。
v0.99.0(2026-09-29)
Pi Coding Agent
新功能
- Codemode 与 MCP – 连接 MCP 服务器,让模型运行可并行调用工具的 JavaScript。详见 MCP 服务器 和 启用 codemode。
- System 主题 – Pi 的颜色默认来自终端自身的调色板。详见 使用终端颜色。
- 用 ChatGPT 登录 – 通过
/login openai用 ChatGPT 订阅使用 OpenAI Provider。详见 交互式认证。 - 虚拟模型 – 扩展可以把每次请求路由到不同的物理模型。详见 虚拟模型。
- Classifier 模型 – 从 codemode 脚本运行 Jev classifier,或把任意 llama.cpp 模型当 classifier 用。详见 codemode 如何工作 和 分类。
新增
- 以内置扩展的形式添加 codemode、tool search 和 MCP 支持。
codemode工具在 QuickJS 沙箱中运行模型编写的 JavaScript 来调用 pi 的工具;用defaultTools或--tools启用,用codemode.mode和codemode.inlineBudget配置。tool_search查找未向模型声明的工具并声明它们。stdio 或 streamable HTTP 的 MCP 服务器(支持 OAuth)来自mcp.json(全局,或项目受信任后按项目)或pi.registerMcpServer(),用/mcp和pi mcp add|remove|list|login|logout管理。详见 MCP 服务器 和 启用 codemode(#10040)。 - 为扩展工具添加编排 API:
exposure(direct、model-only、codemode、deferred或hidden)、namespace、annotations、带structuredContent的outputSchema、isError结果、prepareLoadout(),以及用于嵌套工具调用的ctx.executeTool();嵌套调用会发出带parentToolCallId的事件,并作为有界nestedCalls记在调用方工具的结果上。详见 工具暴露。 - 当扩展注册了与内置扩展相同的工具、命令或 flag 并替换内置扩展时,发出警告(#10174 由 @cristinaponcela 贡献)。
- 添加实验性虚拟模型:扩展用
pi.registerVirtualModel()注册,并为每次请求选择物理模型和 thinking 级别。页脚显示路由后的模型,/session按物理模型列出费用,examples/extensions/jev-router.ts用 Jev classifier 做路由。详见 虚拟模型。 - 为 OpenAI Provider 的
/login添加用 ChatGPT 登录,通过 ChatGPT 订阅使用 OpenAI API。Pi 在全局设置中存储稳定的deviceId用于此次登录,并在 bug report 中省略它。 - 添加
system主题(现为默认),根据终端报告的前景色、背景色和 ANSI 调色板推导 pi 的颜色,并在终端切换亮/暗时重建。详见 使用终端颜色。 - 为主题文件添加
#rgb、oklch()和okhsl()颜色以及可选的appearance字段,并为扩展添加theme.style()、theme.colors和theme.appearance。详见 主题 和 TUI。 - 为每个 llama.cpp chat 模型添加 classifier 模型,用 next-token 标签概率作答。详见 分类。
- 在 OpenRouter、Cloudflare Workers AI、Vercel AI Gateway 和 OpenCode Zen 上添加 Jev classifier 模型(来自
@earendil-works/pi-ai)。 - 添加
fullscreenWheelScrollLines设置和/settings条目,用于全屏鼠标滚轮滚动。默认"auto"会在非本地 macOS 终端上加速快速滚轮(#9758)。 - 为成功的 RPC
prompt、steer和follow_up响应添加按输入的 disposition,以及AgentSession.steer()/followUp()和RpcClient.prompt()/steer()/followUp();RpcClient.prompt()还接受streamingBehavior(#9098、#9803)。 - 为
ModelRuntime添加图片生成:generateImages()带运行时解析的认证(已存储凭证、OAuth、运行时 API key、models.jsonheaders),以及getModelsOfType()、getModelOfType()、getAvailableOfType()、getAllModels()和getAllAvailable()。OpenRouter 图片模型列在openrouterProvider 下并共享其凭证;同一个上游 ID 可以有独立的 chat 和 image 条目。没有模型列表的models.jsonProvider 和扩展注册会保留内置图片生成。扩展模型列表可以包含带判别的 chat、image 和 classifier 条目及操作实现;提供时,它们会替换该 Provider 在所有操作上的目录。面向 chat 的读取(getModels()、getAvailableSnapshot()、模型选择器)不变。 - 为
ModelRuntime添加 classifier 支持,包括classify()、classifier 模型访问器、运行时解析的认证,以及内置 TypeSafejev-latest模型。 - 为 pi.dev 模型目录请求添加
types=chat,image,classifier,使远程刷新覆盖所有支持的模型类型;未知类型的条目会被忽略。 - 添加
provider_stream_event扩展事件,用于在规范化之前观察已解析的 Provider 事件,并提供可选的/debug-provider示例查看器(#9784、#9901 由 @davidbrai 贡献)。 - 在 HTML 导出中为标记为
display: false的自定义消息添加显示/隐藏切换(H)。消息默认保持隐藏,也可以从侧边栏显示(#8896、#10020 由 @rwachtler 贡献)。 - 为 Anthropic 添加 Claude Sonnet 5.5 支持,带自适应 thinking 和 1M 上下文窗口(来自
@earendil-works/pi-ai)。 - 在
pi config中添加「内置」分区,用于全局或按项目禁用内置的mcp、llama.cpp、codemode和tool-search扩展,以-builtin:<name>的形式存入extensions设置。SDK 内联扩展用builtin: true选择加入。 - 为
defaultTools设置添加+name和-name条目,无需重复默认列表即可添加或移除工具,例如"defaultTools": ["+codemode"]。项目中的这种条目会叠加在用户设置之上。文档说明了如何在不启用 MCP 的情况下启用codemode,以及如何从 codemode 脚本使用 Jev 等 classifier 模型。 - 把 codemode
models.classify()调用的 Token 用量和费用计入 codemode 工具结果,从而计入会话费用;codemode 结果会显示每次调用的费用。
变更
- 构建从 TypeScript native preview 切换到 TypeScript 7.0(ES2024 目标),并用 Node 内置的 type stripping 替代
tsx来从源码运行(#9965)。 - 从启动 banner 移除
[Themes]分区。自定义主题仍可在/settings中使用,主题冲突仍会报告。 - 启动 header 改为显示 pi logo 和版本,而不再显示应用名。
- 把内置
dark和light主题改为修订后的 pi 颜色,用 OKHSL 编写。 - 亮/暗终端检测改为优先使用报告的背景色,然后是终端的亮/暗报告,最后是
COLORFGBG。首次设置不再显示检测到的外观。 - 把 OpenAI Codex Provider 改名为 "OpenAI Codex (legacy)";OpenAI Provider 上的用 ChatGPT 登录取代它(来自
@earendil-works/pi-ai)。 - 把
TERM=*-direct视为 truecolor(来自@earendil-works/pi-tui)。 - 内置扩展和工具在错误、诊断、RPC 源信息和 bug report 中命名为
builtin:<name>(例如builtin:mcp和builtin:read),不再使用<inline:name>和<builtin:name>。它们的斜杠命令不再带[t]自动补全标签。 --no-extensions也会禁用内置扩展,包括 llama.cpp Provider。用-e builtin:<name>显式加载其中一个,例如pi -ne -e builtin:mcp。- 没有自定义 call renderer 的工具调用(包括直接 MCP 工具调用)现在会显示参数:折叠时在标题行以
key=value显示,展开时每个参数一行key: value。MCP 调用标题为server/tool,结果折叠为 5 行。 bash和powershell结构化结果(codemode 脚本会收到)现在最多保留 1 MiB 输出,而不是面向模型的 2000 行或 50KB,并添加truncated和full_output_path。更长的输出保留首尾各 512 KiB。空输出是""而不是(no output)。
修复
- 修复 X11 剪贴板文本在剪贴板所有者接受未声明的图片目标时被误识别为图片的问题(#9786)。
- 阻止托管 git 包自动安装 Pi peer 依赖,并为在
dependencies中列出宿主提供模块的扩展包添加警告(#9863)。 - 修复用
-e加载的 pinned git 扩展在 ref 变更后仍使用首次下载的 commit 的问题(#9982)。 - 修复
RpcClient在监听器处理事件时取消订阅会跳过下一个事件监听器的问题,这可能导致collectEvents()之后waitForIdle()超时(#9990)。 - 修复模型对省略的
offset和limit发送null时,整文件read调用渲染为:1的问题(#9996)。 - 修复 pi 在首次 assistant 响应前退出时新会话丢失的问题。现在在发送第一条用户消息时创建会话文件(#10000)。
- 修复未加载的 llama.cpp 自动加载预设用 GGUF 训练上下文覆盖缓存的运行时上下文窗口的问题(#10077、#10158 由 @cristinaponcela 贡献)。
- 修复自定义主题忽略
terminal.trueColor及其他终端能力覆盖、以 256 色渲染的问题(#9973、#10039 由 @christianklotz 贡献)。 - 修复粘贴 Finder 中复制的文件时插入文件图标图片而不是文件路径的问题;bash 模式下路径会加引号(#9999、#10136 由 @christianklotz 贡献)。
- 修复主题切换后启动 header、已加载资源和聊天通知仍保留旧颜色的问题。
- 修复 Fireworks 默认模型指向已移除的 Kimi K2.6;现在默认使用 Kimi K3。
- 修复 OpenCode Go 默认模型指向已移除的 Kimi K2.6;现在默认使用 Kimi K3。
- 修复 Together 默认模型指向已移除的 Kimi K2.6;现在默认使用 Kimi K3。
- 降低长会话流式输出和预览主题时的 CPU 占用:页脚缓存会话用量合计,折叠的 bash 结果缓存预览,
sanitizeBinaryOutput()不再把输出拆成逐字符数组。 - 修复通过
ctx.executeTool()调用的工具(例如来自 codemode 脚本)用量从会话费用中丢失的问题;现在会加到调用方工具的结果用量上。 - 修复已加载 Skill 名称不含
skill中字母时/skill自动补全显示为空的问题(来自@earendil-works/pi-tui)(#9944)。 - 修复在
(、[、{、<或反引号等开括号后路径和@自动补全不工作的问题(来自@earendil-works/pi-tui)。 - 修复使用 Kitty 图形协议的终端中图片被拉伸的问题(来自
@earendil-works/pi-tui)(#8938、#9957 由 @rwachtler 贡献)。 - 修复扩展在关闭时关闭 overlay 后,退出时 shell 光标仍保持隐藏的问题(来自
@earendil-works/pi-tui)(#10026)。 - 修复在
/settings子菜单中鼠标点击关闭后键盘输入丢失的问题(来自@earendil-works/pi-tui)。 - 修复通过 Vercel AI Gateway 的 1 小时 Anthropic 缓存写入按 5 分钟费率计价的问题(来自
@earendil-works/pi-ai)(#9210)。 - 修复直接对 OpenAI 兼容 API 调用
stream()/complete()时丢弃模型级samplingParams的问题(来自@earendil-works/pi-ai)(#9506)。 - 修复 Mistral GLM 请求在空内容 delta 后因 "Expected at most one leading ThinkChunk" 失败的问题(来自
@earendil-works/pi-ai)(#9674)。 - 修复 OpenAI Fast 模式请求按标准费率计价的问题(来自
@earendil-works/pi-ai)(#10034)。 - 修复 Mistral reasoning 模型忽略请求的 thinking 级别的问题(来自
@earendil-works/pi-ai)(#9678)。 - 修复 OpenCode Zen 和 OpenCode Go 的
qwen3.8-flashthinking 在后续轮次被重放为纯文本的问题(来自@earendil-works/pi-ai)(#10047)。 - 修复省略
output_index的服务器(例如 llama.cpp)上 OpenAI Responses 流运行错乱工具调用的问题;此类流现在以错误结束(来自@earendil-works/pi-ai)(#9974)。 - 修复 Anthropic 和 OpenAI Codex 浏览器登录在 Provider 以授权错误重定向后无限等待,以及 Anthropic 登录在回调端口被占用时失败的问题(来自
@earendil-works/pi-ai)。 - 修复上游模型元数据不完整时 GitHub Copilot Claude Opus 5.5 提供不支持的 thinking 级别的问题(来自
@earendil-works/pi-ai)。
Pi AI
不兼容变更
- 把图片模型并入常规
Provider/Models表面。独立的ImagesModels集合已移除:createImagesModels()、createImagesProvider()、ImagesProvider、openrouterImagesProvider()、builtinImagesProviders()和builtinImagesModels()不再存在。改用builtinModels()、models.getModelOfType("image", ...)、models.generateImages()和createProvider({ models, images })。现有的无限定读取仍只返回 chat 模型。 - 图片模型现在是带必需
type: "image"的ImageModel,并与 chat 模型共享BaseModel。旧的复数图片类型名(ImagesModel、ImagesApi、KnownImagesApi、KnownImagesProvider和ImagesProviderId)已移除。generateImages()只接受图片模型。输出模态(output)仍只存在于图片模型上。 - 生成的模型数据 schema 现在是版本 6:每条条目带
type,按操作划分的目录包含 chat、image 和 classifier 模型,同一个上游 ID 可以按类型有独立条目。OpenRouter 图片模型位于openrouter.json的openrouter-imagesapi 组;image-models.generated.ts和scripts/generate-image-models.ts已移除。运行npm run hydrate:model-data。
新增
- 添加
Models.generateImages()(带 Provider 解析的认证)、Provider.generateImages?,以及按model.api索引的createProvider({ images })。createProvider()的models和fetchModels接受所有类型的模型;给定images或classifiers时api可选。 - 添加可选的模型
type("chat"、"image"或"classifier")。Chat 模型可以省略它,因此现有 chat 模型、Provider 和 store 无需改动。用新的isModelType()守卫收窄混合列表,或用getModelType()读取有效类型。 - 在
Models上添加getModelsOfType()、getModelOfType()、getAvailableOfType()、getAllModels()和getAllAvailable();可选的Provider.getAllModels()和Provider.filterAllModels();对应的生成目录访问器;以及AnyModel和ModelTypeMap类型。hasApi()、calculateCost()和modelsAreEqual()接受AnyModel。 - 在
ModelsStoreEntry.models中支持所有类型的模型。存储和拉取的未知类型模型会被丢弃,而不是让刷新失败。 - 添加 classifier 模型和
Models.classify(),采用与 Provider 无关的 JEV 风格choice/score/bool约定。内置 TypeSafe Provider 通过 System One API 暴露 models.dev 的jev-latest,并把公开的bool问题翻译成 TypeSafe 的noul线格式。 - 通过 TypeSafe 兼容的 System One 端点,在 OpenRouter 上添加 Jev classifier 模型(
typesafe/jev-1.13、~typesafe/jev-latest),并在 Cloudflare Workers AI 上通过新的cloudflare-workers-ai-system-oneclassifier API 添加typesafe/jev。 - 通过 TypeSafe 兼容的 System One 端点,在 Vercel AI Gateway 上添加 Jev classifier 模型(
typesafe-ai/jev,从其评估模型目录生成)和 OpenCode Zen(jev-1.13、jev-1.13-free)。 - 为
ClassifierResult添加usage:System One 分类会报告 Token 数,按模型目录像 chat 用量一样计价。 - 为
Models流式入口添加运行时 chat 模型检查,非 chat 模型会以明确的ModelsError失败,而不是缺失 api 的流错误。 - 为生成和发布的 JSON 目录添加基于数组的
models.all.json和providers/{id}.all.json变体,允许同一个上游 ID 每种模型类型出现一次;现有的键值形式models.json和providers/{id}.json对已发布客户端仍只含 chat。 - 添加
onProviderStreamEvent,用于在规范化之前观察已解析的 Provider 流事件,包括 assistant 消息中未保留的 Provider 特定字段(#9784、#9901 由 @davidbrai 贡献)。 - 把 Claude Sonnet 5.5 加入内置 Anthropic 模型目录,带自适应 thinking、对话中途 effort、1M 上下文和官方定价元数据。
- 为
openaiProvider 添加用 ChatGPT 登录:通过 OAuth 用 ChatGPT 订阅使用 OpenAI API。Models.login()接受带getDeviceId()的LoginOptions,为需要稳定安装 ID 的登录流程提供该 ID。订阅用量限制错误不会重试,并链接到 ChatGPT 用量页面;临时用量错误会重试。 - 添加
llama-cpp-classifyclassifier API,根据 llama-server 对单 token 答案标签的 next-token 概率回答 classifier 问题。 - 添加可选的
AssistantMessage.thinkingLevel,记录 agent loop 为该响应请求的 thinking 级别。
变更
- 把 OpenAI Codex Provider 改名为 "OpenAI Codex (legacy)";
openaiProvider 上的用 ChatGPT 登录取代它。 - 把 Anthropic、OpenAI Codex、OpenRouter 和 Radius 的浏览器登录回调服务器统一为同一套实现和相同的浏览器页面。OAuth 页面辅助函数现在可通过
@earendil-works/pi-ai/utils/oauth-page使用。 - Radius 浏览器登录改为在显示浏览器页面之前交换授权码,以便在浏览器中显示 token 交换失败。
修复
- 修复 Vercel AI Gateway 在流式 delta 中报告的 1 小时 Anthropic 缓存写入按 5 分钟费率计价的问题(#9210)。
- 修复直接对 OpenAI 兼容 API 调用
stream()/complete()时丢弃模型级samplingParams的问题(#9506)。 - 修复 Mistral GLM 模型因空内容 delta 产生空文本块和拆分 thinking 块,导致后续请求以 "Expected at most one leading ThinkChunk" 失败的问题(#9674)。
- 修复 OpenAI Fast 模式请求在响应报告
service_tier: "fast"(GPT-6 模型会这样)时按标准费率计价的问题(#10034)。 - 修复 Mistral reasoning 模型忽略请求的 thinking 级别的问题:GLM 5.3 现在使用
reasoning_effort而不是prompt_mode,GLM 5.2 接受max,Mistral 模型只提供 API 支持的 effort 级别(#9678)。 - 修复 OpenCode Zen 和 OpenCode Go 的
qwen3.8-flashthinking 因端点返回空 thinking 签名而在后续轮次被重放为纯文本的问题(#10047)。 - 修复 OpenAI Responses 流把未完成的工具调用返回为可运行,导致省略
output_index的服务器(例如 llama.cpp)运行错乱命令的问题;此类流现在以错误结束(#9974)。 - 修复 Anthropic 和 OpenAI Codex 浏览器登录在 Provider 以授权错误重定向后无限等待的问题;现在会以 Provider 的错误描述失败。
- 修复 Anthropic 浏览器登录在回调端口被占用时失败的问题;现在会回退到粘贴重定向 URL。
- 修复上游模型元数据不完整时 GitHub Copilot Claude Opus 5.5 提供不支持的 thinking 级别的问题;现在提供 low 到 max。
Pi Agent
新增
- 添加
onProviderStreamEventagent 选项,会传给 Provider 流,用于在规范化之前观察已解析的 Provider 事件(#9784、#9901 由 @davidbrai 贡献)。 - agent loop 现在把请求的 thinking 级别记录为每条 assistant 消息上的
thinkingLevel。
Pi TUI
不兼容变更
- 用
TUI.queryTerminalColors()替换TUI.queryTerminalColorScheme()和TUI.queryTerminalBackgroundColor(),一次往返查询默认前景色、背景色和 16 色 ANSI(OSC 10、11 和 4),返回TerminalColors。移除parseOsc11BackgroundColor()。
新增
- 为
TuiAltScreenOptions.wheelScrollLines添加"auto",在每次刻度发送一个事件的终端上加速快速滚轮,并添加TuiAltScreen.setWheelScrollLines()用于运行时更新(#9758)。 - 添加颜色值和样式:
Color类型(索引 ANSI、sRGB 或 OKLCH),parseColor()解析#rgb、#rrggbb、oklch()和okhsl()值,以及indexedColor()、rgbColor()、oklchColor()、okhslColor()、mixColors()、colorToHex()、colorToRgb()、colorToOklch()、colorToOkhsl()、styleText()、getTerminalColorMode()和相关辅助函数。 - 添加
NativeClipboard.getFilePaths(),从 macOS 剪贴板读取文件 URL(#9999、#10136 由 @christianklotz 贡献)。
变更
TERM=*-direct的终端现在检测为 truecolor。
修复
- 修复已加载 Skill 名称不含
skill中字母时/skill自动补全显示为空的问题(#9944)。 - 修复在
(、[、{、<或反引号等开括号后路径和@自动补全不工作的问题,例如(~/Dev<Tab>。 - 降低使用 Kitty 图形协议的终端中图片被拉伸的程度(#8938、#9957 由 @rwachtler 贡献)。
- 修复把鼠标事件转发给子组件的组件(例如打开了子菜单的
SettingsList)移除该子组件后键盘输入丢失的问题。 - 修复扩展在关闭时关闭 overlay 后,退出时 shell 光标仍保持隐藏的问题(#10026)。
- 提升带样式文本的渲染性能:
visibleWidth()对带 ANSI 样式的 ASCII 不再做 grapheme 分段,Box检查渲染缓存时不再给每行重新 padding,Markdown在主题和宽度变化时复用已解析的 token。
v0.87.1(2026-09-22)
Pi Coding Agent
新功能
- 最新前沿模型 – 在支持的 Provider(包括 GitHub Copilot)上使用 Claude Opus 5.5、GPT-6 Sol 和 GPT-6 Luna。详见 选择模型。
- xAI 默认使用 Grok 4.7 – 新建的 xAI 会话现在默认使用 Grok 4.7。详见 Provider 认证。
新增
- 为 GitHub Copilot 添加 Claude Opus 5.5、GPT-6 Sol 和 GPT-6 Luna 支持(来自
@earendil-works/pi-ai)。 - 为 OpenAI API key 和 OpenAI Codex 订阅添加 GPT-6 Sol 和 GPT-6 Luna 支持(来自
@earendil-works/pi-ai)。 - 为 Anthropic 添加 Claude Opus 5.5 支持,带自适应 thinking 和 1M 上下文窗口(来自
@earendil-works/pi-ai)。
变更
- 把 xAI 默认模型改为 Grok 4.7。
修复
- 修复分轮压缩摘要被 Claude Fable 5.1 拒绝的问题:明确分隔对话,并使用面向续写的指令(#9908 由 @davidbrai 贡献)。
- 修复缺失或无效的
--mode值被静默忽略、而不是报错并以非零状态退出的问题(#9045)。 - 修复仅含图片的用户消息因为带有空文本部分而被部分 OpenAI 兼容 Provider 拒绝的问题(来自
@earendil-works/pi-ai)(#9797)。 - 修复 Anthropic OAuth 请求上报过期的 Claude Code 版本的问题(来自
@earendil-works/pi-ai)。
Pi AI
新增
- 把 Claude Opus 5.5、GPT-6 Sol 和 GPT-6 Luna 加入 GitHub Copilot 目录。
- 为 OpenAI API key 和 OpenAI Codex 订阅添加 GPT-6 Sol 和 GPT-6 Luna,带完整的 reasoning effort、Prompt 缓存、工具搜索、长上下文定价和官方成本元数据。
- 把 Claude Opus 5.5 加入内置 Anthropic 模型目录,带自适应 thinking、1M 上下文和官方定价元数据。
- 把 Grok 4.7 加入内置 xAI 模型目录,带长上下文定价元数据。
修复
- 修复仅含图片的用户消息因为带有空文本部分而被部分 OpenAI 兼容 Provider 拒绝的问题(#9797)。
- 修复 Anthropic OAuth 请求上报过期的 Claude Code 版本的问题。
v0.87.0(2026-09-21)
Pi Coding Agent
新功能
- 规范的会话上下文与扩展边界 – 无需重写历史即可编辑模型上下文,并添加可操作的 lifecycle hook。详见 ContextEditEntry 和 扩展事件。
- 全转录上下文扩展 – 用
context_with_system对每次请求做系统消息转换。详见context_with_system。 - 按模型的图片输入限制 – 按模型为附件、
read和工具结果图片配置缓存安全的图片缩放。详见 图片输入限制。
不兼容变更
- 移除来自
@earendil-works/pi-agent-core的shouldStopAfterTurnagent 选项。改用finishTurn并返回{ action: "end" }。finishTurn在turn_end之前运行,但决策在之后生效,并且也会收到 error 和 aborted 响应;迁移时让这些硬退出返回undefined,可保留原选项只对正常响应生效的行为。完整的迁移前后示例见@earendil-works/pi-agent-core的 changelog。 - 在导出的
SessionEntry联合类型中添加ContextEditEntry。对条目做穷尽 switch 的 TypeScript 使用方必须处理context_edit;省略用replacement: null,否则传入内容替换。 - 让
SessionManager成为AgentSessionProvider 上下文的唯一来源。给session.agent.state.messages赋值不再替换后续请求历史;请用SessionManager.inMemory(cwd, { id }, entries)恢复、用session.navigateTree()导航,或通过session.sessionManager追加后调用session.refreshContext()。 - 为
TurnEndEvent扩展必需的边界字段,并把AgentBeforeSettleEvent加入导出的ExtensionEvent联合类型。构造事件或对ExtensionEvent做穷尽 switch 的使用方必须处理新结构。ExtensionRunner.emit()不再接受turn_end;宿主集成用emitBoundary(baseEvent, buildContext)分发可操作的边界。 - 把
agent_settled处理器请求的运行推迟到所有 settled 处理器执行完。处理器仍会看到ctx.isIdle() === true,但在同一次通知分发中不再看到可重入的agent_start。
新增
- 添加仅追加的模型上下文编辑。例如
sessionManager.appendContextEdit(entryId, null)会在后续 Provider 上下文中省略一条消息,而不改动原始历史、用量或 UI 历史。 - 添加可操作的
turn_end和agent_before_settle扩展边界。返回{ entries: [...event.entries, draft], continue: true }可按顺序持久化结构条目,并确保发出一次后续 Provider 请求,同时不改变 steering 或 follow-up 调度。 - 添加不保留任何内容的压缩输入:
sessionManager.appendCompaction(summary, null, tokensBefore)会把压缩自身的 ID 记为保留边界。 - 添加
context_with_system扩展事件,它在context处理器之后对包含系统消息的完整转录运行,并原样发送其结果。详见context_with_system。 - 通过
models.json中的inputLimits.images.resize添加按模型的图片缩放配置,应用于文件附件、图片读取和工具结果图片(#9631)。
修复
- 修复字符串形式的上下文编辑替换产生无效的 assistant 与工具结果消息内容,而不是文本块的问题。
- 修复上下文不可见的边界元数据和替换编辑导致新追加或替换的输入在首次 Provider 请求前就被摘要的问题。
- 修复编辑后上下文的用量统计既丢弃最近一次上下文编辑之后捕获的有效 assistant 用量,又在后续压缩使其过期后复用该用量的问题。
- 修复选定的错误重试和最终的长度/溢出恢复在后续 Provider 上下文中保留已放弃的模型尝试的问题;运行后恢复的省略现在会被持久化,同时不隐藏原始转录历史、不改变队列调度。
- 修复过滤或截取消息的
context处理器丢失提示与工具声明的问题,这会在扩展驱动的压缩后让请求缺少内置工具,或让 Codex 输出原始 tool-call 文本。处理器不再看到系统消息;Pi 在它们运行后恢复提示与工具状态。详见context(#9789、#9822)。 - 修复
/bug在离线模式下仍允许上传的问题,同时保留本地 zip 导出(#9841 由 @christianklotz 贡献)。 - 修复空闲 Prompt 缓存预热在定时器或扩展决策延迟时重建已过期缓存的问题。
- 改进崩溃诊断,添加提示以识别出现在堆栈跟踪中的已加载扩展。
- 修复以
GIF开头的文本文件被误判为图片并从read和 CLI@file输入中省略的问题(#9755)。 - 修复格式错误的 Prompt 模板 frontmatter 被静默忽略、而不是作为资源警告上报的问题(#9830 由 @christianklotz 贡献)。
- 修复来自
@earendil-works/pi-ai的未知 OpenAI 兼容 Chat Completions 端点收到严格工具 Schema 的问题,除非它们明确声明支持(#9816)。
Pi AI
新增
- 在生成的目录中添加模型图片输入限制和缓存安全的缩放元数据(#9631)。
修复
- 修复未知 OpenAI 兼容 Chat Completions 端点收到严格工具 Schema 的问题,除非它们明确声明支持,同时为支持的内置模型保留严格工具(#9816)。
Pi Agent
不兼容变更
- 移除
AgentOptions.shouldStopAfterTurn和AgentLoopConfig.shouldStopAfterTurn。改用finishTurn并返回{ action: "end" },在完成的 turn 之后停止。finishTurn在 assistant 与所有工具结果定稿之后、turn_end之前运行,其决策在turn_end之后生效,并且也会对 error 和 aborted 响应运行——这些响应的决策会被忽略,因为它们仍是硬退出。原选项只对正常响应调用,迁移时给硬退出返回undefined可保留该行为。返回{ action: "end" }不会改动 steering 与 follow-up 队列,并跳过prepareNextTurn。
新增
- 添加
prepareRequest,它在每次 Provider 请求(包括第一次)之前运行。例如返回{ context: { ...context, messages: persistedMessages } },可在已选定的输入发出后安装规范上下文,而不引入额外的队列轮询。 - 添加
finishTurn,它在 assistant 与工具结果定稿之后、turn_end之前运行,适用于正常、error 和 aborted 响应。返回{ action: "end" }可在turn_end后结束正常运行,返回undefined保持常规调度。{ action: "continue" }确保发出一次后续 Provider 请求:已有的工具结果、steering 或 follow-up 调度可以满足该请求而不额外增加一次;否则循环会发出一次仅上下文的请求。error 和 aborted 响应仍是硬退出。 - 添加
Agent.peekQueuedMessages(),可在不消费的情况下预览下一次队列选中的批次。
修复
- 修复 harness 读取把以
GIF开头的文本文件误判为图片的问题(#9755)。
v0.86.1(2026-09-20)
Pi Coding Agent
新功能
- Meta Muse Provider – 用
/login meta以 Meta 账号登录,或使用META_API_KEY访问 Muse Spark 模型。详见 Meta(Muse 订阅)。
新增
变更
- 在加载打包的 CLI 运行时之前启用 Node 的持久编译缓存,缩短重复启动时间。
修复
- 修复
/bug的描述丢失粘贴诊断信息中换行的问题。 - 修复用户取消和可重试的 Provider 故障(如服务不可用)时仍显示
/bug提示的问题。 - 修复没有 WSLg 的容器和 WSL 中剪贴板复制失败的问题:在没有可用显示时恢复 OSC 52 回退,并为 WSL 添加经过验证的 Windows 剪贴板 backend(#9688)。
- 修复来自
@earendil-works/pi-ai的 z.aiPrompt too long错误未被识别为上下文溢出的问题(#9805)。 - 修复来自
@earendil-works/pi-ai的 Cerebras 模型声明不受支持的严格工具 Schema,导致严格与非严格工具混用时出现 HTTP 400 错误的问题(#9804 由 @EdenGottlieb 贡献)。
Pi AI
新增
修复
- 修复 z.ai
Prompt too long错误未被识别为上下文溢出的问题(#9805)。 - 修复 Cerebras 模型声明不受支持的严格工具 Schema,导致严格与非严格工具混用时出现 HTTP 400 错误的问题(#9804 由 @EdenGottlieb 贡献)。
v0.86.0(2026-09-19)
Pi Coding Agent
新功能
- Prompt 缓存预热 – 用成本感知的刷新在长时间工具运行期间保持有价值的 Prompt 缓存存活,也可选择在空闲时保持。详见 缓存预热。
- Bug 上报 – 用
/bug上报问题,可附带脱敏诊断信息、可选的转录或导出的 ZIP 归档。详见 上报 Bug。 - 感知转录的 Prompt 与工具更新 – 在恢复会话和分支导航后保留指令与工具的变更,同时保留缓存前缀。详见
before_agent_start。 - 离线 Radius 模型目录 – 可立即选择 Radius 模型,并在可用时叠加缓存的与实时的目录。详见 Radius。
- 按模型的压缩预算 – 按模型配置保留 Token 与近期 Token 预算。详见 按模型覆盖。
不兼容变更
- 将来自
@earendil-works/pi-ai的 Provider 流输入从Context改为规范化的TranscriptContext值。自定义 Provider 必须通过getCurrentSystemPrompt()和getCurrentTools()从context.messages读取系统提示和工具声明。详见 自定义流式 API。 - 将来自
@earendil-works/pi-ai的ToolCall.arguments和ToolResultMessage.details限制为 JSON 兼容值,把ToolResultMessage改为条件类型,并使JsonValue数组只读。 user_bash现在失败即关闭:出错或定义的结果无效时会中止命令,不再调用后续处理器或在本地执行。返回undefined继续传播;否则返回{ operations }或{ result }(#9068)。
新增
- 添加基于转录的会话中途系统提示与工具变更,使指令和工具的更新在恢复会话和分支导航后仍然生效,并在支持的模型上保留缓存前缀。详见
before_agent_start和 条目类型(#9548)。 - 为 Fireworks Messages 模型添加来自
@earendil-works/pi-ai的原生延迟工具加载。使用ToolSearch或tool_search作为加载器名称来延迟 Prompt 前缀(#9323)。 - 为分支摘要、压缩摘要和 Skill 调用条目添加点击展开/收起。
- 添加公开的 Radius 模型目录,用于即时和离线的模型选择,并在可用时叠加缓存的与实时的网关目录。
- 添加
ctx.modelRegistry.stream()和streamSimple(),让扩展能通过已配置的 Provider 发起模型调用,并完成认证解析(#8964)。 - 通过
compaction.modelOverrides添加按模型的reserveTokens和keepRecentTokens设置,并以常规压缩设置作为回退(#8133)。 - 添加
compat.allowedFallbackModels配置,用于覆盖或禁用 Anthropic 服务端回退模型(#9294)。 pi.on()现在返回取消订阅函数,扩展可以移除事件处理器。分发期间添加或移除的处理器对后续分发生效,不影响当前分发(#8967)。- 导出此前从包入口点遗漏的扩展 hook 事件与结果类型(#9642)。
- 添加
/bug [description],用于向 Pi 开发者上报 bug。报告会打包环境、模型、Provider、扩展和设置元数据(密钥已脱敏)、会话中的助手消息诊断信息,以及可选的会话转录;若不上传转录,则改为由模型撰写一段问题摘要。报告会上传到 Radius(无需登录;登录后会归属到你的账号),也可以导出为 zip 归档,报告 id 会作为pi.bug-report条目记入会话。崩溃会记录到~/.pi/agent/crashes.json,下次启动时提示一次,并附加到下一次报告;无法解释的错误和重试次数耗尽每会话会提示一次/bug。 - 添加成本感知的 Prompt 缓存预热,在长时间工具运行期间进行,可选在空闲时也进行,支持可配置模式、模型缓存生命周期元数据、
/session诊断、转录提示和cache_warming_decision扩展事件。详见 缓存预热(#9668)。
变更
- 让
--resume的会话结果逐步显示:用文件修改时间优先加载所有目录,并在选择后取消尚未完成的转录读取。 - 通过按修改时间顺序检查候选会话头部、找到最新匹配会话后停止,缩短
--continue的启动时间。 - 用内置的 macOS、Windows 和 X11 异步辅助程序替换外部原生剪贴板依赖,同时保留平台命令和 OSC 52 回退(#9163)。
- 用原生子串搜索代替在 JavaScript 中逐字符扫描,降低模糊搜索在长文本上的延迟(来自
pi-tui)(#9267)。 - 将压缩、分支摘要和重试的 spinner 移入编辑器边框,与工作指示器并列。自定义编辑器对所有状态 spinner 使用相同的嵌入选项。
- 内置
read、bash、powershell、edit和write工具默认启用 strict-prefer JSON-schema 采样,不再需要PI_EXPERIMENTAL。扩展可以用constrainedSampling: false重新注册工具定义。 - Bash 和 PowerShell 工具耗时达到一分钟以上时改用「分:秒」格式,必要时显示小时(#9628)。
- 将扩展编译器和内置虚拟模块推迟到加载文件系统扩展时,降低 SDK 的基线导入开销(#9540)。
修复
- 修复 GitHub Copilot GPT 模型(包括 GPT-6 Astra)使用 Chat Completions 适配器而非所需的 Responses 适配器的问题(#9253 由 @petrroll 贡献)。
- 修复来自
@earendil-works/pi-ai的 OpenRouter 和 OpenCode Go 上 DeepSeek V4.1 thinking 等级丢失 Provider effort 元数据的问题(#9485)。 - 修复来自
@earendil-works/pi-ai的无正文 HTTP 400/413 错误(非 Cerebras Provider)被误判为上下文溢出的问题(#9482)。 - 修复来自
@earendil-works/pi-ai的 Vercel AI Gateway 将未签名 thinking 作为助手文本重放的问题(#9676)。 - 修复来自
@earendil-works/pi-ai的 Google Generative AI 和 Vertex AI 在省略 reasoning 或同一 Gemini 系列内模型能力不同时使用不支持的 thinking 等级的问题(#9455)。 - 修复来自
@earendil-works/pi-ai的 Anthropic 兼容中继在返回模型不同时破坏签名 thinking 重放的问题,同时保留回退计价(#9188)。 - 修复来自
@earendil-works/pi-ai的 Amazon Bedrock 一小时缓存写入按五分钟费率计价的问题(#9457)。 - 修复来自
@earendil-works/pi-ai的排空缓冲EventStream事件时的二次方 CPU 占用(#9055)。 - 修复来自
@earendil-works/pi-ai的 Mistral Medium reasoning 请求对所有支持 reasoning 的mistral-medium-*模型 ID 使用reasoning_effort,而不是不受支持的prompt_mode(#8700)。 - 修复来自
@earendil-works/pi-ai的 OpenCode 和 OpenCode Go 请求在所有支持的 API 适配器上从sessionId发送x-opencode-session(#9326)。 - 修复来自
@earendil-works/pi-ai的 OpenAI Codex 请求发送模型的 Off reasoning 等级而不是省略它,同时遵守不支持 Off 映射的情况(#9191)。 - 修复来自
@earendil-works/pi-ai的 Fireworks 未签名 thinking 重放和 reasoning 等级选择,改用目录元数据,并验证了 DeepSeek V4 和 Qwen3.8 的回退、移除了冗余的 GLM 5.2 和 Kimi K3 effort 别名(#9323)。 - 修复来自
@earendil-works/pi-ai的 OpenRouter 请求在启用 Prompt 缓存时,为 Chat Completions 和 Anthropic Messages 模型从sessionId发送x-session-id(#9102)。 - 修复来自
@earendil-works/pi-ai的 DeepSeek 目录:为 DeepSeek V4.1 Flash 声明deepseek-flash以替代已停用的 Flash 别名,并刷新 DeepSeek 定价元数据(#9423)。 - 修复来自
@earendil-works/pi-ai的 Mistral 托管的 GLM-5.2 reasoning 请求改用reasoning_effort,而不是被忽略的prompt_mode(#9375)。 - 修复来自
@earendil-works/pi-ai的 OpenAI 兼容 Responses 错误识别实际 Provider,而不是一律标记为 OpenAI 错误(#9298)。 - 修复来自
@earendil-works/pi-ai的 Baseten 请求从sessionId发送会话亲和性请求头,以支持自动 Prompt 缓存路由(#9629)。 - 修复来自
@earendil-works/pi-ai的 Cloudflare 520 响应的重试分类(#9627)。 - 修复来自
@earendil-works/pi-ai的 Azure 峰值负载临时容量错误的重试分类(#9669)。 - 修复会话树导航与进行中的压缩竞争并替换其进度 UI 的问题(#9179 由 @acmerfight 贡献)。
- 修复精确会话 ID 查找扫描完整转录正文而不是读取会话头部的问题(#9601 由 @metaist 贡献)。
- 修复对同一批被丢弃的块重复显示 Anthropic thinking 丢弃提示的问题,并缩短提示,同时把详情保留在会话中(#9391)。
- 修复运行中途的阈值压缩静默跳过超大尾部工具结果的问题(#9740)。
- 修复被信号终止的本地 shell 命令被报告为成功并带部分输出的问题(#9577 由 @BrendanJMurphy 贡献)。
- 修复终端忽略 OSC 52 回退写入时本地剪贴板失败仍报告成功的问题,并在没有可用剪贴板 backend 时添加平台相关的设置指引(#9618)。
- 将 agent 级重试退避上限设为
retry.maxAgentDelayMs(默认 60 秒),使长时间的持续瞬时故障期间重试仍保持响应(#8826)。 - 修复直接 RPC
steer和follow_up命令绕过扩展input处理器的问题(#8718)。 - 修复登录后因未等待目录发现而过早报模型缺失的问题。Radius 现在默认使用
balanced,必要时回退到第一个可用的 Radius 模型。 - 修复全屏模式下为渲染零行的自定义 footer 预留空行的问题(#8919)。
- 修复没有参数 Schema 的扩展工具在注册时才被拒绝,而不是破坏 Provider 请求(#9300)。
- 修复在带会话中途系统消息的模型上,
before_agent_start处理器返回systemPrompt(以及forceSystemPrompt)的行为:强制提示现在作为 Provider 的前置系统提示发送,而不是在原始提示之后追加为区块补丁。 - 修复加载的 llama.cpp 模型在
enable_thinking对话模板下忽略 Pi thinking 等级的问题(#9528)。 - 修复取消竞态可能启动自动压缩、留下过期重试状态,或在等待摘要认证时错过取消的问题(#9340、#9777)。
- 修复异步 Kitty 图片转换替换较新的部分工具输出图片的问题(#8743 由 @wutongyuonce 贡献)。
- 修复来自
pi-tui的 Skill 斜杠命令自动补全按skill:前缀而不是裸 Skill 名排序的问题(#9120 由 @yearth 贡献)。 - 修复来自
pi-tui的文件自动补全边界和 CJK 标点附近的路径引用问题(#9746 由 @haoqixu 贡献)。 - 修复来自
pi-tui的 LaTeX 旧式字体切换回退为原始源码、cases布局未围绕周围公式居中,以及不支持的和嵌套的显示脚标竖直排布的问题(#8827、#9564、#7929)。 - 修复来自
pi-tui的全屏 Kitty 图片在 WezTerm 中被后续行清除擦除的问题(#9169)。
移除
- 在 GPT-5.4 和 GPT-5.4 mini 不可用后,从 OpenAI Codex 选择中移除这两个模型(来自
@earendil-works/pi-ai)(#9394)。
Pi AI
不兼容变更
- 将面向 Provider 的
ProviderStreams和StreamFunction输入从Context改为规范化的TranscriptContext值。系统提示和工具声明现在位于转录系统消息中;自定义 Provider 必须用getCurrentSystemPrompt()和getCurrentTools()读取它们。详见 系统消息。 - 将
ToolCall.arguments和ToolResultMessage.details限制为 JSON 兼容值,把ToolResultMessage改为条件类型,并使JsonValue数组只读。
新增
- 添加基于转录的会话中途系统提示与工具变更,在支持的模型上原生重放,其他 Provider 则自动折叠。详见 系统消息(#9548)。
- 添加生成的公开 Radius 模型目录,用于同步 API 查询,并在运行时叠加缓存的与实时的网关目录。
- 为 Fireworks Messages 模型启用原生延迟工具加载。使用
ToolSearch或tool_search作为加载器名称来延迟 Prompt 前缀(#9323)。 - 添加
RetryPolicy.maxAgentDelayMs支持,用于限制摘要调用的共享助手重试退避(#8826)。 - 添加
Model.promptCache生命周期元数据,用于短期和长期保留档位,以支持 Prompt 缓存预热的决策(#9668)。
修复
- 修复 GitHub Copilot GPT 模型(包括 GPT-6 Astra)使用 Chat Completions 适配器而非所需的 Responses 适配器的问题(#9253 由 @petrroll 贡献)。
- 修复 OpenRouter 和 OpenCode Go 上 DeepSeek V4.1 thinking 等级丢失 Provider effort 元数据的问题(#9485)。
- 修复无正文 HTTP 400/413 错误(非 Cerebras Provider)被误判为上下文溢出的问题(#9482)。
- 修复 Vercel AI Gateway 将未签名 thinking 作为助手文本重放的问题(#9676)。
- 修复 Google Generative AI 和 Vertex AI 在省略 reasoning 或同一 Gemini 系列内模型能力不同时使用不支持的 thinking 等级的问题(#9455)。
- 修复 Anthropic 兼容中继在返回模型不同时破坏签名 thinking 重放的问题,同时保留回退计价(#9188)。
- 修复 Amazon Bedrock 一小时缓存写入按五分钟费率计价的问题(#9457)。
- 修复排空缓冲
EventStream事件时的二次方 CPU 占用(#9055)。 - 修复 Mistral Medium reasoning 请求对所有支持 reasoning 的
mistral-medium-*模型 ID 使用reasoning_effort,而不是不受支持的prompt_mode(#8700)。 - 修复 OpenCode 和 OpenCode Go 请求在所有支持的 API 适配器上从
sessionId发送x-opencode-session(#9326)。 - 修复 OpenAI Codex 请求发送模型的 Off reasoning 等级而不是省略它,同时遵守不支持 Off 映射的情况(#9191)。
- 修复 Fireworks 未签名 thinking 重放和 reasoning 等级选择,改用目录元数据,并验证了 DeepSeek V4 和 Qwen3.8 的回退、移除了冗余的 GLM 5.2 和 Kimi K3 effort 别名(#9323)。
- 修复 OpenRouter 请求在启用 Prompt 缓存时,为 Chat Completions 和 Anthropic Messages 模型从
sessionId发送x-session-id(#9102)。 - 修复 DeepSeek 目录:为 DeepSeek V4.1 Flash 声明
deepseek-flash以替代已停用的 Flash 别名,并刷新 DeepSeek 定价元数据(#9423)。 - 修复 Mistral 托管的 GLM-5.2 reasoning 请求改用
reasoning_effort,而不是被忽略的prompt_mode(#9375)。 - 修复 OpenAI 兼容 Responses 错误识别实际 Provider,而不是一律标记为 OpenAI 错误(#9298)。
- 修复 Baseten 请求从
sessionId发送会话亲和性请求头,以支持自动 Prompt 缓存路由(#9629)。 - 修复 Cloudflare 520 响应的重试分类(#9627)。
- 修复 Azure 峰值负载临时容量错误的重试分类(#9669)。
移除
- 在 GPT-5.4 和 GPT-5.4 mini 对 ChatGPT 账号不可用后,从 OpenAI Codex 目录中移除这两个模型(#9394)。
Pi TUI
新增
- 通过导出的
getNativeClipboard()API 添加内置的 macOS、Windows 和 X11 异步原生剪贴板读取器,替换消费方使用的外部原生剪贴板依赖(#9163)。
变更
- 用原生子串搜索代替在 JavaScript 中逐字符扫描,降低模糊搜索在长文本上的延迟(#9267)。
修复
- 修复 LaTeX 旧式字体切换回退为原始源码、
cases布局未围绕周围公式居中,以及不支持的和嵌套的显示脚标竖直排布的问题(#8827、#9564、#7929)。 - 修复全屏剪贴板失败时把可操作的 backend 错误信息藏在通用提示之后的问题,并把失败提示延长到五秒(#9618)。
- 修复全屏 Kitty 图片在 WezTerm 中被后续行清除擦除的问题(#9169)。
- 修复 Skill 斜杠命令自动补全按
skill:前缀而不是裸 Skill 名排序的问题(#9120 由 @yearth 贡献)。 - 修复文件自动补全边界和 CJK 标点附近的路径引用问题(#9746 由 @haoqixu 贡献)。
v0.85.1(2026-09-05)
Pi Coding Agent
新功能
- GPT-6 Astra – 可通过 OpenAI API Key 和 OpenAI Codex 订阅使用。详见 API Key 和 OpenAI Codex。
新增
修复
- 修复模型和 thinking 选择器中可配置的保存快捷键(#9149 由 @rwachtler 贡献)。
- 修复因 0.85.0 意外发布内部实验性代码和依赖项导致的 SDK 导入失败。实验性的
client和experimental/plugin子路径以及 server/client 命令现仅可通过pi-test.sh从源码运行;受支持的本地 SDK 和 stdio RPC API 保持不变(#9132)。 - 修复鼠标悬停改变选中项并重新居中自动补全和设置列表,导致点击命中不同条目的问题。
- 修复 GPT-5.6+ Responses 模型的长 Prompt 缓存请求,改用
prompt_cache_options.ttl: "30m"而非prompt_cache_retention: "24h"。
Pi AI
新增
- 添加 GPT-6 Astra 支持,适用于 OpenAI API Key 和 OpenAI Codex 订阅。
修复
- 修复 GPT-5.6+ Responses 模型的长 Prompt 缓存请求,改用
prompt_cache_options.ttl: "30m"而非prompt_cache_retention: "24h"。
v0.85.0(2026-09-04)
Pi Coding Agent
新功能
- 持久化 Claude thinking 强度 – 受支持的 Anthropic 传输会保留每轮 effort,并能从签名 thinking 不匹配中安全恢复。详见 模型配置。
- 全屏转录控制 – 从已滚动的转录直接跳转到最新消息,并使用内置的工作指示器。详见 TUI 全屏视口。
- 可恢复的内存会话 – 通过 SDK 恢复保存在外部存储的会话条目。详见 会话管理。
新增
- 添加
SessionManager.inMemory()支持恢复外部管理的会话条目(#8980 由 @y-nk 贡献)。 - 添加 OpenAI 兼容的
vllmPriority和supportsMaxOutputTokens模型设置,用于 vLLM 调度器优先级和 OpenAI Responses 输出 Token 限制(#9004 由 @AppleDannyClegg 贡献,#8941 由 @scturtle 贡献)。 - 添加用于关系代数连接符号的 LaTeX 渲染(来自
pi-tui)(#9050 由 @haoqixu 贡献)。 - 在全屏转录向上滚动时,添加带有
tui.altScreen.bottom快捷键提示的可点击「Jump to latest message」标签(#9080 由 @rwachtler 贡献)。
变更
- 将流式工作指示器移入默认编辑器边框,并使其默认 spinner 和标签匹配 thinking 级别的边框颜色。自定义编辑器默认保留独立指示器行,除非选择嵌入(#8799 由 @cristinaponcela 贡献)。
- 通过缓存未变更的搜索结果、索引 ASCII 连续片段并将高亮计算限制在可见匹配项,降低大转录上全屏转录搜索的延迟(来自
pi-tui)(#8800 由 @cristinaponcela 贡献)。
修复
- 修复 Linux musl 系统上托管的
fd和 ripgrep 下载(#9070 由 @Charlie0113-T 贡献)。 - 从
/model中移除不可用的 Grok Build 0.1 模型(来自@earendil-works/pi-ai)(#9093 由 @Jaaneek 贡献)。 - 修复 Provider 流发出不兼容事件序列和自定义 tool-call 增量的问题(来自
@earendil-works/pi-ai)。 - 恢复
@earendil-works/pi-coding-agent/client兼容性入口点。 - 修复千问 Token Plan 个人目录以包含 Qwen3.8 Flash(来自
@earendil-works/pi-ai)(#9021)。 - 修复 OpenAI Codex SSE 解析以处理未跟随空行的终端事件(来自
@earendil-works/pi-ai)(#9047)。 - 修复 GitHub Copilot Claude Fable 5 请求以发送所选 reasoning 级别(来自
@earendil-works/pi-ai)(#8961)。 - 修复 Baseten GLM-5.2 模型错误声明图片输入支持的问题(来自
@earendil-works/pi-ai)(#8293 由 @Panoplos 贡献)。 - 修复当 Bash 是唯一启用的工具时 Skill 不可用的问题(#8552 由 @xl0 贡献)。
- 修复并发会话共享互相覆盖的问题(#8613 由 @wutongyuonce 贡献)。
- 修复图片方向检测在非 EXIF APP1 段后跳过 EXIF 数据的问题(#8616 由 @wutongyuonce 贡献)。
- 修复导入会话覆盖同文件名现有会话的问题(#8985 由 @wutongyuonce 贡献)。
- 修复会话分支丢失压缩边界的问题(#8990 由 @acmerfight 贡献)。
- 修复活跃轮次结算前内存会话分支的问题(#8937 由 @acmerfight 贡献)。
- 修复 Fireworks GLM 模型使用错误 API 适配器的问题(来自
@earendil-works/pi-ai)。 - 修复根域名和子域名的
NO_PROXY匹配(来自@earendil-works/pi-ai)(#8737 由 @MeiSiristhebest 贡献)。 - 修复
bash、edit、find、grep、ls、read和write工具忽略ctx.cwd的问题(#8627 由 @vmizg 贡献)。 - 修复在拒绝
SIGWINCH自身信号的受限 seccomp 策略下的终端启动问题(来自pi-tui)(#8898 由 @bartlomiejkida 贡献)。 - 修复 Zed 终端图片能力检测(来自
pi-tui)(#8828 由 @Perlence 贡献)。 - 修复拖拽选择跨越全屏编辑器继续选中的问题。
- 修复托管的
fd和 ripgrep 下载依赖 GitHub Releases API 的问题(#8708 由 @Terminator666666 贡献)。 - 修复当 reasoning 耗尽此前 2048 Token 输出上限时分支摘要失败的问题(#8845)。
- 修复 write 工具将 UTF-16 code unit 计数报告为字节计数的问题,移除了该误导性计数(#8979)。
- 修复代理明文 HTTP Provider 请求在 tool call 后挂起的问题,改为使用 CONNECT 隧道代理(#8134)。
- 修复 RPC
abort在未取消正在进行的手动压缩时就报告成功的问题(#8920)。
Pi AI
不兼容变更
- 针对 Cloudflare Workers AI 绑定,将
createGatewayBindingFetch()替换为createAiBindingFetch()。直接配置模型的 Workers AI Gateway 透传baseUrl;请求现在不经修改直接穿过绑定(#8287 由 @Maximo-Guk 贡献)。
新增
- 通过
AssistantMessageFrameEncoder和reduceAssistantMessageFrames()添加了紧凑、可持久化的助手消息帧。 - 添加 OpenAI 兼容模型设置
vllmPriority,用于将调度优先级转发给 vLLM(#9004 由 @AppleDannyClegg 贡献)。 - 添加
supportsMaxOutputTokensOpenAI Responses 兼容性设置(#8941 由 @scturtle 贡献)。 - 为
uuidv7()添加可选的时间戳参数以用于 follower ID。 - 添加
api、providers和utils窄化子路径导出,支持直接导入而无需加载顶层 package barrel。 - 为 Anthropic Messages 传输(包括 OpenRouter)下受支持的 Claude 模型添加 Anthropic 每轮 effort 持久化、确定性历史 effort 标记和签名 thinking 不匹配恢复。
修复
- 从内置 xAI 目录中移除不可用的 Grok Build 0.1 模型(#9093 由 @Jaaneek 贡献)。
- 修复助手消息帧保留 Provider 原生 thinking 级别的问题。
- 修复简单 Provider 流以一致发出标准流事件和自定义 tool-call 增量。
- 修复千问 Token Plan 个人目录以包含 Qwen3.8 Flash(#9021)。
- 修复 Baseten GLM-5.2 模型错误声明图片输入支持的问题(#8293 由 @Panoplos 贡献)。
- 修复 Fireworks GLM 模型使用错误 API 适配器的问题。
- 通过直接定义导出的
JsonValue类型,移除了 pi-ai 对 Chord 的不必要依赖。 - 修复 GitHub Copilot Claude Fable 5 请求使用 Anthropic Messages 适配器以发送所选 reasoning 级别(#8961)。
- 修复 OpenAI Codex SSE 解析以处理未跟随空行的终端事件(#9047)。
- 修复根域名和子域名的
NO_PROXY匹配(#8737 由 @MeiSiristhebest 贡献)。
Pi Agent
修复
- 修复代理助手响应丢失持久化 Provider 原生 thinking 级别的问题。
- 修复 write 工具将 UTF-16 code unit 计数报告为字节计数的问题,移除了该误导性计数(#8979)。
Pi TUI
不兼容变更
- 从 pi-tui 中移除了 coding-agent 环境变量默认值。应用程序必须通过渲染器构造函数和
setClearOnShrink()配置硬件光标和缩小时清屏行为。PI_DEBUG_REDRAW现更名为PI_TUI_DEBUG_REDRAW;调试和崩溃日志文件名现在使用pi-tui-前缀。未提供日志目录时,重绘日志记录被禁用,崩溃转储写入操作系统临时目录(#8699 由 @geraschenko 贡献)。
新增
- 添加
TuiAltScreenscrollToEndIndicator选项,当 follow-end 主滚动视图离开末尾滚动时在其上渲染可点击的跳转到末尾标签(#9080 由 @rwachtler 贡献)。 - 添加用于关系代数连接符号的 LaTeX 渲染(#9050 由 @haoqixu 贡献)。
变更
- 变更
Loader动画和编辑器集成以支持嵌入式工作指示器(#8799 由 @cristinaponcela 贡献)。 - 通过缓存未变更的搜索结果、索引 ASCII 连续片段并将高亮计算限制在可见匹配项,降低大转录上全屏转录搜索的延迟(#8800 由 @cristinaponcela 贡献)。
修复
- 修复拖拽选择跨越编辑器继续选中的问题。
- 修复在拒绝
SIGWINCH自身信号的受限 seccomp 策略下的终端启动问题(#8898 由 @bartlomiejkida 贡献)。 - 修复 Zed 终端图片能力检测(#8828 由 @Perlence 贡献)。
v0.84.4(2026-08-28)
Pi Coding Agent
新功能
- 终端能力覆盖 – 覆盖自动检测的终端超链接、图片和 truecolor 支持。详见 能力覆盖。
- 扩展 UI prompt 事件 – 集成可以区分活动 agent 工作与等待
ctx.uiprompts 的时间。详见 扩展 UI prompt 事件。 - RPC 队列清空 – 使用
clear_queue检索并清空排队的 steering 和 follow-up 消息。详见 RPCclear_queue。 - 全屏选择复制控制 – 在全屏模式下禁用自动选择复制,并使用 Ctrl+X 复制活动选择。详见 UI 与显示。
- DeepSeek V4 Flash Vision(实验性) – 通过内置的 DeepSeek provider 使用视觉能力模型。详见 API Keys。
新增
- 添加了
ui_prompt_start和ui_prompt_end扩展事件,使宿主集成能够区分活动 agent 工作与等待用户端ctx.uiprompts(#8355 由 @cristinaponcela 贡献)。 - 添加
detectSupportedImageMimeTypeFromFile()到公共库导出(#8600 由 @xl0 贡献)。 - 添加实验性视觉能力
deepseek-v4-flash-vision-exp模型支持(来自@earendil-works/pi-ai)。 - 在启用缓存未命中通知时,为压缩和分支摘要添加转录用量通知。
- 添加 RPC
clear_queue来检索并移除排队的 steering 和 follow-up 消息(#8432)。 - 添加环境变量和高级设置,用于覆盖自动检测的终端超链接、图片和 truecolor 能力(#8665)。
- 添加
fullscreenCopyOnSelect来禁用自动全屏选择复制;禁用时,Ctrl+X复制活动文本选择(先于回退到最后一条助手消息),而/tree仍复制所选消息(#7720)。
修复
- 修复切换 thinking 可见性清除正在运行的 Bash 工具的 partial 输出(#8611)。
- 修复 Windows shell 在
PATH上不可用taskkill.exe时中止导致 Pi 崩溃(#6596)。 - 修复恢复的会话在其 JSONL 文件缺少末尾换行时损坏下一个追加条目(#8345)。
- 修复 agent 运行时发送的
triggerTurn: false扩展消息被插入到 tool call 与其结果之间,导致验证消息顺序的 provider 拒绝重放历史;现在会在本轮 tool 结果就绪后追加(#8537)。 - 修复压缩和分支摘要强制设置
toolChoice: "none"(#8649、#8638)。 - 修复超过自动压缩阈值的大 tool 结果在压缩前就发给 provider 的问题;Pi 现在会在同一轮中于 tool 执行和下一次助手响应之间压缩,并在运行恢复时恢复交互进度(#6879)。
- 修复 Google Vertex 请求在打包的 Node.js 运行时使用 HTTP(S) 代理时失败
HttpsProxyAgent is not a constructor(#8610)。 - 修复从非空模型范围保存默认模型,使其在该范围内保持可用。
- 修复
@文件自动补全排名偏好直接和更浅的匹配,而非等级相近的嵌套路径(来自pi-tui)(#8669)。 - 修复 OpenAI 兼容流在流式传输期间重复序列化 thinking 签名(来自
@earendil-works/pi-ai)(#8671)。 - 修复主屏渲染在图片密集输出超过 V8 字符串长度限制时崩溃(来自
pi-tui)(#8028)。 - 修复全屏双击单词选择在
/和-上拆分路径和 kebab-case token(来自pi-tui)。 - 修复 Cloudflare AI Gateway 目录省略支持的
workers-ai/*透传模型(来自@earendil-works/pi-ai)。 - 修复 OpenAI 兼容 reasoning 重放合并连续流式文本和摘要
reasoning_details增量(来自@earendil-works/pi-ai)。 - 修复 OpenRouter reasoning 控制,使 reasoning-mandatory 模型不接收
effort: "none"(来自@earendil-works/pi-ai)(#8614 由 @davidbrai 贡献)。 - 修复 OpenAI 兼容 Chat Completions 在没有定义工具时忽略显式请求的
toolChoice(来自@earendil-works/pi-ai)。 - 修复分段 Mistral tool call 在 continuation 块省略 tool-call ID 时拆分(来自
@earendil-works/pi-ai)(#8387)。
Pi AI
新增
- 添加实验性视觉能力
deepseek-v4-flash-vision-exp模型到 DeepSeek 目录。
修复
- 修复 OpenAI 兼容 Chat Completions 在没有定义工具时忽略显式请求的
toolChoice。 - 修复 thinking 签名序列化在签名完成后只运行一次(#8671)。
- 修复分段 Mistral tool call 在 continuation 块省略 tool-call ID 时拆分(#8387)。
- 修复 OpenAI 兼容 reasoning 重放合并连续流式文本和摘要
reasoning_details增量。 - 修复 Cloudflare AI Gateway 目录包含 models.dev 省略的受支持
workers-ai/*透传模型。 - 修复 OpenRouter reasoning 控制,通过从 OpenRouter 的模型元数据推导
off支持和可用 effort 等级,防止 reasoning-mandatory 模型接收effort: "none"(#8614 由 @davidbrai 贡献)。
Pi Agent
不兼容变更
- 变更
prepareNextTurn和prepareNextTurnWithContext仅在shouldStopAfterTurn和排队消息检查确定 agent loop 将启动另一轮助手 turn 后运行;它们不再在 final 或 terminating turn 后运行;请将 end-of-run 工作移到agent_end处理(#6879)。
修复
- 修复 Windows
NodeExecutionEnv在PATH上不可用taskkill.exe时中止导致崩溃(#6596)。
Pi TUI
新增
- 添加 OSC 8 超链接、inline 图片协议和 truecolor 终端能力的环境和程序化覆盖(#8665)。
- 添加
TuiAltScreencopyOnSelect选项,以及用于检测和程序化复制活动全屏文本选择的辅助函数(#7720)。
修复
v0.84.3(2026-08-24)
Pi Coding Agent
新功能
- PowerShell 工具 – 在 Windows 上使用可选的原生 PowerShell 命令执行。详见 PowerShell 工具。
- 更安全的管理更新 – 为安装程序管理的安装暂存、验证并原子激活更新。详见 安装与管理。
- 模型与 thinking 控制 – 使用
/thinking选择 thinking 等级、搜索默认值、保持会话级选择,并通过 Ctrl+S 显式持久化。详见 模型与 thinking。
不兼容变更
- 将来自
@earendil-works/pi-ai的GoogleThinkingLevel类型重命名为GoogleApiThinkingLevel,并添加ResolvedGoogleThinkingLevel用于规范化的适配器等级。
新增
- 添加可选的
powershell工具,用于 Windows,可通过defaultTools和 SDK 配置。详见 PowerShell 工具。 - 为模型和 thinking 选择器添加
/thinking选择器和可搜索的默认选项;Ctrl+S 将所选模型保存为全局默认。详见 模型与 thinking。 - 为导出的压缩摘要辅助函数添加可选的路由会话 ID,使调用方无需启用 Prompt 缓存写入即可保留 Provider 路由。
- 在启用缓存未命中通知时,为压缩和分支摘要添加转录用量通知。
- 添加
session_compact_failed扩展事件,使压缩失败和中止向处理器暴露其原因、重试状态、来源和错误消息(#8175)。 - 为简单流式请求添加 Provider 无关的
toolChoice支持(来自@earendil-works/pi-ai)。 - 为受支持的第一方模型添加 Anthropic 服务端拒绝自动回退,包括返回模型的用量计价(来自
@earendil-works/pi-ai)(#8017)。 - 为 vLLM、Qwen/SGLang 和 llama.cpp 服务器添加可配置的 OpenAI 兼容 thinking-token 预算字段。详见 OpenAI 兼容性(来自
@earendil-works/pi-ai)(#8275 由 @bnsd55 贡献)。 - 添加中国区专属的 ZAI Coding Plan 模型,包括 GLM-4.6V 视觉支持和 API 等效用量成本估算(来自
@earendil-works/pi-ai)(#8220)。 - 为 Qwen Token Plan Individual 目录添加
deepseek-v4-pro-0813支持(来自@earendil-works/pi-ai)(#8194)。
变更
- 变更实验性安装程序管理的安装,使
pi update就地暂存、验证并原子激活所选版本。详见 安装与管理。 - 将内置 xAI 模型改用 Responses API 并使用加密 reasoning 重放,并使 Grok 4.6 成为默认 xAI 模型(来自
@earendil-works/pi-ai)(#8124 由 @Jaaneek 贡献)。 - 变更 Anthropic、Azure OpenAI、Google、Mistral 和 OpenAI 适配器,使其发送 Pi 的默认
User-Agent,除非被覆盖(来自@earendil-works/pi-ai)(#8305)。 - 变更 Windows 和 WSL 快捷键默认值,避免终端预留的快捷键冲突:图片粘贴、模型切换、编辑器撤销、全屏转录导航和搜索、消息队列(#8372)。
- 变更 Bun 发布归档,仅在内层 wrapper 包中包含原生剪贴板二进制,从每个归档中移除重复的平台包。
- 变更包资源 glob 展开,使用 Node.js 内置实现和确定性的可见路径匹配,减少已安装的运行时依赖树。
- 变更打包的 Node.js 运行时,仅在导入扩展时加载 jiti,仅当未缓存源码需要转换时加载 Babel,减少 CLI 启动时间和打包体积。
- 变更语法高亮,仅急切初始化二十种常见语言,并将其余语法推迟到初始 TUI 渲染之后,减少 CLI 启动时间。
- 变更 Node.js CLI 和 RPC 入口,加载打包的运行时,减少启动时文件系统读取,同时为正常的依赖身份将公共库和遗留模块路径保留在模块化运行时上。
- 变更会话分享,渲染可点击的终端链接,仅显示规范的 Radius artifact URL,并在 Radius 会话分享中包含当前系统 Prompt 和活动工具定义。
修复
- 修复失败的扩展工厂仍留下事件订阅、Provider 注册和默认标志状态的问题(#8424 由 @acmerfight 贡献)。
- 修复
models.json类型省略已记录的 OpenAI 兼容compat.supportsFinishReasonProvider 和模型覆盖的问题(#8487 由 @petrroll 贡献)。 - 修复
/model和/thinking选择被持久化为全局,除非用 Ctrl+S 显式保存的问题(#5263)。 - 修复 JSON 和 RPC
toolcall_start事件省略 tool call id 和名称的问题(#7953 由 @christianklotz 贡献)。 - 修复 Node.js CLI 作为单一可执行应用运行时扩展加载失败的问题(#8237)。
- 修复
.agents/skills/分组目录内的嵌套 Markdown Skill 未被发现的问题。 - 修复压缩和分支摘要请求向 Provider 暴露工具的问题。
- 修复单对象
edit工具输入无法通过校验的问题,在 coding-agent 和 harness 编辑工具中将其接受为单编辑数组(#7835)。 - 修复 Skill 目录中的
README.md、AGENTS.md等根 Markdown 文件被报告为损坏的 Skill,除非声明了有效的 Skill frontmatter(#7805)。 - 修复默认 Cerebras 模型引用不可用的 Z.AI 模型。
- 修复 OpenAI 兼容 Chat Completions reasoning 重放,保留并原样、按顺序重发助手级
reasoning_details(来自@earendil-works/pi-ai)(#7994)。 - 修复 Anthropic 服务端回退响应按请求模型而非返回的回退模型计价的问题(来自
@earendil-works/pi-ai)(#8285)。 - 修复 GitHub Copilot 登录触发模型策略速率限制,通过限制策略更新、重试一次模型发现并遵循服务端重试延迟(来自
@earendil-works/pi-ai)(#7850)。 - 修复 Amazon Bedrock 丢弃并无法重放非 Anthropic 模型的不透明脱敏 reasoning(来自
@earendil-works/pi-ai)(#8314 由 @seiji 贡献)。 - 修复 Z.AI Coding Plan 模型推导出不完整的 reasoning-effort 元数据,包括缺失 GLM-5.3 的 low、high 和 max 等级(来自
@earendil-works/pi-ai)(#8336)。 - 修复 OpenCode 和 OpenCode Go 上的 DeepSeek V4 Flash 省略其支持的 low thinking 等级(来自
@earendil-works/pi-ai)(#8181 由 @tianshuang 贡献)。 - 修复 Azure OpenAI Responses 在 Provider 特定流式请求中忽略
toolChoice(来自@earendil-works/pi-ai)。 - 修复 Amazon Bedrock 响应钩子仅接收合成的请求 id 而非原始响应头(来自
@earendil-works/pi-ai)(#8234)。 - 修复 Kimi 用量报告,使顶层
cached_tokens计为缓存读取而非普通输入 Token(来自@earendil-works/pi-ai)(#8075)。 - 修复 Google 自定义模型忽略
thinkingLevelMap,丢弃扩展 thinking 控制(来自@earendil-works/pi-ai)(#8135)。 - 修复对
auth.json和models-store.json的写入覆盖管理员管理的文件权限和 ACL(#7779)。 - 修复 UTF-8 BOM 标记阻止 frontmatter 和用户配置文件加载(#8337)。
- 修复交互式启动时通过 TUI 内渲染带文件路径的警告,使无效设置文件容易被忽略(#7829)。
- 修复 subagent 示例在受信任仓库中反复提示运行项目本地代理的问题(#8261)。
- 修复生成达到输出 Token 上限时持久化截断的压缩和分支摘要(#7048)。
- 修复 npm 包更新检查将较旧的注册表版本视为可用更新,阻止
pi update降级已更新的已安装包(#8226)。 - 修复
PI_OFFLINE下/llama刷新已配置服务器后内置 llama.cpp 模型从/model消失,并将空闲休眠的sleeping路由模型和可自动加载的未加载预设纳入可选择的目录(#8167)。 - 修复
pi.registerFlag()接受与声明标志类型不匹配的默认值(#8064)。 - 修复 Z.AI Coding Plan 默认值引用已移除的 GLM-5.1 模型(#8096)。
- 修复重复的模糊截断响应恢复被误标为上下文溢出(#8130)。
- 修复 Windows 上基于 VS Code 的终端中重复的全屏右键粘贴(来自
pi-tui)(#8186)。 - 修复填充文本超出窄终端宽度的问题(来自
pi-tui)(#8252)。 - 修复包裹的 Markdown 表格链接将颜色泄漏到边框和相邻单元格,包括块引用内的表格(来自
pi-tui)(#8335)。 - 修复 llama.cpp 登录指引在未加载本地模型时引导用户使用
/llama而非/model(#8203)。 - 修复挂起的 pi.dev 模型目录请求在重试前消耗整个刷新期限(#8198)。
- 修复 Xiaomi 模型目录在
/model和--list-models中列出已停用的 MiMo V2 模型(来自@earendil-works/pi-ai)(#8187)。 - 修复分支摘要条目在
fromId中记录导航目标而不是导航前的源叶节点。 - 修复当 Provider 省略流式用量数据时跳过阈值自动压缩的问题(#8328)。
- 修复以连字符开头(dash-prefixed)的 Prompt 被解析为选项,通过支持
--作为选项结束分隔符(#7269)。
Pi AI
不兼容变更
- 将
GoogleThinkingLevel重命名为GoogleApiThinkingLevel,并添加ResolvedGoogleThinkingLevel用于规范化的适配器等级。
新增
- 为简单流式请求添加 Provider 无关的
toolChoice支持。 - 为受支持的第一方模型添加 Anthropic 服务端拒绝自动回退,包括返回模型的用量计价(#8017)。
- 为 vLLM、Qwen/SGLang 和 llama.cpp 服务器添加可配置的 OpenAI 兼容 thinking-token 预算字段(#8275 由 @bnsd55 贡献)。
- 添加中国区专属的 ZAI Coding Plan 模型,包括 GLM-4.6V 视觉支持和已公布 PAYG 价格的 API 等效用量成本估算(#8220)。
- 为 Qwen Token Plan Individual 目录添加
deepseek-v4-pro-0813(#8194)。
变更
- 将内置 xAI 模型改用 Responses API 并使用加密 reasoning 重放,并使 Grok 4.6 成为默认 xAI 模型(#8124 由 @Jaaneek 贡献)。
- 变更 Anthropic、Azure OpenAI、Google Generative AI、Google Vertex、Mistral、OpenAI Chat Completions 和 OpenAI Responses 适配器,使其发送 Pi 的默认
User-Agent,除非被覆盖(#8305)。
修复
- 修复 OpenAI 兼容 Chat Completions reasoning 重放,保留并原样、按顺序重发助手级
reasoning_details(reasoning.text、reasoning.summary和reasoning.encrypted)(#7994)。 - 修复 Anthropic 服务端回退响应按请求模型而非返回的回退模型计价的问题(#8285)。
- 修复 GitHub Copilot 登录触发模型策略速率限制,通过限制策略更新、重试一次模型发现并遵循服务端重试延迟(#7850)。
- 修复 Amazon Bedrock 丢弃并无法重放非 Anthropic 模型的不透明脱敏 reasoning(#8314 由 @seiji 贡献)。
- 修复 Z.AI Coding Plan 模型推导出不完整的 reasoning-effort 元数据,包括缺失 GLM-5.3 的 low、high 和 max 等级(#8336)。
- 修复 OpenCode 和 OpenCode Go 上的 DeepSeek V4 Flash 省略其支持的 low thinking 等级(#8181 由 @tianshuang 贡献)。
- 修复 Azure OpenAI Responses 在 Provider 特定流式请求中忽略
toolChoice。 - 修复 Amazon Bedrock
after_provider_response/onResponse转发原始响应头而非仅合成的请求 id 头(#8234)。 - 修复 Kimi OpenAI 兼容用量报告,使顶层
cached_tokens计为缓存读取而非普通输入 Token(#8075)。 - 修复 Google Generative AI 和 Vertex AI 自定义模型忽略
thinkingLevelMap,丢弃扩展 thinking 控制(#8135)。 - 修复 Xiaomi 模型目录生成在 models.dev 将 MiMo V2 标记为弃用后仍保留已停用的 MiMo V2 模型名(#8187)。
Pi Agent
修复
Pi TUI
修复
v0.84.2(2026-08-14)
Pi Coding Agent
新功能
- 全屏转录搜索 – 在全屏模式中搜索并跳转到匹配项。详见 TUI 全屏视口。
- 可配置的默认工具 – 在全局或项目级选择启动时启用的内置工具。详见 工具。
- 可配置的全屏退出输出 – 退出时打印转录,或仅打印恢复提示。详见 交互模式。
新增
- 添加全屏转录搜索,支持
Ctrl+Shift+F、增量匹配高亮、可配置的搜索匹配主题颜色,以及使用Enter/Ctrl+G和Shift+Enter/Ctrl+Shift+G跳转到下一个或上一个匹配项。 - 在
PI_EXPERIMENTAL=1下为默认的read、bash、edit和write工具添加实验性严格 JSON Schema 约束采样。 - 添加全屏退出输出设置,可选择打印最终转录或仅打印会话恢复提示。
- 添加
defaultTools设置,用于在全局或项目级配置初始内置工具。 - 添加
--use-theme <name[/name]>,可为单次交互运行选择初始主题,且不修改已保存的设置(#7722 由 @rwachtler 贡献)。 - 为扩展的
pi.sendUserMessage()选项添加expandPromptTemplates,用于显式分派命令并展开 Skill 和 Prompt 模板。详见pi.sendUserMessage()(#7857 由 @mrexodia 贡献)。 - 添加
createGatewayBindingFetch(),无需 API Token 即可通过 Workers AI binding 路由 Cloudflare AI Gateway 请求(来自@earendil-works/pi-ai)(#7901 由 @Maximo-Guk 贡献)。 - 添加
AssistantMessage.endTurn,保留 OpenAI Codex 最终的end_turn信号以供诊断(来自@earendil-works/pi-ai)(#7766)。 - 添加全屏模式中未绑定的单行转录滚动操作。详见 TUI 全屏视口(来自
pi-tui)(#7903 由 @midastruth 贡献)。
变更
- Kimi Coding 请求改用 Pi 运行时的
User-Agent请求头(来自@earendil-works/pi-ai)。 - 将 Mistral SDK 传输替换为原生 Chat Completions HTTP 流,移除其生成式客户端和 Schema 运行时开销(来自
@earendil-works/pi-ai)。 - 记录通用的
AI_AGENT=pi进程标记,并说明它与PI_CODING_AGENT=true的区别(#7747)。 - OpenAI Responses 的延迟工具加载现在优先使用支持的、以消息为锚点的
additional_tools,同时保留工具搜索和顶层回退(来自@earendil-works/pi-ai)(#7709)。 - 通过直接绘制全宽布局行而非每帧重新组合,减少全屏渲染的内存分配(来自
pi-tui)。
修复
- 修复受管理工具下载延迟 TUI 启动且隐藏全屏模式诊断的问题。现在会先挂载 TUI,并在其中显示下载进度和警告。
- 修复启动后立即打开模型选择器时,会取消并重新启动正在进行的模型目录刷新。
- 修复 GitHub Copilot 登录在启用模型策略时因并发更新策略而触发 API 速率限制的问题(来自
@earendil-works/pi-ai)(#6187)。 - 修复手动滚动时全屏转录搜索跳回当前匹配项,以及分段鼠标输入泄漏到搜索查询的问题。
- 修复必需的 LaTeX 参数从新行开始时被解析为空的问题(来自
pi-tui)(#7760)。 - 更新间接开发依赖
nanoid,修复拒绝服务漏洞。 - 修复扩展工具结果的回退渲染,使其折叠过长输出并遵循工具展开状态(#7979)。
- 修复 JSON 和 RPC 的
message_update事件在流式传输期间丢失累计用量的问题。详见 JSON 事件模式 和 RPCmessage_update(#7982 由 @christianklotz 贡献)。 - 修复
pi.sendMessage(..., { triggerTurn: false })在活动运行中进行 steering,而非仅记录自定义消息的问题(#8022 由 @cristinaponcela 贡献)。 - 修复通过
defaultTools选择内置默认工具时丢弃扩展和 SDK 自定义工具的问题。 - 修复 subagent 示例拒绝
toolsfrontmatter 字段的 YAML 数组语法(#7598 由 @alexsavio 贡献)。 - 修复 subagent 示例丢弃父会话的模型、thinking 和工具配置(#7897 由 @virtuald 贡献)。
- 修复自定义系统 Prompt 将当前工作目录与后续追加的 Prompt 内容拼接在一起的问题(#7887 由 @distributedlock 贡献)。
- 修复 OpenAI Responses 函数和自定义 tool call 在流式传输、代理转发和重放期间丢失命名空间的问题(来自
@earendil-works/pi-ai)(#7709)。 - 修复上游请求缓冲区错误不会触发自动助手重试的问题(来自
@earendil-works/pi-ai)。 - 修复内置和自定义 DeepSeek API 模型通过不受支持的字段发送输出限制的问题(来自
@earendil-works/pi-ai)。 - 修复 Amazon Bedrock 重放拒绝包含空对象键的工具参数的问题,同时保留所有有效的嵌套值(来自
@earendil-works/pi-ai)(#7882 由 @muyiyr 贡献)。 - 修复 DeepSeek 兼容性检测无法识别主机名含大写字母的 base URL(来自
@earendil-works/pi-ai)(#7933 由 @yearth 贡献)。 - 修复 Google Generative AI 和 Vertex AI 响应包含 tool call 时,将输出限制或 Provider 错误导致的停止误判为正常工具使用的问题(来自
@earendil-works/pi-ai)(#8059)。 - 修复终端报告通用 SGR 鼠标释放按钮代码时,全屏鼠标拖选和 OSC 8 链接激活的问题(来自
pi-tui)(#7963)。 - 修复获得焦点的全屏浮层无法接收鼠标滚轮或 PageUp、PageDown 等视口滚动键的问题(来自
pi-tui)(#7894)。 - 修复 LaTeX 控制空格被换行拆分时,整个表达式回退为原始源码的问题(来自
pi-tui)。 - 修复通过 SSH 传入的分段
Alt+Enter被误判为 Escape 的问题;添加用于高延迟终端的PI_TUI_ESC_TIMEOUT,且该超时仅适用于单独的 Escape 输入(#7899 由 @powerfooI 贡献)。 - 修复终端失去焦点时,空闲的全屏会话重绘并清除文本选择的问题(来自
pi-tui)(#7892 由 @terrorobe 贡献)。 - 修复 OSC 52 不受支持时,全屏选择复制改用主机剪贴板并报告失败,而非错误提示复制成功(#8110 由 @Panoplos 贡献)。
Pi AI
新增
- 添加
createGatewayBindingFetch(),无需 API Token 即可通过 Workers AI binding 路由 Cloudflare AI Gateway 请求(#7901 由 @Maximo-Guk 贡献)。 - 添加
AssistantMessage.endTurn,保留 OpenAI Codex 最终的end_turn信号以供诊断(#7766)。
变更
- Kimi Coding 请求改用 Pi 运行时的
User-Agent请求头。 - 自动将受支持的严格工具 Schema 转换为 Provider 兼容的封闭对象,要求可空的可选字段为必填,同时保留原始工具定义;将可选但不可空的工具参数中的
null视为省略。 - OpenAI Responses 的延迟工具加载现在优先使用支持的、以消息为锚点的
additional_tools,同时保留工具搜索和顶层回退(#7709)。 - 将 Mistral SDK 传输替换为原生 Chat Completions HTTP 流,移除其生成式客户端和 Schema 运行时开销。
修复
- 修复 GitHub Copilot 登录在启用模型策略时因并发更新策略而触发 API 速率限制的问题(#6187)。
- 修复上游请求缓冲区限制错误不会触发自动助手重试的问题。
- 修复 OpenAI Responses 函数和自定义 tool call 在流式传输、代理转发和重放期间丢失命名空间的问题(#7709)。
- 修复内置和自定义 DeepSeek API 模型未通过受支持的
max_tokens字段发送输出限制的问题。 - 修复 Google Generative AI 和 Vertex AI 响应包含 tool call 时,将输出限制或 Provider 错误导致的停止误判为正常工具使用的问题(#8059)。
- 修复 Amazon Bedrock 重放拒绝包含空对象键的工具参数的问题,同时保留所有有效的嵌套值(#7882 由 @muyiyr 贡献)。
- 修复 DeepSeek 兼容性检测无法识别主机名含大写字母的 base URL(#7933 由 @yearth 贡献)。
Pi TUI
新增
- 添加未绑定的单行转录滚动操作
tui.altScreen.lineUp和tui.altScreen.lineDown,用于全屏 TUI 快捷键(#7903 由 @midastruth 贡献)。 - 为全屏 TUI 添加主滚动视图增量搜索,支持可配置的匹配样式、
Ctrl+Shift+F,以及使用Enter/Ctrl+G和Shift+Enter/Ctrl+Shift+G跳转到下一个或上一个匹配项。
变更
- 直接绘制全宽布局行,避免每帧通过 ANSI/字素分段重新组合所有可见行,将备屏每帧内存分配减少约 9–18 倍。
修复
- 修复终端报告通用 SGR 鼠标释放按钮代码时,全屏鼠标拖选和 OSC 8 链接激活的问题(#7963)。
- 修复手动滚动时全屏转录搜索跳回当前匹配项,以及分段 SGR 鼠标输入泄漏到搜索查询的问题。
- 修复必需的 LaTeX 参数从新行开始时被解析为空的问题(#7760)。
- 修复 LaTeX 控制空格被换行拆分时,整个表达式回退为原始源码的问题。
- 修复获得焦点的全屏浮层无法接收鼠标滚轮或 PageUp、PageDown 等视口滚动键的问题(#7894)。
- 修复通过 SSH 传入的分段
Alt+Enter被误判为 Escape 的问题;添加用于高延迟终端的PI_TUI_ESC_TIMEOUT,且该超时仅适用于单独的 Escape 输入(#7899 由 @powerfooI 贡献)。 - 修复终端失去焦点时,空闲的全屏会话重绘并清除文本选择的问题(#7892 由 @terrorobe 贡献)。
- 修复 OSC 52 不受支持时,全屏选择复制错误提示成功的问题;现在可使用主机剪贴板集成,并报告已确认的失败(#8110 由 @Panoplos 贡献)。
v0.84.1(2026-08-07)
Pi Coding Agent
新功能
- Qwen Token Plan Individual — 为文档中标注 Individual 订阅的模型使用内置 Provider。详见 API Keys。
- 认证就绪检查 — 使用
pi auth check验证 Provider 或模型凭据,可选地输出解析后的凭据。 - 改进的全屏交互 — 多次点击选择单词和段落,配置半页转录滚动。详见 TUI 全屏视口。
- 终止被阻塞的 tool call — 扩展
tool_call处理器可以在不再次调用模型的情况下停止全部终止批次。详见 Tool Events。
新增
- 将 Qwen Token Plan Individual 添加为内置 Provider,带其文档化的订阅模型目录和共享的国际
QWEN_TOKEN_PLAN_API_KEY。详见 API Keys(#7659 由 @arasovic 贡献)。 - 添加
pi auth checkProvider/模型认证预检,支持可选的凭据输出(#7152)。 - 为被阻塞的扩展
tool_call事件添加terminate支持,使全部终止批次可以跳过自动的 follow-up 模型调用。详见 Tool Events(#7715 由 @muyiyr 贡献)。 - 添加全屏模式中的双击单词和空白选择、粒度感知的拖拽选择,以及三击段落选择(来自
pi-tui)(#7725、#7733 由 @volsa 贡献)。 - 添加全屏模式中未绑定的半页转录滚动操作。详见 TUI 全屏视口(#7735)。
变更
- 软化了 bash 工具的
PI_*环境变量指南,以减少不必要的检查命令(#7128)。 - 通过并发探测配色方案和背景支持,将最坏情况下的自动终端主题检测延迟从 200 ms 减少到 100 ms。
修复
- 通过使用
--no-compile-autoload-bunfig编译,修复 cwd 包含带preload的bunfig.toml时 Bun 独立二进制在启动时崩溃的问题(#7685 由 @geril07 贡献)。 - 修复扩展 TUI 方法包装器在委托给原始方法时无限递归的问题(#7731)。
- 修复 Windows 上全屏模式右键不粘贴剪贴板文本的问题。
- 修复
Agent.reset()在活动运行期间清除转录和运行时状态的问题;现在它会在 agent 空闲前拒绝(#7717 由 @wesleyzhangwq 贡献)。 - 修复 LaTeX 关系、乘法和命名运算符间距,以及带堆叠分数、运算符限制和相邻矩阵的矩阵组合(来自
pi-tui)。 - 通过使用按钮移动跟踪而非全量移动跟踪,减少 tmux、Zellij 和 GNU Screen 下的全屏鼠标事件量(来自
pi-tui)。
Pi AI
新增
Pi TUI
新增
- 添加未绑定的半页转录滚动操作
tui.altScreen.halfPageUp和tui.altScreen.halfPageDown,用于全屏 TUI 快捷键(#7735)。 - 添加全屏 TUI 中的双击单词和空白选择、粒度感知的拖拽选择,以及三击段落选择(#7725、#7733 由 @volsa 贡献)。
- 为备屏 TUI 添加可选的右键粘贴处理器,目前仅在 Windows 上启用。
修复
- 修复 LaTeX 关系、乘法和命名运算符间距,以及带堆叠分数、运算符限制和相邻矩阵的矩阵组合。
- 通过使用按钮移动跟踪而非全量移动跟踪,减少 tmux、Zellij 和 GNU Screen 下的全屏鼠标事件量。
v0.84.0(2026-08-06)
Pi Coding Agent
新功能
- 全屏 TUI 模式 — 在运行时于常规与全屏模式间切换,带粘性编辑器和 footer、可独立滚动的转录,以及可拖动的滚动条。详见 UI 与显示。
- Mermaid 与 LaTeX 渲染 — 在交互式转录中渲染 Mermaid 图表和终端友好的 Unicode 数学。详见 Markdown 设置 和 TUI Markdown。
- 按目录的上下文覆盖 — 使用
AGENTS.override.md为特定目录替换上下文文件。详见 上下文文件。 - 高级自定义模型采样 — 配置任意 OpenAI 兼容的
samplingParams和可选的 vLLMthinking_token_budget值。详见 采样参数。 - Baseten Provider — 使用内置的 Baseten 认证和模型支持。详见 API Keys。
不兼容变更
-
将 pi-ai
ModelsStreamTransforms接口重命名为ModelsRequestTransforms,因为其请求头转换现在适用于所有经过认证的 Provider 请求。 -
变更 JSON 和 RPC 的
message_update事件,仅发送assistantMessageEvent增量,移除导致输出二次增长的累计message和assistantMessageEvent.partial字段。需要部分消息的客户端必须在message_start与message_end之间组装增量;后者仍是权威值(#7290)。 -
ModelRegistry.getApiKeyAndHeaders()现在返回带string | null值的ProviderHeaders,并保留null请求头删除标记。检查返回请求头的扩展必须处理null;将其转发给 pi-ai 流的扩展应原样透传。这可以防止占位 OpenAI 凭据通过 Cloudflare AI Gateway 发送(#7030)。 -
变更
ModelRegistry.refresh(),使其接受ModelsRefreshOptions并返回ModelsRefreshResult,而非丢弃取消和 Provider 错误。 -
变更
ModelRuntime.setRuntimeApiKey(),使其接受认证取消选项而非目录刷新选项。需要远程新鲜度时,请单独调用refresh({ providers: [providerId], signal })。 -
要求配置形式的扩展 OAuth
refreshToken(credentials, signal)回调接受并遵循具体的中止信号。 -
用只读的
context.stored快照和带世代检查的context.publish()事务替换动态 Provider 刷新上下文对 store 的直接访问。使用
createProvider({ fetchModels })构建的 Provider:无需迁移目录发布。前后都要返回获取的模型并注册得到的 Provider;createProvider()负责恢复、持久化和内存发布。手写的原生
Provider.refreshModels():用带世代保护的发布替换直接访问 store 和发布前变更。对于配置形式的
pi.registerProvider(name, { refreshModels }),只返回模型的回调保持不变;pi 会发布返回的列表。如果此类回调之前使用context.store做自定义持久化,请读取context.stored并调用context.publish({ persist: entry })。在publish()中,省略persist保持存储不变,传入ModelsStoreEntry写入它,或传persist: null删除它。 -
用基于 v4 lane 的
Session、SessionStorage和SessionRepoAPI 替换 pi-agent-core harness 会话模型,包括持久化操作记录、全局事实、共享序列号和树作用域的 lane 视图。 -
将 v2 session 和
AgentHarnessAPI 从 pi-agent-core 的实验性入口提升为其默认导出,并移除实验性子路径。 -
移除旧版 JSONL 和内存仓库 API。请改用 pi-agent-core 的 v4
JsonlSessionRepo或InMemorySessionRepo,两者都实现新的SessionRepo契约。 -
新增 pi-agent-core 必需的
FileSystem.renameFile()操作,用于原子 JSONL 发布;自定义 harness 文件系统实现必须提供同文件系统的替换语义(#7707 由 @davidbrai 贡献)。 -
用持久化的
SessionMetadata替换实验性远程会话列表摘要;RemoteSession.sessions不再暴露运行时阶段、模型、thinking、附件或锁状态,这些可从获取的SessionSnapshot值中获取(#7708)。
新增
- 新增内置 Baseten Provider 支持,使用
BASETEN_API_KEY认证,默认模型为zai-org/GLM-5.2。 - 新增实验性远程会话客户端 API:传输中立的
PiClient、CBOR 协议、Unix-socket 传输,以及带转录 reducer 的@earendil-works/pi-coding-agent/clientRemoteSession控制器。详见 Pi Client 和 Remote Protocol(#7344、#7348、#7371、#7409)。 - 新增
CredentialSynchronizationError,用于凭据变更成功提交但同步本地模型状态失败的情况。 - 新增可链式调用的
pi.registerMarkdownTransformer()钩子,用于对用户和助手的 Markdown 进行仅显示转换。详见pi.registerMarkdownTransformer()(#7231 由 @xl0 贡献)。 - 新增实验性全屏 TUI 模式,可通过
--tui-mode fullscreen或/settings选择(#7304)。 - 新增通过
/settings在运行时切换常规和全屏 TUI 模式。 - 在全屏模式中新增粘性编辑器、状态、widget 和 footer 停靠,同时保持转录可独立滚动。
- 新增全屏模式中可拖动的转录滚动条,可通过
/settings配置auto、always和hidden模式;always会保留最右侧一列。 - 新增全屏模式中的翻页滚动和标记消息导航快捷键。
- 新增可选的
scrollbarThumb主题颜色,用于全屏滚动条滑块,回退到selectedBg。 - 新增支持 Mermaid 图表的可配置主题 Unicode 渲染,用于交互式消息,包括流式渲染时可选渲染。详见 Markdown 设置(#7624 由 @xl0 贡献)。
- 新增可选的
Ctrl+P/Ctrl+Nprompt 历史导航,编辑器聚焦时显式历史绑定优先于应用快捷键。 - 新增按目录的
AGENTS.override.md上下文文件,替换同目录中的AGENTS.md或CLAUDE.md,同时保留其他目录的上下文。详见 上下文文件(#7681 由 @Marvae 贡献)。 - 新增在 CLI 和 RPC 子进程环境中设置
AI_AGENT=pi,用于通用 agent 归属。详见 环境变量(#7493 由 @renaudhartert-db 贡献)。 - 新增 Markdown 中 LaTeX 表达式的终端友好 Unicode 渲染。详见 TUI Markdown。
- 新增全屏模式中的堆叠式瞬时通知。
- 新增通过
models.json、模型覆盖、扩展 Provider 和流选项中的samplingParams配置任意 OpenAI 兼容模型采样参数。详见 采样参数(#7568 由 @mrexodia 贡献)。 - 新增可选 vLLM
thinking_token_budget支持,用于 OpenAI 兼容模型,为最终答案预留输出 token(#7638 由 @bnsd55 贡献)。 - 新增对省略
finish_reason的 OpenAI 兼容流支持,使用compat.supportsFinishReason在流结束时推断正常和工具使用停止。详见 OpenAI 兼容性。 - 新增延迟 Provider 请求契约、持久化响应句柄、认证 fetch/cancel 分发,以及 pending、ready、failed 和 cancelled 响应的 faux-provider 支持(#7339 由 @davidbrai 贡献)。
- 新增厂商中立 telemetry 契约,以及 agent 拥有的类型化 AI-request 和 harness 模式、组合 span 启动器和回调辅助函数。详见 agent telemetry 模式参考。
- 新增结构化 Amazon Bedrock 失败诊断,包含 HTTP 状态、建模错误码,以及可用时的 AWS request id(#7286 由 @brianstanley 贡献)。
- 新增
AgentOptions.shouldStopAfterTurn,用于在完成一轮、处理排队消息或另一次模型调用之前优雅停止。详见 Agent Options(#7367 由 @acmerfight 贡献)。 - 新增 v4
JsonlSessionRepo对追加式 JSONL harness 会话的支持(#7611 由 @davidbrai 贡献)。 - 新增有界分支条目和索引开放操作恢复查询到 v4 会话 API(#7448、#7646)。
- 新增编译完整的
AgentHarnessv2 脚手架;未完成的操作路径在实现持久化执行前以HarnessNotImplemented拒绝。
变更
- 新增可选取消到 pi-ai
ModelsStore的读取、写入和删除;目录编排将这些等待绑定到 Provider 刷新信号。 - 将默认全屏鼠标滚轮步长从三行减少到一行,实现更精细的滚动。
修复
- 修复 footer 在没有已知订阅的通用 OAuth/OpenID 登录时显示
(sub);扩展 OAuth Provider 可以用isSubscription选择加入。 - 修复 OAuth token 刷新,使停滞的请求释放凭据存储锁(#7508)。
- 修复工具参数验证,在强制转换前保留已匹配
anyOf/oneOfunion 分支的值,避免可空 union 将null转换为另一个原始值(#7328)。 - 修复 Fireworks GLM 5.2 请求在启用长缓存保留时发送不支持的
prompt_cache_retention字段,并为自动 prompt 缓存启用会话亲和(#7676)。 - 修复
JsonlSessionRepo在全局范围内强制会话 ID 的问题;ID 现在在每个工作目录内唯一。 - 修复 JSONL 会话 fork 和 torn-tail 修复的原子发布,避免中断写入后产生部分写入或损坏的会话(#7707 由 @davidbrai 贡献)。
- 修复包含路径的
findglob 在 Windows 上返回空结果的问题(#6817)。 - 修复手动
/compact期间排队的消息失败而非在压缩完成后发送的问题。 - 修复传给内置文件工具的 Git Bash、MSYS、Cygwin 和 WSL 驱动器路径解析到当前 Windows 驱动器而非其原生驱动器的问题(#7064、#7547)。
- 修复项目级嵌套 Provider 重试设置替换未修改的全局 Provider 重试设置的问题(#7572)。
- 修复 GitHub Copilot Grok 4.5 请求使用受支持的 Responses API(#7560)。
- 修复全屏关闭将终端能力查询回复泄漏到父 shell prompt 的问题。
- 修复多个 Provider 共享的裸精确
--modelID 选择第一个目录条目而非唯一认证 Provider 或明确歧义错误的问题(#7327)。 - 修复独立 x64 二进制需要 Haswell 时代 AVX2/BMI2 指令的问题,改为针对 Bun 基线运行时编译发布可执行文件(#7390 由 @davidbrai 贡献)。
- 修复全屏模式中
Ctrl+X复制确认添加转录状态行,而非显示瞬时的Copied!标记。 - 修复全屏模式中 Kitty 图片预览在滚动时与粘性编辑器和 footer 停靠重叠的问题。
- 修复图片密集的全屏会话在布局变更重传可见 Kitty 图片载荷并每帧渲染两次转录时延迟的问题。
- 修复
/settings搜索中的空格在输入多词查询(如 TUI mode 或 Quiet startup)时切换高亮设置的问题。 - 修复自定义编辑器不继承默认编辑器自动补全下拉项限制的问题(#7333)。
- 修复包清单中的畸形资源数组导致会话启动崩溃的问题(#7187)。
- 修复 DOOM overlay 示例从失效 URL 下载其 shareware WAD 的问题。
- 修复
setToolsExpanded(false)在工具输出已折叠时为 no-op,避免扩展产生冗余的Tool output: collapsed启动通知(#7292)。 - 修复自定义压缩、handoff 和 Q&A 示例中的扩展驱动模型调用,改为通过 coding-agent 模型运行时分发,以保留自定义 Provider 和已解析的认证选项(#7325)。
- 修复长时间运行的会话在另一个进程更新
auth.json时使用过期凭据的问题,通过序列化并发凭据读取并延迟启动(#7319)。 - 修复并发的
models-store.json读取形成文件锁 convoy 并延迟启动的问题。 - 将打包的
brace-expansion依赖更新到 5.0.8,以解决 GHSA-mh99-v99m-4gvg(#7316)。 - 修复强制模型可用性刷新仍被停滞的早期刷新阻塞的问题(#7301、#7421 由 @a-yeyang 贡献)。
- 修复
/model目录刷新失败无法识别每个失败的目录的问题。 - 修复模型目录刷新停滞时保存凭据后 Provider 登录仍卡住的问题,通过将本地凭据一致性从有界后台新鲜度分离(#7027、#7113、#7418)。
- 修复
/scoped-models在渲染前等待远程目录,而非显示缓存模型并在关闭时取消刷新(#7153)。 - 修复
/model <name>在检查缓存模型匹配前等待目录刷新(#7443)。 - 修复较新可用性通过后仍发布过期可用性快照和错误的问题。
- 修复较新 Provider 刷新后仍发布过期的 pi.dev、Radius、llama.cpp 和扩展目录刷新的问题。
- 修复等待文件支持的凭据或模型目录锁时的取消,防止已取消的变更稍后运行或提交。
- 修复并发内存凭据变更丢失无关 Provider 更新的问题,通过序列化其读-改-写段。
- 将
undici更新到 8.9.0,打包的brace-expansion更新到 5.0.9,以解决 GHSA-8xcm-r25x-g524、GHSA-4cwx-7wf7-3272、GHSA-m8rv-5g2x-5cg5、GHSA-jr45-8vmc-qm54、GHSA-v3r7-h72x-cjcm 和 GHSA-rgw5-rvv9-x895。 - 修复 GitHub Copilot 压缩和分支摘要使用 Individual 端点,而非凭据解析的 Business 或 Enterprise 端点(#6768)。
- 修复扩展模型调用在转发请求认证时丢弃凭据解析端点的问题,包括自定义压缩与 GitHub Copilot Business 和 Enterprise 账户(#7579)。
- 修复全屏转录导航无编辑器可访问的
Home、End、PageUp或PageDown变体的问题,通过添加 Ctrl 修改的编辑器绑定(#7574)。 - 修复扩展事件总线监听器在会话重载和销毁后仍存活的问题(#7656 由 @tudoroancea 贡献)。
- 修复 Wayland 上没有 X11 剪贴板时
/copy无法读取剪贴板文本的问题(#7387)。 - 修复慢连接在初始连接尝试期间失败的问题,通过增加连接超时(#7435 由 @muyiyr 贡献)。
- 修复扩展和内置工具返回的超大图片绕过自动图片缩放的问题。详见 图片设置(#7330 由 @tizmagik 贡献)。
- 修复会话发现遗漏通过符号链接目录存储的会话的问题(#7552 由 @muyiyr 贡献)。
- 修复手动压缩与阈值自动压缩竞争的问题(#7370 由 @davidbrai 贡献)。
- 修复响应被截断低于其预期输出限制时结束运行而非压缩并重试一次的问题(#7540 由 @davidbrai 贡献)。
- 修复 Git 包更新在
git clean无法移除忽略的依赖目录时留下缺失依赖的问题(#7570 由 @mrexodia 贡献)。 - 修复 POSIX 和 Windows 文件系统根部的
find结果丢失第一路径段或产生重复尾部分隔符的问题(#7569 由 @petrroll 贡献)。 - 修复瞬时版本检查、目录、托管工具和包管理 HTTP 失败未被重试的问题(#7632 由 @petrroll 贡献)。
- 修复交互式错误忽略配置的输出内边距的问题。
- 修复 OpenCode Go Provider 显示名。
- 修复 Provider 错误规范化将数组和类实例视为结构化响应体,而非保留其原始错误的问题(#7205 由 @erikogenvik 贡献)。
- 修复 Anthropic 流丢弃初始 content-block 事件中包含的文本或 thinking 的问题(#7358 由 @davidbrai 贡献)。
- 修复 Google 历史转换丢弃重放所需的签名空文本和 thinking 块的问题(#7362 由 @jingtao-wisdomgraph 贡献)。
- 修复 OpenAI Codex 缓存 WebSocket 会话在不同账户凭据间共享的问题(#7364)。
- 修复瞬时 Google Generative AI 和 Vertex AI Provider 错误绕过自动重试的问题(#7471 由 @vish-pr 贡献)。
- 修复 Gemini 3 tool call id 在历史转换期间被丢弃,破坏签名多轮重放的问题(#7494 由 @muyiyr 贡献)。
- 恢复 GitHub Copilot 模型通过账户特定策略响应返回(#7672 由 @muyiyr 贡献)。
- 用
qwen3.8-max替换退役 Qwen Token Planqwen3.8-max-preview模型(#7670 由 @QuintinShaw 贡献)。 - 修复终端宽度对 Indic 辅音连接字素簇的计数(#6987 由 @petrroll 贡献)。
- 修复嵌套全屏堆叠布局忽略子元素最小尺寸的问题。
- 修复批量终端配色方案报告被解析为一个畸形响应的问题(#7550)。
- 修复终端进度清除未发出完整 OSC 9;4 序列的问题(#7581)。
- 修复 iTerm2 图片载荷省略 xterm.js 图片 addon 所需的大小元数据的问题(#7612)。
- 修复宽度截断使 OSC 8 超链接未终止的问题(#7657 由 @xXJSONDeruloXx 贡献)。
- 更新 GPT-5.6 Terra 和 Luna 定价,覆盖 OpenAI 和 passthrough 模型目录。
- 修复 Fireworks Kimi K3 模型使用 OpenAI 兼容 API、原生 reasoning-effort 级别和延迟工具(#7199、#7230 由 @XBeg9 贡献)。
- 更新 Groq Qwen reasoning 覆盖,用于替换的
qwen/qwen3.6-27b模型。 - 修复 Windows Shift+Enter 检测,通过从原生 Win32 辅助函数读取修饰键状态。
- 修复 pi-tui npm 包省略重建其 Windows 和 Darwin 原生 addon 所需的源码和构建脚本的问题。
- 修复 Windows 控制台 truecolor 检测,当 Windows Terminal 未向子 shell 提供
WT_SESSION时的问题。 - 修复幻影全屏文本选择,在更改终端窗格焦点时未匹配的鼠标事件导致的问题。
- 修复 Windows 键盘输入渲染延迟,通过让输入抢占限速渲染定时器。
- 修复 agent harness 在 Windows 上处理路径的问题,涉及文件 basename、递归 skill 加载和 prompt 模板名称。
Pi AI
不兼容变更
-
将导出的
ModelsStreamTransforms接口重命名为ModelsRequestTransforms,因为其请求头转换现在适用于所有经过认证的 Provider 请求。 -
要求动态模型 Provider 接受具体的
RefreshModelsContext.signal;调用方省略其可选 signal 时,Models.refresh()保持无界。 -
要求 Provider 登录、API-key 检查/解析和 OAuth 刷新实现接受具体的中止信号;调用方省略其可选 signal 时,公开的 auth 和凭据操作保持无界。
-
用只读的
context.stored快照和带世代检查的context.publish()事务替换对原始RefreshModelsContext.store的访问。createProvider({ fetchModels }): 无需迁移目录发布。前后都要返回获取的列表;createProvider()自己恢复存储的模型并发布、持久化刷新后的模型。现在保证signal存在。手写
Provider.refreshModels(): 用带世代保护的发布替换直接访问 store 和发布前变更。在
publish()中,省略persist保持存储不变,传入ModelsStoreEntry写入它,或传persist: null删除它。省略update做仅元数据的持久化;省略persist做临时内存发布。
新增
- 新增可选的
OAuthAuth.isSubscription元数据,用于区分基于订阅的认证和通用 OAuth 登录。 - 使用厂商中立的
@earendil-works/pi-telemetry契约,在流、延迟和图片请求选项中新增显式的TelemetryContext传播。 - 新增延迟 Provider 请求契约、持久化响应句柄、认证 fetch/cancel 分发,以及 pending、ready、failed 和 cancelled 响应的 faux-provider 支持(#7339 由 @davidbrai 贡献)。
- 新增 Baseten 作为内置 OpenAI 兼容 Provider,带 models.dev 目录生成和原生
chat_template_argsreasoning 控制。 - 新增通过
Model.samplingParams和StreamOptions.samplingParams配置任意 OpenAI 兼容采样参数,包括 per-request 覆盖(#7568 由 @mrexodia 贡献)。 - 新增 OpenAI 兼容模型的可选 vLLM
thinking_token_budget支持,为最终答案预留输出 token(#7638 由 @bnsd55 贡献)。 - 新增
OpenAICompletionsCompat.supportsFinishReason,用于省略流式finish_reason值的 Provider,在流结束时推断正常和工具使用停止。 - 新增结构化的 Amazon Bedrock 失败诊断,包含 HTTP 状态、建模错误码,以及可用时的 AWS request id(#7286 由 @brianstanley 贡献)。
变更
- 新增
ModelsStore读取、写入和删除的可选取消;目录编排将这些等待绑定到 Provider 刷新信号。
修复
- 修复 GitHub Copilot Grok 4.5 请求使用受支持的 Responses API(#7560)。
- 限制 OAuth token 刷新,使停滞的请求释放凭据存储锁(#7508)。
- 修复工具参数验证,在尝试强制转换前保留已匹配
anyOf/oneOfunion 分支的值,避免可空 union 将null转换为另一个原始值(#7328)。 - 修复模型目录刷新的取消,即使自定义 Provider 忽略其 abort signal,调用方也停止等待(#7027)。
- 修复 auth 解析、可用性检查、OAuth 刷新、Provider 登录和内存凭据队列等待遵循调用方取消的问题。
- 修复较新 Provider 刷新被较旧停滞世代阻塞或覆盖的问题,包括持久化目录发布。
- 更新 GPT-5.6 Terra 和 Luna 定价,覆盖 OpenAI 和 passthrough 模型目录。
- 修复 Fireworks Kimi K3 模型使用 OpenAI 兼容 API、原生 reasoning-effort 级别和延迟工具(#7199、#7230 由 @XBeg9 贡献)。
- 修复 Fireworks GLM 5.2 模型在启用长缓存保留时发送不支持的
prompt_cache_retention字段,并为自动 prompt 缓存启用会话亲和(#7676)。 - 更新 Groq 的 Qwen reasoning 覆盖,用于替换的
qwen/qwen3.6-27b模型。 - 修复 OpenCode Go Provider 显示名。
- 修复 Provider 错误规范化将数组和类实例视为结构化响应体,而非保留其原始错误的问题(#7205 由 @erikogenvik 贡献)。
- 修复 Anthropic 流丢弃初始 content-block 事件中包含的文本或 thinking 的问题(#7358 由 @davidbrai 贡献)。
- 修复 Google 历史转换丢弃重放所需的签名空文本和 thinking 块的问题(#7362 由 @jingtao-wisdomgraph 贡献)。
- 修复 OpenAI Codex 缓存 WebSocket 会话在不同账户凭据间共享的问题(#7364)。
- 修复瞬时 Google Generative AI 和 Vertex AI Provider 错误绕过自动重试的问题(#7471 由 @vish-pr 贡献)。
- 修复 Gemini 3 tool call id 在历史转换期间被丢弃,破坏签名多轮重放的问题(#7494 由 @muyiyr 贡献)。
- 修复 OpenAI Responses 不完整原因,仅将
max_output_tokens视为长度停止,并暴露被截断低于预期输出限制的响应的有界恢复检测(#7540 由 @davidbrai 贡献)。 - 恢复 GitHub Copilot 模型通过账户特定策略响应返回(#7672 由 @muyiyr 贡献)。
- 用
qwen3.8-max替换退役的 Qwen Token Planqwen3.8-max-preview模型(#7670 由 @QuintinShaw 贡献)。
Pi Agent
不兼容变更
- 用基于 v4 lane 的
Session、SessionStorage和SessionRepoAPI 替换旧版 harness 会话模型,包括持久化操作记录、全局事实、共享序列号和树作用域的 lane 视图。 - 将 v2 session 和
AgentHarnessAPI 从实验性入口提升为默认包导出,并移除实验性子路径。 - 移除旧版 JSONL 和内存仓库 API。请使用 v4
JsonlSessionRepo或InMemorySessionRepo,两者都实现新的SessionRepo契约。 - 为 harness 执行环境新增必需的
FileSystem.renameFile()操作,用于原子 JSONL 发布;自定义文件系统实现必须提供同文件系统的替换语义(#7707 由 @davidbrai 贡献)。
新增
- 新增类型化 AI-request 和 harness telemetry 模式、组合模式元组、回调辅助函数和生成的模式参考。
- 新增有界
Session.findEntriesOnBranch()和findEntryOnBranch()查询,带显式遍历、过滤、排序和限制选项。 - 新增编译完整的
AgentHarnessv2 脚手架;未完成的操作路径在实现持久化执行前以HarnessNotImplemented拒绝。 - 新增
JsonlSessionRepo,一个带元数据验证和共享存储语义的 v4 追加式 JSONL 会话仓库(#7611 由 @davidbrai 贡献)。 - 新增索引的
Session.findOpenOperations()恢复查询和RecordQuery.operationKind过滤(#7646)。 - 新增
AgentOptions.shouldStopAfterTurn,用于在完成一轮、处理排队消息或另一次模型调用之前优雅停止。详见 Agent Options(#7367 由 @acmerfight 贡献)。 - 新增任意 OpenAI 兼容
samplingParams的代理转发(#7568 由 @mrexodia 贡献)。
修复
- 修复
NodeExecutionEnv文件 basename、递归 skill 加载和 prompt 模板名称的 Windows 路径处理。 - 修复
JsonlSessionRepo在全局范围内强制会话 ID 的问题;ID 现在在每个工作目录内唯一。 - 修复 JSONL 会话 fork 和 torn-tail 修复的原子发布,避免中断写入后产生部分写入或损坏的会话(#7707 由 @davidbrai 贡献)。
Pi TUI
新增
- 新增 Markdown 中 LaTeX 表达式的终端友好 Unicode 渲染,包括行内和显示数学、分数、脚本、常见符号、对齐方程、cases 和矩阵。
- 新增共享的
TuiMode类型和主屏、备屏 TUI 渲染器上的mode判别符。 - 新增 TUI 生命周期和渲染状态交接 API,用于替换渲染器而不重放主屏内容。
- 导出捆绑的
Marked解析器和 token 类型。 - 新增
Markdown组件的宽度感知源转换。 - 新增接口兼容的主屏和备屏 TUI 渲染器,带应用拥有的滚动(#7304)。
- 新增备屏
VStack、HStack和嵌套ScrollView布局,带受限尺寸、粘性区域和指针目标滚动。 - 新增备屏拖拽选择跨屏外滚动视图内容的边缘自动滚动。
- 新增带鼠标拖动的比例滚动条、Home/End 文档导航、瞬时
auto模式和保留最右侧一列的always模式;滚动条模式可在运行时更改。 - 新增备屏视口的翻页滚动和 OSC 133 语义 prompt 导航。
- 新增与垂直光标移动无关的可配置上一/下一 prompt 历史操作。
- 新增备屏渲染器的堆叠式瞬时通知(#7361)。
变更
- 将默认备屏鼠标滚轮步长从三行减少到一行,实现更精细的滚动。
修复
- 通过扩展原生 Win32 辅助函数报告修饰键状态,修复 Windows Shift+Enter 检测。
- 修复 npm 包省略重建 Windows 原生 addon 所需的源码和构建脚本的问题。
- 修复 npm 包省略重建 Darwin 原生 addon 所需的源码和构建脚本的问题。
- 修复 Windows Terminal 未向子 shell 提供
WT_SESSION时 Windows 控制台 truecolor 检测的问题。 - 修复终端宽度对 Indic 辅音连接字素簇的计数(#6987 由 @petrroll 贡献)。
- 修复未匹配鼠标事件在更改终端窗格焦点时产生幻影备屏文本选择的问题。
- 修复可搜索设置查询中的空格更改所选值,而非过滤多词标签的问题。
- 修复备屏 Kitty 图片在滚动时跨垂直布局裁剪边界并与粘性区域重叠的问题。
- 修复备屏重绘在放置移动或近期离屏图片返回时重传 Kitty 图片数据、复用放置时丢弃相邻行内容、每帧渲染两次固定基准滚动内容,以及在绘制时扫描裁剪的转录行的问题。
- 修复全屏转录导航无编辑器可访问的
Home、End、PageUp或PageDown变体的问题,通过添加 Ctrl 修改的编辑器绑定(#7574)。 - 修复 Windows 键盘输入渲染延迟,通过让输入抢占限速渲染定时器。
- 修复嵌套堆叠布局忽略子元素最小尺寸的问题。
- 修复批量终端配色方案报告被解析为一个畸形响应的问题(#7550)。
- 修复终端进度清除未发出完整 OSC 9;4 序列的问题(#7581)。
- 修复 iTerm2 图片载荷省略 xterm.js 图片 addon 所需的大小元数据的问题(#7612)。
- 修复宽度截断使 OSC 8 超链接未终止的问题(#7657 由 @xXJSONDeruloXx 贡献)。
v0.83.0(2026-07-29)
Pi Coding Agent
新功能
- 外部客户端凭据导出 —
pi auth print-api-key和pi auth print-bearer-token可导出已配置的凭据,支持自动 OAuth 刷新和最低有效性强制检查。 - Headless OpenRouter 登录 — 通过粘贴重定向 URL 或授权码,在 SSH 环境下完成
/login。详见 OpenRouter。 - GitHub Copilot 上的 Claude Opus 5 — 通过 GitHub Copilot 使用 Claude Opus 5,支持 adaptive thinking 和 1M 上下文窗口。详见 GitHub Copilot。
不兼容变更
- 升级捆绑的 TypeBox 别名至 1.3.7,移除
Type.Base、Type.Awaited、Type.Promise、Type.AsyncIterator、Type.Iterator、Type.Options和Value.Mutate等已弃用 API,同时修复了可空数组工具参数的编译验证。详见 包依赖(#7243 由 @petrroll 贡献)。
新增
- 添加
pi auth print-api-key和pi auth print-bearer-token命令,用于向外部客户端导出已配置凭据,包括自动 OAuth 刷新和可配置的最低 token 有效期(#7168)。 - 向扩展暴露会话的已解析模型作用域
ctx.scopedModels。详见 扩展上下文(#7191 由 @pungggi 贡献,#7215)。 - 为受支持的 text 和 image Provider 传输添加 per-request
fetch注入。 - 添加
"pending"停止原因,用于部分流式消息。详见 自定义 Provider 流模式(#7151 由 @lucasmeijer 贡献)。 - 添加原始 Provider 停止原因,覆盖 Google、Anthropic、Amazon Bedrock、Mistral 和 OpenAI 流;未映射的终止原因现在表现为 Provider 错误而非成功停止(#7272)。
- 为远程和 headless 环境的 OpenRouter 登录添加手动重定向 URL 和授权码输入。详见 OpenRouter(#7114 由 @rgarcia 贡献)。
- 为 GitHub Copilot 添加 Claude Opus 5 支持,包括 adaptive thinking 和 1M 上下文窗口。详见 GitHub Copilot(#7158 由 @jay-aye-see-kay 贡献)。
变更
- OAuth 凭据解析改为在剩余有效期不足五分钟时刷新 token,而非等到过期(#7168)。
修复
- 切换工具输出展开时添加状态行提示(#7180)。
- 修复文件形式的
SYSTEM.md和APPEND_SYSTEM.mdprompt 在 interactive 启动上下文列表中缺失的问题。详见 系统 Prompt 文件(#7096)。 - 修复链接的 Git worktree 嵌套在主仓库下时上下文文件加载两次的问题。详见 上下文文件(#7221 由 @arajkumar 贡献)。
- 修复 llama.cpp 流式响应报告零 token 用量、导致会话上下文统计为空的问题。详见 llama.cpp(#7258 由 @SteveImmanuel 贡献)。
- 修复响应进行中时替换会话和提交树导航会中止并持久化待发送轮次,而非留下悬空 tool call。详见 会话(#7022 由 @tmustier 贡献)。
- 修复 Git 包安装失败留下不完整目录导致干净重试被阻止的问题。详见 安装和管理(#7210 由 @haoqixu 贡献)。
- 修复
/model选择器在过滤时保留过期选择而非高亮首个匹配项的问题(#7211 由 @christianbasch 贡献)。 - 修复直接 RPC bash 命令绕过扩展
user_bash处理器的问题。详见 用户 Bash 事件(#7214)。 - 修复扩展重载资源后 skills、prompts 和 themes 丢失包源元数据的问题。详见 资源事件(#6968)。
- 修复并发运行的用户 bash 命令取消问题,确保每个活跃命令都被中止(#7103 由 @yzhg1983 贡献)。
- 修复扩展在 interactive 启动期间切换会话导致重复消息的问题(#7110 由 @yzhg1983 贡献)。
- 修复 Qwen Token Plan reasoning 模型,发送其服务特定的 thinking 控制和受支持的 reasoning-effort 级别(#6951、#6998)。
- 修复 Z.AI 输出限制通过不支持的参数发送的问题。详见 Providers(#7174 由 @HyeokjaeLee 贡献)。
- 修复显式配置的 Amazon Bedrock profiles 被 ambient AWS 访问密钥覆盖的问题。详见 Amazon Bedrock(#7176 由 @christianbasch 贡献)。
- 修复图片回退路径在窄终端中溢出、缩短 home 目录路径、并使绝对路径在终端支持超链接时可点击(#7262)。
- 修复 OpenAI 兼容 tool call 在格式错误的 delta 同时包含空
custom对象时丢失函数参数的问题(#7288 由 @sunnyyoung 贡献)。
Pi AI
不兼容变更
- 升级导出的 TypeBox 依赖至 1.3.7,移除
Type.Base、Type.Awaited、Type.Promise、Type.AsyncIterator、Type.Iterator、Type.Options和Value.Mutate等已弃用 API,同时修复了可空数组工具参数的编译验证。使用已移除 API 的消费者需迁移至受支持的 TypeBox API(#7243 由 @petrroll 贡献)。
新增
- 为受支持的 text 和 image Provider 传输添加 per-request
fetch注入;Google 适配器拒绝非全局实现而非静默绕过。 - 为 GitHub Copilot Provider 添加 Claude Opus 5 支持,通过 Anthropic Messages API 路由,支持 adaptive thinking、1M 上下文和 Copilot
minimalthinking-level 覆盖(#7158 由 @jay-aye-see-kay 贡献)。 - 为部分流式消息添加
"pending"停止原因。详见 停止原因(#7151 由 @lucasmeijer 贡献)。 - 添加
AssistantMessage.rawStopReason,并填入 Google、Anthropic、Amazon Bedrock、Mistral 和 OpenAI 流;未映射的终止原因现在表现为 Provider 错误而非成功停止(#7272)。 - 为远程和 headless 环境的 OpenRouter OAuth 登录添加手动重定向 URL 和授权码输入(#7114 由 @rgarcia 贡献)。
- 添加
AuthResolutionOverrides.minOAuthValidityMs,允许调用方要求 OAuth 凭据具有最低剩余有效期并据此刷新(#7168)。
变更
- 存储的 OAuth 凭据改为在剩余有效期不足五分钟时刷新,而非等到过期(#7168)。
修复
- 修复 Qwen Token Plan reasoning 模型,发送其服务特定的 thinking 控制和受支持的 reasoning-effort 级别(#6951、#6998)。
- 修复 Z.AI Provider 和兼容自定义端点,通过
max_tokens发送输出限制(#7174 由 @HyeokjaeLee 贡献)。 - 修复显式配置的 Amazon Bedrock profiles 被 ambient AWS 访问密钥覆盖的问题(#7176 由 @christianbasch 贡献)。
- 修复格式错误的 OpenAI 兼容 tool-call 增量同时包含有效
function载荷和空custom对象时丢弃函数参数的问题(#7288 由 @sunnyyoung 贡献)。
v0.82.1(2026-07-25)
Pi Coding Agent
新功能
- Claude Opus 5 – 在 Anthropic 和 Amazon Bedrock 上可用,支持 adaptive thinking(包括
xhigh)、推理配置文件和 prompt 缓存。详见 API Keys。 - Anthropic 网关 Bearer 认证 –
ANTHROPIC_AUTH_TOKEN可对要求Authorization: Bearer的 Anthropic 兼容网关进行认证,包括压缩和分支摘要。详见 Environment Variables or Auth File。 - 更快、更具弹性的模型目录 – pi.dev 目录通过
If-None-Match重新验证,未变更的 Provider 返回空304响应,llama.cpp 模型在重启后仍保留列出。详见 llama.cpp。
新增
- 向自定义消息渲染器公开
outputPad设置。详见 Extensions(#7045 由 @xl0 贡献)。 - 为 Anthropic 兼容网关添加
ANTHROPIC_AUTH_TOKENBearer 认证。详见 Providers(#5871)。 - 为 Anthropic 和 Amazon Bedrock 添加 Claude Opus 5 支持,包括 adaptive thinking、推理配置文件、prompt 缓存并保留 AWS 验证消息(#7081 由 @unexge 贡献,#7083 由 @davidbrai 贡献)。
变更
- pi.dev 模型目录刷新改为通过
If-None-Match重新验证,未变更 Provider 目录返回空304而非完整下载。 - Radius OAuth 设备授权、token 交换和刷新请求改为直接使用配置的网关。
- 模型加载错误改为追加底层原因,因此类似
OAuth refresh failed for openai-codex的认证失败会报告 Provider 响应,而不是空包装消息。
修复
- 修复认证完全解析为请求头的 Provider 的压缩和分支摘要(#5871)。
- 修复
/models中不可用作用域模型被隐藏的问题,使其可在不手动编辑设置的情况下移除(#6949,#7032 由 @christianklotz 贡献)。 - 修复启动上下文文件发现,跳过与上下文文件同名的目录(如
AGENTS.md),避免EISDIR警告(#7106 由 @mrexodia 贡献)。 - 修复 llama.cpp 扩展以持久化其模型目录,使 llama.cpp 模型在首次成功刷新前仍保持列出。详见 llama.cpp(#7072 由 @davidbrai 贡献)。
Pi AI
新增
- 添加
ModelsStoreEntry.etag,使持久化的 Provider 目录可携带用于条件刷新的远程 ETag 校验器。 - 为 Anthropic 兼容网关添加
ANTHROPIC_AUTH_TOKENBearer 认证(#5871)。 - 为 Anthropic 和 Amazon Bedrock 添加 Claude Opus 5 支持,包括 adaptive thinking、推理配置文件、prompt 缓存并保留 AWS 验证消息(#7081 由 @unexge 贡献,#7083 由 @davidbrai 贡献)。
变更
- Radius OAuth 设备授权、token 交换和刷新请求改为直接使用配置的网关。
ModelsError消息改为追加底层原因,因此类似OAuth refresh failed for openai-codex的认证失败会报告 Provider 响应,而不是空包装消息。
v0.82.0(2026-07-24)
Pi Coding Agent
新功能
- 约束工具采样 — 工具可以偏好或要求严格的 JSON Schema 采样,或使用 OpenAI Lark/regex 语法,模型能力元数据会阻止不支持的请求。详见 工具的约束采样。
- OpenRouter 和 Kimi Code 登录 — 使用
/login授权 OpenRouter 或 Kimi Code 订阅,无需手动配置 API key。详见 OpenRouter。 - 会话感知的流式 bash 集成 — Bash 工具接收当前会话/模型元数据,而直接 RPC bash 命令流式输出关联的输出。详见 Bash 工具会话环境 和 RPC bash 事件。
新增
- 添加了
Tool.constrainedSampling,支持严格 JSON Schema(prefer/require)和 OpenAI Lark/regex 语法变体,覆盖 OpenAI、Anthropic、Amazon Bedrock、Google Gemini 和 Mistral。详见 工具的约束采样。 - 添加了
supportsGrammarTools和supportsStrictTools兼容性标志,扩展了supportsStrictMode覆盖范围,并生成模型能力元数据以控制约束采样。 - 添加了 Kimi Code 订阅 OAuth 登录,支持 Kimi For Coding Provider,包括设备授权和自动 token 刷新(#6935 由 @zaycruz 贡献)。
- 添加了 OpenRouter OAuth PKCE 登录,通过
/login创建用户控制的 API key。详见 OpenRouter(#6927 由 @rsaryev 贡献)。 - 向内置和工厂创建的 bash 工具运行的命令暴露
PI_SESSION_ID、PI_SESSION_FILE、PI_PROVIDER、PI_MODEL和PI_REASONING_LEVEL。详见 Bash 工具会话环境。 - 为直接 RPC bash 命令添加流式
bash_execution_update事件,与请求 ID 关联。详见 RPC bash 事件(#6971 由 @ananthakumaran 贡献)。
变更
- 变更生成模型目录,仅暴露 models.dev 上经过 Provider 验证的 reasoning effort 级别(#6928 由 @davidbrai 贡献)。
修复
- 修复 DNS 查找失败(如
getaddrinfo、ENOTFOUND和EAI_AGAIN),触发自动 assistant 重试(#6946 由 @christianklotz 贡献)。 - 修复 OpenRouter Anthropic 缓存断点,使其在 tool result 之后推进,并为
~anthropic/*-latest别名启用缓存控制(#6941 由 @mteam88 贡献)。 - 修复 OpenAI Codex WebSocket 会话,在
previous_response_not_found错误后重试一次,不带缺失的 previous-response 续接(#6955 由 @davidbrai 贡献)。 - 修复 TUI 调试和崩溃日志,使其遵循自定义 agent 目录,而非始终写入
~/.pi/agent(#6958 由 @davidbrai 贡献)。 - 修复系统临时目录条目过多时 Ctrl+G 外部编辑器启动缓慢的问题(#6903 由 @christianklotz 贡献)。
- 修复启动资源显示,保留包加载的同级 npm 扩展的相对路径(#6964 由 @davidbrai 贡献)。
- 修复压缩和分支摘要请求,使用新的路由会话 ID,并在支持的情况下禁用 prompt 缓存(#6618 由 @tmustier 贡献)。
- 修复设置
PI_SKIP_VERSION_CHECK时的显式自更新(#6977)。 - 修复包含方括号的作用域模型 ID,先作为字面精确匹配再作为 glob 匹配(#6210)。
- 修复 OpenAI 和 Anthropic Provider 重试等待,使其遵循 abort 信号和配置的延迟限制(#6980 由 @petrroll 贡献)。
- 修复全新安装时因包文件 mtime 较新而优先使用捆绑模型目录而非较新的远程目录的问题(#7016 由 @davidbrai 贡献)。
- 修复编辑器滚动指示器在窄终端中溢出的问题(#7015 由 @christianklotz 贡献)。
- 修复 llama.cpp 模型,使用加载的上下文窗口作为输出 token 限制,而非限制在 16K(#7034 由 @christianklotz 贡献)。
- 修复发布源码归档,包含构建独立二进制所需的生成 Provider 模型数据。
- 更新打包的
protobufjs依赖至 7.6.5,解决 GHSA-j3f2-48v5-ccww(#7005)。 - 修复 Wayland 上
/copy在wl-copy失败时回退到 X11 或 OSC 52(#7009 由 @rkfshakti 贡献)。 - 修复
/model在打开模型选择器时重新加载更新后的models.json配置(#6999)。 - 修复压缩和分支摘要,使认证完全解析为请求头的 Provider 正常工作(#5871)。
Pi AI
不兼容变更
- 将
getBuiltinModelDataUrl(provider)替换为getBuiltinModelDataGeneratedAt(),使内置目录的新鲜度使用其记录的生成时间而非依赖安装的文件元数据(#7016 由 @davidbrai 贡献)。
新增
- 添加了 Kimi Code 订阅 OAuth 登录,支持
kimi-codingProvider,包括设备授权、token 刷新和 OAuth 主机覆盖(#6935 由 @zaycruz 贡献)。 - 添加了 OpenRouter OAuth PKCE 登录,为用户创建 API key,适用于 chat 和 image Provider(#6927 由 @rsaryev 贡献)。
- 添加了
Tool.constrainedSampling,支持严格 JSON Schema(prefer/require)和 OpenAI Lark/regex 语法变体,在 OpenAI、Anthropic、Amazon Bedrock、Google Gemini 和 Mistral 上强制执行 Provider 端约束工具采样。详见 工具的约束采样。 - 添加了
supportsGrammarTools和supportsStrictTools兼容性标志,扩展了supportsStrictMode至 Responses 和 Bedrock 模型,并生成模型能力元数据以控制约束采样。
变更
- 变更生成的模型目录,仅暴露 models.dev 上经过 Provider 验证的 reasoning effort 级别(#6928 由 @davidbrai 贡献)。
修复
- 修复 OpenAI Codex 缓存的 WebSocket 续接,在 grammar tool call 之后仅发送真实的 tool-result delta。
- 修复 Google、Amazon Bedrock、Mistral 和 Azure OpenAI Responses 适配器的约束工具采样,包括模型感知的 strict-tool 能力、语法配置验证和畸形 grammar-call 重放错误。
- 修复
cacheRetention: "none",对支持的 OpenAI 模型禁用隐式 prompt 缓存写入,对 OpenAI Codex 禁用基于会话的缓存(#6618 由 @tmustier 贡献)。 - 修复 DNS 查找失败(如
getaddrinfo、ENOTFOUND和EAI_AGAIN),触发自动 assistant 重试(#6946 由 @christianklotz 贡献)。 - 修复 OpenAI Codex WebSocket 会话,在
previous_response_not_found错误后重试一次,不带缺失的 previous-response 续接(#6955 由 @davidbrai 贡献)。 - 修复 OpenAI 和 Anthropic Provider 重试等待,使其遵循 abort 信号和配置的延迟限制(#6980 由 @petrroll 贡献)。
- 修复 OpenRouter Anthropic 缓存断点,使其在 tool result 之后推进,并为
~anthropic/*-latest别名启用缓存控制(#6941 由 @mteam88 贡献)。
Pi Agent
不兼容变更
- 将
AgentHarness的ExecutionEnv依赖和上下文无关的AgentTool输入替换为应用定义的toolContext值和上下文感知的AgentHarnessTool定义。
新增
- 添加了上下文感知的
read、write、edit和bashharness 工具,由ExecutionEnv支持,包括异步 bash 执行准备。
变更
- 对齐了 harness 工具路径处理、编辑序列化、shell 输出捕获、显式非继承环境和跨平台进程清理,与 coding-agent 行为一致。
修复
Pi TUI
修复
- 修复调试和崩溃日志,使用配置的 TUI 日志目录(包括
PI_CODING_AGENT_DIR),而非始终写入~/.pi/agent(#6958 由 @davidbrai 贡献)。 - 修复窄终端中编辑器底部滚动指示器超出终端宽度导致崩溃的问题(#7015 由 @christianklotz 贡献)。
v0.81.1(2026-07-21)
Pi Coding Agent
新功能
- 可验证的发布源码归档 — GitHub Releases 现在包含确定性、带校验和的源码归档,并附有独立二进制构建说明。详见 从发布源码构建独立二进制。
- 弹性压缩与分支摘要 — 临时 Provider 故障现在遵循配置的重试策略,重试生命周期事件可供 interactive、JSON、RPC 和 SDK 消费者使用。详见 压缩与分支摘要 和 RPC 重试事件。
新增
- 在 GitHub Releases 中添加确定性、带校验和的源码归档,并附有独立二进制重建文档(#6913 由 @christianklotz 贡献)。
修复
- 修复压缩和分支摘要,使用配置的重试策略重试临时 Provider 故障,重试生命周期事件暴露给 interactive、JSON、RPC 和 SDK 消费者(#6901 由 @davidbrai 贡献)。
- 修复 interactive 启动时等待后台模型目录刷新导致 footer Provider 计数计算阻塞的问题。
- 恢复使用 0.81 之前 agent-core API 的扩展的默认流回退(#6915)。
- 修复 Kimi K3 模型(来自 Moonshot AI 和 Moonshot AI China),使用 OpenAI thinking 格式并暴露 reasoning effort 支持。
Pi AI
新增
- 新增
retryAssistantCall(),支持对临时 assistant 故障进行有界重试,提供生命周期回调和 abort 处理(#6901 由 @davidbrai 贡献)。
修复
- 修复 Kimi K3 模型(来自 Moonshot AI 和 Moonshot AI China),使用 OpenAI thinking 格式并暴露 reasoning effort 支持。
Pi Agent
新增
- 在
AgentHarness中为压缩和分支摘要操作添加重试策略支持和生命周期事件(#6901 由 @davidbrai 贡献)。
修复
- 恢复
Agent的streamFn选项和主机可配置的省略 agent-loop stream 函数的回退,同时避免重新引入pi-ai/compat依赖(#6915)。
v0.81.0(2026-07-21)
Pi Coding Agent
新功能
- 本地 llama.cpp 模型管理 — 连接 llama.cpp 路由器,搜索和下载 Hugging Face 模型,并显式加载或卸载模型,提供实时进度。详见 llama.cpp。
- 完整 Provider 扩展 — 扩展可以注册完整的 pi-ai Provider,包括认证、模型刷新、过滤和自定义流式处理。详见 注册新 Provider。
- Qwen Token Plan Provider — 使用内置的国际和中国订阅 Provider,支持区域端点和 API-key 认证。详见 API Keys。
- 扩展用量统计 — 工具、压缩和分支摘要的用量被持久化并计入会话总计。详见 压缩与分支摘要。
新增
- 将 Qwen Token Plan 和 Qwen Token Plan China 添加到内置 Provider 设置、默认模型解析和 Provider 文档中(#6858 由 @QuintinShaw 贡献)。
- 新增
get_available_thinking_levelsRPC 命令和RpcClient.getAvailableThinkingLevels()方法(#6865 由 @cristinaponcela 贡献)。 - 从包根导出消息和工具执行生命周期事件类型(#6772 由 @davidbrai 贡献)。
- 新增内置 llama.cpp 路由器支持,包括
/login连接设置和/llamaHugging Face 模型搜索与下载、显式加载、卸载和实时进度。详见 llama.cpp。 - 新增扩展注册完整 pi-ai Provider 的能力,包括原生认证、模型刷新、过滤和流式行为。
- 新增工具、压缩和分支摘要的用量统计,在持久化会话、footer 总计和会话统计中体现(#6671 由 @davidbrai 贡献)。
修复
- 更新打包的
brace-expansion依赖至 5.0.7(#6896 由 @davidbrai 贡献)。 - 修复持久化的远程模型目录在升级后覆盖较新捆绑目录的问题。
- 修复已存储 API-key 凭据,使其应用 Provider 作用域的
env值,包括 Amazon Bedrock profiles(#6864 由 @cristinaponcela 贡献)。 - 修复 OpenAI 兼容跨 Provider 重放,当多个 tool call 共享一个 Provider call ID 时保持 tool call ID 唯一(#6854 由 @cristinaponcela 贡献)。
- 修复 Kimi K3 thinking 级别,暴露 low、high 和 max,并将
k2p7别名规范化为kimi-for-coding。 - 修复 OpenCode Go 模型通过 OpenAI Responses API 路由的问题。
- 修复
pi-ai包元数据,避免消费者 lockfile 重复变更(#6812 由 @jmfederico 贡献)。 - 修复终端关闭时先清除编辑器反转软件光标再恢复硬件光标的问题(#6790 由 @dam9000 贡献)。
- 修复 ANSI 感知文本换行,识别 CRLF 和 CR 行尾同时保留样式(#6764 由 @xz-dev 贡献)。
- 修复编辑器粘贴注册表在删除和撤销粘贴标记后损坏,防止提交的 prompt 中出现字面或错配的粘贴标记(#6844)。
- 修复无会话 OpenAI Codex WebSocket 请求使用 UUIDv7 请求 ID(#6834 由 @xl0 贡献)。
- 修复 GPT-5.6 Codex 模型默认使用 272K 上下文窗口,避免自动长上下文定价(#6853 由 @aadishv 贡献)。
- 修复压缩期间排队的消息保留 steering 和 follow-up 投递行为(#6730 由 @dannote 贡献)。
- 修复 read 工具错误被语法高亮为文件内容的问题(#6731 由 @dannote 贡献)。
- 修复 llama.cpp 路由器下载进度更新,并移除模型操作确认中的冗余措辞。
- 将自动模型目录网络刷新从启动初始化移至运行中的 interactive 和 RPC 模式。
- 修复持久化会话被读取和解析两次的问题,减少大型会话的启动延迟(#6793)。
- 修复 prompt 模板中所有参数的默认值(
${@:-default}和${ARGUMENTS:-default})(#6695)。
Pi AI
新增
- 新增 Qwen Token Plan 和 Qwen Token Plan China 作为内置 Provider,支持区域端点、API-key 认证和生成的模型目录(#6858 由 @QuintinShaw 贡献)。
- 新增
contentText,用于从消息内容中提取拼接文本(#6840 由 @xl0 贡献)。 - 新增共享的
uuidv7工具,用于时间排序标识符(#6834 由 @xl0 贡献)。 - 新增可选的用量元数据到工具结果消息中(#6671 由 @davidbrai 贡献)。
变更
- 变更生成的模型目录,将 TypeScript 模型形状与忽略的 JSON 模型值分离,减少生成源码的变动(#6765 由 @mitsuhiko 贡献)。
- 变更模型生成,在编译前验证忽略的 Provider 数据;
npm run build照常刷新模型数据,npm run build:offline复用已有数据无需网络访问。
修复
- 修复已存储 API-key 凭据在认证解析期间应用 Provider 作用域的
env值,包括 Amazon Bedrock profiles(#6864 由 @cristinaponcela 贡献)。 - 修复 OpenAI 兼容跨 Provider 重放,当多个 tool call 共享一个 Provider call ID 时保持 tool call ID 唯一(#6854 由 @cristinaponcela 贡献)。
- 修复 Kimi K3 暴露其支持的 low、high 和 max thinking 级别,并将
k2p7别名规范化为kimi-for-coding模型。 - 修复 OpenCode Go Provider 支持通过 OpenAI Responses API 路由的模型。
- 修复
pi-ai可执行路径与 npm registry 元数据匹配,避免消费者 lockfile 重复变更(#6812 由 @jmfederico 贡献)。 - 修复无会话 OpenAI Codex WebSocket 请求使用 UUIDv7 请求 ID,使拒绝 UUIDv4 ID 的模型可用(#6834 由 @xl0 贡献)。
- 修复 GitHub Copilot 长上下文定价层级在生成的模型元数据中的问题(#6668)。
- 修复 Kimi Coding 订阅模型在 models.dev 报告零定价时报告 API 等效隐含成本。
- 修复 OpenAI Responses 提前结束流被归类为可重试的 Provider 错误(#6727)。
- 修复 GPT-5.6 Codex 模型默认使用 272K 上下文窗口,避免自动长上下文定价(#6853 由 @aadishv 贡献)。
Pi Agent
不兼容变更
- 变更
SessionStorage,使用getPathToRootOrCompaction(),要求会话名称和统计方法,支持基于游标的条目读取,并将保留的压缩尾部存储为自包含检查点(#6594 由 @cristinaponcela 贡献)。 - 将
uuidv7导出移至@earendil-works/pi-ai(#6834 由 @xl0 贡献)。 - 将可选的
AgentstreamFn回退替换为必需的streamFunction,并使低级循环 stream 函数为必需,防止@earendil-works/pi-ai/compat和所有内置 Provider 进入选择性 Provider 包(#6851)。
新增
- 在 agent harness 中为工具结果、压缩条目和分支摘要添加用量元数据(#6671 由 @davidbrai 贡献)。
Pi TUI
修复
v0.80.10(2026-07-16)
Pi Coding Agent
新功能
- Kimi Coding thinking 兼容 — Kimi Coding 模型现在正确使用自适应 thinking;K3 暴露其支持的
max级别,并支持回放空签名 thinking blocks。详见 Kimi For Coding 设置 和模型选项。
修复
Pi AI
修复
v0.80.9(2026-07-16)
Pi Coding Agent
新功能
- Kimi K3 与延迟工具加载 — 在多个内置 Provider 中使用 Kimi K3,包括通过 Kimi 原生协议进行渐进式扩展工具激活。详见动态工具加载、OpenAI 兼容性 和
kimi-deferred-tools.ts示例。
新增
- 为 Kimi Coding、Moonshot AI、Moonshot AI China、OpenRouter 和 Vercel AI Gateway 添加 Kimi K3 支持。
- 添加 Kimi 延迟工具加载,用于扩展驱动的工具激活。详见动态工具加载、OpenAI 兼容性 和
kimi-deferred-tools.ts示例。
变更
- 将 xAI 登录改为使用预填充的设备授权链接,标签为 "使用 SuperGrok 或 X Premium 登录 ",并将默认 xAI 模型改为 Grok 4.5(#6734,感谢 @Jaaneek)。
修复
- 修复 Kimi K3 输出限制,适用于 Vercel AI Gateway 和 OpenRouter 模型。
- 修复在首次助手响应之前克隆或 fork 会话时,提示会话必须先保存。
移除
Pi AI
新增
- 为 Kimi Coding、Moonshot AI、Moonshot AI China、OpenRouter 和 Vercel AI Gateway 添加 Kimi K3 支持。
- 通过
compat.deferredToolsMode为 OpenAI 兼容 Chat Completions 添加 Kimi 延迟工具加载。
变更
修复
- 修复 Kimi K3 输出限制,适用于 Vercel AI Gateway 和 OpenRouter 模型。
移除
v0.80.8(2026-07-16)
Pi Coding Agent
不兼容变更
- 将 SDK 的
CreateAgentSessionOptions.authStorage和modelRegistry选项替换为异步modelRuntime选项。AuthStorage及其存储后端不再导出;请使用ModelRuntime(或自定义 pi-aiCredentialStore),或readStoredCredential()进行一次性读取。 - 移除了冗余的
ModelRuntime.getAll()、find()、getSnapshot()和getAuthOptions()投影。请直接使用 pi-aiModels的getModels()、getModel()、getProviders()和checkAuth()方法。 - 将 SDK 通过
ModelRegistry.getApiKeyAndHeaders()组装的请求认证替换为ModelRuntime.getAuth()。传入 Provider ID 返回 Provider 作用域认证;传入模型还会解析内置、models.json和扩展模型请求头。 - 面向扩展的
ModelRegistry.refresh()从同步void改为Promise<void>,因为models.json加载是异步的。扩展必须在同步读取注册表之前 await 它。 - 将规范的动态目录刷新迁移到异步
ModelRuntime.refresh()/ pi-aiModels.refresh()。旧版扩展 OAuthmodifyModels在凭据初始化后仍作为同步兼容投影保留。
新功能
- 统一的模型运行时与 Provider 认证 —
ModelRuntime集中管理模型配置、Provider 自有的/login和动态 Provider 目录。详见 Providers。 - 实时模型目录刷新 —
/model在后台刷新已配置的 Provider,pi update --models可强制立即刷新。详见安装和管理。 - xAI 设备码 OAuth 与 Grok 4.5 Responses 支持 — 使用设备码登录 xAI,并以低、中、高 thinking 级别使用 Grok 4.5。详见 xAI。
新增
- 新增
ModelRuntime作为规范的异步 SDK 和内部模型/认证门面,同时保留面向扩展的同步ModelRegistryAPI。ModelRuntime.create()可通过credentials选项接受任何 pi-aiCredentialStore。 - 新增 Provider 自有的
/login发现,直接从注册的 pi-ai Provider 获取,包括 ambient 认证状态和信息链接。 - 新增基于文件的动态目录
models-store.json、按 Provider 的 pi.dev 目录覆盖,以及 Radius 网关支持(包括从旧版凭据缓存目录离线迁移)。 - 新增扩展 Provider
refreshModels(context)支持动态模型发现,并可选地由 Provider 控制持久化。 - 新增
pi update --models,用于在不更新 Pi 或扩展的情况下强制立即刷新模型目录。 - 新增 xAI 设备码 OAuth 登录,以及 Grok 4.5 OpenAI Responses 支持,提供低、中、高 thinking 级别(#6651,感谢 @Jaaneek)。
变更
ModelRuntime改为通过临时 pi-ai Provider 方法组合内置 Provider、不可变的models.json配置和扩展覆盖。ModelRuntime改为拥有最终请求组装:getAuth(model)包含已配置模型请求头;流方法只解析一次认证;before_provider_headers作为仅 Models 的请求头转换在 Provider 分发前运行。/model改为立即渲染当前模型快照、在后台刷新已配置 Provider,并用部分结果或超时错误更新打开的选择器。
修复
- 修复已配置 Provider 目录刷新,使其能解析 pi.dev 以模型 ID 为键的响应、将检查频率限制为每 4 小时一次、发送带版本的 Pi user agent、将未实现路由视为不可用覆盖,并在
/model中显示简洁刷新状态。 - 修复相邻的助手 thinking blocks,使其渲染为一个 thinking 区域。
- 修复 OpenAI Codex 会话 ID 超过 64 字符的问题,以符合 API 限制(#6630)。
- 修复终端输出,统一规范化 tab 字符(#6697,感谢 @xz-dev)。
- 修复检查 npm 包后的 Windows 终端标题(#6629)。
- 修复 Bun 独立二进制文件打包 OAuth 适配器以支持交互式登录。
Pi AI
不兼容变更
- 将运行时认证改为 Provider 作用域的
Models.checkAuth()、getAuth()、login()和logout()API。checkAuth()现在返回AuthCheck | undefined,API key 认证解析器不再接收模型。 - 移除了旧版内置 OAuth Provider 对象、全局 OAuth 注册表 API 和公开的低层内置 login/refresh 函数。请改用规范的
Provider.auth.oauth方法;oauth子路径现在仅保留扩展兼容类型。 - 将规范登录交互接口从
AuthLoginCallbacks重命名为AuthInteraction;它暴露了 API key 和 OAuth 流程共用的 Provider 中立prompt()/notify()协议。 - 更改
Models请求契约:getAuth(model)现在包含模型请求头,getAuth(providerId)仍为 Provider 作用域,Models 流选项可包含transformHeaders。自定义Models实现必须在合并 auth/模型和显式请求头后执行该转换,然后在 Provider 分发前移除它。 - 将动态模型刷新改为
Models.refresh(options),刷新每个已配置的动态 Provider 并返回按 Provider 的错误/取消状态。Provider.refreshModels(context)现在接收有效凭据、作用域模型存储、网络策略和 abort 信号。
新增
- 为
Models新增 Provider 自有的认证与可用性解析,包括存储的 OAuth 刷新和通过CredentialStore的交互式登录支持。 - 新增
CredentialStore.list()异步枚举非机密凭据,以及支持凭据感知的Provider.filterModels()可用性策略。 - 新增中立的认证流程信息/链接事件,以及 Provider 自有的 Amazon Bedrock 和 Google Vertex AI 凭据选择流程。
- 新增
ModelsStore,使用内存默认实现来恢复和持久化动态 Provider 目录。 - 新增动态 Radius
pi-messages网关 Provider,支持 OAuth 和凭据特定的目录刷新。 - 新增
Models.refresh({ force: true }),让 Provider 绕过新鲜度检查执行显式刷新。 - 新增 xAI 设备码 OAuth 登录,并将 Grok 4.5 路由到 OpenAI Responses,支持低、中、高 thinking(#6651,感谢 @Jaaneek)。
变更
Models.getAuth(model)改为包含模型请求头,并新增仅作用于 Models 的transformHeaders流选项,在 auth 和显式请求头组装之后、Provider 分发之前运行。
修复
- 修复 Cloudflare Workers AI 和 AI Gateway 流,使其在认证解析后对账户和网关端点占位符实例化,包括使用自定义模型对象的兼容流。
- 修复懒加载 Provider 流,使其在转发内部流时保留最终助手消息。
- 修复 OpenAI Codex 会话 ID 超过 64 字符的问题,以符合 API 限制(#6630)。
v0.80.7(2026-07-14)
Pi Coding Agent
不兼容变更
- 移除了
openai-responses的compat.sendSessionIdHeader标志。会话亲和行为现在由compat.sessionAffinityFormat("openai"、"openai-nosession"或"openrouter")控制。将sendSessionIdHeader: false替换为sessionAffinityFormat: "openai-nosession"(#6496,感谢 @petrroll)。
新功能
- 缓存友好的动态工具加载 — 扩展可以在执行期间添加工具,同时受支持的 Anthropic 和 OpenAI Responses 模型保留 prompt 缓存前缀。详见动态工具加载。
- 消息复制快捷键 —
Ctrl+X复制转录中最后一条助手消息或/tree中选中的消息,使旧消息和分支消息可直接复制。详见显示和消息队列。 - Fable 5
xhigh和maxthinking — 在生成的 Provider 目录中提供原生的xhigh和maxthinking 级别。详见模型选项。
新增
- 为扩展工具添加了缓存友好的动态工具加载,由 tool result 触发。受支持的 Anthropic 和 OpenAI Responses 模型在工具定义可用时加载定义,保留缓存的 prompt 前缀。详见动态工具加载(#6474)。
- 在所有生成的 Provider 目录中为 Claude Fable 5 添加了原生
xhigh和maxthinking 级别(#6490,感谢 @davidbrai)。 - 添加了
Ctrl+X复制最后一条助手消息或/tree中选中的消息。 - 为 OpenAI 和 Codex Responses 添加了
toolChoice支持,包括 required 和 named 工具选择(#6588,感谢 @xl0)。
修复
- 修复了 OpenRouter 模型上下文窗口,使用 top provider 的实际上下文长度(#6481,感谢 @davidbrai)。
- 修复了 OpenRouter OpenAI 兼容会话 ID,使用
x-session-id请求头代替 OpenAI 特定的会话亲和字段(#6496,感谢 @petrroll)。 - 修复了
Ctrl+V在剪贴板不含图片时粘贴文本的行为。 - 修复了
/login amazon-bedrock提示并保存 Bedrock API key,而非仅显示 ambient AWS 凭据设置说明。 - 修复了 Amazon Bedrock ambient AWS 凭据,继续使用 SigV4 认证,包括自定义模型 ID(#6532,感谢 @ribelo)。
- 修复了 Cloudflare Workers AI 和 AI Gateway 认证,在存储的凭据仅包含 API key 时使用 ambient 账户和网关 ID(#6292,感谢 @markphelps)。
- 修复了旧终端解码中
Alt+,和Alt+.等 Alt+符号组合键(#6523,感谢 @ribelo)。 - 修复了 GitHub Copilot
mai-code-1-flash-picker模型路由,使其通过/responses端点(#6544,感谢 @petrroll)。 - 修复了分支摘要,使其在使用 ambient 认证而非 API key 的 Provider 上正常工作(#6595,感谢 @davidbrai)。
Pi AI
不兼容变更
- 移除了
OpenAIResponsesCompat.sendSessionIdHeader标志。会话亲和行为现在由compat.sessionAffinityFormat("openai"、"openai-nosession"或"openrouter")控制。将sendSessionIdHeader: false替换为sessionAffinityFormat: "openai-nosession"(#6496,感谢 @petrroll)。
新增
- 添加了缓存友好的动态工具加载。
ToolResultMessage.addedToolNames标记Context.tools中工具可用的位置;Anthropic 和 OpenAI Responses 使用原生延迟加载,使后加载的工具不进入缓存前缀,其他 Provider 继续正常使用Context.tools(#6474)。 - 在所有生成的 Provider 目录中为 Claude Fable 5 添加了原生
xhigh和maxthinking 级别(#6490,感谢 @davidbrai)。 - 为 OpenAI 和 Codex Responses 添加了
toolChoice支持,包括 required 和 named 工具选择(#6588,感谢 @xl0)。
修复
- 修复了 OpenRouter 模型上下文窗口,使用 top provider 的实际上下文长度(#6481,感谢 @davidbrai)。
- 修复了 GitHub Copilot
mai-code-1-flash-picker模型路由,使其通过/responses端点(#6544,感谢 @petrroll)。 - 修复了 Amazon Bedrock 请求,使用通用
apiKey流选项作为 Bedrock bearer token。 - 修复了 OpenRouter OpenAI 兼容会话 ID,使用
x-session-id请求头代替 OpenAI 特定的会话亲和字段(#6496,感谢 @petrroll)。 - 修复了 Amazon Bedrock ambient AWS 凭据,继续使用 SigV4 认证,包括自定义模型 ID(#6532,感谢 @ribelo)。
- 修复了 Cloudflare Workers AI 和 AI Gateway 认证,在存储的凭据仅包含 API key 时使用 ambient 账户和网关 ID(#6292,感谢 @markphelps)。
- 修复了 Amazon Bedrock 错误,报告未处理的 provider stop reason,而非仅显示
An unknown error occurred(#6598,感谢 @davidbrai)。 - 修复了 Azure OpenAI Responses reasoning replay,当
encrypted_content仅出现在终端 response event 中时(#6608,感谢 @davidbrai)。 - 修复了省略
message_delta事件中usage的 Anthropic 兼容代理(#6611,感谢 @davidbrai)。 - 修复了 OpenCode OpenAI Responses 模型,省略不支持的
session-id请求头,同时保留其他缓存亲和数据(#6645,感谢 @davidbrai)。
Pi Agent
新增
- 添加了
AgentToolResult.addedToolNames向ToolResultMessage的传播,使 result 引入的工具可从该转录点起加载(#6474)。
v0.80.6(2026-07-09)
Pi Coding Agent
新功能
maxthinking 级别 — 全新的可选 thinking 级别,位于xhigh之上,在 GPT-5.6 和 adaptive Claude 模型上原生支持,可通过 CLI(--thinking max)、SDK、RPC 和模型选择使用。自定义主题可定义thinkingMax。详见 CLI 参考。- 基于输入量的定价阶梯 — 请求级输入 token 定价阶梯,用于精确的长上下文成本核算(如 GPT-5.4/5.5/5.6 长上下文费率),也可在
models.json和modelOverrides中为自定义模型配置。详见 模型配置。
新增
- 在 CLI、SDK、RPC、模型选择和主题中添加了可选的
maxthinking 级别。自定义主题可定义thinkingMax;已有主题回退到thinkingXhigh。 - 在
models.json、modelOverrides和扩展注册的 Provider 中为自定义模型成本添加了请求级输入 token 定价阶梯。 - 为
shellPath设置添加了~(home 目录)展开(#6470,感谢 @aaronkyriesenbach)。
修复
- 修复了 compact 后输出 token 预算,使其忽略 compact 边界之前的过期助手使用量(#6464)。
- 修复了 GPT-5.4 和 GPT-5.5 长上下文成本核算,同时保留了需要显式覆盖的模型的 272K 默认上下文限制。
- 修复了 GPT-5.6 元数据,使直接 OpenAI 请求保持在 272K 短上下文阶梯,同时暴露 Codex 后端的 372K 上下文窗口及长上下文定价,并移除了不存在的裸
gpt-5.6别名。 - 修复了 Anthropic 消息转换,保留 thinking text 为空但有有效签名的 thinking blocks,而非丢弃它们,避免新版 Claude 模型出现 thinking-block 错误(#6457,感谢 @davidbrai)。
Pi AI
新增
- 添加了独立的可选
maxthinking 级别,包括 GPT-5.6 和 Anthropic adaptive-thinking effort 的原生xhigh和max支持,匹配 Anthropic 文档:所有 adaptive Claude 模型支持max,Opus 4.7/4.8、Sonnet 5 和 Fable 5 支持原生xhigh。 - 在模型成本元数据和使用量成本计算中添加了请求级输入 token 定价阶梯。
修复
- 修复了 compact 后输出 token 预算,使其忽略 compact 边界之前的过期助手使用量(#6464)。
- 修复了 GPT-5.4 和 GPT-5.5 长上下文成本核算,同时保留需要显式覆盖的模型的 272K 默认上下文限制。
- 修复了 GPT-5.6 元数据,使直接 OpenAI 请求保持在 272K 短上下文阶梯,同时暴露 Codex 后端的 372K 上下文窗口及长上下文定价,并从 OpenAI 和 Azure OpenAI Responses 目录中移除了不存在的裸
gpt-5.6别名。 - 修复了 Anthropic 消息转换,保留 thinking text 为空但有有效签名的 thinking blocks,而非丢弃它们,避免新版 Claude 模型出现 thinking-block 错误(#6457,感谢 @davidbrai)。
Pi Agent
新增
- 在
xhigh之后添加了max模型 thinking 级别。
v0.80.5(2026-07-09)
此版本无面向用户的功能变更,所有包均为内部改进。
v0.80.4(2026-07-09)
Pi Coding Agent
新功能
- Prompt 缓存未命中可见性 — 可通过
showCacheMissNotices在转录中显示显著的缓存未命中通知。详见 模型与 Thinking。 - 项目级资源配置 —
pi config -l和 Tab 切换管理全局与项目级包资源。详见 启用和禁用资源。 - 扩展生命周期和 Provider 钩子 — 扩展获得
agent_settled、before_provider_headers、条目渲染器和InlineExtension。详见 agent_start / agent_end / agent_settled、before_provider_headers 和 InlineExtension。 - 新的模型与传输支持 — GPT-5.6 元数据、Copilot Claude Sonnet 5 和 zstd Codex SSE 传输通过 Provider 支持可用。详见 Providers 和 模型选项。
新增
- 添加了 OpenAI GPT-5.6 模型元数据,支持
gpt-5.6、gpt-5.6-sol、gpt-5.6-terra和gpt-5.6-luna,并验证了openai-codex对gpt-5.6-sol、gpt-5.6-terra和gpt-5.6-luna的支持。 - 在 GitHub Copilot 模型目录中添加了 Claude Sonnet 5(#6200)。
- 为 OpenAI Codex Responses SSE 传输添加了 zstd 请求体压缩。
- 添加了
/login <provider>支持,含 Provider 自动补全。 - 添加了 CLI 等效模型和作用域模型解析的公共 SDK 导出(#6201)。
- 添加了扩展和 RPC
agent_settled事件,以及完全 settled 的 agent 运行的会话级空闲等待(#6363)。 - 添加了
before_provider_headers扩展钩子,用于注入 Provider 请求头(#6350,感谢 @pmateusz)。 - 添加了
InlineExtension类型,用于命名的内联扩展工厂(#6267,感谢 @any-victor)。 - 添加了扩展条目渲染器,用于持久化的仅显示会话条目,在交互模式下渲染而不发送到模型上下文。
- 添加了
pi config的项目级资源覆盖管理,包括通过pi config -l启动项目模式,以及全局和项目作用域之间的 Tab 切换(#6309)。 - 从 agent harness 中添加了
InMemorySessionStorage和JsonlSessionStorage导出(#6435)。 - 在 JSONL 会话头中添加了自定义元数据支持(#6417,感谢 @ArcadiaLin)。
- 添加了
showCacheMissNotices设置和/settings开关,用于显著的 Prompt 缓存未命中转录通知。
修复
- 修复了 gRPC
ResourceExhaustedProvider 错误(如 NVIDIA NIM 瞬时耗尽响应)的重试分类(#6449,感谢 @davidbrai)。 - 修复了 Cloudflare 524 超时响应的重试分类(#6239)。
- 修复了 GitHub Copilot 设备码登录轮询,在首次 token 轮询前等待,并遵循服务器提供的
slow_down间隔,避免浏览器授权后的错误失败或挂起(#6187)。 - 修复了 OpenAI Codex WebSocket 会话,在后端 60 分钟限制之前轮换缓存连接,避免长会话出现连接限制失败(#6268)。
- 修复了 DS4 服务器对
Prompt has ... tokens, but the configured context size is ... tokens错误的上下文溢出检测(#6262)。 - 修复了 Fireworks GLM 5.2 Fast,使其使用 OpenAI 兼容端点和
thinkingLevelMap,与 GLM 5.2 对齐(#6195)。 - 修复了 fork 菜单对同一选项重复选择的忽略问题(#6430,感谢 @davidbrai)。
Pi AI
新增
- 添加了 OpenAI GPT-5.6 模型元数据,支持
gpt-5.6、gpt-5.6-sol、gpt-5.6-terra和gpt-5.6-luna,并验证了openai-codex对gpt-5.6-sol、gpt-5.6-terra和gpt-5.6-luna的支持。 - 从 models.dev 刷新了生成的模型目录,新增了 Kimi K2.7 Code(GitHub Copilot)和多个 Provider 的 Fable 5 等模型(#6256)。
- 在 GitHub Copilot 模型目录中添加了 Claude Sonnet 5(#6200)。
- 为 OpenAI Codex Responses SSE 传输添加了 zstd 请求体压缩。请求在 Node/Bun 支持 zstd 时发送
Content-Encoding: zstd;WebSocket 传输不变。
修复
- 修复了 gRPC
ResourceExhaustedProvider 错误(如 NVIDIA NIM 瞬时耗尽响应)的重试分类(#6449,感谢 @davidbrai)。 - 修复了底层消息转换,在 Provider 转换前规范化
null消息内容,避免松散导入转录的崩溃(#6343)。 - 修复了 Xiaomi Token Plan 模型元数据,使其遵循上游 models.dev token-plan 目录,移除不支持的
mimo-v2-omni变体(#6204)。 - 修复了 GitHub Copilot 设备码登录轮询,在首次 token 轮询前等待,避免部分用户在浏览器授权后出现设备码错误(#6187)。
- 修复了 OAuth 设备码轮询,遵循服务器提供的
slow_down间隔,而不仅应用 RFC 8628 的 5 秒增量,使提前到达的轮询(如 WSL/VM 时钟漂移)时 GitHub Copilot 登录恢复而非挂起(#6187)。 - 修复了 OpenAI Codex user-agent 构建,同步加载 Node OS 元数据,避免在 Node/Bun 中报告
pi (browser)的启动竞态。 - 修复了 Fireworks GLM 5.2 Fast,使其使用 OpenAI 兼容端点和
thinkingLevelMap,与 GLM 5.2 对齐(#6195)。 - 修复了 Amazon Bedrock Claude Fable 5 和 Claude Sonnet 5 的 Prompt 缓存点数(#6235)。
- 修复了 Amazon Bedrock Claude 5 Prompt 缓存定价元数据,移除了过期的回退覆盖。
- 修复了 DS4 服务器对
Prompt has ... tokens, but the configured context size is ... tokens错误的上下文溢出检测(#6262)。 - 修复了 OpenAI Codex WebSocket 会话,在后端 60 分钟限制之前轮换缓存连接,避免长会话出现连接限制失败(#6268)。
- 修复了 OpenAI Completions 和 Responses Provider,在工具结果文本为空且无图片内容时发送
(no tool output)而非(see attached image),防止模型虚构图片附件。 - 修复了 OpenAI Responses 和 Azure OpenAI Responses 请求,避免发送低于 Provider 最小值的
max_output_tokens(#6265)。 - 修复了 Cloudflare 524 超时响应的重试分类(#6239)。
- 修复了 Bun fetch socket-drop 错误(如
socket connection was closed)的重试分类,使瞬时流断开自动重试(#6431)。 - 修复了 GitHub Copilot 扩展上下文窗口模型(Claude Opus 4.7/4.8、Claude Opus 4.6、Claude Sonnet 4.6/5、Claude Fable 5、GPT-5.3 Codex、GPT-5.4、GPT-5.5),使其使用
contextWindow: 1000000,防止过早压缩和预算不足(#6439)。
Pi Agent
新增
- 添加了可配置的 harness 会话上下文条目变换和自定义条目消息投射器。
- 在 JSONL 会话头中添加了自定义元数据支持(#6417,感谢 @ArcadiaLin)。
- 导出了
InMemorySessionStorage和JsonlSessionStorage(#6435)。
修复
- 修复了 harness 分轮压缩,使摘要请求串行化,避免单并发 Provider 被要求运行重叠的生成请求(#5536)。
- 修复了 harness 工具调用,使被长度截断的助手消息中的工具调用失败,而非等待缺失的工具结果(#6285)。
- 修复了 harness 会话导入,在上下文投射前规范化
null消息内容,避免松散导入转录的崩溃(#6343)。 - 修复了非正数或过大的 harness shell 执行超时,使其以明确的验证错误失败,而非被压缩为即时超时(#6181)。
- 修复了 harness 会话存储的短条目 ID,使用生成的 uuidv7 的随机尾部而非时间戳前缀(后者在调用之间近乎恒定)(#6242)。
v0.80.3(2026-06-30)
Pi Coding Agent
新功能
- Anthropic Claude Sonnet 5 支持 — Claude Sonnet 5 通过 Anthropic 兼容和 Bedrock Provider 目录可用,并启用了自适应 thinking。详见 Providers 和 Model Options。
- 可配置的输出间距 —
outputPad可控制用户消息、助手消息和 thinking 块的水平内边距。详见 Settings。 - 外部编辑器配置 —
externalEditor允许 Ctrl+G 使用配置的编辑器,再回退到$VISUAL/$EDITOR。详见 Settings 和 Keybindings。 - 更丰富的 RPC 会话树访问 — RPC 客户端可以通过
get_entries和get_tree检查会话条目和树快照。详见 get_entries 和 get_tree。 - 扩展会话元数据更新 — 扩展可以通过
session_info_changed观察会话名称变化。详见 session_info_changed。 - 现代 Azure Foundry 端点支持 — Azure OpenAI Responses Provider 设置支持当前的 Microsoft Foundry 端点 URL。详见 Azure OpenAI。
新增
- 添加了 Anthropic Claude Sonnet 5 模型支持。
- 添加了
get_entries和get_treeRPC 命令,用于通过 RPC 读取会话条目和树快照(#6078)。 - 添加了
./rpc-entry包导出,用于直接以 RPC 模式启动 Pi。 - 添加了扩展的会话名称变更事件(#6175)。
- 添加了 Azure OpenAI Responses 支持,用于现代 Microsoft Foundry 端点 URL(#6004)。
- 添加了
Usage.reasoningtoken 计数,用于报告 reasoning/thinking token 使用情况的 Provider(#6057)。 - 添加了
externalEditorsettings.json 覆盖项,用于 Ctrl+G 外部编辑器命令,默认回退到 Windows 上的 Notepad 和其他平台上的nano(#6122)。 - 添加了
outputPad设置,用于用户消息、助手消息和 thinking 的水平内边距(#6168)。
变更
- 将默认 OpenAI 模型更改为
gpt-5.5。 - 将 OpenAI Codex Responses SSE 响应头等待时间更改为使用配置的 HTTP 超时,而非之前的固定 20 秒超时,减少慢连接上的假超时(#4945)。
修复
- 修复了 Claude Sonnet 5 元数据,使其对 Anthropic 兼容和 Bedrock 请求使用自适应 thinking 负载。
- 修复了生成式 Xiaomi MiMo 模型定价,使其与 models.dev 当前的按量付费定价一致(#6138)。
- 修复了 Provider HTTP 错误,使其包含响应体而非不透明的 SDK 消息(#5832)。
- 修复了
streamSimple()max-token 上限,使那些将输入和输出计入同一上下文窗口的 Provider 不会拒绝长请求(#5595)。 - 修复了 OpenAI Responses 流,使其在输出项乱序完成时保留 reasoning 回放状态(#6009)。
- 修复了 Z.AI preserved thinking 请求,使其在启用 thinking 时发送
thinking.clear_thinking: false,允许回放的reasoning_content参与 Provider 缓存(#6083)。 - 修复了前导 Prompt 压缩,使其在压缩后停止而非立即继续(#6074)。
- 修复了恢复会话时资源通知保持在消息之前的问题(#6048)。
- 修复了启动基准计时输出,使其在 TUI 关闭后打印、保留扩展计时,并在停止基准模式前耗尽终端查询回复(#6030、#6063)。
- 修复了扩展工具变更,使其在同一 agent 运行中的下一次 Provider 请求前应用,而不丢失
before_agent_start系统提示覆盖(#6162)。 - 修复了 undici 在终止流中 HTTP 响应时发出内部客户端错误导致的崩溃(#6133)。
- 修复了压缩事件回归测试,以覆盖状态指示器清理并保持 CI 通过。
- 修复了交互式状态指示器,使结束工作、重试、压缩或分支摘要指示器在启用 clear-on-shrink 时不再缩小 TUI(#6026)。
- 修复了
--session和SessionManager.open(),使其拒绝非空无效的会话文件而不覆盖它们(#6002)。 - 修复了用户消息转译渲染,使 Markdown 转义序列(如
\")中的可见反斜杠得以保留(#6105)。 - 修复了因输出长度而停止的助手消息,使其显示可见的不完整响应错误(#4290)。
- 修复了
--no-session --session-id,使临时 CLI 运行可以使用确定性会话 ID 以获得 Provider 缓存亲和性(#6070)。 - 修复了磁盘 BMP 图像文件,使其被检测、转换为 PNG,并通过
read和 CLI@file输入附加(#6047)。 - 修复了针对明确告知调用者重试请求的 Provider 流错误的自动重试(#6019)。
Pi AI
新增
- 为 Anthropic 兼容、Bedrock、OpenRouter 和 Vercel AI Gateway Provider 添加了 Anthropic Claude Sonnet 5 模型元数据。
- 添加了 Azure OpenAI Responses 对现代 Microsoft Foundry 端点 URL 的支持(#6004)。
- 在
Usage中添加了可选的reasoning字段,报告 reasoning/thinking token 计数作为output的子集。Anthropic(output_tokens_details.thinking_tokens)、OpenAI Responses/Codex/Azure(output_tokens_details.reasoning_tokens)、OpenAI Completions(completion_tokens_details.reasoning_tokens)以及 Google Generative AI / Vertex(thoughtsTokenCount)均已填充。Bedrock Converse 和 Mistral 未填充,因为这些 API 不返回 reasoning token 细分(#6057)。
变更
- 将 OpenAI Codex Responses SSE 响应头等待时间更改为使用配置的 HTTP 超时,而非之前的固定 20 秒超时,减少慢连接上的假超时(#4945)。
修复
- 修复了 Claude Sonnet 5 元数据,使其对 Anthropic 兼容和 Bedrock 请求使用自适应 thinking 负载。
- 修复了生成的 Xiaomi MiMo 模型定价,使其与 models.dev 当前的按量付费定价一致(#6138)。
- 修复了 Provider HTTP 错误,使其包含响应体而非不透明的 SDK 消息(#5832)。
- 修复了
streamSimple()发送上下文感知的 max-token 上限,使那些将输入和输出计入同一上下文窗口的 Provider 不会拒绝长请求(#5595)。 - 修复了 OpenAI Responses 流,使其在输出项乱序完成时保留 reasoning 回放状态(#6009)。
- 修复了针对明确告知调用者重试请求的 Provider 错误的重试分类(#6019)。
- 修复了 Z.AI preserved thinking 请求,使其在启用 thinking 时发送
thinking.clear_thinking: false,允许回放的reasoning_content参与 Provider 缓存(#6083)。
Pi Agent
新增
- 为需要下一轮循环上下文的
Agent用户添加了prepareNextTurnWithContext。
修复
- 修复了
Agent.prepareNextTurn,使其持续接收运行中止信号而非下一轮上下文。
v0.80.2(2026-06-23)
Pi Coding Agent
变更
- 将 pi-ai
ApiKeyCredential更改为使用与auth.json兼容的鉴别器type: "api_key"和 Provider 作用域内的env值,而非type: "api-key"和元数据。 - 将 agent-core 公共 harness shell 执行选项类型从
ExecutionEnvExecOptions重命名为ShellExecOptions。
修复
- 修复 Anthropic 兼容自定义模型,使其使用显式兼容性元数据,而非用于会话亲和性头部和不支持的工具字段省略的 Provider 名称启发式方法。
- 修复请求作用域内的
apiKey和env值,使其参与 Provider 身份验证解析,以便 Cloudflare 等 Provider 可以从显式调用选项中派生请求特定的基础 URL(#6021)。 - 恢复 pi-ai compat 入口点上临时传统逐 API 流别名,如
streamSimpleOpenAICompletions(#6016、#6017)。 - 恢复
openai-completions中运行时detectCompat回退,用于没有显式兼容性元数据的模型(#6020)。
Pi AI
变更
- 将
ApiKeyCredential更改为使用与auth.json兼容的鉴别器type: "api_key"和 Provider 作用域内的env值,而非type: "api-key"和元数据。
修复
- 修复 Anthropic 兼容自定义模型,使其使用显式兼容性元数据,而非用于会话亲和性头部和不支持的工具字段省略的 Provider 名称启发式方法。
- 修复请求作用域内的
apiKey和env值,使其参与 Provider 身份验证解析,以便 Cloudflare 等 Provider 可以从显式调用选项中派生请求特定的基础 URL(#6021)。 - 恢复 compat 入口点上的临时传统逐 API 流别名,如
streamSimpleOpenAICompletions(#6016、#6017)。 - 恢复
openai-completions中的运行时detectCompat回退,用于没有显式兼容性元数据的模型(#6020)。
Pi Agent
变更
- 将公共 harness shell 执行选项类型从
ExecutionEnvExecOptions重命名为ShellExecOptions。
v0.80.1(2026-06-23)
Pi Coding Agent
修复
- 修复 Amazon Bedrock 作用域内
AWS_PROFILE端点解析,适用于内置推理配置文件端点。 - 修复 Fireworks Anthropic 兼容请求,为自定义 Fireworks 模型应用会话亲和性和不支持的工具字段默认值。
- 修复 Together MiniMax M2.7 元数据,以避免不支持的 Together 推理切换。
Pi AI
修复
- 修复 Amazon Bedrock 作用域内
AWS_PROFILE端点解析的回归问题,适用于内置推理配置文件端点。 - 修复 Fireworks Anthropic 兼容请求,为自定义 Fireworks 模型应用会话亲和性和不支持的工具字段默认值。
- 修复 Together MiniMax M2.7 元数据,以避免不支持的 Together 推理切换。
v0.80.0(2026-06-23)
Pi Coding Agent
变更
- 添加
Ctrl+J作为默认换行快捷键,与Shift+Enter并列。 - 将显示的
zaiProvider 标签重命名为 ZAI Coding Plan (Global) 以提高清晰度(#5965)。 - pi-ai 的旧全局 API(
stream/complete/completeSimple、getModel/getModels/getProviders、registerApiProvider、getEnvApiKey等)已从@earendil-works/pi-ai根入口点移至@earendil-works/pi-ai/compat。扩展在运行时不受影响:扩展加载器会将 pi-ai 根解析为 compat 入口点(严格超集),因此现有扩展可继续正常工作。对 pi-ai 已发布类型进行类型检查的扩展应将这些导入切换为@earendil-works/pi-ai/compat(或迁移到新的createModels()/Provider-factory API)。compat 入口点和加载器别名将在未来版本中通过迁移指南移除。
修复
- 修复会话名称,在存储或显示标签前规范化换行符(#5999,感谢 @haoqixu)。
- 修复会话选择器,按每个子树中最新活动对线程化会话树排序(#5784,感谢 @Perlence)。
- 修复与扩展相关的崩溃和启动失败报告,建议使用
pi -ne重启。 - 修复 OpenAI Responses 流,使其在缺失终端事件前失败,并修复上下文使用和压缩估算,在截断响应后忽略格式错误的全零助手使用情况(#5526,感谢 @dmmulroy)。
- 修复 OpenAI Codex Responses WebSocket 会话,在输出开始前达到 OpenAI 连接限制时重新连接一次(#5973)。
- 修复 Amazon Bedrock 端点解析,使其遵循作用域内的
AWS_PROFILE值。 - 修复 Cloudflare Providers,要求账户/网关配置并通过 Provider 身份验证路由内置兼容调用。
- 修复 Provider 作用域内的身份验证环境变量值,使其能够到达
Models/ImagesModelsAPI 调用和兼容 API 密钥注入。 - 修复 OpenCode Go GLM-5.2 元数据,以暴露
xhigh推理并发送 Provider 的最大推理强度(#5967)。 - 修复
pi --resume,使其加载用户包主题并解析自动亮/暗主题设置。 - 修复
models.json自定义 Providers,使存储的凭据无需冗余 Provider 级别apiKey即可满足身份验证要求(#5953)。
移除
- 移除了选择性 Provider
@earendil-works/pi-ai/base和@earendil-works/pi-agent-core/base入口点;请改用带有显式ModelsProvider 工厂的根包。
Pi AI
不兼容变更
- 根入口点(
@earendil-works/pi-ai)现在仅包含核心功能且无副作用。旧的全局 API 已移至临时的@earendil-works/pi-ai/compat入口点,这是根的严格超集:只需更改文件的导入路径即可完成迁移。被移动的符号包括stream/complete/streamSimple/completeSimple、getModel/getModels/getProviders(现在是@earendil-works/pi-ai/providers/all中getBuiltinModel/getBuiltinModels/getBuiltinProviders的已弃用别名)、registerApiProvider/unregisterApiProviders/resetApiProviders/getApiProvider、getEnvApiKey/findEnvKeys、setBedrockProviderModule、每个 API 的惰性流包装器(anthropicMessagesApi等)以及图像生成 API。 - 将
Provider类型重命名为ProviderId。Provider现在是运行时 Provider 接口的名称(id、name、auth、模型列表、流行为)。 - API 实现模块已从
src/providers/移至@earendil-works/pi-ai/api/*,按 API id 重命名(anthropic->api/anthropic-messages、google->api/google-generative-ai、mistral->api/mistral-conversations、amazon-bedrock->api/bedrock-converse-stream),每个模块恰好导出stream和streamSimple。旧的按实现导出的名称(streamAnthropic、streamSimpleAnthropic等)和旧的原始 API 子路径(./anthropic、./google、./openai-completions等)已移除;请通过@earendil-works/pi-ai/api/*导入原始 API 实现。 - 移除了
@earendil-works/pi-ai/base选择性 Provider 入口点;请将根/核心 API 与显式的createModels()集合和 Provider 工厂一起使用,以实现隔离的 bundle。
Pi Agent
不兼容变更
AgentHarnessOptions.models是必需的,且是唯一的身份验证路径:Harness 通过提供的Models实例(models.streamSimple()/completeSimple())流处理轮次、压缩和分支摘要,通过 Providers 解析身份验证。已移除AgentHarnessOptions.getApiKeyAndHeaders— 按请求解析密钥的应用现在应将其表示为Models集合中 Providers 的身份验证(ApiKeyAuth/OAuthAuth)。使用createModels()+ Provider 工厂(或@earendil-works/pi-ai/providers/all中的builtinModels())构建;测试使用fauxProvider()。compact()、generateSummary()和generateBranchSummary()接受Models参数,不再接受显式的apiKey/headers。StreamFn以结构形式定义((model, context, options?) => AssistantMessageEventStream | Promise<...>);Models.streamSimple满足它。- 移除了
@earendil-works/pi-agent-core/base选择性 Provider 入口点;请改用带有显式Models实例的根包。
修复
Pi TUI
变更
- 添加
Ctrl+J作为默认换行快捷键,与Shift+Enter并列。
v0.79.10(2026-06-22)
Pi Coding Agent
新功能
- 扩展压缩事件上下文 — Extension
session_before_compact和session_compact事件现在包含reason和willRetry,使扩展可以区分手动/compact、阈值自动压缩和溢出重试流程。参见 session_before_compact / session_compact 和 通过扩展自定义摘要。 - 更安全的更新流程 —
pi update会安装精确匹配的已检出 Pi 版本,更新通知会显示 changelog URL,使升级更可预期。参见 安装与管理。
新增
- 为扩展
session_before_compact和session_compact事件添加了reason和willRetry元数据,使扩展可以区分手动、阈值和溢出压缩流程(#5962,感谢 @PizzaMarinara)。
修复
- 修复了
find工具,使其在父.gitignore规则忽略嵌套仓库时仍能尊重嵌套 git 仓库边界(#5960)。 - 修复了 usage 文档的斜杠命令表,补全
/trust和/import(#5959)。 - 修复了 OpenAI 兼容流式传输,保留在匹配 tool call delta 之前到达的加密
reasoning_details(#5114)。 - 修复了损坏的 TUI 文档链接,指向计划模式扩展示例(#5957)。
- 修复了会话替换或重载期间发出的瞬时扩展 UI 和会话启动消息,使其保持可见,并在重载完成前保持重载输入阻塞(#5943)。
- 修复了 plan-mode 示例,使其保留活跃自定义工具、未找到计划时跳过动作提示,并从
agent_end正确排队细化/执行 follow-up(#5940)。 - 修复了
pi update,使其安装 Pi 更新检查返回的确切版本,--force重新安装该检查版本,无可用版本时失败而不是回退到无版本重装,并报告旧版本和更新后的版本。 - 修复了更新通知,将实际 changelog URL 显示为超链接文本。
v0.79.9(2026-06-20)
Pi Coding Agent
新功能
- Chat-template thinking 兼容 — OpenAI 兼容的自定义 Provider 可以将 Pi 的 thinking 等级映射到
chat_template_kwargs,使基于 vLLM/Hugging Face chat-template 的模型(如 DeepSeek)能够使用 Provider 原生的 thinking 控制。参见 Custom Provider API Types 和 OpenAI Compatibility。 - GLM-5.2 Provider 改进 — GLM-5.2 现在修正了 Fireworks OpenAI 兼容路由,并支持 OpenRouter
xhighthinking,使 GLM-5.2 用户在/model行为和高强度推理方面体验更佳。参见 Model Options。
新增
- 添加了可配置
chat-templatethinking 支持,适用于使用chat_template_kwargs的 OpenAI 兼容 Provider,例如 vLLM 后端的 DeepSeek 模型(#5673)。
修复
- 修复了 Fireworks GLM-5.2 元数据,使其使用支持
reasoning_effort的 OpenAI 兼容 Chat Completions 端点(#5923)。 - 修复了同目录会话切换,使其复用已导入的扩展模块,同时保持扩展实例的新鲜性和生命周期事件(#5905)。
- 修复了深层会话分支构建上下文或分支路径时耗时呈平方级增长的问题(#5909)。
- 修复了 OpenRouter GLM-5.2 元数据,使其暴露
xhigh推理并发送 OpenRouter 原生的xhigheffort(#5770)。 - 修复了 Markdown 流式代码围栏渲染,部分闭合围栏不再导致代码块在内容流式输出过程中缩小或闪烁(#5846,感谢 @xl0)。
- 修复了 fuzzy
edit匹配,使其保留未触及的行块,而不是通过归一化内容重写整个文件(#5899)。 - 修复了通过旧版 WSL
bash.exe执行的 bash 命令,使其通过 stdin 传入脚本,shell 变量得以在目标 bash 中展开(#5893)。 - 修复了
/model,使其隐藏当前已认证账号不可用的 GitHub Copilot 模型(#5897)。 - 修复了
/model选择器搜索,使精确的 Provider 前缀匹配排在代理 Provider 模型 ID 匹配之前(#5892)。
Pi AI
新增
- 添加了可配置的
chat-templatethinking 支持,适用于使用chat_template_kwargs的 OpenAI 兼容 Provider,例如 vLLM 后端的 DeepSeek 模型(#5673)。
修复
v0.79.8(2026-06-19)
Pi Coding Agent
新功能
- 选择性 Provider 基础入口 — SDK 用户可以将
@earendil-works/pi-ai/base和@earendil-works/pi-agent-core/base与显式 Provider 注册配合使用,避免打包应用包含未使用的 Provider 传输层。参见pi-aiBase Entry Point 和pi-agent-coreBase Entry Point。 - Mistral Prompt 缓存 — Mistral 会话现在使用 Provider 端的 Prompt 缓存,具备会话亲和性和缓存 Token 用量/成本核算。参见 API Keys 和 Environment Variables。
- 压缩后 Token 估算 — 压缩结果和压缩事件现在包含压缩后 Token 估算数,使客户端可以展示近似的上下文缩减量。参见 RPC compact 和 compaction events。
- OpenRouter Fusion 别名 —
openrouter/fusion现可作为内置 OpenRouter 模型别名使用。参见 API Keys。
新增
- 添加了
@earendil-works/pi-ai/base和@earendil-works/pi-agent-core/base入口点,用于打包应用中的选择性 Provider 注册(#5348,感谢 @FredKSchott)。 - 添加了 Mistral Prompt 缓存,使用 pi 会话 ID 作为
prompt_cache_key,包含缓存 Token 用量和成本核算(#5854)。 - 为压缩结果和压缩事件添加了压缩后 Token 估算数(#5877)。
- 添加了 OpenRouter Fusion 别名
openrouter/fusion(#5866,感谢 @dannote)。
修复
Pi AI
新增
- 添加了
@earendil-works/pi-ai/base和直接 Provider 注册导出,供希望在不进行根内置注册的情况下选择性使用 Provider 传输层的打包工具使用(#5348,感谢 @FredKSchott)。 - 添加了 Mistral 请求的 Prompt 缓存,使用 pi 会话 ID 作为
prompt_cache_key,包含缓存 Token 用量和成本核算(#5854)。 - 添加了 OpenRouter Fusion 别名
openrouter/fusion(#5866,感谢 @dannote)。
Pi Agent
新增
- 添加了
@earendil-works/pi-agent-core/base,供希望将 agent core 与选择性@earendil-works/pi-ai/baseProvider 注册配合使用的打包工具使用(#5348,感谢 @FredKSchott)。
v0.79.7(2026-06-18)
Pi Coding Agent
新功能
- 自动主题模式 —
/settings现在可以选择独立的亮色和暗色主题,并跟随终端配色方案的变化。参见 Selecting a Theme。 - 默认仅更新自身 —
pi update现在仅更新 pi,使用pi update --all可同时更新 pi 和扩展包。参见 Install and Manage。 - 扩展 API 辅助工具 — 扩展可以使用
CONFIG_DIR_NAME获取项目配置路径,并导入编辑差异辅助工具生成编辑式差异。参见ctx.cwd和 SDK Exports。 - Warp 内联图片 — Warp 终端现在通过 Kitty 图形检测获得内联图片渲染。参见 Image。
新增
- 添加了自动主题模式,使
/settings可以使用独立的亮色和暗色主题并跟随终端配色方案变化(#5874)。 - 添加了 Warp 终端图片能力检测,使内联图片通过 Warp 的 Kitty 图形支持渲染(#5841,感谢 @dodiego)。
- 从 coding-agent 公共 API 导出了
CONFIG_DIR_NAME,使扩展可以解析项目配置路径而无需硬编码.pi(#5869,感谢 @xl0)。 - 从公共 API 导出了编辑差异辅助工具(
generateDiffString、generateUnifiedPatch和EditDiffResult),供需要编辑式差异的扩展使用(#5756,感谢 @xl0)。
变更
- 将裸
pi update改为仅更新 pi,添加pi update --all用于同时更新 pi 和扩展,并澄清了扩展更新提示。 - 在主题名称中保留
/用于自动亮/暗主题设置。 - 更新了扩展文档、示例、运行时帮助、信任提示和配置标签,使用配置的项目配置目录而非硬编码
.pi路径。
修复
Pi TUI
新增
v0.79.6(2026-06-16)
Pi Coding Agent
修复
- 修复了 HTTP dispatcher 配置,保留调用者显式设置的
fetch覆盖,而非在其上重新安装 undici 全局 fetch。 - 修复了 OpenCode Go DeepSeek V4 关闭 thinking 的请求,发送 Provider 的
thinking: { type: "disabled" }兼容参数。
Pi AI
修复
- 修复了 OpenCode Go DeepSeek V4 关闭 thinking 的请求,发送 Provider 的
thinking: { type: "disabled" }兼容参数。
v0.79.5(2026-06-16)
Pi Coding Agent
新功能
- Provider 级别的 API 密钥环境变量 —
auth.json的 API 密钥条目现在可以包含env覆盖,用于特定 Provider 的 Cloudflare、Azure OpenAI、Google Vertex、Amazon Bedrock、缓存保留和代理设置,无需修改项目 shell。参见 Auth File。 - 全局 HTTP 代理设置 — 在全局设置中配置
httpProxy即可将HTTP_PROXY和HTTPS_PROXY应用于 Pi 管理的 HTTP 客户端。参见 网络。 - Vercel AI Gateway 归属 — Vercel AI Gateway 请求现在默认包含 Pi 归属头部。参见 API Keys。
新增
- 为 Vercel AI Gateway 模型添加了请求归属头部(
http-referer和x-title)(#5798,感谢 @rwachtler)。 - 在启用实验性功能时添加了
xp页脚标记。 - 添加了全局
httpProxy设置,作为HTTP_PROXY和HTTPS_PROXY应用于 Pi 管理的 HTTP 客户端(#5790)。 - 添加了
auth.jsonAPI 密钥env值,使特定 Provider 的环境覆盖可以限定在 Pi 范围内,并传播到 Provider 配置(#5728)。
变更
- 将 HTML 会话导出使用的 Markdown 解析器更新为
marked18.0.5。
修复
- 修复了 OpenAI Responses 流式响应,在工具调用前容忍 OpenAI 兼容服务器返回的 null 消息内容(#5819)。
- 修复了 OpenCode DeepSeek V4 thinking 请求,避免同时发送
thinking和reasoning_effort(#5818)。 - 修复了设备码登录,不再自动打开浏览器。
- 修复了编辑器 Cursor Up 处理,非空草稿在浏览输入历史前先跳转到行首(#5789,感谢 @4h9fbZ)。
- 修复了 Z.AI GLM-5.2 thinking 请求,发送
reasoning_effort时使用 Provider 的high/max努力映射(#5770)。 - 修复了 Windows 上
pi update成功后的退出,改为自然退出而非调用process.exit(0),避免版本检查网络请求后的 Node.js/libuv 断言(#5805)。 - 修复了 Google 和
google-vertexGemini 模型元数据,将latest别名映射到当前模型,为 Vertex 添加 Gemini 3.5 Flash,修正 Gemini 2.5 Flash Vertex 缓存定价,并移除已关闭的 Vertex 预览模型(#5761)。 - 修复了会话选择器,在当前文件夹和全部范围会话列表均为空时保持打开并显示空状态(#5747)。
- 修复了 Moonshot AI China 模型元数据,包含 Kimi K2.7 Code,并针对 Kimi K2.7 Code 模型省略不支持的关闭 thinking 载荷(#5760)。
Pi AI
新增
- 添加了 Provider 级别的
StreamOptions.env覆盖,用于 Provider 配置,包括 Cloudflare 端点占位符、Azure OpenAI、Google Vertex、Amazon Bedrock、缓存保留和代理环境变量查找(#5728)。
修复
- 修复了 OpenAI Responses 流式响应,在工具调用前容忍 OpenAI 兼容服务器返回的 null 消息内容(#5819)。
- 修复了 OpenCode DeepSeek V4 thinking 请求,避免同时发送
thinking和reasoning_effort(#5818)。 - 修复了 Z.AI GLM-5.2 thinking 请求,发送
reasoning_effort时使用 Provider 的high/max努力映射(#5770)。 - 修复了 Google 和
google-vertexGemini 模型元数据,将latest别名映射到当前模型,为 Vertex 添加 Gemini 3.5 Flash,修正 Gemini 2.5 Flash Vertex 缓存定价,并移除已关闭的 Vertex 预览模型(#5761)。 - 修复了 Moonshot AI China 模型元数据,包含 Kimi K2.7 Code,并针对 Kimi K2.7 Code 模型省略不支持的关闭 thinking 载荷(#5760)。
Pi TUI
变更
- 将 Markdown 解析更新为
marked18.0.5。
修复
v0.79.4(2026-06-15)
Pi Coding Agent
新功能
- 首次运行自动主题选择 — pi 在首次运行时会检测终端背景,并默认使用
dark或light主题。参见 选择主题。 - 独立二进制完整性校验 — GitHub 发布资源现在包含
SHA256SUMS文件,用于校验独立二进制下载。参见 快速开始安装。
新增
修复
- 修复了 bash 工具输出收集,在子进程退出但后代仍在写入时继续排空 stdout/stderr,避免截断延迟输出(#5753,感谢 @Mearman)。
- 修复了
/tree帮助渲染,在窄终端上显示紧凑的换行控件而非截断(#5055)。 - 修复了 SIGTERM/SIGHUP 交互式关闭,在终端清理完成前保持信号处理程序安装,防止
signal-exit重新发送信号并导致终端停留在 raw/Kitty 键盘模式(#5724)。 - 修复了扩展文档,澄清
pi.getActiveTools()返回活跃工具名称,而pi.getAllTools()返回工具元数据(#5729)。 - 修复了 question 和 questionnaire 扩展示例,对长 Prompt、选项和帮助文本进行换行而非截断(#5708,感谢 @xl0)。
- 修复了
pi list、pi install和pi update等包命令,在完成后即使扩展留下后台句柄也能正常终止(#5687)。 - 修复了 pnpm 全局安装的
pi update,当其配置的global-bin-dir与活动的 pnpm home 不匹配时(#5689)。 - 修复了使用范围或标签(如
@^1.2.7)的 npm 包规范,使已安装的包资源仍能加载,而不会被视为不匹配的确切固定版本(#5695)。 - 修复了 Anthropic 1 小时 Prompt 缓存写入成本计算,将 1 小时缓存写入定价为 2 倍输入,而非 5 分钟缓存写入费率(#5738,感谢 @theBucky)。
- 修复了 GitHub Copilot Claude adaptive thinking 元数据,以匹配手动检查的 Copilot 模型能力(#4637)。
- 修复了 OpenCode/OpenCode Go 补全模型元数据,对拒绝
prompt_cache_retention的路由省略长保留缓存字段(#5702)。 - 修复了 overlay 在 CJK 宽字符上的合成,使 overlay 在全宽单元格内开始时边框保持对齐(#5297)。
- 修复了 WezTerm 内联 Kitty 图片在全量重绘回退期间的渲染,在绘制之前预留图片填充行,且不回归高图放置(#5618、#4415)。
- 修复了自定义 Provider 配置,使纯大写 API key 和 header 值保持为字面量而非被视为旧版环境变量引用;使用显式的
$ENV_VAR语法表示环境变量(#5661)。
Pi AI
修复
Pi TUI
新增
修复
v0.79.3(2026-06-13)
Pi AI
修复
- 将 OpenAI GPT-5.4/GPT-5.5 和 OpenAI Codex GPT-5.4/GPT-5.4 mini/GPT-5.5 上下文窗口元数据恢复至实际观测的 272k Token Codex 后端限制,避免发送超出 Codex 接受限制的 Prompt 产生计费风险(感谢 @trethore 反馈)。
v0.79.2(2026-06-12)
Pi Coding Agent
新功能
- 更清晰的 Bedrock 验证指引 — Amazon Bedrock 数据保留验证错误现在会链接到 AWS 数据保留文档。参见 Amazon Bedrock。
新增
- 在
PI_EXPERIMENTAL=1下添加了实验性首次设置流程,询问深浅色主题选择(预选检测到的外观)以及首次启动时选择加入的数据分析共享;选择加入会在settings.json中存储trackingId(#5587,感谢 @vegarsti)。 - 为 Amazon Bedrock 不支持的数据保留模式验证错误添加了 AWS 数据保留文档链接(#5561,感谢 @unexge)。
修复
- 修复了项目信任检测,当从
$HOME运行时忽略全局~/.pi/agent状态,并让pi update仅使用已保存或显式的项目信任而不进行提示(#5619)。 - 修复了实验性首次设置,使其跳过已分叉的会话而非重新运行设置提示(#5627,感谢 @vegarsti)。
- 修复了 OpenAI 兼容上下文溢出检测,支持带括号的
maximum context length (N)错误(#5677)。 - 修复了 OpenAI GPT-5.4/GPT-5.5 和 OpenAI Codex GPT-5.4/GPT-5.4 mini/GPT-5.5 上下文窗口元数据,以匹配当前 OpenAI 限制(#5644)。
- 修复了 Anthropic 拒绝终止行为,在错误消息中保留了 Provider 的
stop_details说明(#5666,感谢 @rwachtler)。 - 将 OpenAI Codex Responses SSE 响应头超时增加到 20 秒,以减少误报暂停,同时保留为零事件挂起引入的有界等待(#4945)。
- 修复了 Claude Fable 5 关闭 thinking 请求,省略了 Anthropic 不支持的
thinking.type: "disabled"负载(#5567,感谢 @tmustier)。 - 修复了工具结算后延迟到达的 tool progress 回调被正确忽略的问题(而非发出陈旧的
tool_execution_update事件)(#5573)。 - 修复了用户消息转录渲染,使独立的
+消息不再渲染为-(#5657)。 - 修复了斜杠分隔模糊查询,使 Provider/模型补全在插入后仍可匹配。
- 修复了 WezTerm 内联 Kitty 图片渲染,使保留行清除不再擦除除顶部条带之外的所有工具图片预览(#5618)。
- 修复了 CJK 编辑器换行,使其在字符边界处断行而非留下较大的尾部空白(#5585,感谢 @haoqixu)。
- 修复了宽松 Markdown 列表渲染,保留了列表项之间的空行分隔(#5562,感谢 @Perlence)。
- 修复了
--model解析,对于斜杠前缀与未认证的内置 Provider 匹配的已认证自定义模型 ID(#5643)。 - 修复了
/fork在分叉路径包含标签时保持会话父链的连接(#5669)。 - 修复了
/share和/exportHTML 导出在配置的自定义主题不再存在时使用活动的回退主题(#5596)。 - 修复了带有
:<thinking>后缀的自定义回退模型 ID,在 Provider 模板模型未声明推理能力时保留请求的 thinking 级别(#5560,感谢 @haoqixu)。
Pi AI
新增
修复
- 修复了 OpenAI 兼容上下文溢出检测,支持带括号的
maximum context length (N)错误(#5677)。 - 修复了 OpenAI GPT-5.4/GPT-5.5 和 OpenAI Codex GPT-5.4/GPT-5.4 mini/GPT-5.5 上下文窗口元数据,以匹配当前 OpenAI 限制(#5644)。
- 将 OpenAI Codex Responses SSE 响应头超时增加到 20 秒,以减少误报暂停,同时保留为零事件挂起引入的有界等待(#4945)。
- 修复了 Anthropic 拒绝终止行为,在错误消息中保留了 Provider 的
stop_details说明(#5666,感谢 @rwachtler)。 - 修复了 Claude Fable 5 关闭 thinking 请求,省略了 Anthropic 不支持的
thinking.type: "disabled"负载(#5567,感谢 @tmustier)。
Pi TUI
修复
v0.79.1(2026-06-09)
Pi Coding Agent
新功能
- Claude Fable 5 — Claude Fable 5 现已在 Anthropic 和 Amazon Bedrock Provider 上可用,支持 adaptive thinking 与
xhigh推理强度。 - Prompt 模板默认值 — Prompt 模板可使用
${1:-7}这样的位置参数默认值。参见 Prompt 模板参数。 - 可配置的项目信任默认值 —
defaultProjectTrust允许用户选择未解析的项目信任询问是默认通过、始终信任还是从不信任,扩展也可以检视生效的信任决策。参见 项目信任 和ctx.isProjectTrusted()。 - 扩展自动补全的触发字符 — 扩展的自动补全 Provider 可以声明
#或$这样的触发字符,让建议无需斜杠命令前缀即可弹出。参见 自动补全 Provider。
新增
- 为 Prompt 模板位置参数添加了默认值展开,例如
${1:-7}(#5553,感谢 @dannote)。 - 添加了
areExperimentalFeaturesEnabled特性开关,让用户能够选择启用实验性功能(#5547,感谢 @vegarsti)。 - 添加了
ctx.isProjectTrusted(),使扩展能够观察生效的项目信任决策,包括临时信任决策(#5523)。 - 添加了全局的
defaultProjectTrust设置,用于选择未解析的项目信任询问是默认通过、始终信任还是从不信任。 - 为
ctx.ui.addAutocompleteProvider()包装器添加了扩展自动补全触发字符支持(#4703)。 - 在 Anthropic 和 Amazon Bedrock Provider 上添加了 Claude Fable 5 模型支持,支持 adaptive thinking 与
xhigh推理强度。
修复
- 修复了来自 Amazon Bedrock 的推理配置文件 ARN 区域解析,优先使用 ARN 内嵌的区域而非
AWS_REGION(#5527,感谢 @AJM10565)。 - 修复了 IME 硬件光标定位,在斜杠命令自动补全可见时正确显示(#5283,感谢 @smoosex)。
- 修复了 z.ai 关闭 thinking 请求,使其发送 Provider 的
thinking: { type: "disabled" }兼容性参数(#5330)。 - 修复了 OpenCode completions 模型元数据,将显式的
maxTokens作为max_tokens发送(#5331)。 - 修复了 Moonshot Kimi 关闭 thinking 请求,使其发送 Provider 的
thinking: { type: "disabled" }兼容性参数(#5531)。 - 修复了 Azure OpenAI Responses 请求,禁用服务器端的响应存储(#5530)。
- 修复了 Azure GPT-5.4 和 GPT-5.5 上下文窗口元数据为 1,050,000 Token,与 Azure Foundry 部署保持一致,而非 OpenAI 的 272k 上限(#5559)。
- 修复了 OpenAI 和 Azure GPT-5 Pro
maxTokens元数据为 128,000,修正了上游错误地将 272,000 输入子限制复制为输出限制的值(#5559)。 - 修复了 Prompt 历史导航,使浏览历史返回时能恢复当前草稿(#5494)。
- 修复了混合拉丁文与 CJK 文本的换行行为,使无空格 CJK 序列能在字素边界处断行,避免留下过大的尾部空白(#5495)。
- 修复了扩展 OAuth 登录提示,使先前提交的提示行保持稳定,而不再镜像当前输入值(#5433)。
- 修复了
/reload会将更新后的steeringMode和followUpMode设置应用到当前会话(#5377)。 - 修复了
models.json语法无效时跳过启动配置迁移并按文件路径感知的方式报告正常的 models 错误,而非抛出原始的 JSON 解析堆栈(#5418)。 - 修复了 GitHub 发布说明和交互式 changelog 链接,使其能正确解析包相对文档 URL(#5516)。
- 修复了 CLI 帮助与版本输出,包括纯重定向的
--help/--version输出,并简化了list/config帮助文本。 - 修复了临时会话的
/new默认将新会话也保持为临时会话而非持久化(#5045)。 - 澄清了自定义模型文档中
name和modelOverrides.name不会替换页脚或主模型列表中的模型 ID(#4841)。
Pi AI
新增
- 在 Anthropic 和 Amazon Bedrock 模型元数据中添加了 Claude Fable 5,支持 adaptive thinking 与
xhigh推理强度。
修复
- 修复了 Amazon Bedrock 推理配置文件 ARN 区域解析,优先使用 ARN 内嵌的区域而非
AWS_REGION(#5527,感谢 @AJM10565)。 - 修复了 z.ai 关闭 thinking 请求,使其发送 Provider 的
thinking: { type: "disabled" }兼容性参数(#5330)。 - 修复了 OpenCode completions 模型元数据,将显式的
maxTokens作为max_tokens发送(#5331)。 - 修复了 Moonshot Kimi 关闭 thinking 请求,使其发送 Provider 的
thinking: { type: "disabled" }兼容性参数(#5531)。 - 修复了 Azure OpenAI Responses 请求,禁用了服务器端的响应存储(#5530)。
- 修复了 Azure GPT-5.4 和 GPT-5.5 上下文窗口元数据为 1,050,000 Token,与 Azure Foundry 部署保持一致,而非 OpenAI 的 272k 上限(#5559)。
- 修复了 OpenAI 和 Azure GPT-5 Pro
maxTokens元数据为 128,000,修正了上游错误地将 272,000 输入子限制复制为输出限制的值(#5559)。
Pi Agent
无变更。
Pi TUI
新增
- 添加了
AutocompleteProvider.triggerCharacters,使编辑器自动补全能自然地在 Provider 定义的 Token 前缀上触发(#4703)。
修复
v0.79.0(2026-06-08)
Pi Coding Agent
新功能
- 项目信任保护本地输入 — Pi 现在在加载项目本地设置、资源、指令和包之前会请求确认,支持
--approve/--no-approve非交互模式控制与保存决策。参见 项目信任。 - 扩展控制的信任决策 — 全局和 CLI 扩展可处理
project_trust,在项目本地资源加载前决定、记住或推迟项目信任。参见project_trust。 - 页脚缓存命中率可见 — 交互式页脚现在显示最新的 Prompt 缓存命中率(
CH)。参见 交互模式。 - 更丰富的 SDK 和 RPC 扩展接口 — 公共导出现包含 RPC 扩展 UI 请求/响应类型与包资源路径助手。参见 扩展 UI 协议 和 SDK 导出。
新增
- 添加了
project_trust扩展事件,使全局和 CLI 扩展可在启动与运行时 cwd 切换期间决定或推迟项目信任。 - 添加了项目信任门控,用于项目本地设置、资源、指令和包(#5332)。
- 在交互式页脚中添加了最新 Prompt 缓存命中率。
- 从公共 API 导出了 RPC 扩展 UI 请求与响应类型(#5455)。
- 从公共 API 导出了 coding-agent 包资源路径助手(#5415)。
修复
- 修复了包导出,移除指向不存在构建产物的过时
./hooks子路径。 - 修复了 TUI 渲染在内容缩为零时清除过时行的问题。
- 修复了自动补全建议在编辑器光标移动后刷新的问题(#5499,感谢 @Roman-Galeev)。
- 修复了
/reload在隐式信任会话创建项目.pi目录时持久化项目信任的问题。 - 修复了项目信任输入发现以可移植方式遍历父目录的问题。
- 修复了间歇性 Shift+Enter 处理,使 Kitty 键盘协议回退变为响应驱动而非超时驱动(#5188)。
- 修复了压缩摘要系统 Prompt,为非 coding agent 使用中立的 AI 助手措辞(#5401)。
- 修复了
models.jsonschema 支持与 OpenAI Responses 自定义 Provider 对compat.supportsDeveloperRole: false的处理(#5456)。 - 修复了 Prompt 历史导航,使向上浏览时光标位于开头、向下浏览时光标位于末尾(#5454)。
- 修复了 tmux 设置文档,要求 tmux 3.5 以使用
extended-keys-format csi-u,并记录 tmux 3.2-3.4 回退方案(#5432)。 - 修复了 OpenRouter 路由偏好,使 OpenAI 兼容自定义 Provider 在 base URL 不直接指向 OpenRouter 时也能正常工作(#5347)。
- 修复了内置工具展开提示中闭合括号样式不一致的问题(#5359)。
- 修复了 Skill 包装的 Prompt 在 Skill 指令与用户消息之间插入间距的问题(#5371,感谢 @Perlence)。
Pi AI
修复
Pi TUI
修复
- 修复了 Prompt 历史导航,使向上浏览时光标位于开头、向下浏览时光标位于末尾,确保重复按 Up/Down 能立即遍历多行 Prompt(#5454)。
- 修复了间歇性 Shift+Enter 处理,使 Kitty 键盘协议回退变为响应驱动而非超时驱动(#5188)。
- 修复了 TUI 渲染在内容缩为零时清除过时行的问题。
- 修复了自动补全建议在编辑器光标移动后重新查询的问题(#5499,感谢 @Roman-Galeev)。
v0.78.1(2026-06-04)
Pi Coding Agent
新功能
- 更广泛的内置 Provider 覆盖 — 新增 Ant Ling 和 NVIDIA NIM Provider 设置文档,以及 MiniMax-M3 对直接 MiniMax Provider 的支持。参见 Providers。
- 更丰富的扩展上下文 — 扩展可使用
ctx.mode和ctx.getSystemPromptOptions()在 TUI、RPC、JSON 和 print 模式间适配行为,并检查基础系统 Prompt 输入。参见 Extensions。
新增
- 添加了容器化文档和 Gondolin 扩展示例,用于将内置工具路由到本地 micro-VM。
- 添加了 Ant Ling Provider 选择和设置文档。
- 添加了 MiniMax-M3 模型支持(来自
@earendil-works/pi-ai),适用于minimax和minimax-cn直接 Provider(#5313)。 - 添加了 NVIDIA NIM Provider 选择、设置文档和直接 NIM 请求归属头。
- 在扩展上下文中添加了
ctx.mode,使扩展能够区分 TUI、RPC、JSON 和 print 模式。 - 为扩展命令添加了
ctx.getSystemPromptOptions(),用于检查当前基础系统 Prompt 输入(#5306,感谢 @xl0)。
修复
- 修复了临时扩展包安装使用带
0700权限的私有~/.pi/agent/tmp/extensions目录,而非os.tmpdir()/pi-extensions。 - 修复了 git 包源处理,拒绝不安全的主机/路径组件,并将托管克隆路径保持在安装根目录内。
- 修复了 HTML 会话导出中的存储型 XSS,通过剥离控制字符后使用方案白名单清理 Markdown 链接和图片 URL。
- 修复了 SDK 嵌入在捆绑的 Node 应用中因缺少
package.json而导致ENOENT失败的问题。包元数据读取器现在通过使用默认值优雅地处理缺失的package.json,无需在运行时提供包相邻文件即可使用createAgentSession()(#5226)。 - 修复了 HTTP 超时设置未对非 Codex Provider(如通过 OpenAI 兼容 API 的 llama.cpp)生效的问题。
httpIdleTimeoutMs设置(通过/settingsHTTP 超时设置)现在作为所有支持 Provider 的默认 SDK 请求超时,而不仅仅是 OpenAI Codex Responses。禁用超时(HTTP 超时 = false)现在通过发送最大 int32 值(有效无限)而非 0 来正确禁用所有支持 Provider 的 SDK 超时,因为 SDK 将 timeout=0 视为立即超时(#5294)。 - 修复了 Amazon Bedrock 请求,用占位符替换空白的必填 user/tool-result 文本,并跳过空白的重放文本块(#4975)。
- 修复了 Anthropic Claude Opus 4.7+ 请求,抑制已弃用的 temperature 参数(#5251,感谢 @yzhg1983)。
- 修复了 OpenAI GPT-5.5 生成元数据,省略不支持的 minimal thinking(#5243)。
- 修复了 OpenRouter Kimi K2.6 thinking 重放和 developer-role 指令处理(#5309)。
- 修复了 OpenRouter reasoning 指令请求,按需保留 system 角色(#5221,感谢 @PriNova)。
- 修复了 overlay 焦点恢复,使非捕获 overlay 在 UI 重渲染和显式焦点释放后保持可交互(#5235,感谢 @nicobailon)。
- 修复了列切片和 overlay 合成中的 tab 宽度计算,使包含 tab 的输出不会超过终端宽度(#5218)。
- 修复了打开和列出超大 JSONL 会话文件,改为逐行读取会话条目而非将整个文件作为单个字符串实例化(#5231)。
- 修复了 WSL
/mnt/...仓库中页脚分支显示在分支变更后刷新的问题(#5264,感谢 @psoukie)。 - 修复了
renderShell: "self"工具渲染器未输出组件行时留下空白聊天行的问题(#5299)。 - 恢复了 NVIDIA Qwen 3.5 122B NIM 模型支持。
Pi AI
新增
- 添加了 Ant Ling 作为内置 OpenAI 兼容 Provider,支持 Ling 2.6 和 Ring 2.6 模型。
- 为
minimax和minimax-cn直接 Provider 添加了 MiniMax-M3 模型,并移除了掩盖 models.dev 值的硬编码上下文窗口覆盖(#5313)。 - 添加了 NVIDIA NIM 作为内置 OpenAI 兼容 Provider,公开支持 tool use 的公共 NIM 模型。
修复
- 修复了 Amazon Bedrock 请求,用占位符替换空白的必填 user/tool-result 文本,并跳过空白的重放文本块(#4975)。
- 修复了 Anthropic Claude Opus 4.7+ 请求,抑制已弃用的 temperature 参数(#5251,感谢 @yzhg1983)。
- 修复了 OpenAI GPT-5.5 生成元数据,省略不支持的 minimal thinking(#5243)。
- 修复了 OpenRouter Kimi K2.6 thinking 重放,并为 OpenRouter OpenAI 和 Anthropic 模型保留 developer-role 指令(#5309)。
- 修复了 OpenRouter reasoning 指令请求,按需保留 system 角色(#5221,感谢 @PriNova)。
- 恢复了 NVIDIA Qwen 3.5 122B NIM 模型。
Pi TUI
修复
- 修复了 overlay 焦点恢复,使非捕获 overlay 在 UI 重渲染和显式焦点释放后保持可交互(#5235,感谢 @nicobailon)。
- 修复了列切片和 overlay 合成中的 tab 宽度计算,使包含 tab 的输出不会超过终端宽度(#5218)。
v0.78.0(2026-05-29)
Pi Coding Agent
新功能
- 命名启动会话 —
--name/-n可在交互、打印、JSON 和 RPC 模式下于启动前设置会话显示名称。参见 命名会话 和 会话选项。 - 可点击的文件工具路径 — 内置文件工具的标题在终端支持时会渲染 OSC 8
file://超链接,包括支持的 tmux 客户端。
新增
- 为扩展作者导出了
convertToPng(#5167,感谢 @xl0)。 - 为扩展作者导出了
parseArgs和类型Args(#5202,感谢 @xl0)。 - 添加了
--name/-n以在启动时设置会话显示名称(#5153)。 - 退出交互会话时添加了 resume 命令提示(#5176,感谢 @yzhg1983)。
- 内置文件工具标题中的文件路径添加了 OSC 8
file://超链接(#5189,感谢 @mpazik)。 - 添加了自定义 Amazon Bedrock 请求头支持(来自
@earendil-works/pi-ai)(#5178,感谢 @stephanmck)。
修复
- 澄清了 WezTerm/WSL IME 硬件光标文档,说明光标可见性仍是可选的(#5200)。
- 修复了 GitLab Duo 自定义 Provider 示例,使其对 Claude 模型使用 adaptive thinking、暴露 xhigh thinking 并包含更新的已验证模型 ID(#5201)。
- 修复了 Bun 发布归档的创建流程,确保安装并复制匹配的
@mariozechner/clipboard基础包和原生 sidecar(#5184)。 - 修复了提示循环启动前输入的早期交互输入被丢弃的问题,现改为缓冲处理(#5195,感谢 @yzhg1983)。
- 修复了 OpenRouter Moonshot Kimi K2.6 请求使用
system而非不支持的developer消息(#5159)。 - 修复了 OpenCode Go Kimi K2.6 thinking 请求发送
thinking对象而非无效字符串值,并修复了 OpenCode Zen Grok Build thinking 请求省略不支持的reasoning_effort(#5169)。 - 修复了 OpenAI Codex Responses SSE 流,在终端事件后中止响应体读取。
- 修复了 OpenCode Kimi K2.6 生成的元数据,使用 Anthropic 风格的 thinking 元数据而非无效的 reasoning-effort 参数。
- 修复了 OSC 8 超链接在客户端支持时通过 tmux 传递(#5189,感谢 @mpazik)。
- 修复了 ANSI 文本换行,避免超长换行时发生栈溢出(#5185)。
Pi AI
不兼容变更
- 更改了直接 Provider 流函数,要求显式传入
options.apiKey;顶层stream*/complete*辅助函数仍保留内置环境认证。
新增
- 通过
StreamOptions.headers添加了自定义 Amazon Bedrock 请求头支持,排除了保留的 AWS 签名头(#5178,感谢 @stephanmck)。
修复
- 修复了 OpenRouter Moonshot Kimi K2.6 请求使用
system而非不支持的developer消息(#5159)。 - 修复了 OpenCode Go Kimi K2.6 thinking 请求发送
thinking对象而非无效字符串值,并修复了 OpenCode Zen Grok Build thinking 请求省略不支持的reasoning_effort(#5169)。 - 修复了 OpenAI Codex Responses SSE 流,在终端事件后中止响应体读取。
- 修复了 OpenCode Kimi K2.6 生成的元数据,使用 Anthropic 风格的 thinking 元数据而非无效的 reasoning-effort 参数。
Pi TUI
修复
v0.77.0(2026-05-28)
Pi Coding Agent
新功能
- Claude Opus 4.8 支持 — 新增 Anthropic Claude Opus 4.8 元数据,并更新 Opus adaptive-thinking 覆盖范围。
- 选择性工具禁用 —
--exclude-tools/-xt可禁用指定的内置、扩展或自定义工具,其余工具保持可用。参见 工具选项。 - 无头 Codex 订阅登录 —
/login可使用设备码认证登录 ChatGPT Plus/Pro Codex 订阅。参见 订阅 和 OpenAI Codex。 - 感知流式行为的扩展输入 — 扩展可通过
InputEvent.streamingBehavior区分空闲 Prompt、流中转向和排队的后续操作。参见 输入事件。
新增
- 新增
--exclude-tools/-xt参数,可禁用指定的内置、扩展或自定义工具,其余工具保持可用(#5109)。 - 新增 OpenAI Codex 订阅设备码登录作为可选的无头替代方案,同时保留浏览器登录为默认方式(#4911,感谢 @vegarsti)。
- 为扩展输入事件新增
streamingBehavior,使扩展能够区分空闲 Prompt、流中转向和排队的后续操作(#5107,感谢 @DanielThomas)。 - 新增 Claude Opus 4.8 模型元数据(Anthropic),并更新 Opus adaptive-thinking 覆盖范围以使用它。
修复
- 修复了启动时间输出,
readPipedStdin不再包含createAgentSessionRuntime的工作(#4829)。 - 修复了 OpenRouter DeepSeek V4
xhighreasoning 元数据,保留 OpenRouter 原生的 effort 而非发送 DeepSeek 的maxeffort(#4801)。 - 修复了自定义会话目录,使当前文件夹的 resume/continue 查找限定于当前 cwd,而 all-session 列表覆盖自定义目录。
- 修复了 SIGTERM/SIGHUP 退出流程,运行扩展
session_shutdown清理并恢复终端:信号触发的关闭现在在终端写入之前发出session_shutdown,SIGHUP 不再硬退出,因此即使终端已消失,扩展资源(如 socket)也会被释放(#5080)。 - 修复了键盘协议协商,忽略不匹配或延迟的终端响应,避免误检测 Kitty 键盘协议(#5091,感谢 @mitsuhiko)。
- 修复了 MSYS2 ucrt64 Node.js 下 Windows 启动崩溃,通过更新原生剪贴板插件至 napi-rs 3.x(#5028)。
- 修复了 API Key 和 Header 配置解析:将普通字符串视为字面量,支持
$ENV_VAR/${ENV_VAR}插值和$!转义,配置文件要求显式 env 语法,避免 Windows 大小写不敏感的 env 匹配破坏字面量 Key(#5095)。 - 修复了会话销毁流程,中止进行中的 agent、compaction、branch summary、retry 和 bash 工作(#5029,感谢 @TerminallyChilI)。
- 修复了
pi.getAllTools(),暴露每个工具的promptGuidelines,供需要按工具归因 guideline 的扩展使用(#4879)。 - 修复了从 Anthropic extended-thinking 会话切换到 OpenAI Codex Responses 后的回放问题,为转换的 thinking/text 块生成唯一的 fallback 消息项 ID(#5148)。
- 修复了返回空 thinking signature 的 Provider 的 Anthropic 兼容回放,新增可选的
allowEmptySignature兼容性标志(#4464)。 - 修复了 OpenAI 和 OpenRouter GPT-5.5 Pro thinking level 元数据,仅暴露支持的 medium、high 和 xhigh efforts。
- 修复了 OpenCode Go Kimi K2.6 thinking-off 请求,发送
thinking: "none"(#5078)。 - 修复了 Xiaomi Token Plan 模型元数据,省略不支持的
mimo-v2-flash变体(#5075)。 - 修复了由
agent_end扩展处理器排队的后续消息,确保在 agent 变为空闲之前排出(#5115,感谢 @DanielThomas)。 - 修复了扩展输入事件,仅在流式处理期间实际排队的 Prompt 上报告
streamingBehavior(#5107,感谢 @DanielThomas)。 - 修复了系统 Prompt 的工具选择指引,避免偏好不可用的文件探索工具(#5132)。
- 修复了 fenced
diff代码块及其他 highlight.js 作用域,在cli-highlight替换后保持感知主题的语法高亮颜色(#5092)。
Pi AI
新增
- 新增 OpenAI Codex 订阅设备码登录作为可选的无头替代方案,同时保留浏览器登录为默认方式(#4911,感谢 @vegarsti)。
- 新增 Claude Opus 4.8 模型元数据(Anthropic),并更新 Opus adaptive-thinking 覆盖范围以使用它。
修复
- 修复了 OpenRouter DeepSeek V4
xhighreasoning 元数据,保留 OpenRouter 原生的 effort 而非发送 DeepSeek 的maxeffort(#4801)。 - 修复了从 Anthropic extended-thinking 会话切换到 OpenAI Codex Responses 后的回放问题,为转换的 thinking/text 块生成唯一的 fallback 消息项 ID(#5148)。
- 修复了返回空 thinking signature 的 Provider 的 Anthropic 兼容回放,新增可选的
allowEmptySignature兼容性标志(#4464)。 - 修复了 OpenAI 和 OpenRouter GPT-5.5 Pro thinking level 元数据,仅暴露支持的 medium、high 和 xhigh efforts。
- 修复了 OpenCode Go Kimi K2.6 thinking-off 请求,发送
thinking: "none"(#5078)。 - 修复了 Xiaomi Token Plan 模型元数据,省略不支持的
mimo-v2-flash变体(#5075)。
Pi Agent
不兼容变更
- 将 agent harness 的
model_select和thinking_level_select事件重命名为model_update和thinking_level_update。
新增
- 新增 agent harness 工具注册表 API、
tools_update事件、分支级活跃工具持久化和重复工具验证。
v0.76.0(2026-05-27)
Pi Coding Agent
新功能
- 自动化场景的显式会话 ID —
--session-id <id>允许脚本创建或恢复一个精确的项目本地会话。参见 Sessions。 - RPC bash 输出可排除在模型上下文之外 — RPC 客户端可向
bash传递excludeFromContext,使指定命令的输出不会随下一次 Prompt 发送。参见 RPC 模式。 - 更可预测的 Provider 重试与超时 — Codex WebSocket/SSE 等待已设上限,
retry.provider.maxRetries控制 Provider 重试,取代原先隐藏的 SDK 默认值。参见 重试设置。 - 跨环境更好的终端编辑体验 — 修复了 Apple Terminal 的 Shift+Enter、Windows/JetBrains 的能力检测,以及支持 Unicode 的单词导航。参见 终端配置 和 快捷键。
新增
- 新增
--session-id参数,允许 CLI 调用者使用精确的项目本地会话 ID,不存在时自动创建(#4874)。 - 为
bashRPC 命令新增excludeFromContext标志,与内部executeBashAPI 对齐(#5039)。
修复
- 修复了用户消息转录渲染,保留用户编写的有序列表标记(#5013)。
- 修复了自更新命令,显式运行
pi update时绕过 npm、pnpm 和 Bun 的最低发布年龄门槛(#4929)。 - 修复了上下文 Token 估算,用户图片附件现在与工具结果图片一致计数(#4983)。
- 修复了
httpIdleTimeoutMs应用于 OpenAI Codex Responses WebSocket 空闲等待,新增websocketConnectTimeoutMs限制 WebSocket 连接等待时间,并为 Codex SSE 添加了 10 秒响应头超时(#4945)。 - 修复了
RpcClient,当子进程意外退出时拒绝待处理请求并消费 stdin 管道错误(#4764)。 - 修复了托管 npm 扩展更新,避免包管理器将 pi 宿主包作为 peer 依赖安装或解析(#4907)。
- 修复了 RPC 模式原始 stdout 写入,重试瞬时背压错误并在关闭期间刷新排队的协议输出(#4897)。
- 修复了 OpenAI Codex Responses 缓存亲和性头,发送
session-id而非与代理不兼容的session_id(#4967)。 - 修复了
openai-codex/gpt-5.3-codex-spark模型元数据,使用其 128k 上下文窗口(#4969)。 - 修复了 OpenRouter/Poolside 上下文溢出检测,处理
maximum allowed input length错误(#4943)。 - 修复了 Provider 重试控制,
retry.provider.maxRetries现在被正确执行,SDK 重试默认为0,配额/计费 429 错误不再被 Pi 的重试机制重试(#4991,感谢 @mitsuhiko)。 - 修复了 Apple Terminal 的 Shift+Enter,当 Terminal.app 发送普通回车时检测本地 macOS 修饰键状态。
- 修复了 Windows Terminal 能力检测,启用 OSC 8 超链接,使可点击的长 URL 在换行时保持有效(#4923)。
- 修复了 JetBrains 终端能力检测,启用真彩色同时禁用不支持的 OSC 8 超链接(#5037,感谢 @Perlence)。
- 修复了编辑器和输入的单词导航/删除,使用 Unicode 词边界同时保留 ASCII 标点符号边界(#5022,感谢 @haoqixu;#5067,感谢 @haoqixu;#5068,感谢 @haoqixu)。
- 修复了开发文档中
AGENTS.md链接,指向 pi-mono 指南(#5041)。
Pi AI
修复
- 修复了 OpenAI Codex Responses 缓存亲和性头,发送
session-id而非与代理不兼容的session_id(#4967)。 - 修复了
openai-codex/gpt-5.3-codex-spark生成的元数据,使用其 128k 上下文窗口(#4969)。 - 修复了 OpenRouter/Poolside 上下文溢出检测,处理
maximum allowed input length错误(#4943)。 - 修复了 OpenAI Codex Responses WebSocket 流和 SSE 响应头等待,应用有界超时而非无限等待(#4945)。
- 修复了 Provider 重试控制,OpenAI Codex Responses 现在正确执行
maxRetries,SDK 重试默认为0,配额/计费 429 错误不再被重试(#4991,感谢 @mitsuhiko)。
Pi TUI
新增
- 新增可选的 Markdown 渲染器选项,保留源文件中的有序列表标记用于转录渲染(#5013)。
修复
- 修复了 Apple Terminal 的 Shift+Enter,当 Terminal.app 发送普通回车时检测本地 macOS 修饰键状态。
- 修复了 Windows Terminal 能力检测,启用 OSC 8 超链接,使可点击的长 URL 在换行时保持有效(#4923)。
- 修复了 JetBrains 终端能力检测,启用真彩色同时禁用不支持的 OSC 8 超链接(#5037,感谢 @Perlence)。
- 修复了编辑器和输入的单词导航/删除,使用 Unicode 词边界同时保留 ASCII 标点符号边界(#5022,感谢 @haoqixu;#5067,感谢 @haoqixu;#5068,感谢 @haoqixu)。
v0.75.5(2026-05-23)
Pi Coding Agent
新功能
- 更清晰的 read 工具输出 — 折叠的
read工具卡片现在默认只显示读取的行,按Ctrl+O仍可展开查看完整文件内容。 - Windows 上更快的文件工具 — 内置文件工具现在在流式传输期间使用异步文件系统操作,图片缩放也在 worker 中脱离主 TUI 线程运行。
- 更可靠的包更新 —
pi update和 git 包安装现在会协调固定的 git ref 并保持包设置完整。参见 Packages。 - 自定义 Anthropic 兼容模型的自适应思考 — 自定义 Provider 模型配置可通过
compat.forceAdaptiveThinking启用自适应思考 Claude 行为。参见 自定义 Provider 和 模型。
新增
- 为自定义 Anthropic 兼容模型配置文档和验证添加了
compat.forceAdaptiveThinking支持(#4797,感谢 @mbazso)。 - 为 SDK 消费者添加了编辑工具结果详情的标准统一补丁(#4821)。
变更
修复
- 修复了
pi update将 git-pinned 包协调到其配置的 ref(#4869)。 - 修复了 Windows 上的包/资源路径处理和 glob/模式解析(#4873,感谢 @mitsuhiko)。
- 修复了配置模式匹配,从正确的基础目录解析模式(#4898,感谢 @haoqixu)。
- 修复了主题选择器,按其内容名称而非文件名列出主题(#4830,感谢 @Perlence)。
- 修复了 OpenCode Zen/Go 请求发送每个会话的 OpenCode 路由头(#4847)。
- 修复了 Amazon Bedrock Provider 在严格包管理器下的加载,采用
@earendil-works/pi-ai中声明的@smithy/node-http-handler依赖(#4842)。 - 修复了 Amazon Bedrock Claude 请求默认发送模型输出 Token 上限,避免 Bedrock 的 4096 Token 默认截断(#4848)。
- 修复了导出的会话 HTML,对属性值中的引号字符进行转义(#4832)。
- 修复了 GitHub Copilot 设备码登录,在浏览器可用环境中持续打开验证 URL,同时忽略无头使用的浏览器启动失败(#4788,感谢 @vegarsti)。
- 修复了 git 包安装,将现有检出与请求的 ref 对齐,并在不丢失过滤器的情况下更新包设置(#4870)。
- 发布了 0.74.2 救援版本,告知 Node 20 用户在更新到更新版 Pi 之前先升级 Node(#4876)。
- 修复了最终 bash 工具卡片,避免渲染重复的完整输出截断路径(#4819)。
- 修复了 bash 工具截断行数统计,忽略尾随换行符作为额外输出行(#4818)。
- 修复了底栏主目录缩写,避免缩短仅共享同一前缀的兄弟路径(#4878)。
- 修复了 macOS Bun 发布二进制文件,解析原生剪贴板 sidecar,使 Ctrl+V 图片粘贴可以加载
@mariozechner/clipboard(#4307)。 - 修复了 coding-agent 工具,避免在流式传输期间使用同步文件系统操作,并将图片缩放移出主 TUI 线程(#4756,感谢 @mitsuhiko)。
Pi AI
不兼容变更
- 修改了
OAuthLoginCallbacks,要求提供onDeviceCode和onSelect,以便 OAuth Provider 可以依赖 Pi 提供设备码和选择界面回调。
修复
- 修复了自定义 Anthropic 兼容模型别名,通过添加
compat.forceAdaptiveThinking模型元数据并将内置 adaptive-thinking 选择移出 Provider ID 子字符串检查(#4797,感谢 @mbazso)。 - 修复了 GitHub Copilot OAuth 登录,依赖必需的设备码回调,无需运行时回调可用性保护。
- 修复了 Amazon Bedrock Provider 在严格包管理器下的加载,声明其直接的
@smithy/node-http-handler依赖(#4842)。 - 修复了 Amazon Bedrock Claude 请求默认发送模型输出 Token 上限,匹配 Anthropic 请求并避免 Bedrock 的 4096 Token 默认截断(#4848)。
v0.75.4(2026-05-20)
Pi Coding Agent
新功能
- 加固的 npm 安装与发布流程 — Pi CLI 现在附带生成的 shrinkwrap 来锁定传递依赖,阻止意外修改 lockfile,在检查中验证依赖固定和生命周期脚本白名单,在支持的平台上禁用自更新和本地发布安装的生命周期脚本,并在发布前对隔离的 npm 和 Bun 安装进行冒烟测试。
新增
pi update运行后显示交互式更新说明,用户可在继续前查看已安装版本的变更日志(#4724,感谢 @mitsuhiko)。- 从包根目录导出了图像缩放工具函数,供 SDK 消费者使用(#4775,感谢 @xl0)。
变更
- 修改源码语法,避免需要 JavaScript 产出的 TypeScript 构造,使核心源码兼容 Node.js 的 strip-only 类型检查。
- 从 CLI 包中移除了 Web UI 工作空间引用和包级开发 watch 脚本。
- 发布的 npm 安装包现在包含
npm-shrinkwrap.json以锁定 CLI 包的传递依赖。 - 改进了终端主题检测,优化了浅色/深色模式和真彩色处理。
- 自更新包管理器命令现在在重新安装时禁用生命周期脚本。
修复
- 修复系统提示,使模型在读取特定主题的相对引用前,先解析 pi 文档和示例的绝对包路径(#4752)。
- 修复了扩展
ctx.abort()在 tool call 预检期间停止后续确认并恢复队列中的交互输入(如 Escape)(#4276)。 - 修复了 AgentSession 的重试、压缩和事件结算,改为使用等待的 Agent 生命周期而非独立事件队列,并在
agent_end会话事件中添加了willRetry。 - 修复了分叉会话的运行时状态,使活动会话 ID 与分叉目标保持一致(#4799,感谢 @Perlence)。
- 修复了子 Agent 扩展的并行模式,使其向父模型返回有用的每任务输出和失败任务诊断信息,而非仅 100 字符的预览(#4710)。
- 修复了 Windows 本地 bash 执行,在后台 SDK 进程启动时隐藏辅助控制台窗口(#4699)。
- 修复了托管的 npm 扩展文件夹,在支持的平台上设置云同步忽略元数据(#4763)。
- 修复了 HTTP 空闲超时配置,使长时间运行的 Provider 流避免过早的空闲断开(#4759,感谢 @mitsuhiko)。
- 修复了默认系统提示的边界,使用显式的 XML 标签实现更清晰的文件分隔(#4709,感谢 @herrnel)。
- 修复了 HTML 分享/导出侧边栏中共享工具条目的点击,使其滚动到已渲染的 tool call(#4664,感谢 @yzhg1983)。
- 修复了主题调色板,设置明确的文本颜色以避免终端默认颜色漂移。
- 修复了真彩色检测,使终端图像渲染和交互主题决策保持一致。
- 修复了来自
@earendil-works/pi-tui的加载指示器启动逻辑,确保初始化不会在帧可用前运行。 - 修复了来自
@earendil-works/pi-ai的 OpenAI 兼容默认输出 token 请求,避免在 vLLM 等服务器上预留不可能完成的上下文窗口(#4675)。 - 修复了来自
@earendil-works/pi-ai的 OpenAI prompt 缓存键,使其保持在 64 字符的 Provider 限制内(#4720)。 - 修复了 Windows 上 fnm 管理的 Node.js 安装的 npm 系列包命令,这些安装同时暴露了无扩展名的 Unix 脚本和
.cmd存根(#4793)。
Pi TUI
变更
- 移除了包级开发 watch 脚本,因为根级别的 TypeScript 检查现在已验证 strip-only 兼容的源码。
修复
- 修复了加载器初始化,确保指示器启动不会在帧初始化前运行。
- 修复了真彩色能力检测,使终端图像渲染与交互主题检测器保持一致。
Pi Agent
变更
- 修改源码语法,避免需要 JavaScript 产出的 TypeScript 构造,保持包与 Node.js strip-only 类型检查兼容。
- 移除了包级开发 watch 脚本。
修复
Pi AI
变更
- 修改源码语法,避免需要 JavaScript 产出的 TypeScript 构造,保持包与 Node.js strip-only 类型检查兼容。
- 移除了包级开发 watch 脚本。
新增
- 新增了一流的 OAuth 设备码回调元数据、共享轮询支持和 GitHub Copilot OAuth 集成。
修复
v0.75.3(2026-05-18)
Pi Coding Agent
修复
- 在模型选择器完成后刷新可用模型列表,使新增的 Provider 和模型立即可见。
- 修复了终端关闭或 SSH 断开时的静默退出,确保 pi 正确关闭会话并清理系统任务。
- 改进了失效会话的扩展生命周期,在发出
session_shutdown后从扩展中移除过期的withSession回调。 - 修复了通过外部编辑器编辑后在
pi -p中错误应用扩展标志的问题。 - 修复了
/compact提示参数在命令行解析中被丢弃的问题。 - 修复了自动密钥登录选择器面板在某些 Provider 上显示为空白的问题。
Pi AI
修复
- 修复了 OpenAI 兼容的 token 计数,使用 tiktoken 解析器的
encodeSingle方法以处理非 UTF-8 编码的输入,提高可靠性。
Pi Agent
修复
- 修复了会话 fork 和克隆后运行时状态未完全重建的问题,确保所有内部回调指向正确的会话实例。
v0.75.2(2026-05-18)
Pi Coding Agent
修复
- 为 piped 输入增加了
--print模式的 ANSI 检测,防止二进制数据混乱终端状态。 - 修复了 pi 在 Python 单元测试的
subprocess.run()中启动时无法正确刷新输出的问题。 - 修复了
/compact设置默认提示时的问题。
Pi TUI
修复
- 修复了 TUI 输出刷新处理,确保在管道和非 TTY 环境中正确工作。
v0.75.1(2026-05-18)
Pi Coding Agent
新增
- 启动时检查更新 — Pi 现在在启动时检查新版本并通知用户更新可用,而非仅在显式运行
pi update时检查。
变更
- 在构建时预编译扩展宿主,以消除
jiti导入开销,加快扩展加载速度。 - 自动完成菜单现在出现在编辑器文本上方而非重叠,在编辑器靠近屏幕底部时提供更好的可见性。
修复
- 修复了编辑视图滚动和
PageDown处理。 - 修复了
/compact设置默认压缩提示的处理。 - 将
@earendil-works/pi-tui和@earendil-works/pi-ai作为外部依赖,保持 CLI 包体积紧凑。 - 修复了保存的会话在加载后无法通过自定义 Keybindings 切换模型的问题。
Pi TUI
新增
- 在包入口点导出了
EditorShelf类型。
变更
- 自动完成下拉菜单现在浮动在编辑器上方而非重叠,提供更好的可见性。
- 将
@napi-rs/clipboard设为可选依赖。
修复
- 修复了编辑视图的滚动溢出行为。
- 修复了水平滚动和
PageDown键的处理。
v0.75.0(2026-05-17)
Pi Coding Agent
新功能
- 事件驱动的自更新 — Pi 现在通过自动版本检查支持更可靠的自更新,检测到新版本时显示通知。支持
pi update和pi update self命令。参见 Usage。 - Model Context Protocol (MCP) 工具支持 — Pi 扩展现在可以注册 MCP 工具客户端。使用
pi.registerMCPServer()配置 MCP 服务器,在会话启动时自动连接。参见 Extensions。 - Shell 环境配置 — Pi 新的 Shell 环境设置允许自定义
SHELL、TERM和COLORTERM环境变量。参见 Settings。 /compact默认提示 —/compact命令现在接受可选提示词来自定义压缩摘要的重点。
变更
- 重构了 Provider 模型解析,改进对 Provider 前缀模型解析和 Provider 回退处理的错误报告。
- 重构包以简化依赖结构,拆分 watch 和开发脚本。
- 依赖项
@inquirer/prompts更新到 7.6.0。 - ANSI 处理更新以匹配
strip-ansi行为。 - 使用标准
uuid包生成 UUIDv7,替代之前的 nanoid 实现。 - 改进自动完成滚动指示器,并在无匹配时清除自动完成。
修复
- 修复了 ANSI 剥离以匹配移除依赖后的
strip-ansi行为。 - 修复了会话 ID 共享的 UUIDv7 序列生成。
- 修复了来自
@earendil-works/pi-ai的 OpenRouter 缓存 token 使用统计、Fireworks 缓存兼容性和 OpenAI Codex WebSocket 代理处理。 - 修复了来自
@earendil-works/pi-tui的 Markdown 列表换行、任务列表复选框、大 Markdown 渲染、WezTerm Kitty 键盘转义处理和短视口内联图像放置。 - 修复了跨包作用域的主题共享,使扩展不会因
Theme not initialized崩溃(#4333)。 - 修复了快捷键提示在 macOS 上显示 Option 而非 Alt(#4289)。
- 修复了交互式更新通知,在终端支持超链接时将会话日志渲染为 OSC 8 超链接(#4280)。
Pi TUI
变更
- 移除了 nanoid UUID 生成,改用标准
uuid包。 - 更新 ANSI 处理以匹配
strip-ansi行为。 - 移除了包级开发 watch 脚本。
修复
- 修复了 Markdown 列表换行,避免在列表标记后错误换行。
- 修复了 Markdown 任务列表复选框渲染。
- 修复了大 Markdown 内容的高效渲染。
- 修复了 WezTerm 中 CSI-u 修饰键的 Kitty 键盘协议处理。
- 修复了短视口中内联图像的放置。
- 修复了在选择器和自动完成组件中按预期显示滚动指示器。
Pi Agent
变更
- 移除了包级开发 watch 脚本。
修复
- 修复了错误边界在指示错误时重新抛出异常。
- 修复了 tool call 预检使得相邻 tool call 在并行解析期间检测到上下文溢出时正确失败。
Pi AI
变更
- 重构包以简化依赖结构,拆分 watch 和开发脚本。
- 移除了 nanoid UUID 生成,改用标准
uuid包。
修复
- 修复了 OpenRouter 缓存的 token 使用统计处理。
- 修复了 Fireworks 平台缓存的兼容性处理。
- 修复了 OpenAI Codex WebSocket 代理处理。
- 修复了 OpenAI 兼容流中交错的 content 和 tool call delta 处理。
v0.74.1(2026-05-16)
Pi Coding Agent
新功能
- OpenAI Codex WebSocket 传输 — 新的
websocket-cached传输模式为 ChatGPT Plus/Pro 用户保持 WebSocket 连接,实现更快的后续请求。参见 Providers。
新增
- 为 Anthropic 模型支持了扩展的思考(thinking)块级别
high和xhigh。 - 为 ChatGPT Pro 用户新增了
o3和o4-mini模型。
变更
- 将包作用域从
@mariozechner迁移到@earendil-works。 @earendil-works/pi-tui和@earendil-works/pi-ai现在作为外部依赖,减小 CLI 包体积。- 改进了
pi update命令,支持包名映射和重命名检测。
修复
- 修复了子 Agent 扩展,当未提供
contextWindow时正确获取 Provider 的模型上下文窗口。 - 修复了扩展文件名检测,支持子目录中的嵌套扩展。
- 修复了模型选择器中模型显示名称的格式化。
- 修复了
@earendil-works/pi-tui中的加载器范围和元数据键。 - 修复了外部编辑器编辑后的扩展标志应用。
Pi AI
新增
- 为 Anthropic 模型支持了扩展的思考块级别
high和xhigh。
变更
- 将包作用域从
@mariozechner迁移到@earendil-works。 - 重构了 Provider 流处理,支持 WebSocket 传输。
修复
- 修复了 OpenAI Codex WebSocket 传输在流式和非流式模式下的处理。
- 修复了流式响应的传输编码处理。
Pi Agent
变更
- 将包作用域从
@mariozechner迁移到@earendil-works。
修复
- 修复了 Agent 循环中的传输错误处理。
- 修复了子 Agent 扩展的上下文窗口配置。
Pi TUI
变更
- 将包作用域从
@mariozechner迁移到@earendil-works。 - 移除了
@napi-rs/clipboard依赖,改用纯 JavaScript 剪贴板实现。
修复
- 修复了 WezTerm 中的 Kitty 键盘协议处理。
- 修复了 macOS 上加载器指示器的渲染问题。
v0.74.0(2026-05-07)
Pi Coding Agent
变更
- 更新了仓库链接和包引用,迁移到
earendil-works/pi-mono和@earendil-works/*包作用域。
v0.73.1(2026-05-07)
Pi Coding Agent
新功能
- npm 作用域迁移的自更新支持:
pi update --self现在支持即将到来的包名从@mariozechner/pi-coding-agent到@earendil-works/pi-coding-agent的迁移。新包发布后,现有的全局安装可以通过正常的自更新流程更新;pi 会卸载旧的全局包并安装版本检查端点返回的包名。 - 交互式 OAuth 登录选择:OAuth Provider 现在可以在
/login中呈现多个登录选项,实现 Provider 特定的交互式认证流程。参见 Providers。 - JSONC 风格
models.json解析:models.json现在支持注释和尾逗号,使自定义 Provider 和模型配置更易于维护。参见 Providers 和 Custom Providers。
新增
- 新增了交互式登录选择支持,使 OAuth Provider 可以呈现多个登录选项(#4190,感谢 @mitsuhiko)。
变更
pi update --self现在遵循 Pi 版本检查端点返回的活动包名,省略时默认当前包,并在安装重命名包前卸载旧的全局包。- 扩展加载改用上游
jiti2.7 替代@mariozechner/jiti分支(#4244,感谢 @pi0)。 models.json解析现在允许注释和尾逗号(#4162,感谢 @julien-c)。
修复
- 修复了
pi -p将以 YAML frontmatter 开头的提示误认为扩展标志而非用户消息的问题(#4163)。 - 修复了在工具运行时切换思考块可见性后,待处理的工具结果未在实时 TUI 中更新的问题(#4167)。
- 修复了
/copy在仅有 Wayland 的合成器(Hyprland、Niri 等)上报告成功但未写入剪贴板的问题——在 Linux 上跳过了仅 X11 的原生插件,改用wl-copy/xclip/xsel(#4177)。 - 修复了 HTML 会话导出,从渲染的用户消息中剥离 Skill 包装 XML(#4234,感谢 @aliou)。
- 修复了在同一 choice 中交错 content 和 tool call delta 的 OpenAI 兼容聊天补全流。
- 修复了 OpenAI Codex OAuth 刷新失败在 TUI 活动时直接写入 stderr 的问题(#4141)。
- 修复了 OpenAI Codex Responses 请求发送非空系统提示的问题(#4184)。
- 修复了 Kimi For Coding 模型中 Kimi K2 P6 别名的模型解析(#4218)。
- 修复了 Kitty 内联图像重绘保持在 TUI 拥有的终端区域内,避免写入活动视口下方。
- 修复了 Kitty 内联图像渲染,让终端分配图像 ID 并将解析的图像 ID 限制在有效值内。
- 修复了内联图像能力检测,在 cmux 终端中禁用内联图像。
v0.73.0(2026-05-04)
Pi Coding Agent
新功能
- 小米 MiMo API 计费和区域 Token Plan Provider —
xiaomi现在使用 API 计费,包含独立的xiaomi-token-plan-{cn,ams,sgp}Provider。参见 Providers。(#4112,感谢 @Phoen1xCode) - 增量 bash 输出流式传输 — Bash 工具输出现在在命令运行时即可看到,而非仅在完成后显示。(#4145)
- 紧凑的 read 渲染 — Pi 文档、上下文文件和技能的交互式
read输出默认折叠,并显示选定的行范围。
不兼容变更
- 将内置的
xiaomiProvider 从 Token Plan AMS 切换到小米的 API 计费端点,并将其/login显示名称从 "Xiaomi MiMo Token Plan" 改为 "Xiaomi MiMo"。XIAOMI_API_KEY现在指向来自 platform.xiaomimimo.com 的 API 计费密钥。Token Plan 用户应切换到相应的xiaomi-token-plan-*Provider 并设置对应的环境变量(#4112,感谢 @Phoen1xCode)。
新增
- 新增了三个小米 MiMo Token Plan 区域 Provider:
xiaomi-token-plan-cn(XIAOMI_TOKEN_PLAN_CN_API_KEY)、xiaomi-token-plan-ams(XIAOMI_TOKEN_PLAN_AMS_API_KEY)、xiaomi-token-plan-sgp(XIAOMI_TOKEN_PLAN_SGP_API_KEY),每个默认使用mimo-v2.5-pro模型(#4112,感谢 @Phoen1xCode)。
变更
read工具渲染现在默认在交互式输出中折叠 Pi 文档、AGENTS/CLAUDE 上下文文件和SKILL.md的内容。
修复
- 修复了为 Qwen 3.5/3.6 和 MiniMax M2.7 生成的 OpenAI 兼容模型元数据,使这些模型通过内置 Provider 目录正常工作(#4110,感谢 @jsynowiec)。
- 修复了 Bedrock Claude Opus 4.7 的
xhigh思考请求,保留 Provider 的原生效值。 - 修复了 OpenAI Codex WebSocket 传输,在流开始前设置失败时回退到 SSE,并在助手消息中显示传输诊断信息(#4133)。
- 修复了 OpenAI Codex WebSocket 传输在会话关闭时关闭缓存的 WebSocket 会话,避免
--print和 JSON 模式进程在响应后保持存活(#4103)。 - 修复了紧凑
readtool call 直接渲染并在交互式输出中包含选定行范围。 - 修复了交互式会话在终端输入丢失时退出而非继续处于损坏状态。
- 修复了 bash 工具输出在命令运行时增量流式传输,而非等待命令完成(#4145)。
- 修复了选择器和自动完成的模糊排序,优先精确匹配。
v0.72.1(2026-05-02)
无显著变更。
v0.72.0(2026-05-01)
Pi Coding Agent
新功能
- 小米 MiMo Token Plan Provider — 新增 Anthropic 兼容的 Provider,支持
XIAOMI_API_KEY认证,默认模型mimo-v2.5-pro,支持/login显示。参见 Providers。(#4005,感谢 @Phoen1xCode) - 模型思考级别元数据 — 模型现在可以通过
thinkingLevelMap声明支持的思考级别,替代旧的reasoningEffortMap。参见 Models 和 Custom Providers。(#3208) - 自定义 Provider 基础 URL 覆盖 —
pi.registerProvider()现在支持逐模型的baseUrl设置。参见 Custom Providers。(#4063) - 回合后停止回调 — Agent 循环现在可以通过
shouldStopAfterTurn在完成一个回合后优雅退出。 - 自更新检测修复 — Pi 现在能正确识别并应用可用更新。(#3942、#3980、#3922)
不兼容变更
- 将
models.json和pi.registerProvider()模型定义中的compat.reasoningEffortMap替换为模型级别的thinkingLevelMap(#3208)。迁移方式:将旧映射从compat.reasoningEffortMap移至thinkingLevelMap。使用字符串值表示 Provider 特定的思考值,使用null表示不支持且应在循环中隐藏和跳过的 pi 级别。
新增
- 新增小米 MiMo Token Plan Provider 支持(#4005,感谢 @Phoen1xCode)。
- 新增模型级别的
thinkingLevelMap支持,使模型只暴露它们实际支持的思考级别(#3208)。 - 新增
shouldStopAfterTurnAgent 循环回调,用于回合后停止控制。
修复
v0.71.1(2026-05-01)
Pi Coding Agent
新增
- 为 ChatGPT 订阅认证使用的 OpenAI Codex Provider 新增了
websocket-cached传输选项。该模式在同一会话中保持 WebSocket 打开,首次请求后仅发送新增的对话内容而非重新发送完整聊天历史。
v0.71.0(2026-04-30)
Pi Coding Agent
不兼容变更
- 移除了内置的 Google Gemini CLI 和 Google Antigravity 支持。使用这些 Provider 的现有配置必须切换到其他受支持的 Provider。
新功能
- Cloudflare AI Gateway Provider 支持 — 支持
CLOUDFLARE_API_KEY/CLOUDFLARE_ACCOUNT_ID/CLOUDFLARE_GATEWAY_ID认证,默认模型解析和/login显示。参见 Providers。(#3856,感谢 @mchenco) - OpenAI Responses API 支持 — 使用
compat: "openai-responses"的新o3和o4-mini模型可通过兼容层使用。参见 Models。(#3898,感谢 @joshblum) - OpenAI Codex WebSocket 传输 — 新的
transport设置支持websocket模式以实现更快的 ChatGPT 订阅认证请求。参见 Providers。(#3930,感谢 @f) - Anthropic 扩展思考级别 — Anthropic 模型现在支持
high和xhigh思考级别。参见 Keybindings。(#3953,感谢 @mitsuhiko) - GitHub Models Provider — 新的 GitHub Models Provider 支持通过 GitHub API 密钥访问模型。参见 Providers。(#3840,感谢 @joshblum)
- OpenAI 新模型
o3和o4-mini— 通过 OpenAI Responses API 使用。参见 Models。
新增
- 新增 Cloudflare AI Gateway Provider。
- 新增 OpenAI Responses API 兼容支持。
- 新增 OpenAI Codex WebSocket 传输支持。
- 新增 Anthropic
high和xhigh思考级别。 - 新增 GitHub Models Provider。
- 新增 OpenAI
o3和o4-mini模型。
修复
- 修复了内置 Codex 模型元数据中
maxOutput值和聊天补全与响应 API 之间的maxTokens默认值。 - 修复了工具列表系统提示生成,正确包含上下文中的自定义工具。
- 修复了 macOS 上终止 pi 时残留的
bash子进程。 - 修复了会话共享命令在非 TTY 环境中的优雅降级。
v0.70.6(2026-04-28)
Pi Coding Agent
修复
- 修复了 TUI 在等待最终响应时标记后端进程为孤立进程并提前退出的问题。
- 修复了聊天补全 Provider 的思考级别支持检测。
- 修复了 streamSimple 模型中思考块中的
redacted文本处理。 - 修复了
maxOutput设置与 Provider 的maxTokens的协调。 - 修复了控制台应用控制序列(DCS)字符串的处理,改进终端兼容性。
Pi AI
修复
- 修复了
streamSimple模型中思考块的redacted文本聚合。 - 修复了聊天补全 Provider 的思考级别支持检测。
- 修复了
maxOutput与 Provider 的maxTokens之间的映射。
v0.70.5(2026-04-27)
Pi Coding Agent
修复
- 修复了自动 Keybinding 帮助弹窗意外出现的问题。
- 修复了在某些终端配置中 TUI 布局在启动时被截断的问题。
Pi TUI
修复
- 修复了编辑器内文本和行号的水平滚动同步。
v0.70.4(2026-04-27)
Pi Coding Agent
修复
- 紧急修复了某些终端中启动时 TUI 渲染失败的问题。
v0.70.3(2026-04-27)
Pi Coding Agent
新增
- 模型上下文大小显示 —
/session现在显示上下文中使用的 Token 数和模型的最大 Token 数。
修复
- 修复了 Agent 事件队列处理,确保
tool_execution_start在message_start之后的正确顺序。 - 修复了
pi -p中通过@引用文件但文件不存在时的优雅降级。 - 修复了自定义 Provider 中 Anthropic 兼容的
max_tokens与max_completion_tokens设置。 - 改进了 Git 变更检测以更好地处理未跟踪的文件。
Pi AI
修复
- 修复了
streamSimple中非标准max_tokens字段名的处理。
Pi Agent
修复
- 修复了事件发射顺序,确保
tool_execution_start在message_start之后可靠排序。
v0.70.2(2026-04-24)
Pi Coding Agent
修复
- 修复了某些 Linux 终端中后备颜色主题检测的兼容性。
- 修复了非交互式模式下的会话保存行为。
v0.70.1(2026-04-24)
Pi Coding Agent
修复
- 修复了在终端调整大小时主题颜色的重新计算。
- 修复了 Windows 上 Git Bash 的 shell 路径检测。
- 修复了 macOS 上后台进程的进程组处理。
Pi AI
修复
- 修复了 Provider 特定
maxTokens到max_tokens字段的映射。
v0.70.0(2026-04-23)
Pi Coding Agent
新功能
- 初始发布 — Pi Coding Agent 的首个公开版本。
历史版本
完整变更日志
各包的完整变更历史:
法律声明:本页面聚合自 pi 各子包的 CHANGELOG.md 文件的中文翻译,仅供学习参考。

