piagent_
← /资讯
2026年9月21日版本发布

pi v0.87.0:会话上下文可编辑,扩展边界正式成型

pi v0.87.0 于 2026 年 9 月 21 日发布,重塑了会话上下文与扩展生命周期的工作方式。头号能力是规范化的可编辑模型上下文:sessionManager.appendContextEdit(entryId, null) 把某条消息从未来的 provider 上下文中略去,不改动原始历史、用量统计或 UI 历史;新增的 ContextEditEntry 也进入会话格式。

对扩展作者而言,turn_end 与 agent_before_settle 边界变为可执行:接受条目加 continue: true,按顺序持久化结构性条目,并确保恰好一次后续 provider 请求;新的 context_with_system 事件在 context 处理程序之后运行,看到含系统消息的完整转录,其结果原样发送。图片输入则经 models.json 的 inputLimits.images.resize 获得按模型、缓存安全的缩放,覆盖文件附件、图片读取与工具结果图片(#9631)。

破坏性变更面向 SDK。继承的 shouldStopAfterTurn agent 选项被移除,改用 finishTurn——它在 turn_end 之前运行、事后应用决定,错误与中止响应也会送达。SessionManager 成为 AgentSession provider 上下文的权威,直接给 session.agent.state.messages 赋值不再替换未来的请求历史。TurnEndEvent 增加必需的边界字段,AgentBeforeSettleEvent 加入 ExtensionEvent 联合类型,ExtensionRunner.emit() 不再接受 turn_end——宿主集成改经 emitBoundary 派发。agent_settled 处理程序发起的延迟运行,会等所有 settled 处理程序结束。

会过滤或切片消息的 context 处理程序不再弄丢提示与工具声明——处理程序不再看到系统消息,pi 会在其运行后恢复提示与工具状态(#9789、#9822)。字符串形式的上下文编辑替换会产生合法文本块;新追加或被替换的输入不会在首次 provider 请求前就被摘要;被编辑上下文的用量核算不再丢掉新鲜捕获的 assistant 用量,也不在压缩后复用过期用量。错误重试与最终的长度/溢出恢复不再保留弃置的模型尝试。

其余修复面向用户:/bug 在离线模式下不再允许上传,同时保留本地 zip 导出(#9841);格式错误的 prompt 模板 frontmatter 会上报而非静默忽略(#9830);以 GIF 开头的文本文件不再被误判为图片(#9755);继承的未知 OpenAI 兼容 Chat Completions 端点,除非明确通告支持,否则不再收到严格工具 schema(#9816)。空闲时的提示缓存预热在其计时器或扩展决定迟到时不再重建过期缓存;崩溃诊断也会提示堆栈中的已加载扩展。逐条改动都能在 v0.87.0 发布页查到原文,部分附有上游 issue 链接。

source: https://github.com/earendil-works/pi/releases/tag/v0.87.0