2026 2026年10月31日 27 min · 8.1k chars by yxc023

GitHub 调研周报 2026-10-31

扫描窗口:2026-09-08T09:23:29Z → 2026-10-31T00:30:00Z(共 52.6 天)| 基准来源:上次报告 2026-10-30

2026-10-31 GitHub 调研周报

扫描窗口:2026-09-08T09:23:29Z → 2026-10-31T00:30:00Z(共 52.6 天)| 基准来源:上次报告 2026-10-30 本期新增内容全部落在 2026-10-30T00:30:00Z 之后的约 24 小时(上次报告生成时间)

本期速览

  • anomalyco/opencode: 一天连发三版(v2.2.3 / v2.2.4 / v2.2.5),而当天最响的问题不是功能,是网络——约 20 个新 issue 报 ECONNRESET,根因被定位到 Bun 默认开启的后量子密钥交换 X25519MLKEM768 使 ClientHello 变成 1741 字节、超过 MSS 1360 而被 DPI 分片丢弃(#60399、#60661);报告者称同一台机器上 curl 正常、Chrome/Edge 也受影响,主报被判定为「非 OpenCode 缺陷」,但它命中的是 opencode 自己的 Bun 运行时默认值。
  • anomalyco/opencode: 「实验性能力默认打开再撤回」在 70 分钟内发生一次——#60478 让 schedules 默认开启并把调度循环放进 opencode serve,随后 da87c47「fix(core): keep schedules off unless experimental.schedules is enabled」把默认改回 opt-in;v2.2.4 的 release notes 最终写的是撤回后的状态。这印证了上一期的判断:当一个项目一天出三版,release notes 只是某一刻的快照。
  • anomalyco/opencode: v2.2.3 把 Claude Code 的登录态直接接进来(#58782,新增内置 Claude Agent provider,/connect 里选它即可用 claude auth login 的凭据与模型),v2.2.4 又补上引导式安装与连接自检(#60603)。agent 产品之间正在互相吃掉对方的 OAuth 登录态,而这已经进了正式 release 的 Highlights。
  • anomalyco/opencode: 「能发布交互式产物」成为一个正式特性面——v2.2.4 引入 opt-in 的 experimental.artifacts(artifact_create/read/update/delete + 内置本地静态文件 provider + 插件可注册的 provider),SDK 侧新增 client.experimental.artifacts.*,插件侧新增 ctx.experimental.artifact.transform(...)(#60351)。
  • agentclientprotocol/agent-client-protocol: 上一期播下的 v2 background work RFD(#2452)在今天落地为 phase 1(#2738)——ToolCallStatus 新增 paused、ToolCallUpdate 增加可 patch 的 capabilities.cancel、新增 tool_call/cancel 与 terminal/cancel、状态快照里带可选的 background 列表,且不新增实体。
  • agentclientprotocol/agent-client-protocol: 同一天新增 5 个不稳定方法——session/archive + session/unarchive(#2736)、proxy/initialize + proxy/successor(#2737,代理链只传一个协议版本并用 _meta 承载扩展)、session/status(#2735)、auth/status + auth/status_update 通知(#2732)、session/set_title(#2734);另外 HTTP/WebSocket 传输也一并去掉 JSON-RPC batching(#2729),并做了一整轮「plain-language pass」规范文字改写(#2730)。
  • agentclientprotocol/agent-client-protocol: 单日 56 个合并 PR(与上期持平),依然全部由 benbrandt 一人提交,社区侧仍是 0 新 issue、0 新讨论——协议在加速,采纳侧完全没动。
  • vectorize-io/hindsight: 记忆正确性压过性能成为主线——#6211 修掉「决策模型从不写 observation 正文」这一事实性缺陷,#6228 承认 consolidation 可能覆盖另一主题的 observation 并丢失事实,#6237 让决策模型在限流时被重试而不是丢结论,#6236 让每一条证据都带上日期(含原始 chunk)。
  • earendil-works/pi: 本期产能几乎全投在 Chord v2:slice 7b(内核里 reload)、slice 7c(插件按插件装载/重载,失败时保留旧代码)、slice 10 规格草案(HTTP 方向 D1–D8、RouteHandle.retry);另有 beforeProviderRequest 生成钩子(#11619)与 pi update 自更新命令(#11629)。
  • earendil-works/pi: compaction 的一个真实故障被用户定位——#11610:压缩切点落在带 thinking 块的 assistant 消息上,重放时签名与原会话不匹配,Anthropic 路径直接返回硬 400 invalid_request_error,pi 的重试循环把完全相同的上下文重发 8 次。
  • agegr/pi-web: v0.13.0 之后 35 小时零提交,但社区侧一天涌入 5 个 PR、0 个被合并——来自 3 位外部贡献者:side chat 从当前会话 fork(#1469)、把 General 聊天偏好挪到服务端(#1467)、文件查看器默认按 prose 换行(#1471);同期还有一个值得看的性能 issue:只读请求 GET /api/auth/providers 每 10 分钟重建整张扩展图、冷启动 13 秒(#1465)。

各仓库详情

anomalyco/opencode

开源的终端优先 coding agent,模型无关(75+ provider),TUI / 桌面端 / IDE 扩展共用同一后端 | stars: 223328 | open issues: 3844 | 默认分支: dev | 最近 push: 2026-10-30T23:48:15Z | 主页: https://opencode.ai

近 N 周 release 重点(本期新增 v2.2.3 / v2.2.4 / v2.2.5):

  • v2.2.5(2026-10-30T23:17Z)— 快捷键、引用直发与百分比压缩缓冲

    • compaction.buffer 现在接受模型上下文窗口的百分比(如 "20%"),此前只接受 token 数;一个设置同时适配小窗口与大窗口模型(#60647)
    • 压缩提示词现在会被上限截到模型上下文窗口(#60660),LiteLLM 的上下文溢出错误改为触发压缩而不是终止会话(#60692)
    • 切换模型或恢复被中断的响应时,reasoning 不再被降级成纯文本(此前会导致部分 provider 请求报错,#60498)
    • MCP stdio 超过 10 MiB 的消息不再导致断连,且大消息读取明显变快(#60694)
    • 新增 worktree / base branch / shell mode 快捷键(⌘⌥O、⌘⌥B、⌘⇧X,#60713);引用弹窗按住 ⌘/Ctrl 或 ⌘Enter 可只发送这一条引用与评论(#60640)
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v2.2.5
  • v2.2.4(2026-10-30T16:59Z)— 持久终端、交互式产物、Claude Agent 引导

    • 桌面端 terminal 迁到会话级持久 PTY,与服务端共享、带 scrollback 恢复、重启后保留,重命名也跨重启保留(#60346、#60329)
    • 新增 opt-in 的 experimental.artifacts:artifact_create/read/update/delete + 内置本地静态文件 provider,agent 可发布/更新/提供 HTML 或静态产物(#60351);SDK 增 client.experimental.artifacts.*,插件增 ctx.experimental.artifact.transform(...)
    • 已启用的 schedule 现在在 opencode serve 下也能跑,并协调多进程保证只触发一次;schedule 仍需 experimental.schedules opt-in(#60478)
    • Claude Agent 提供引导式安装、登录、连接自检与「Needs sign-in」恢复(#60603);本地/项目/远端配置可覆盖 Console 下发的 provider 名、限额、变体、设置与 header(#60597)
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v2.2.4
  • v2.2.3(2026-10-30T09:55Z)— 内置 Claude Agent provider、桌面端长会话性能、两个 breaking change

    • 新增内置 Claude Agent provider:装好 Claude Code 并 claude auth login 后,在 /connect 里选 Claude Agent 即可直接用 Claude Code 的登录与模型;OPENCODE_CLAUDE_PATH 可覆盖可执行文件路径(#58782)
    • 桌面端长会话渲染开销大幅下降(#60489、#60521、#60513、#60481);修复 2.2.2 引入的侧栏 tab 回归、「Session not found」重复 toast、HTTP 下的 Open file 失效(#60430、#60436、#60459、#60462)
    • Breaking:TUI 插件要求 OpenTUI 0.8(ScrollBox 的 wrapper/viewport/content 变成 facade 对象,自定义 RenderContext 必须实现 clock 与 onAnimationTick,#60385)
    • Breaking:managed policy 拆分——integration.use 只管集成账号,新增 mcp.use / skill.use / plugin.use;旧的 mcp: / skill: / plugin: 前缀规则自动转换,但裸 integration.use 不再覆盖 MCP/skill/plugin(#60315)
    • SDK 侧把 Effect 与 Promise 的工具声明统一到 tool(...),支持可选 output schema 与「只声明不执行」的工具(#60407)
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v2.2.3

其他重要 commits / PRs:

  • da87c47 保持 schedule 默认关闭 (fix(core): keep schedules off unless experimental.schedules is enabled) — 距 #60478 合并仅约 70 分钟即撤回默认开启,调度循环仍常驻并保留 leader election,只是未打开开关的 location 不触发 (@Dax Raad, 2026-10-30)
  • 664c8f0 把后台任务标记从会话存储搬到独立的 SQLite job 表 (refactor(core): store background job markers in a SQLite job table) (@Kit Langton, 2026-10-30)
  • 1a443ae MCP stdio 消息不再受 SDK 读缓冲限制 (#60694) — 10 MiB 以上消息不再断连 (@Aiden Cline, 2026-10-30)
  • 208ea0e 识别 LiteLLM 上下文溢出错误 (#60692) — 由「终止会话」改为「触发压缩」 (@Aiden Cline, 2026-10-30)
  • ef712d3 桌面端 terminal 迁到持久 PTY (#60346) — 与 TUI 和其它窗口共享同一个会话终端 (@James Long, 2026-10-30)
  • 8f0fc21 新增可插拔 provider 的实验性 artifacts (#60351) (@Kit Langton, 2026-10-30)
  • 7a82f3a 两个客户端共用一个 tool() 声明 (refactor(ai): one tool() for both clients, #60407) (@Aiden Cline, 2026-10-30)
  • #60487 provider:大请求体在有 WAF/CDN 限制的 provider 上直接 provider.transport ECONNRESET,重发同一请求 10 次约 4 分钟后放弃,请求体默认不压缩,也没有自动 compact-and-retry 兜底
  • #60661 desktop:Bun 发送 1741 字节的 PQ ClientHello(X25519MLKEM768),超过 MSS 1360 → 被丢弃;报告者测到只影响 Cloudflare 段(172.65.90.20-23、172.66.173.149、104.16.132.229),与端口无关(443/8443/2053/2083/2087/2096 行为一致)
  • #60433 / #60444 desktop:browser pane 启动器在侧栏消失、browser.* 工具整体不可用(均已关闭)

社区讨论 / 行业方向:

  • ECONNRESET on built-in Zen provider(#60422): 俄罗斯 Rostelecom 用户报告同一台机器、同一网络、同一配置,换个出口 IP 就好;bot 判定为 #60399 的重复
  • #60399 cli: hangs before sending request on networks that drop fragmented TLS ClientHello: 规范复现——opencode run 起来后 120 秒没有任何输出(无 session、无 stream、无报错),同机 curl 0.2 秒返回,VPN 下立刻正常
  • #60635 OpenCode Go + Kimi K2.7 长任务反复 ECONNRESET: 用户记录到 attempt 2/5/6 的连续重试,原本几分钟的任务被拖到约一小时;后续更新中该故障从「拖慢」升级为「直接中断 agent run」
  • 评论区里的技术定性(#60422 第 4 条):连接在 TLS 握手阶段就被重置,任何 HTTP 响应之前,且同网络下 Chrome/Edge 同样失败——不是 OpenCode 的缺陷;已报告样本全部来自俄罗斯运营商(Irkutsk ×2、Perm、Ulyanovsk),另有人报告 Domru
  • #50735 opencode.ai unreachable from mainland China: 172.65.90.0/24 edge IPs get TCP-reset: 同一族问题的更早样本——中国大陆用户报告 Cloudflare 边缘 IP 段被 TCP reset
  • 社区给出的绕过方案:第三方 opencode-dpi-fix 仓库(改 DPI 侧行为,报告者称有效);另有用户反馈换 VPN 国家无效
  • 窗口期内未检索到中文技术媒体对 v2.2.3–v2.2.5 的报道;可检索到的中文内容仍集中在 9 月的安装配置与「模型无关」科普(早于本窗口)

信号观察:

  • 默认开启→撤回的循环成为常态。 上一期是「实验性生图在 24 小时内从 opt-in 变默认」,本期是「schedule 默认开启在 70 分钟内被撤回」。两期的 release notes 都只在事后看是对的,因为它们记录的是发布那一刻的状态。
  • 编译/运行时的默认值开始成为跨产品风险源。 opencode 的 Bun 默认 PQ 密钥交换导致的 ClientHello 分片问题,影响面不限于 opencode 本身——同一网络下 curl 与浏览器行为不同,说明问题出在「谁来发起 TLS」而不是「谁在用这个站点」。
  • 桌面端的功能面在一天之内扩了三块:持久终端(会话级)、交互式产物(agent 可发布 HTML/静态资源)、Claude Code 登录态复用。三者都不在协议层,而在「agent 作为一个长期运行、有身份、有资产的工作环境」这个方向上。
  • 管理策略面(managed policy)在被拆分细化:integration.use / mcp.use / skill.use / plugin.use 四个动作取代了早期的一刀切,说明企业侧的真实需求已经细到「哪些插件能跑」这一层。
  • 社区反馈的形态从「报错」转向「报错 + 归因」:本期最热的 issue 附带了 curl 对照实验、MSS 与 ClientHello 字节数、TLS 握手阶段判定——用户开始自己做协议层定位。

agentclientprotocol/agent-client-protocol

编辑器与 agent 之间的连接协议(MCP 的同代替代品),当前由单一维护者主导 v1 → v2 迁移 | stars: 4548 | open issues: 29 | 默认分支: main | 最近 push: 2026-10-30T21:50:11Z | 主页: https://agentclientprotocol.com

近 N 周 release 重点(本期新增 v1.14.0 / schema-v1.28.0 / schema-v2.0.0-alpha.11):

  • v1.14.0(2026-10-30T11:40Z)— v2 移除 batching、错误数据类型、subagent 工作目录

    • v2 移除 JSON-RPC batching(#2625)——本期 release notes 把它放在 Added 首位
    • v2 新增「已定义错误数据」的 schema 类型(#2605);elicitation 内容接受其它 JSON 值(#2595)
    • 新增 subagent 工作目录上报(#2593),并把 subagent cwd / additionalDirectories 统一为 AbsolutePath(#2660)
    • 修复:select 选项的「至少一个值」规则(#2662)、lastModified 对齐 MCP 的 ISO 8601(#2661)、elicitation requestedSchema 必须带 type 与 properties(#2645)、生成的 schema 允许 null 错误响应 id(#2634)
    • 其余 40 余条为 v1→v2 迁移语义的文档化条目(见下)
    • 完整 release notes: https://github.com/agentclientprotocol/agent-client-protocol/releases/tag/v1.14.0
  • schema-v2.0.0-alpha.11(2026-10-30T11:40Z)— 与 v1.14.0 同步的 v2 预览线,内容为上面 v1.14.0 中标记 unstable-v2 / unstable 的条目

  • schema-v1.28.0(2026-10-30T11:40Z)— 稳定线仅两项:subagent 工作目录上报(#2593)与非 ISO 货币单位(如 credits,#2621)

其他重要 commits / PRs:

  • a965f1f feat(unstable-v2): add background work to v2 (#2738) — 上一期播下的 RFD 落地为 phase 1:ToolCallStatus 新增 paused;ToolCallUpdate / TerminalUpdate 增加可 patch 的 capabilities.cancel;新增 tool_call/cancel 与 terminal/cancel;running/requires_action/idle 快照带可选 background 列表(terminal / tool_call / subagent / 自定义);不新增任何实体 (@Ben Brandt, 2026-10-30)
  • bbf8995 feat(unstable): add proxy/initialize and proxy/successor (#2737) — 代理链只传一个协议版本,扩展走 _meta;这两个消息不进入 ClientRequest/AgentRequest,而是给 conductor/proxy 单独一侧,避免普通 SDK 用户拿到永远不会发生的路由变体 (@Ben Brandt, 2026-10-30)
  • e5fb2f3 feat(unstable): add session/archive and session/unarchive methods (#2736) (@Ben Brandt, 2026-10-30)
  • 8eb7e74 feat(unstable): add session/status method (#2735) (@Ben Brandt, 2026-10-30)
  • 7058a4f feat(unstable): add auth/status method and auth/status_update notification (#2732) (@Ben Brandt, 2026-10-30)
  • ef8263a feat(unstable): add session/set_title method (#2734) (@Ben Brandt, 2026-10-30)
  • 854e600 docs(rfd): proxy chains carry one protocol version and use _meta (#2733) (@Ben Brandt, 2026-10-30)
  • 90475e7 docs(rfd): drop JSON-RPC batches from the HTTP/WebSocket transport (#2729) — batching 不只在 JSON-RPC 层被删,HTTP/WS 传输同步移除 (@Ben Brandt, 2026-10-30)
  • d5e9949 docs(schema): plain-language pass over spec pages and schema descriptions (#2730) — 一整轮规范文字改写 (@Ben Brandt, 2026-10-30)
  • 2af6e3e docs(rfd): move client system prompt to preview (#2739) (@Ben Brandt, 2026-10-30)
  • 迁移语义条目(本期新增):initialize 可在其它请求前重复调用(#2711)、cancel_request 对未知或已应答请求忽略(#2672)、cancel_request 只指自己发出的请求(#2687)、currency 约束放宽到 credits(#2621)、MCP transport header 优先于 Client header(#2694)、_meta 文档禁止赋予未识别键含义(#2701)、resource link 对接收方可读(#2706)、新实体从协议默认值而非 Client 默认值起步(#2652)、session/resume 的 cwd 必须与 session 一致(#2612、#2640)、空字符串 session/list cursor 合法(#2673)、$/cancel_request 之后允许正常响应(#2636)

社区讨论 / 行业方向:

  • 仓库 Discussions 中最新帖子仍停留在 2025-08-31(本周期 0 新讨论、0 新 issue)——协议侧无外部反馈,但规范面在快速演进
  • 官方 RFD 页面持续更新:Subagent Sessions、v2 Message Updates and Chunks、v2 Background Work、proxy chains
  • 外部检索只命中既有第三方页面(DeepWiki 的 v2 规范摘要、qubittool 术语表等),窗口期内未见新的行业讨论

信号观察:

  • 上一期的 RFD 到本期就变成了 schema 实现,周期约 24 小时。RFD → schema → 迁移指南三件套在同一周内完成,节奏稳定。
  • 会话生命周期成为新增协议面的重心:archive/unarchive、status、set_title 三个方法同一天落地,都围绕「会话这个对象本身」而不是「会话里的一次对话」。
  • 代理链(proxy chains)被单独设计成协议的一侧,而不是 Client/Agent 侧的变体——这在「多 agent 编排」方向上是重要取舍:编排者与被编排 agent 的消息形状明确分离。
  • 单点作者风险未变:本期 56 个合并 PR,除 release bot 外全部由 benbrandt 一人提交;社区 issue 与讨论仍为 0。协议成熟度与社区采纳度之间的差距,本期没有缩小。

vectorize-io/hindsight

Agent 记忆层:retain / recall / reflect 三段式,配套 MCP server 与托管版 | stars: 56639 | open issues: 159 | 默认分支: main | 最近 push: 2026-10-30T23:40:43Z | 主页: https://hindsight.vectorize.io/

近 N 周 release 重点:

  • 窗口期内无新 release(最近一次为 v1.1.0,2026-10-21)
  • 本期发布 coding-agents 子包 v0.8.4(ccbfc14,未走 GitHub Release 通道)

其他重要 commits / PRs:

  • 71d4356 fix(consolidation): the decision model never writes observation text (#6211) — 修掉「决策模型从不写 observation 正文」这一事实性缺陷 (@Nicolò Boschi, 2026-10-30)
  • bc5ea19 fix(reflect): the decision model’s cut and verdict are retried on a rate limit (#6237) — 限流时重试而不是丢结论 (@Nicolò Boschi, 2026-10-30)
  • 7b46a07 fix(reflect): every piece of evidence carries its dates, raw chunks included (#6236) — 证据(含原始 chunk)都带日期 (@Nicolò Boschi, 2026-10-30)
  • 9ed0958 feat(knowledge): show the images behind a knowledge page’s evidence (#6217) — 知识页证据背后的图片可见 (@Nicolò Boschi, 2026-10-30)
  • 299cc80 feat(llm-requests): 说清保留多少天、按小时 24h 图表、可按模型或操作拆分 (#6222) — LLM 请求留存的可见性 (@Nicolò Boschi, 2026-10-30)
  • 0b45cb9 feat(llm-trace): opt-in 开关,随文档一起删除其请求历史 (#6218) (@Nicolò Boschi, 2026-10-30)
  • 8c676c2 fix(startup): 启动时的 LLM 探针加超时上限 (#6219) — 繁忙的后端不再拖住或搞挂启动 (@Nicolò Boschi, 2026-10-30)
  • d0855e6 perf(lint): lint.sh 快 5–10 倍,检查项不变;顺带修掉 reflect done() 崩溃 (#6199) (@Nicolò Boschi, 2026-10-30)
  • dd250e6 fix(retain): 无 UTC 偏移的 read time 按内容所在时区解析而非 UTC (#6208) (@Nicolò Boschi, 2026-10-30)
  • a461a00 fix(embeddings): 本地 embeddings 跑在固定线程池而非默认执行器 (#6110) (@Nicolò Boschi, 2026-10-30)
  • b801b69 fix(entities): 并发删除与编辑同一条记忆时保持 mention_count 精确 (#6233) (@Nicolò Boschi, 2026-10-30)
  • ca09078 fix(llm): 向 Responses-API provider 发送图片与文件时使用 Responses 形态 (#6172) (@Nicolò Boschi, 2026-10-30)
  • 81ec395 fix(anthropic): 注入的 schema 缓存在独立的 system block (#6187) (@Nicolò Boschi, 2026-10-30)
  • daba7e6 feat(retain): 为 vision slot 分离 reasoning effort 与调用设置 (#6210) (@Nicolò Boschi, 2026-10-30)
  • ee51c8e fix(coding-agents): pi 的 custom-message 运行不再抛错;auto-update 读取 npm 12 (#6214) (@Nicolò Boschi, 2026-10-30)
  • #6228 consolidation 可能覆盖另一主题的 observation 并丢失其事实(作者自报)
  • #6231 畸形输入返回 500 而不是 4xx:非 UUID 的 directive id、越界的 directive priority、retain 之外的 NUL 字节
  • #6230 setup-hooks.sh 把每个 worktree 的 hook 指向「最后一次跑 npm install 的那个 worktree」
  • #6234 社区请求:hindsight-php 集成(PHP 客户端 + Laravel AI SDK memory)
  • #6232 [Hermes] 同一轮内可选的记忆抽取(auto-retain)

社区讨论 / 行业方向:

信号观察:

  • 本期的主线从「性能与工程」转向「记忆正确性」。 上一期的重点是 provider 兼容(放弃 native tool calling)、托管版叙事、启动探针;本期是「决策模型不写 observation 正文」「consolidation 覆盖别的事实」「限流丢结论」「证据没带日期」——记忆系统的 bug 开始以「记住的东西是错的」而非「慢」的形式出现。
  • 证据链被反复加固:每条证据带日期(含原始 chunk)、知识页能显示证据背后的图片、reflect 的 alias 不再被当成引用(#6215)、LLM 请求留存可按模型/操作拆分并按天保留。
  • 可观测性进入「用户可配置」阶段:随文档删除请求历史是 opt-in 开关而非默认行为——这既是对隐私的响应,也是对之前「请求历史被文档删除误删」(#6221)的修复。
  • 社区侧仍以集成请求为主:本期新 issue 里最具体的两条是 PHP/Laravel 集成与 Hermes 同轮抽取,第三方集成的语义错配仍是主要外部摩擦。
  • 上游计数口径:新 PR 20 / 合并 PR 25 / 新 issue 13 / 关闭 issue 40 —— 关闭数是新增数的三倍,维护者在清历史欠账。

earendil-works/pi

AI agent 工具包:统一 LLM API、agent loop、TUI、coding agent CLI | stars: 119027 | open issues: 314 | 默认分支: main | 最近 push: 2026-10-30T23:19:33Z

近 N 周 release 重点:

  • 窗口期内无新 release(最近一次 v1.4.0,2026-10-21)
  • packages/chord/CHANGELOG.md 的 [Unreleased] 段本期大幅扩张(breaking / added / changed / fixed 四段),是当前最主要的变更载体

其他重要 commits / PRs:

  • a14cdf9 feat(chord): v2 slice 7c, plugins component and per-plugin load and reload — 插件目录发现、用 esbuild 构建 facet、vm.Script 求值、插件栈追踪映射(mapStack)、reload 跨 host 铺开;插件 setup/factory/声明失败时在 load 时被剔除({ failed })、在 reload 时保留旧代码 (failed in the report),并有「provider 保留旧版时 consumer 也保留旧版」的闭包规则 (@Mario Zechner, 2026-10-30)
  • 4b535d5 feat(chord): slice 7b, reload in the kernel (@Mario Zechner, 2026-10-30)
  • f849799 / 9e4868a / 918c6ff Chord v2 slice 10 规格草案三轮推进 —— HTTP 方向 D1–D8、RouteHandle.retry、design §23 回折;spec review R1–R6 折叠、不自动重启 worker、app kit 可被插件改造 (@Mario Zechner, 2026-10-30)
  • d280e1f feat(durable): beforeProviderRequest generation hook (#11619) — 在发给 provider 之前插一道生成钩子 (@David Brailovsky, 2026-10-30)
  • 8bc94b1 feat(coding-agent): 新增 PI_SELF_UPDATE_COMMAND 与 selfUpdateCommand,pi update 自更新 (@Petr Houška, 2026-10-30)
  • c2760d3 fix(coding-agent): 只有当包管理器确实拥有该安装时,pi update 才显示它的名字 (#11628) (@Petr Houška, 2026-10-30)
  • 79006f0 fix(durable,coding-agent): 工具搜索支持 Unicode 词切分 (#11037) (@xu0o0, 2026-10-30)
  • cc44fa2 / e033f25 / c7372af 工具搜索排序:工具名权重高于描述;匹配更多查询词的排前;与 coding agent 的排序保持一致 (#11625、#11632、#11631) (@Petr Houška, 2026-10-30)
  • 9376c8d fix(coding-agent): 向扩展渲染器传 host 的按键绑定提示 (#11630) (@Petr Houška, 2026-10-30)
  • 35dfa75 fix(durable): idle 检查与 wake() 不再每次提交都全量扫描 (@Mario Zechner, 2026-10-30)
  • e5c6182 feat(durable): 提交分组与批量 Storage.commit (@Mario Zechner, 2026-10-30)
  • 50af8c1 refactor(chord): slice 6a–7b 的简化审计 (@Mario Zechner, 2026-10-30)
  • 2a46c42 docs(coding-agent): 文档化「恢复的会话用哪个工作目录」(#11617)(@Christian Klotz, 2026-10-30)
  • 6454d07 fix(coding-agent): WSL 互操作辅助从 / 启动并报告外部编辑器失败 (#11627) (@Petr Houška, 2026-10-30)
  • #11610 compaction 重放带签名的 thinking 块导致硬 400 重试循环(见下)
  • #11599 RPC 模式下异步 ctx.shutdown() 无法退出会话空闲进程
  • #11604 chord:OutputBuffer 只剥掉 ESC、留下 ANSI 颜色码
  • #11602 自动重试时,branch summary 会重放被省略的 assistant 内容
  • #11600 全屏模式下 sticky 编辑器在滚动或流式输出时仍显示上一次提交的 prompt
  • #11618 OpenAI 路径在同款 coding 任务上比 openai-codex 更慢
  • #11598 perf(tui): transcript 虚拟化、全屏布局惰性 resize(Philogag)

社区讨论 / 行业方向:

信号观察:

  • Chord v2 进入了「以规格文档为主、以代码为辅」的阶段:本期 28 个提交里约 12 个是 slice 10 的规格草案与 review 折叠,代码实现只落地了 7b/7c 两个 slice。「先把语义写清楚再写实现」是这条线的既定节奏。
  • 插件模型被设计成「失败即降级而非全盘失败」:load 时剔除坏插件、reload 时保留旧代码、并有 consumer 侧的闭包规则——这是把「插件生态」当作一等公民的工程代价,与 opencode 本期同一方向(plugin.use 策略、plugin.load 的失败列表)形成对照。
  • durable 的性能债在继续被量化清理:idle 检查不再每次提交全量扫描、提交分组与批量 commit、delta tracker 的 WeakRef 优化(20 万次小改动从提升 47.5 MB 降到 2 MB)——长会话性能是这条线最持续的欠账。
  • compaction 正在成为共同的失败面:#11610 显示压缩后的重放会让 Anthropic 的签名 thinking 块失效,而重试逻辑会把完全相同的坏上下文重发 8 次。「压缩」与「重试」两个机制在错误处理上互相放大了。

agegr/pi-web

pi coding agent 的 Web UI | stars: 7929 | open issues: 11 | 默认分支: main | 最近 push: 2026-10-29T13:25:43Z | 主页: (无)

近 N 周 release 重点:

  • v0.13.0(2026-10-29T13:28Z)— 最近一次发布,位于本报告窗口起点之前
  • 窗口期内无新 release

其他重要 commits / PRs:

  • 本期 0 个提交(最后一次提交是 2026-10-29T13:25Z 的 v0.13.0 发布)
  • #1469 feat(side): 从当前会话 fork 出 side chat(/side)(@dingxiaobo,2026-10-30T22:41Z)
  • #1467 feat(settings): 把 General 的聊天偏好保留在服务端(@dingxiaobo,2026-10-30T21:03Z)
  • #1471 文件查看器默认对 prose 文件做换行(@brynne8,2026-10-31T00:25Z)
  • #1470 fix(chat): 无 block 的 assistant turn 不再渲染任何内容(@brynne8,2026-10-31T00:20Z)
  • #1462 fix(directory-picker): 文本拖拽结束在遮罩上时不关闭选择器(@jidekaixin2dian,2026-10-30T04:00Z)
  • #1465 GET /api/auth/providers 每 10 分钟重建整张扩展图(冷启动 13 秒),且发生在一个只读请求上(@flying-dragon-ai)
  • #1463 功能请求:文件面板的行内 ⋯ 菜单(重命名/移动/删除)与拖动移动(@NightxRain)
  • #1468 功能请求:side chat(已被 #1469 认领实现)

社区讨论 / 行业方向:

  • 窗口期内未检索到针对 pi-web 的外部报道或讨论
  • 社区侧信号全部体现在仓库内:5 个新 PR 来自 3 位外部贡献者(dingxiaobo、brynne8、jidekaixin2dian),其中两人是连续两天出现的新面孔

信号观察:

  • 「维护者不在、外来 PR 在堆积」的形态再次出现,但方向反转。 上一期记录的是「社区提交无人接」;本期是「社区提交在涌入,但维护者自 v0.13.0 发布后 35 小时未动,5 个 PR 0 合并」。上一期那条「停更了?」的公开质疑之后,贡献者反而更多了。
  • 贡献内容从修 bug 转向加功能:side chat、sidechat 偏好上服务端、prose 换行——外部贡献者正在替代维护者做产品决策。
  • 性能问题开始有精确数字(#1465 的「每 10 分钟重建扩展图、冷启动 13 秒、在只读请求上同步做」)——这类描述方式比「很慢」更容易被维护者接受。
  • 5 个新 issue 里有 2 个是「误创建,删除请求」(#1464、#1466),open issues 从 3 涨到 11,但真实问题只有 3 个。

yxc023/yxc023.github.io

本调研的发布载体(博客仓库)| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-30T00:38:44Z | 主页: (无)

近 N 周 release 重点:

  • 窗口期内无 release。

其他重要 commits / PRs:

  • c666669 auto(reports): 同步 daily-research 2026-10-30 —— 本期唯一提交,为上一期报告的自动同步 (@杨晓辰(小德) & 再探再报, 2026-10-30T00:38Z)
  • 窗口期内无新 PR、无新 issue(0 / 0)

社区讨论 / 行业方向:

  • 无(窗口期内无新讨论、无外部报道)

信号观察:

  • 该仓库是本调研的发布载体,本期无独立信号

跨项目观察

  1. 「Session 是一个有身份、有资产、有生命周期的对象」在四个仓库同时落地。 opencode 把桌面端 terminal 迁到会话级持久 PTY,与服务端共享、跨重启保留、重命名也保留(v2.2.4 #60346、#60329);ACP 同一天新增 session/archive + session/unarchive、session/status、session/set_title(#2736、#2735、#2734);pi 的 durable 在做提交分组、批量 commit 与 idle 检查优化;hindsight 则是跨会话的记忆层。会话从「一串消息」升级成了产品里的第一类实体,而各家给它配的能力各不相同:opencode 给它终端,ACP 给它归档与标题,pi 给它存储与唤醒。

  2. 上下文压缩(compaction)成为三家共同的主战场,而且都是「上下文被算错了」型故障。 opencode 让 compaction.buffer 接受上下文窗口的百分比(v2.2.5 #60647)、把压缩提示词截到窗口上限(#60660)、让 LiteLLM 溢出错误触发压缩而不是终止会话(#60692);pi 的 #11610 显示压缩切点落在带签名 thinking 块的 assistant 消息上,重放后 Anthropic 路径直接硬 400,而重试循环把同一份坏上下文重发 8 次。压缩的问题不再是不压缩,而是压缩之后重放的合法性。

  3. 编译/运行时默认值正在成为跨产品风险源,而不只是单仓库的 bug。 opencode 的 Bun 默认 X25519MLKEM768 后量子密钥交换把 ClientHello 撑到 1741 字节、超过 MSS 1360 而被 DPI 分片丢弃——同一天约 20 个 issue 报 ECONNRESET,用户实测 curl 与 Chrome/Edge 在同网络下正常,说明问题出在「谁是 TLS 发起方」而不是「谁在用这个站点」;同一族问题在 9 月就以「中国大陆 Cloudflare 边缘 IP 段被 TCP reset」(#50735)的形态出现过。agent 客户端把浏览器之外的 TLS 栈引入自己进程的那一刻,也就继承了那套栈在真实网络上的全部兼容性债务。

  4. 「协议在加速,采纳没跟上」的落差本期扩大到功能级别。 ACP 一天 56 个合并 PR、5 个新不稳定方法、1 个 RFD 落地为 schema,但社区仍是 0 issue、0 discussion、全部由 benbrandt 一人提交;同一时期 pi-web 一天进来 5 个来自 3 位外部贡献者的 PR,0 个被合并——一个协议的制定端在高速演进、它想连接的两端却一个没人讨论、一个没人接手。本期这个落差的形状变了:以前是「没人用」,现在是「有人在用但接不上」。

  5. Agent 产品之间开始互相接管对方的登录态与运行时。 opencode v2.2.3 把 Claude Code 的 claude auth login 直接做成内置 provider(#58782),v2.2.4 又加上引导安装与连接自检(#60603);hindsight 同期修了「pi 的 custom-message 运行不再抛错」与「auto-update 读取 npm 12」(#6214)。「谁拥有用户的登录态」正在从各家私有实现,变成可以被第三方调用的公共资源——同时也变成合规与稳定性上互相牵连的地方。

  6. 性能债的清理方式变了:从「优化热路径」转向「给可见性加配置」。 hindsight 这期的性能工作不在热路径,而在留存与可观测:LLM 请求记录说明保留多少天、按小时出 24h 图、可按模型或操作拆分(#6222),并允许随文档一起删除请求历史(#6218);pi 同期在做工具搜索排序(工具名权重高于描述、Unicode 词切分、匹配词更多的排前)与 delta tracker 的内存优化(20 万次小改动的提升从 47.5 MB 降到 2 MB)。长会话的真实成本已经不在单次请求,而在会话存续期间持续产生的中间数据——这些数据开始需要「保留策略」和「删除权」。

元信息

  • 报告生成时间: 2026-10-31T00:30:00Z
  • 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段,自 2026-09-08 起连续 21 期未变)
  • 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-31T00:30:00Z(约 52.6 天);本期新增内容全部落在 2026-10-30T00:30:00Z 之后的约 24 小时
  • 数据源: GitHub API(gh CLI + Search API)+ mmx web search + npm registry(registry.npmjs.org)+ 仓库内 CHANGELOG / blog 目录校验
  • API rate limit 剩余: 4927 / 5000(core,抓取完成后查询;Search API 单独限流,计数请求已分批 sleep)
  • 抓取结果: 6 / 6 仓库 × 4 endpoint 全部成功(opencode 的 Discussions endpoint 返回「Discussions are disabled for this repo」,已跳过);本期增量统计口径为 created:>2026-10-30T00:30:00Z / merged:>2026-10-30T00:30:00Z 的 Search API 计数(opencode:182 新 PR / 117 合并 PR / 166 新 issue / 133 关闭 issue / 121 commit;pi:17 / 13 / 19 / 63 / 28;pi-web:5 / 0 / 5 / 2 / 0;hindsight:20 / 25 / 13 / 40 / 26;ACP:59 / 56 / 0 / 0 / 56;blog:0 / 0 / 0 / 0 / 1);本期新增 release 为 opencode v2.2.3 / v2.2.4 / v2.2.5 与 ACP Rust Crate v1.14.0 / Schema v1.28.0 / Schema v2.0.0-alpha.11(npm @opencode/cli latest 已是 2.2.5、@opencode/pty 0.4.0,而 opencode-ai 仍停在 1.19.5,双发布线仍未收敛);pi / pi-web / hindsight / ACP 本期无新 release(hindsight 仅发 coding-agents 子包 v0.8.4,未走 GitHub Release 通道)

评论