黄奕彬

外部精选

omp · v18.8.0

本文来自外部来源,不是黄奕彬的原创文章。本站提供原文入口,并在采集端生成 AI 结构化摘要、解读与中文翻译(如有),一切以原文为准。

阅读原文(github.com)
来源
oh-my-pi (omp) releases ↗
作者 / 署名
github-actions[bot]
来源更新时间
本站收录时间
原文域名
github.com

以上时间均为北京时间;来源更新时间由来源提供,不代表首次发布时间。

结构化摘要 AI 生成

背景与问题

本文是 oh-my-pi(omp)monorepo 发布 v18.8.0 的更新日志,回答这一版改了什么、对使用者有何影响。背景是该套件在长会话、大文件、流式响应等高负载场景下积累的性能与内存问题,以及若干正确性缺陷和 API 收敛需求。面向对象是各子包的下游开发者与终端使用者。

方法或内容

发布说明按包组织,逐包列出 Added/Changed/Fixed/Breaking Changes:

  • @oh-my-pi/pi-agent-core、@oh-my-pi/pi-ai、@oh-my-pi/pi-catalog
  • @oh-my-pi/pi-coding-agent、@oh-my-pi/collab-web、@oh-my-pi/omp-stats
  • @oh-my-pi/pi-tui、@oh-my-pi/pi-utils、@oh-my-pi/pi-wire

末尾附数十条 PR 清单(多为 perf(...) 与 fix(...)),并给出完整对比 v18.7.0...v18.8.0。

关键发现 / 结果

破坏性变更(2 项):

  1. getEnvApiKey、getEnvApiKeyName、listProvidersWithEnvKey 不再从 @oh-my-pi/pi-ai/stream 导出,须改从 @oh-my-pi/pi-ai 或 @oh-my-pi/pi-ai/env-api-key 导入。
  2. TranscriptionRequest.audio 现接受 Uint8Array | Blob,消费方须处理 Blob。

关键修复:

  • Gemini/DeepSeek/Grok 因重复代码或标记(VRML、SVG、JSON)被误判为思考循环、有效输出遭丢弃重试。
  • Anthropic 会话在工具变更与压缩/中断回复叠加时全部请求返回 HTTP 400(#14746),已卡住的会话在下一条消息自愈。
  • 长生命周期网关中 session-affinity pin 无限增长,现按每 provider 上限 256 个会话。

新能力:写工具预览(SVG/Mermaid/3D 格式)、title.icons、title.generator、ZipPackage、DocxImage.readBytes() 等。性能优化覆盖流式响应、认证、目录构建、TUI、仪表盘等;具体量化数据原文未说明。

结论与意义

本版本以性能与内存优化为主,附带两处破坏性 API 调整与多项缺陷修复。适用边界:变更仅针对 omp 自身各包(v18.7.0 → v18.8.0)。下游须显式修改导入路径并处理 Blob 类型;其余多为内部行为改进。发布方未给出性能基准数据或迁移完成度说明。

AI 解读 AI 生成

方法:按「时空变量」分析(时间 / 空间 / 变量,严格区分包含、相关与因果),对象包括原文作者、署名人员与关键技术及其实际原理;结论用「元反空」(元思考、反思考、空思考、综合)整理。

时间:何时发生,现在是否仍成立

来源日期为 2026年10月7日 15:15(北京时间),即北京时间 2026-10-07 15:15:26 发布的 v18.8.0 版本快照。所述变更在发布时刻成立;此后是否被更新版本取代,原文未说明。性能类断言未附基准数据,其随时间与负载形态变化的有效性原文未说明。

空间:谁的环境 / 场景

适用于使用 oh-my-pi v18.8.0 各包的开发者与使用者:

  • 破坏性变更影响从 @oh-my-pi/pi-ai/stream 导入密钥辅助函数、或读取 TranscriptionRequest.audio 的下游代码。
  • 预览与标题功能主要作用于 Tern pane / TUI 环境;图标渲染依赖 Nerd Font 可用性。
  • 浏览器行为可经 app.tern: false、browser.tern 或 PI_BROWSER_TERN=0 改为直接打开 Chromium。
  • 性能优化覆盖浏览器抓取、文件工具、LSP/DAP、MCP、SSH、语音、协作与高输出工作流等场景。

变量:实际改变了什么

相对 v18.7.0 的实际变化:

  • 结构:导出路径迁移(stream → 主包 / env-api-key);TspEditorProps.placeholder 与 TspInputProps.placeholder 改接受 TspText;新增 ZipPackage(带可配置总解压上限)与 DocxImage.readBytes()。
  • 行为:pin 上限 256 会话/provider;会话标题改用会话自身模型并带卡片索引、图标、短码;todo 卡默认展开清单;Tern 中 /fork 在相邻 pane 打开且保留原会话;子代理提交结果时进度指示推进到 99%。
  • 修复:多处内存增长、冻结、文档双次下载、标题请求空返回等缺陷。
  • 价格类变更:原文未说明。

区分:包含 ≠ 相关 ≠ 因果

有明确因果证据的:各项 fix(...),如 #14746 明确将 HTTP 400 归因于工具变更与压缩或中断回复同时发生;误判思考循环明确归因于重复代码或标记;PR 标题将优化手段与结果一一对应(如 memoize、增量解析、合并写入)。

仅相关/包含的:性能条目中罗列的 provider(Cursor、Devin、Codex、OpenAI Responses、GitLab Duo Workflow)是被优化对象而非原因;Nerd Font 与图标呈现是依赖关系而非因果。多数性能主张缺量化基准,因果为发布方自述,原文未提供独立验证。

对象:作者/署名与关键技术原理

按结构化作者字段,署名为 github-actions[bot](自动化发布账号)。正文 PR 清单另列出贡献者 @H4vC(绝大多数 perf PR)与 @roboomp(#14654、#14741 两项 fix),此为原文内容,非署名推断。关键技术及原文描述的原理:

  • 流式处理:工具调用解析改增量/只扫描尾部(scan only the tail)。
  • 缓存与合并:memoize 渲染器、按 host 缓存平台探测、合并 MCP 工具集刷新与事件写入。
  • 惰性读取:ZIP/DOCX 等文档包按需解压,避免全量处理。
  • 限界控制:pin 上限、debug 日志与计划评审保留有界历史。
  • 渲染:SVG 流式更新、Mermaid 完成后渲染;TSP 图片按连接发送一次并复用 blob 缓存。

元反空综合结论

元:这条内容本质是在回答长时高负载 AI 编码会话为何变慢、卡住或泄漏内存,以及 API 如何收敛,并以版本化清单交付改进。

反:最可能失效或有边界的主张——全部 perf 断言无基准数据,实际收益依赖负载形态;title.icons 等功能依赖 Nerd Font;Anthropic/Gemini 等修复仅覆盖描述到的触发条件;256 上限可能在超大规模会话下改变亲和行为;Tern 相关默认值不适合偏好 Chromium 直开的用户。

空:去掉叙事后的必要事实——v18.8.0 于北京时间 2026-10-07 15:15 发布;含 2 项破坏性变更(导出迁移、Blob 类型)、多项修复(含 #14746)与大量性能 PR;完整对比 v18.7.0...v18.8.0。

综合结论:这是一次以性能与内存治理为主的例行维护版本;下游需因两处破坏性变更采取行动,其余改进可按需受益,但效果原文未量化证明。

中文译文 AI 生成

@oh-my-pi/pi-agent-core

变更

  • 优化了长时间运行的会话中修剪工具输出与采集遥测消息时的性能。

@oh-my-pi/pi-ai

破坏性变更

  • 环境变量 API 密钥辅助函数(getEnvApiKey、getEnvApiKeyName 和 listProvidersWithEnvKey)不再从 @oh-my-pi/pi-ai/stream 导出;请改为从 @oh-my-pi/pi-ai 或 @oh-my-pi/pi-ai/env-api-key 导入。
  • TranscriptionRequest.audio 现在接受 Uint8Array | Blob。使用方在读取转录请求时必须处理 Blob 值。

变更

  • 提升了流式模型响应(包括 Cursor、Devin、Codex、OpenAI Responses 和 GitLab Duo Workflow)的 CPU 与内存效率。
  • 改进了请求与认证性能,包括账号排序、OAuth 预检、凭据速率限制检查、凭据同步以及认证网关请求。
  • 提升了长调用以及 Apple Foundation Models 请求的工具调用解析性能。
  • 改进了 Cloudflare AI Gateway 请求性能与 AWS 凭据来源检测。
  • 降低了处理生成的图像与用量报告时的内存占用。

修复

  • 修复了 Gemini、DeepSeek 和 Grok 在响应包含重复代码或标记(如 VRML、SVG 或 JSON)时被误判为思考循环的问题;有效输出不再被丢弃并重试。
  • 修复了 Cursor 提供方在请求完成后仍保留请求资源的问题。
  • 修复了长期运行的网关中会话亲和 pin 无限增长的问题;现在每个提供方的 pin 上限为 256 个会话。
  • 修复了在工具变更恰好与压缩或被中断、失败的回复同时发生时,Anthropic 会话的每个请求都以 HTTP 400 失败("role 'system' must precede an 'assistant' message")的问题;已陷入该状态的会话将在下一条消息时恢复(#14746)。

@oh-my-pi/pi-catalog

变更

  • 通过加速模型缓存读取和重复的全目录模型构建,改进了目录性能,对大型目录尤为明显。

@oh-my-pi/pi-coding-agent

新增

  • Write 工具预览现在会随文件流式传输实时渲染:SVG 文件显示为图像,Mermaid 文件(.mmd 和 .mermaid)显示为图表。Tern 还会预览受支持的 3D 模型格式(.obj、.ply、.wrl、.x3dv、.stl、.gltf 和 .usda),并将 SVG 写入渲染为 SVG 图形。
  • 新增 title.icons 设置,用于会话标题卡片的显示方式:Nerd Font 字符并以 emoji 作为回退(nf+emoji,默认)、始终使用 emoji(emoji),或显示为纯文本标题(boring)。
  • 新增 title.generator 设置,可基于回复的分叉来命名会话(fork,默认),或仅使用标题模型命名(tiny)。

变更

  • 会话标题在可能时使用会话自身的模型生成,并回退到轻量级标题模型;TITLE_SYSTEM.md 仍会覆盖标题提示词。
  • 会话标题现在包含卡片索引、图标和短代码,并在 Tern 面板中以相应的 Nerd Font 渲染。
  • 当 Nerd Font 符号不可用时,会话命名仅请求一个 emoji。
  • 子代理完成指示器现在会在子代理提交结果时推进到 99%。
  • 在 Tern 面板中,有头和无头浏览器打开默认显示在 Tern 画中画中;设置 app.tern: false、browser.tern 或 PI_BROWSER_TERN=0 可改为打开 Chromium。
  • 在 Tern 面板中,/fork 会在相邻面板中打开分叉,同时保留原会话。
  • Tern 的空白输入框现在会显示会话标题;没有标题时显示 “What are we cooking?”。
  • Tern 待办卡片现在默认显示其清单,点击卡片头部可折叠。
  • 提升了浏览器内容提取、网页与文档抓取、文件工具、搜索、会话处理、LSP/DAP、MCP、子代理、SSH 文件操作、图像处理、语音与听写、协作以及大输出或大文件工作流的性能。
  • 提示词历史搜索现在会在停止输入后不久更新,而 Enter 和鼠标选择会使用最新的查询。
  • 提升了长会话、大文件与文档、流式评估、终端图形、实时语音通话及其他高吞吐工作流的响应速度,并降低了资源占用。
  • 对于并非受支持的 Mastodon、Lemmy 或 Discourse 实例的主机,不再反复探测这些服务,从而改进了 URL 抓取性能。

修复

  • 修复了当先前的标题请求返回为空时,在其运行期间发送的消息无法获得自行命名会话机会的问题。
  • 修复了 /new 错误地将计划模式、其计划专用模型或目标模式带入新会话的问题。
  • 修复了子代理流式输出进度时待办清单未能自动清除的问题。
  • 修复了 ACP 客户端终端命令执行期间的内存增长问题。
  • 修复了包含未闭合标签的大段粘贴后出现的冻结问题。
  • 修复了处理较长评估输出、大型 Python 内核结果、编译器/linter 输出以及临时侧信道回复时的性能下降问题。
  • 修复了以 application/octet-stream 提供的文档被下载两次的问题。
  • 修复了协作访客在流式传输期间过度重建转录内容的问题。

@oh-my-pi/collab-web

变更

  • 通过减少不必要的访客更新和 Markdown 重渲染,改进了流式转录性能,包括加快包含大量未闭合 LaTeX 定界符的转录的渲染速度。
  • 不再跟踪已完成或不再列出的子代理,降低了代理抽屉中不必要的轮询和内存占用。

@oh-my-pi/omp-stats

变更

  • 通过减少不必要的数据刷新与重渲染,改进了仪表盘的响应速度和效率,加快了会话同步、数据库访问、包导入以及用量、模型和时序请求,并避免重复下载未变更的 trace。
  • 仪表盘请求现在会在不再需要时取消,从而提升切换会话或加载期间关闭 trace 视图时的响应速度。

@oh-my-pi/pi-tui

新增

  • SVG 和 Mermaid 文件现在会在其文件卡片下方渲染为图像或图表,SVG 预览随文件流式传输实时更新,Mermaid 预览则在文件完成后出现。

原生工具卡片可以默认展开打开,不受 transcript 展开状态的影响;todo checklist 使用了这一行为。

变更

  • TSP composer 占位符现在以斜体弯引号的形式显示为 composer 标题,未提供标题时使用 “What are we cooking?”。
  • TSP 图像传输在重连和多个界面之间更加高效:每个连接只发送一次图像,上传前会检测已存在的终端 blob,并且 Tern blob 缓存中的图像可被复用而无需跨越终端 pty。
  • 提升了 TUI 整体的性能与响应速度,涵盖大型 TSP 消息与 Markdown 文档、流式输出、工具结果卡片、调试日志、raw SSE 与 Git diff 视图、路径与模型搜索、会话与设置列表、plan review、agent transcript、状态更新、assistant 链接、Kitty 图像,以及大型 prompt 或求值内容。
  • 大型调试日志与 plan-review 历史现在保留有界的历史记录以保持界面响应,同时保留最新的日志条目。

修复

  • 修复了某些 LaTeX 环境和不完整分隔符导致的 Markdown 处理缓慢问题。
  • 修复了格式化长的不含分号的 JavaScript 求值表达式时过度变慢的问题。
  • 修复了包含 magic keywords 的大型草稿中 prompt 编辑器的卡顿。

@oh-my-pi/pi-utils

新增

  • 为 @oh-my-pi/pi-utils/ar 新增了 ZipPackage,用于以可配置的总解压上限惰性读取基于 ZIP 的文档包;另新增 DocxImage.readBytes() 用于访问原始 DOCX 图像数据。

变更

  • 改进了 DOCX 转换,仅解压所需的包内容,减少不必要的工作量与内存占用。
  • 提升了 HTML 到 Markdown 转换、Readability 提取、Markdown 词法分析、终端仿真、终端样式、流式工具参数解析以及日志写入的性能。大页面处理与终端工作负载现在消耗的时间和内存显著减少。

修复

  • 通过及时释放缓冲区、缓存条目与被丢弃的响应体,修复了长生命周期子进程、流式读取器、prompt 模板编译以及带重试的 HTTP 请求中的内存增长问题。
  • 修复了 prompt 模板将 {{else if …}} 链判定为未闭合块而拒绝的问题;现在这样的链以其起始块的单个闭合标签闭合,与 Handlebars 的行为一致。

@oh-my-pi/pi-wire

变更

  • 更新了 TspEditorProps.placeholder 与 TspInputProps.placeholder 以接受 TspText,从而支持带样式的占位符文本。

变更内容

  • fix(coding-agent):在 /new 启动会话时使模式状态保持一致,由 @roboomp 提交于 #14654
  • fix(utils):阻止 ptree、ConcatSink、prompt cache 与 fetchWithRetry 持有内存,由 @H4vC 提交于 #14664
  • perf(utils):加速 chalk 样式处理、parseStreamingJson 与 logger 写入,由 @H4vC 提交于 #14665
  • perf(utils):共享冻结的 vterm 单元格并加速解析与重排,由 @H4vC 提交于 #14666
  • perf(utils):使 markdown 块词法分析线性化并移除 TUI 窗口化词法分析器,由 @H4vC 提交于 #14667
  • perf(utils):加速大页面上 DOM 选择器、Readability 与 Turndown 的处理,由 @H4vC 提交于 #14668
  • perf(ai):共享 Connect 帧解码并阻止 Cursor 泄漏会话状态,由 @H4vC 提交于 #14669
  • perf(ai):不再在每轮克隆并重新序列化 Codex/Responses 请求体,由 @H4vC 提交于 #14670
  • perf(ai):仅扫描尾部以查找带内工具调用终止符,由 @H4vC 提交于 #14671
  • perf(ai):减少凭证选择与使用情况缓存中的 SQLite 读取与锁操作,由 @H4vC 提交于 #14672
  • perf(ai):共享 auth broker 的 SSE 帧并合并 snapshot 缓存写入,由 @H4vC 提交于 #14673
  • perf(ai):复用重建的 gateway 模型并避免图像与音频拷贝,由 @H4vC 提交于 #14674
  • perf(catalog):跳过对未变更模型缓存行的重复读取并对分类做记忆化,由 @H4vC 提交于 #14676
  • perf(coding-agent):新增无拷贝的 SessionManager.getBranchView 并原地扩展 branch memo,由 @H4vC 提交于 #14677
  • perf(agent):限制工具输出修剪扫描的规模并对每轮会话重写进行门控,由 @H4vC 提交于 #14678
  • perf(tui):改为每个窗口裁剪一次 OutputSink 尾部而非每个 chunk 都裁剪,由 @H4vC 提交于 #14679
  • perf(coding-agent):对 shell 快照去重,并同时运行 snapshot 与 direnv 设置,由 @H4vC 提交于 #14680
  • perf(tui):对 ask、ast、grep、lsp、mcp 及默认工具渲染器主体做记忆化,由 @H4vC 提交于 #14684
  • perf(tui):对 task、todo、wait 与 eval 渲染器及 eval 代码格式化做记忆化,由 @H4vC 提交于 #14685
  • perf(tui):使 plan review、annotation 与 debug 查看器增量渲染,由 @H4vC 提交于 #14686
  • perf(tui):为 hub、tree、settings 与 history 搜索仅准备一次模糊查询,由 @H4vC 提交于 #14687
  • perf(tui):缓存 agent hub 行并减少空闲 transcript 查看器的 I/O,由 @H4vC 提交于 #14688
  • perf(tui):每次文本修订仅对 prompt 编辑器装饰一次,由 @H4vC 提交于 #14690
  • perf(tui):让状态栏的 PR 查找与重绘不再在每个事件时运行,由 @H4vC 提交于 #14691
  • perf(coding-agent):仅对 assistant 链接做一次词法分析并缓存内部 URL 补全,由 @H4vC 提交于 #14692
  • perf(coding-agent):增量匹配 TTSR 规则而非重新扫描整个流,由 @H4vC 提交于 #14693
  • perf(coding-agent):将 session 重写改为流式处理并对图像外置做记忆化,由 @H4vC 提交于 #14694
  • perf(coding-agent):避免 branch 拷贝并合并积压的消息更新,由 @H4vC 提交于 #14695
  • perf(coding-agent):减少 edit 校验拷贝并限定 auto-repair 解析规模,由 @H4vC 提交于 #14700
  • perf(coding-agent):读取文件尾部与归档时避免重复全量扫描,由 @H4vC 提交于 #14701
  • perf(coding-agent):对 grep 分组做窗口化并记忆化搜索描述与校验器,由 @H4vC 提交于 #14702
  • perf(coding-agent):增量解码 eval 参数并停止逐 chunk 的尾部拼接,由 @H4vC 提交于 #14704
  • perf(coding-agent):增量解析流帧并为流控制台设置上限,由 @H4vC 提交于 #14705
  • perf(coding-agent):增量解析 cleanse checker 输出,由 @H4vC 提交于 #14706
  • perf(coding-agent):按主机缓存 Mastodon/Lemmy/Discourse 平台探测结果,由 @H4vC 提交于 #14707
  • perf(coding-agent):将 scraper 请求并行化并跳过重复的文档下载,由 @H4vC 提交于 #14708
  • perf(coding-agent):惰性读取 DOCX/PPTX/XLSX/EPUB 归档成员,由 @H4vC 提交于 #14709
  • perf(coding-agent): 对 LSP/DAP 帧只编码一次,并限制处于打开状态的 LSP 文档数量,由 @H4vC 在 #14710 中提交
  • perf(coding-agent): 合并 MCP 工具集刷新,由 @H4vC 在 #14711 中提交
  • perf(coding-agent): 对图像哈希做记忆化,并异步写入 blob 索引,由 @H4vC 在 #14712 中提交
  • perf(coding-agent): 共享子代理(subagent)发现,并复用已通过验证的 SSH 连接,由 @H4vC 在 #14713 中提交
  • perf(coding-agent): 在没有访客时跳过 collab 镜像,并且只序列化一次帧,由 @H4vC 在 #14714 中提交
  • perf(coding-agent): 以流式方式处理内存 rollout 窗口,并限制实验输出,由 @H4vC 在 #14718 中提交
  • perf(coding-agent): 惰性渲染 advisor 增量,并缓存 secret 扫描,由 @H4vC 在 #14717 中提交
  • perf(coding-agent): 将 collab 访客事件经由合并式事件路径进行路由,由 @H4vC 在 #14715 中提交
  • perf(coding-agent): 批量处理语音音频,避免逐帧的缓冲区复制,由 @H4vC 在 #14719 中提交
  • perf(coding-agent): 限制 tiny-model 预处理,并且只调整一次图像尺寸,由 @H4vC 在 #14720 中提交
  • perf(coding-agent): 只编码一次 RPC 消息更新,并削减实时调用的开销,由 @H4vC 在 #14716 中提交
  • perf(collab-web): 合并 web 访客渲染,并且只重新解析流式尾部,由 @H4vC 在 #14728 中提交
  • perf(stats): 停止空闲状态下的 dashboard 数据摄取,并跳过冗余的同步与回填,由 @H4vC 在 #14723 中提交
  • perf(stats): 取消已被废弃的 dashboard 请求,并复用未变化的数据,由 @H4vC 在 #14724 中提交
  • perf(stats): 取消已被废弃的路由查询,并对表格列做记忆化,由 @H4vC 在 #14725 中提交
  • perf(stats): 在 project、provider、request、tool 与 trace 路由中复用实时 dashboard 状态,由 @H4vC 在 #14726 中提交
  • perf(stats): 在 overlay canvas 上绘制 trace 悬停效果,并对时间线轨道做记忆化,由 @H4vC 在 #14727 中提交
  • fix(tui): 对来自终端粘贴的 home 图片路径进行反转义,由 @roboomp 在 #14741 中提交

完整变更日志:v18.7.0...v18.8.0

展开原文提取正文(采集端自动提取,可能有缺失)

@oh-my-pi/pi-agent-core

Changed

Improved performance when pruning tool output and capturing telemetry messages during long-running sessions.

@oh-my-pi/pi-ai Breaking Changes

The environment API-key helpers (getEnvApiKey, getEnvApiKeyName, and listProvidersWithEnvKey) are no longer exported from @oh-my-pi/pi-ai/stream; import them from @oh-my-pi/pi-ai or @oh-my-pi/pi-ai/env-api-key instead. TranscriptionRequest.audio now accepts Uint8Array | Blob. Consumers must handle Blob values when reading transcription requests.

Changed

Improved CPU and memory efficiency across streamed model responses, including Cursor, Devin, Codex, OpenAI Responses, and GitLab Duo Workflow. Improved request and authentication performance, including account ranking, OAuth preflight, credential rate-limit checks, credential synchronization, and auth gateway requests. Improved tool-call parsing performance for long calls and Apple Foundation Models requests. Improved Cloudflare AI Gateway request performance and AWS credential-source detection. Reduced memory usage when handling generated images and usage reports.

Fixed

Fixed false thinking-loop detections for Gemini, DeepSeek, and Grok when responses contain repetitive code or markup such as VRML, SVG, or JSON; valid output is no longer discarded and retried. Fixed the Cursor provider retaining request resources after requests completed. Fixed session-affinity pins growing without bound in long-lived gateways; pins are now capped at 256 sessions per provider. Fixed Anthropic sessions failing every request with HTTP 400 ("role 'system' must precede an 'assistant' message") after a tool change coincided with compaction or an interrupted or failed reply; sessions already stuck this way recover on the next message (#14746).

@oh-my-pi/pi-catalog

Changed

Improved catalog performance by speeding up model cache reads and repeated catalog-wide model builds, especially for large catalogs.

@oh-my-pi/pi-coding-agent

Added

Write-tool previews now render as files stream: SVG files appear as images, and Mermaid files (.mmd and .mermaid) appear as diagrams. Tern also previews supported 3D model formats (.obj, .ply, .wrl, .x3dv, .stl, .gltf, and .usda) and renders SVG writes as SVG figures. Added the title.icons setting to show session title cards with a Nerd Font glyph and emoji fallback (nf+emoji, default), always the emoji (emoji), or as plain titles (boring). Added the title.generator setting to name sessions from a fork of the reply (fork, default) or with the title model only (tiny).

Changed

Session titles are generated using the session's model when possible, with a fallback to the lightweight title model; TITLE_SYSTEM.md continues to override the title prompt. Session titles now include a card index, icon, and short code, with appropriate Nerd Font rendering in Tern panes. When Nerd Font symbols are unavailable, session titling requests only an emoji. Subagent completion indicators now advance to 99% when the subagent submits its result. In Tern panes, headed and headless browser opens are shown in Tern picture-in-picture by default; set app.tern: false, browser.tern, or PI_BROWSER_TERN=0 to open Chromium instead. In Tern panes, /fork opens the fork in a neighboring pane while preserving the original session. Tern's empty composer now shows the session title, or “What are we cooking?” when no title is available. Tern todo cards now display their checklist by default and can be collapsed by clicking the card header. Improved performance across browser extraction, web and document fetching, file tools, search, session handling, LSP/DAP, MCP, subagents, SSH file operations, image processing, voice and dictation, collaboration, and large-output or large-file workflows. Prompt history search now updates shortly after typing stops while Enter and mouse selections use the latest query. Improved responsiveness and reduced resource usage for long sessions, large files and documents, streaming evaluations, terminal graphics, live voice calls, and other high-volume workflows. Hosts that are not supported Mastodon, Lemmy, or Discourse instances are no longer repeatedly probed for those services, improving URL-fetch performance.

Fixed

Fixed a message sent while an earlier title request was still running never getting its own try at naming the session when that request came back empty. Fixed /new incorrectly carrying plan mode, its plan-specific model, or goal mode into the new session. Fixed todo lists failing to auto-clear while subagents streamed progress. Fixed memory growth during ACP client-terminal commands. Fixed freezes after large pastes containing unclosed tags. Fixed slowdowns when processing long evaluation output, large Python kernel results, compiler/linter output, and ephemeral side-channel replies. Fixed documents served as application/octet-stream being downloaded twice. Fixed collaboration guests rebuilding the transcript excessively during streaming.

@oh-my-pi/collab-web

Changed

Improved streaming transcript performance by reducing unnecessary guest updates and Markdown re-rendering, including faster rendering for transcripts with many unclosed LaTeX delimiters. Stopped tracking finished or no-longer-listed subagents, reducing unnecessary polling and memory usage in the agent drawer.

@oh-my-pi/omp-stats

Changed

Improved dashboard responsiveness and efficiency by reducing unnecessary data refreshes and re-rendering, speeding up session synchronization, database access, package imports, and usage, model, and time-series requests, and avoiding repeated downloads of unchanged traces. Dashboard requests are now cancelled when no longer needed, improving responsiveness when switching sessions or closing trace views during loading.

@oh-my-pi/pi-tui

Added

SVG and Mermaid files now render as images or diagrams beneath their file cards, with SVG previews updating while the file streams and Mermaid previews appearing when the file is complete. Native tool cards can open expanded regardless of the transcript’s expansion state; the todo checklist uses this behavior.

Changed

TSP composer placeholders now appear as the composer title in italicized curly quotes, with “What are we cooking?” used when no title is provided. TSP image transfers are more efficient across reconnects and multiple surfaces: images are sent once per connection, existing terminal blobs are detected before upload, and images in the Tern blob cache can be reused without crossing the terminal pty. Improved performance and responsiveness across the TUI, including large TSP messages and Markdown documents, streaming output, tool-result cards, debug logs, raw SSE and Git diff views, path and model searches, session and settings lists, plan review, agent transcripts, status updates, assistant links, Kitty images, and large prompt or evaluation content. Large debug logs and plan-review histories now retain bounded history to keep the interface responsive, while preserving the newest log entries.

Fixed

Fixed slow Markdown processing for certain LaTeX environments and incomplete delimiters. Fixed excessive slowdown when formatting long semicolon-free JavaScript evaluations. Fixed prompt-editor lag in large drafts containing magic keywords.

@oh-my-pi/pi-utils

Added

Added ZipPackage to @oh-my-pi/pi-utils/ar for lazily reading ZIP-based document packages with a configurable total-inflation limit, plus DocxImage.readBytes() for accessing raw DOCX image data.

Changed

Improved DOCX conversion to inflate only the package contents it needs, reducing unnecessary work and memory use. Improved performance across HTML-to-Markdown conversion, Readability extraction, Markdown lexing, terminal emulation, terminal styling, streaming tool-argument parsing, and log writing. Large-page processing and terminal workloads now use substantially less time and memory.

Fixed

Fixed memory growth in long-lived child processes, streaming readers, prompt template compilation, and retried HTTP requests by releasing buffers, cache entries, and discarded response bodies promptly. Fixed prompt templates rejecting {{else if …}} chains as unclosed blocks; a chain now closes with its opening block's single closing tag, as in Handlebars.

@oh-my-pi/pi-wire

Changed

Updated TspEditorProps.placeholder and TspInputProps.placeholder to accept TspText, enabling styled placeholder text.

What's Changed

  • fix(coding-agent): reconciled mode state when /new starts a session by @roboomp in #14654
  • fix(utils): stop ptree, ConcatSink, prompt cache and fetchWithRetry from retaining memory by @H4vC in #14664
  • perf(utils): speed up chalk styling, parseStreamingJson and logger writes by @H4vC in #14665
  • perf(utils): share frozen vterm cells and speed up parsing and reflow by @H4vC in #14666
  • perf(utils): make markdown block lexing linear and drop the TUI windowed lexer by @H4vC in #14667
  • perf(utils): speed up DOM selectors, Readability and Turndown on large pages by @H4vC in #14668
  • perf(ai): share Connect frame decoding and stop Cursor leaking conversation state by @H4vC in #14669
  • perf(ai): stop cloning and re-serializing Codex/Responses request bodies per turn by @H4vC in #14670
  • perf(ai): scan only the tail for in-band tool-call terminators by @H4vC in #14671
  • perf(ai): cut SQLite reads and locks in credential selection and usage caching by @H4vC in #14672
  • perf(ai): share auth broker SSE frames and coalesce snapshot cache writes by @H4vC in #14673
  • perf(ai): reuse rebuilt gateway models and avoid image and audio copies by @H4vC in #14674
  • perf(catalog): skip re-reading unchanged model cache rows and memoize classification by @H4vC in #14676
  • perf(coding-agent): add a copy-free SessionManager.getBranchView and extend the branch memo in place by @H4vC in #14677
  • perf(agent): bound tool-output pruning scans and gate per-turn session rewrites by @H4vC in #14678
  • perf(tui): trim OutputSink tails once per window instead of every chunk by @H4vC in #14679
  • perf(coding-agent): dedupe shell snapshots and run snapshot and direnv setup together by @H4vC in #14680
  • perf(tui): memoize ask, ast, grep, lsp, mcp and default tool renderer bodies by @H4vC in #14684
  • perf(tui): memoize task, todo, wait and eval renderers and eval code formatting by @H4vC in #14685
  • perf(tui): make plan review, annotation and debug viewers render incrementally by @H4vC in #14686
  • perf(tui): prepare fuzzy queries once for hub, tree, settings and history search by @H4vC in #14687
  • perf(tui): cache agent hub rows and cut idle transcript viewer I/O by @H4vC in #14688
  • perf(tui): decorate the prompt editor once per text revision by @H4vC in #14690
  • perf(tui): stop status-line PR lookups and repaints from running every event by @H4vC in #14691
  • perf(coding-agent): lex assistant links once and cache internal URL completions by @H4vC in #14692
  • perf(coding-agent): match TTSR rules incrementally instead of rescanning the stream by @H4vC in #14693
  • perf(coding-agent): stream session rewrites and memoize image externalization by @H4vC in #14694
  • perf(coding-agent): avoid branch copies and coalesce backlogged message updates by @H4vC in #14695
  • perf(coding-agent): cut edit verification copies and bound auto-repair parses by @H4vC in #14700
  • perf(coding-agent): read file tails and archives without repeated full scans by @H4vC in #14701
  • perf(coding-agent): window grep grouping and memoize search descriptions and validators by @H4vC in #14702
  • perf(coding-agent): decode eval args incrementally and stop per-chunk tail joins by @H4vC in #14704
  • perf(coding-agent): parse stream frames incrementally and cap the stream console by @H4vC in #14705
  • perf(coding-agent): parse cleanse checker output incrementally by @H4vC in #14706
  • perf(coding-agent): cache Mastodon/Lemmy/Discourse platform probes per host by @H4vC in #14707
  • perf(coding-agent): parallelize scraper requests and skip double document downloads by @H4vC in #14708
  • perf(coding-agent): read DOCX/PPTX/XLSX/EPUB archive members lazily by @H4vC in #14709
  • perf(coding-agent): encode LSP/DAP frames once and cap open LSP documents by @H4vC in #14710
  • perf(coding-agent): coalesce MCP tool-set refreshes by @H4vC in #14711
  • perf(coding-agent): memoize image hashes and write the blob index asynchronously by @H4vC in #14712
  • perf(coding-agent): share subagent discovery and reuse verified SSH connections by @H4vC in #14713
  • perf(coding-agent): skip collab mirroring without guests and serialize frames once by @H4vC in #14714
  • perf(coding-agent): stream memory rollout windows and bound experiment output by @H4vC in #14718
  • perf(coding-agent): render advisor deltas lazily and cache secret scans by @H4vC in #14717
  • perf(coding-agent): route collab guest events through the coalescing event path by @H4vC in #14715
  • perf(coding-agent): batch speech audio and avoid per-frame buffer copies by @H4vC in #14719
  • perf(coding-agent): bound tiny-model preprocessing and resize images once by @H4vC in #14720
  • perf(coding-agent): encode RPC message updates once and cut live call overhead by @H4vC in #14716
  • perf(collab-web): coalesce web guest renders and re-parse only streaming tails by @H4vC in #14728
  • perf(stats): stop idle dashboard ingest and skip redundant syncs and backfills by @H4vC in #14723
  • perf(stats): cancel abandoned dashboard requests and reuse unchanged data by @H4vC in #14724
  • perf(stats): cancel abandoned route queries and memoize table columns by @H4vC in #14725
  • perf(stats): reuse live dashboard state in project, provider, request, tool and trace routes by @H4vC in #14726
  • perf(stats): draw trace hover on an overlay canvas and memoize timeline lanes by @H4vC in #14727
  • fix(tui): unescaped home image paths from terminal pastes by @roboomp in #14741

Full Changelog: v18.7.0...v18.8.0

原文入口

阅读原文(github.com)

原文将在新窗口打开。收录时间不是内容更新时间;正文、译文与解读的版权归原作者/来源所有,本站仅作个人阅读辅助并保留原文入口;页面时间均为北京时间。

作者/署名来自原文结构化字段(Atom/RSS/HTML meta/JSON-LD;GitHub release 显示的是发布者账号),未经模型补充。

了解来源批准与收录规则