2026 2026年10月16日 32 min · 9.4k chars by yxc023

GitHub 调研周报 2026-10-16

扫描窗口:2026-09-08T09:23:29Z → 2026-10-16T00:32:07Z(共 37.6 天)| 基准来源:上次报告 2026-10-15

2026-10-16 GitHub 调研周报

扫描窗口:2026-09-08T09:23:29Z → 2026-10-16T00:32:07Z(共 37.6 天)| 基准来源:上次报告 2026-10-15

仓库范围:config/repos.yaml 中 6 个仓库。基准时间字段自 2026-09-08 起连续 8 期未变,窗口逐日变宽,本期新增内容全部落在 2026-10-15T00:34:46Z 之后的约 24 小时。这一天的形状是「发布日」——pi v1.3.0、opencode v2.0.30、pi-web v0.12.2、hindsight 50,000 stars 博客,四件事挤在同一段 24 小时里;而 ACP 恰好在这天沉默了,只有 4 个 registry bot commit。

本期速览

  • earendil-works/pi: v1.3.0 发布(10-15 19:17:33Z),五条 headline 里有三条是关于「不要弄坏缓存 / 不要弄脏上下文」的:/share 的上传目的地可选 auto / gist / radius(#10870);在 OpenAI GPT-6 上会话中途改 thinking level 保住 prompt cache(#10853);kimi-coding 改走 OpenAI Chat Completions(https://api.kimi.com/coding/v1,#10720),使「会话中途新增的工具不再让 prompt cache 失效」。另两条是上下文卫生:切换模型时丢弃上一个模型的 thinking,而不是当纯文本发给新模型(#10995)、恢复的会话保留其原有 active tools(--tools +name/-name 叠加而非替换)。

  • earendil-works/pi: 发布当天 headline 就被打了一枪,而修复方向和发布说明指向相反。 #10992:~/.pi/agent/models-store.json 一旦从 https://pi.dev/api/models/providers/kimi-coding 拉到新鲜条目,所有 kimi-coding 模型调用 100% 失败于 404 resource_not_found_error——根因是内置 provider 硬接 Anthropic Messages(SDK 追加 /v1/messages → /coding/v1/messages,能通),而远端 catalog 条目写的是 OpenAI 协议(baseUrl 已含 /v1),两条路径对 /v1 的归属互相矛盾。#10985 是同一个根因的 Nix 表现(构建失败:stale Kimi catalog 仍用 anthropic-messages)。#11003 是另一个 P0:google-shared.ts 在 Gemini 4 模型未填 thinkingLevelMap 时,off 仍发 thinkingBudget: 0、minimal 仍发非零值,Vertex 直接 400。

  • earendil-works/pi: 上期 #10959 的跨主机信任边界漏洞在 26 小时内被修掉。 9a3ca68「fix(chord): remote references refuse a foreign ctx」由 Mario Zechner 提交——远端 Chord 引用现在拒绝来自无关主机的 Ctx,与本地引用的 invalid/foreign_ctx 行为对齐。同日还有 4a5d372 把 OutputBuffer 与 Progress 移到 @earendil-works/chord/output,以及 #10937(@christianklotz)为 pi-durable 加了 namespaced SQLite storage。

  • earendil-works/pi: 新功能主动撞上了终端协议。 #11017:pi v1.1.0 刚上线的 OSC 7501 program status(终端/agent 仪表盘据此知道 pi 正在工作 / 卡在对话框 / 已完成 / 失败)在 iTerm2 3.7.5 开始支持后与 pi 自己的 OSC 133;A transcript 导航标记冲突——pi 在每条 transcript 消息前插入该标记(重绘时也插入),而 OSC 7501 的 lifetime 规则要求在 133;A 处清除 working/blocked 记录。结果是终端状态在没有对应 agent 生命周期事件的情况下自行丢失。

  • anomalyco/opencode: v2.0.30 发布(f40dc43,10-15 19:48:32Z;release notes 记在 dev:CHANGELOG.md,GitHub Releases 仍停在 v1.19.x)。三个 headline:每轮改动的文件(Settings → Preferences → Timeline → Changed files,显示行数与可展开 diff,#55064)、TUI diff 停靠面板(会话内 /diff 默认在侧栏打开,f 在侧栏与全屏间切换,窄终端自动降级,#47152/#55574/#55780)、键盘 Tab 导航(Option+↑/↓ 切 session tab,加 Shift 跳到未读,#54277)。Core 里最重的一条是移除已下线的 session-sharing 后端与 /share 命令(#55716)。

  • anomalyco/opencode: 两小时内落了一个 12 个 PR 的 TUI 对话框重构。 James Long 在 10-15 14:46Z → 17:00Z 连续合并 DialogHeader / DialogFooter / DialogLayout / DialogPrompt、dialog inset 常量、统一 side padding、DialogSelect 行渲染拆组件、把 inset 布尔标志换成 cell 计数、/fork pending view 可靠显示等——这是对「对话框各自定义间距」的一次集中收编,与 v2.0.30 的 docked diff 是同一天的同一件事(TUI 的呈现层正在被统一)。

  • anomalyco/opencode: OpenCode Go / Zen 的订阅层成了本期最吵的新缺陷簇。 #55856「Only free models work with GO」(2.0.30 报 Insufficient account funds)、#55862「OpenCode Go Workspace - Failed to load usage」、#55835「Go rolling usage reaches 100% shortly after subscription renewal」、#55816「Zen 免费模型:请公布当前免费额度并在 429 里返回」、#55857(mimo-v2.6-flash / v2.5 在 Go 端点宣告支持 image input 但每次都被 400 拒)。bot 的对策 8db638c 也很说明问题:「only free OpenCode models are available」时默认切到 big-pickle。

  • anomalyco/opencode: 两个「声明了但没生效」在同一天被报出来。 #55861(2 条评论):opencode service set disabled true 之后,桌面端仍然通过 serve --service 拉起托管 CLI(http://127.0.0.1:49374),退出应用后进程仍在——disabled 标志被完全忽略。#55864(6 条评论):v2.0.29 刚上线的 OpenTunnel 远程配对在 macOS v2.0.30 上隧道 profile 文件齐全(certificate.pem / chain.pem / private-key.pem / token / tunnel.json,无 pending.json)却永远拿不到 HTTPS URL,opencode pair --remote 以 Timed out waiting for the remote tunnel 收场;报告者明确指出**「文件存在本身不能证明证书或远程隧道当前有效」**。

  • anomalyco/opencode: 权限继承出现了一个真实的越权路径。 #55814:一个 edit 被拒的 session(例如 plan 主 agent,出厂策略只允许改 ~/.opencode/plan)只要把活儿委派给 general 子 agent 就能拿到完整写权限——子 session 跑自己的权限策略,父 agent 自己的 write/edit 仍然返回 permission_denied,但 12 个被跟踪的文件已经被改了。作者提出三种可能契约(子继承父的有效策略 / 首次子写入在父 session 触发审批 / subagent 工具拒绝启动可写 agent)。

  • anomalyco/opencode: 有社区 PR 提议把 OpenCode 整体改名。 #55876(@sammyjain95,10-15 22:39Z,未合并):feat: rebrand OpenCode as Ember with desktop-first UX——配置目录改 ~/.config/ember、plain-English system prompt、Electron app ID 改 ai.ember.desktop.*、ember:// deep link、Auralys metainfo、不再使用 OpenCode 更新源,外加首启三步向导、API key 走 desktop IPC 校验、/spend 花费视图。PR 正文完全没填项目模板(“Closes #” 为空、“How did you verify” 为空),模板里明写「贴大段 AI 生成描述的 PR 会被忽略或关闭」。

  • vectorize-io/hindsight: 本期最大的单日代码量(25 个 commit / 23 个合并 PR,nicoloboschi 几乎包办),主题是引入 “decision model”。 一条链完整落地:#5607「一次 decision-model 配置 + 每个操作的覆盖」、#5613 把 Cloudflare Clef 与 OpenAI Decisions API 作为 decision-model provider、#5284「配了 decision model 就用它排序」、#5632 重构为「用一次 decision-model pass 排序,并告诉它提问的日期」。#5578 同时把 LLM request extension 做成「server-side 逐次调用选择 LLM 与凭据」。

  • vectorize-io/hindsight: 上期报告的「静默零结果」在同一天被批量修掉,并开始建发现它们的工具。 #5615 修掉 #5565(抽取回复里含 “no facts” 的错误散文被当成零事实接受);#5631 修掉 #5202(reflect 拿到错误形状的已完成文档时重问一次而不是让整次 refresh 失败);#5616 遇到 Anthropic refusal 的 stop_reason 直接快速失败而不是当作 invalid JSON 重试;#5626 交付 consolidation eval suite。但 #5612 仍是同一类且仍 open:OpenRouter 返回 HTTP 200 + finish_reason: "error"(无 tool_calls、0 可见输出 token、reasoning token 非零)时,call_with_tools 把它当成「模型没选工具」,一次瞬时传输失败被当作模型行为,且 forced_empty_retry_used 是整个 loop 共享的而非按 step 记录。

  • vectorize-io/hindsight: 50,000 GitHub stars 里程碑博客发布(#5625,@benfrank241,10-15 15:53Z):仓库年龄 350 天,forks 6,077,contributors 288,merged PRs 3,042,releases 73——「平均每 4.8 天一个 release,持续了 11 个半月」。同周还有 v1.0(架构与 API 稳定,「API 从此是一个承诺」)与 Hindsight Memlake(对象存储记忆引擎,声称 1 亿条记忆 p99 < 100ms,属 Enterprise,Hindsight Cloud 大部分已在其上;博客同时说明单个 bank 少于约 5 万条记忆时 Postgres 仍是正确答案)。

  • agentclientprotocol/agent-client-protocol: 上期「八小时 13 个规范 PR」之后,今天是彻底的规范静默——4 个 commit 全部是 docs: update registry agents,0 个新 issue,tag 仍停在 v1.11.0,release PR #2379 仍未合并。 但落地的两个 RFD 来自不同的贡献模式:#2404 prompt_suggestions session update,以及 #2407 replay_complete 信号——后者附带了实测数字。

  • agentclientprotocol/agent-client-protocol: #2407(@nikita-ashihmin,仍 open)把「重放什么时候算完」变成一个有数据支撑的问题。 session/load(v1)与 session/resume + replayFrom: {type:"start"}(v2)把历史作为 session/update 通知重放后才作答,而 Agent 常常在重放结束与作答之间做重活,于是 Client 拿到了一份完整历史却无法确信其完整。在 JetBrains Client 上实测:claude-agent-acp 的历史在 0.04–0.9s 即完整,作答在空闲机器上晚 0.5–1.6s、冷启动晚 4.3–4.7s、机器负载高且多个 Agent 同时启动时晚 8–9s;codex-acp 按每页 100 条、每页一次 RPC 读历史,所以 debounce 会把 transcript 切成几次渲染。提案是发一次 replay_complete 更新(空历史也发),前面全是历史,重放期间的实时更新排到它后面;没有 marker 就意味着重放被截断。

  • agentclientprotocol/agent-client-protocol: #2404 提议的 prompt_suggestions 明确把「用户仍是 transcript 里每条 prompt 的作者」写成规范。 接受建议只填入 composer、绝不发送;空列表撤回报价;不得出现在 replay 或 session/load 里;一轮以无建议结束是正常的,Client 不得等待。与 notices RFD 不同,它没有 fallback 通道——v1 用 ClientSessionCapabilities.promptSuggestions 门控,理由是「让 Agent 判断向模型要一次预测是否值得」。

  • agegr/pi-web: v0.12.2 发布(10-15 15:15:42Z,45 个 commit):8 个新主题按色块挑选(#1269,浅色/深色按色调上下对齐,高对比主题文字达 WCAG AAA)、终端可单独切深浅色(#1268/#1270,切换不中断 shell)、每轮回答显示耗时(#1222)、缓存与费用提示(#1265/#1267,对齐 pi 的 showCacheMissNotices,含缓存未命中重计费 token、缓存预热、压缩、分支摘要,以及 Anthropic 丢弃思考块)、agent 切换器显示每个 subagent 的时长 / token / 费用与侧栏开关、归档按项目折叠与批量处理、拖拽上传到文件树子目录(#1192)、设置里改模型上下文窗口(#1221)、30 多种新语法高亮(#1197/#1243)。

  • agegr/pi-web: 性能条目全部指向「不要一次性读整个文件」。 #1259/#1264 会话刷新只读新增的尾巴(原 issue 描述:会话文件上百 MB 时重扫整个 .jsonl 把 Next.js event loop 冻住,而 agent 还在跑);#1196 思考内容分段渲染(流出几 MB 也不卡);#1226 装多个扩展时打开设置不再重载所有扩展;#1193 从浏览器 payload 里去掉 provider 签名。对应的新 issue 仍在同一方向:#1256 活跃会话期约 1GB RSS 导致 UI 无响应 / GC 前离线。

各仓库详情

anomalyco/opencode

通用开源编码 agent,MIT,提供 TUI、桌面端、Web 与共享后台服务| stars: 213922 | open issues: 4336 | 默认分支: dev | 最近 push: 2026-10-16T00:28:10Z | 主页: https://opencode.ai

近 N 周 release 重点:

  • v2.0.30(2026-10-15)— 每轮改动文件 / 停靠式 TUI diff / 键盘 Tab 导航

    • Changed Files by Turn:Settings → Preferences → Timeline → Changed files,显示每个已完成 turn 的改动文件、行数与可展开 diff(#55064)
    • Docked TUI Diffs:会话内 /diff 默认在侧栏打开,f 切全屏,文件树与 patch 布局按终端宽度自适应(#47152、#55574、#55780)
    • Keyboard Tab Navigation:Option+↑/↓ 切 session tab,加 Shift 跳未读 tab(#54277)
    • 移除已下线的 session-sharing 后端与 /share 命令(#55716)
    • 配置 schema 改为同时接受 V1 与 V2 两种形状以支持迁移(#55524);instructions 支持本地 glob 与远程 URL 并随配置刷新(#55539)
    • 一组 MCP 兼容性修复:跳过 server 未宣告能力时的 catalog / codemode 调用(#55474、#55618)、宣告符合规范的 elicitation capability(#53196)、把 *.localhost 当作 MCP OAuth token 端点的 loopback(#55627)、恢复 TinyFish web search 的已认证 MCP 会话(#54730)
    • 修复 compaction 输出上限按实际发出的请求拟合(#55613)、Windows 后台服务默认端口改 45278(#55547,来自上期 #55547 的 Hyper-V/WinNAT 保留块问题)
    • 完整 release notes: https://opencode.ai/changelog
  • v2.0.29(2026-10-14)— 四个 headline 全在 desktop:Settings → Pairing 远程设备配对(OpenTunnel,#55306)、provider 账号管理(#54101)、撞输出上限自动续写(#53876)、触控板缩放与双指平移预览图片与 SVG(#54590)。本期新 issue 显示该版本的配对功能在 macOS 上实际不可用(见下)。

其他重要 commits / PRs(按重要性挑选 5–10 条):

  • 13263f3 项目(发布) — chore(release): publish the desktop app from beta (@Hona, 10-15 23:01Z,#55878)。桌面端从 beta 转为正式发布渠道。
  • 9e68770 项目(移除) — fix(infra): retire session sharing backend (@Victor Navarro, 10-15 17:42Z,#55716);配套 f0b8913 把 share domain 从 teams worker 交出(#55784)。v2.0.29 才上线的桌面端能力在 24 小时内被整段拆掉。
  • 07:00–17:00Z 项目(重构) — James Long 连续 12 个 PR 收编 TUI 对话框间距体系:DialogHeader(#55501)、DialogFooter(#55513)、DialogLayout 统一纵向节奏(#55519)、DialogPrompt(#55518)、dialog inset 常量(#55498)、统一 side padding(#55505)、DialogSelect 行渲染拆组件(#55517)、inset 布尔标志换成 cell 计数(#55582)、剩余 dialogs 迁到 DialogLayout(#55523)、prompt/integration 视图建于 DialogLayout(#55542)、/fork pending view 可靠显示(#55746、#55751)、剩余 dialog hints 改为 label-first(#55745)。
  • fc2fc59 项目(文档) — docs(go): launch Step 5 Preview in Go (@MrMushrooooom, 10-15 22:00Z,#55749)。OpenCode Go 订阅走到 Step 5 Preview,同日 #55856 / #55862 / #55835 报告它在实际付费用户上不通。
  • 8db638c 项目(行为) — fix(core): default to big-pickle when only free OpenCode models are available (@opencode-agent[bot], 10-15 22:05Z,#55852)。bot 对「可用模型」判定失败时的兜底。
  • 3aa26f1 项目(协议) — fix(core): advertise the spec-shaped MCP elicitation capability (@Don Bowman, 10-15 06:19Z,#53196)
  • ae8d59f 项目(修复) — fix(core): fit compaction output limit to the request actually sent (@Aiden Cline, 10-15 06:57Z,#55613)
  • b55f220 项目(安全边界) — fix(core): treat *.localhost as loopback for MCP OAuth token endpoints (@Aiden Cline, 10-15 06:39Z,#55627)
  • 7a4a032 项目(修复) — fix(core): seed configured limits before model transforms (@Dante-dan, 10-15 22:26Z,#55778)
  • #55898 / #55895 项目(进行中) — fix(core): keep interrupted tool calls replayable for Anthropic (@Parker-Fawcett, 均未合并)。对应 #55886:服务重启打断一次工具调用后,下一次 Anthropic 请求失败于 tool_use.input: Input should be an object。
  • #55876 项目(未合并) — feat: rebrand OpenCode as Ember with desktop-first UX (@sammyjain95, 10-15 22:39Z)

社区讨论 / 行业方向:

信号观察:

  • OpenCode 的「发布」与「宣布」不再是同一件事。 v2.0.29 的四个 headline 中,远程设备配对(#55864)当天在 macOS 上被 6 条评论的报告确认不可用;桌面端从 beta 转正式(#55878)与被忽略的 service disabled 标志(#55861)同一天发生。
  • 一天 24 小时合并 58 个 commit,其中 12 个属于同一个人做的同一件事(TUI 对话框间距收编)。 呈现层的收敛速度明显快于行为层的收敛速度。
  • 新 issue 24 小时内 137 条(search API 返回上限 50 条已全部取回)。最集中的两组是 OpenCode Go / Zen 的额度与可用性(#55856、#55862、#55835、#55816、#55857)与 升级/安装路径(#55888 npm upgrade 跳过 postinstall 留下无效 opencode.exe、#55891 2.x 升级时旧 1.x 后台服务停止前创建的 session 被搁浅、#55897 V2 会话内换模型丢上下文)。
  • share 能力在 24 小时内经历「退役」:#55716 移除 session-sharing 后端与 /share 命令,而 v1.3.0 同一天给 pi 增加了 sessionShareDestination(gist / radius)。同一个「把 session 发出去」的需求,两个项目走向相反方向。
  • 权限模型的失败形态是「继承」而不是「判定」:#55814 报告的越权不发生在任何一次权限检查里,而是发生在父 → 子 session 的策略切换处。

earendil-works/pi

AI agent 工具包:统一 LLM API、agent loop、TUI、编码 agent CLI;MIT,Pi 生态的核心 harness| stars: 115465 | open issues: 350 | 默认分支: main | 最近 push: 2026-10-15T19:21:59Z | 主页: (仓库未填 homepage)

近 N 周 release 重点:

  • v1.3.0(2026-10-15T19:17:33Z)— 五条 headline 全部与「缓存与上下文卫生」有关

    • sessionShareDestination:/share 的上传目的地可选 auto、gist 或 radius(#10870,@vegarsti)
    • 在 OpenAI GPT-6 上会话中途改 thinking level 保住 prompt cache(用 API key 的情形)(#10853)
    • Kimi Code 走 Chat Completions:kimi-coding provider 改用 https://api.kimi.com/coding/v1 的 OpenAI Chat Completions(官方 Kimi Code 客户端所用协议),K3 / K3-256K / Kimi For Coding 现在接受会话中途新增的工具而不让 prompt cache 失效;models.json 覆盖 base URL 时必须包含 /v1(#10720)
    • 干净的模型切换:切换模型时丢弃此前模型产生的 thinking block,而不是当纯文本发送(#10995)
    • 恢复的会话保留其 active tools:--tools +name / -name 叠加在其上而不是替换
    • 另:内部 Pi 依赖钉到精确 release 版本,防止全新安装混装不兼容的包(#10865)
    • 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.3.0
  • v1.2.0(2026-10-12)— Breaking:发布 models / settings / keybindings / themes 的生成式配置 schema 到 https://pi.dev/schemas/*.schema.json(theme schema 迁移到 theme.schema.json,启动期加载的 theme 现在接受与后续 reload 相同的 schema 校验,#9880、#10751)

其他重要 commits / PRs(按重要性挑选 5–10 条):

  • 9a3ca68 项目(安全) — fix(chord): remote references refuse a foreign ctx (@Mario Zechner, 10-15 06:25Z)。上期 #10959 的直接修复:远端引用现在与本地引用一致地拒绝来自无关主机的 Ctx。
  • f7e3cb5 项目(新增) — feat(durable): support namespaced SQLite storage (@Christian Klotz, 10-15 13:02Z,#10937)
  • 4a5d372 项目(重构) — feat(chord,durable): move OutputBuffer and Progress to @earendil-works/chord/output (@Mario Zechner, 10-15 09:59Z)
  • 9113094 项目(修复) — fix(ai): drop thinking from other models instead of sending it as text (@David Brailovsky, 10-15 17:38Z,#11000)——v1.3.0 的 #10995 实现
  • a3f265b → 6a1f799 项目(折返) — 先 feat(ai): use Chat Completions for the kimi-coding provider(13:29Z),再 fix(ai): revert kimi-coding switch to Chat Completions(11:19Z,时间戳更早但落在同一提交序列)——两条提交相邻,最终由 #10720 落定
  • 4954d76 项目(发布防护) — feat: check the model catalog against the latest release before publishing (@David Brailovsky, 10-15 19:21Z,#11007)
  • d05a73f / eddebae 项目(Nix) — fix: keep the Nix model catalog pin buildable(#10985 的根因修复方向)、fix(coding-agent): append Node to PATH in the Nix wrapper
  • dc93991 项目(修复) — fix(ai): support off thinking level on Claude Haiku 5.5 and Opus 5 (@David Brailovsky)
  • 550f1f3 项目(可靠性) — fix(ai): retry "The service is temporarily unavailable" errors
  • a4f67eb 项目(修复) — fix(coding-agent): close own custom ui overlay (@Colin Mason, 10-15 18:50Z,#10999)

社区讨论 / 行业方向:

信号观察:

  • v1.3.0 的三条 headline 中有两条是「保住 prompt cache」。 这是从「模型能力」转向「计费效率」的明确信号:thinking level 可改、Kimi 走 Chat Completions、切换模型丢 thinking——三者都服务于不因会话内的正常操作而让缓存失效或重复计费。
  • 同一天 introduced 的 provider 变更被远端 catalog 覆盖掉(#10992)。内置 provider 与 pi.dev 远端 catalog 对同一个 provider 的协议与 base URL 归属不一致,而 catalog 是「更新一下就好」的动态输入。
  • Nix 打包是 pi 新特性最先崩的地方(#10985 stale catalog、Nix wrapper 的 Node PATH、model catalog pin 可构建性 #11007)。发布防护(发版前校验 catalog)是被真实故障推出来的。
  • 40 个新 issue 中最密集的是「静默降级」:#10998 grep 的路径 glob 静默返回 No matches found、#10988 max_tokens 被 4-chars/token 启发式夹到 305 而实际 prompt 只占窗口 48%、#10981 Opencode 自动从免费切到付费、#10989 mac CLI 频繁 fatal: 不是 git 仓库。
  • 新功能与终端协议的冲突已可复现(#11017,附最小协议复现脚本)。OSC 133;A 是 2025 年就有的 transcript 标记,OSC 7501 是 v1.1.0 才上线的——冲突直到 iTerm2 3.7.5 落地 7501 才显形。

vectorize-io/hindsight

Agent 长期记忆系统(Agent Memory That Learns),MIT,四类隔离记忆网络 + retain/recall/reflect/consolidate 循环| stars: 50054 | open issues: 178 | 默认分支: main | 最近 push: 2026-10-15T18:34:43Z | 主页: https://hindsight.vectorize.io/

近 N 周 release 重点:

  • v1.0.0(2026-10-13T14:08:48Z)— 本期无新 release,v1.0.0 仍为最新 tag
  • hermes 插件 v1.2.3(10-15 16:13Z,d952b6e):fix(hermes): default observation_scopes to shared so observations merge across sessions(#5629)

其他重要 commits / PRs(按重要性挑选 5–10 条):

  • 0794515 / 619ae53 / 79303b6 / 9a499b1 项目(新增能力) — 「decision model」一条链:#5607「一次 decision-model 配置 + 每个操作的覆盖」→ #5613「Cloudflare Clef 与 OpenAI Decisions API 作为 decision-model provider」→ #5284「配了 decision model 就用它排序」→ #5632「重构为用一次 decision-model pass 排序,并把提问的日期告诉它」
  • c481358 项目(扩展点) — feat(extensions): LLM request extension — choose the LLM and credentials of each call server-side (#5578)
  • d80927b 项目(静默失败) — fix(retain): fail a chunk whose reply is not JSON, even 'no facts' prose (#5615,修 #5565)
  • a75aa09 项目(静默失败) — fix(reflect): re-ask a done document of the wrong shape instead of failing the refresh (#5631,修 #5202)
  • 5546762 项目(工程化) — feat(evals): consolidation eval suite (#5626)。用 eval 套件替代逐个 issue 打补丁。
  • 5d4dcb5 项目(可靠性) — fix(anthropic): fail fast on refusal stop_reason instead of retrying as invalid JSON (#5616)
  • a8866f4 / 82ad30e 项目(一致性) — fix(retain): write a held batch when the producer is blocked on the memory budget (#5620);fix(api): re-check mental-model edits under the row lock so the vector matches the stored text (#5619)
  • 761c79a 项目(数据完整性) — fix(consolidation): keep an UPDATE when the same response deletes that observation (#5577,修 #2550)
  • 20fbc3f 项目(重试) — fix(litellm): retry on the HTTP status LiteLLM maps, not message keywords (#5604)
  • 466c2b6 项目(里程碑) — blog: 50,000 GitHub Stars (@Ben, 10-15 15:53Z,#5625)

社区讨论 / 行业方向:

信号观察:

  • 25 个 commit / 23 个合并 PR 全部围绕同一个人(nicoloboschi)的一组主题展开,其中至少 5 个 PR 是在修上期报告里已点名的 issue(#5565、#5202、#2550、#5501 系列)。这是「按 issue 列表批量清账」的一天,而不是探索性的一天。
  • decision model 的引入在架构上是把「排序」从检索引擎里拿出来交给一个 LLM。 #5632 特意把「提问的日期」喂给排序 pass——说明检索的正确性已经开始依赖时间语义,而不只是相似度。
  • #5612 代表的一类失败仍未被 eval 套件覆盖:HTTP 200 + finish_reason: "error" 被读成「模型没选工具」,瞬时传输失败被当作模型行为处理;且 forced_empty_retry_used 是整个 reflect loop 共享的一次性重试,而非按 step 记录。
  • 29 个新 issue 中有一整块是 hermes 插件的批量自 triage(#5594–5603 连续、#5583),内容覆盖 HINDSIGHT_BANK_ID 被忽略、bank_mission 从未发往 bank、append-mode retain 用在不存文档正文的 bank 上、/version 检查无 User-Agent 且读无上限 body——插件与宿主之间的配置传递仍有一条未收口的通道。
  • 新 issue 里出现了一类「操作失败被当作完成」:#5591(retain 失败被当完成、永不重发,对话内容丢失)、#5589(chunk 抽取失败仍提交 document tracking 并覆盖 original_text,留下 0-unit 文档)、#5590(自动 consolidation 在 API 进程里跑到 32 个并发 recall 并在重排队时忽略 enable_auto_consolidation)。这与上期的「抽取失败 vs 抽取为空不可区分」是同一条线索的第三段。

agentclientprotocol/agent-client-protocol

连接任意编辑器与任意 agent 的协议(LSP 之于编辑器之于编程 agent)| stars: 4451 | open issues: 38 | 默认分支: main | 最近 push: 2026-10-16T00:30:40Z | 主页: https://agentclientprotocol.com

近 N 周 release 重点:

  • 窗口期内无 release。 tag 仍停在 v1.11.0(2026-10-09),release PR #2379 自 10-13 起仍未合并。本期 4 个 commit 全部是 docs: update registry agents(acp-release-bot,07:29Z / 13:30Z / 18:22Z / 00:30Z)。

其他重要 commits / PRs(按重要性挑选 5–10 条):

  • 5ab891a / 7855bab / 014b139 / 39ae6a2 项目(registry) — 四次 docs: update registry agents。本期 registry 的实际变化是版本号推进:OpenCode 1.19.0 → 1.19.1、Factory Droid 0.242.0 → 0.242.1。
  • #2407 项目(RFD,仍 open) — docs(rfd): propose a replay_complete signal for session load (@nikita-ashihmin, 10-15 22:46Z)
  • #2404 项目(RFD,仍 open) — docs(rfd): propose a prompt_suggestions session update (@nikita-ashihmin, 10-15 13:50Z)
  • #2406 项目(生态) — docs(clients): add Alchemist Coder to Desktop and Web (@Alekla0126, 10-15 20:14Z)
  • #2394 项目(RFD,仍 open,上期已记录) — docs(rfd): define a session's last change, and how to catch up to it (@nikita-ashihmin)。本期仍未合并,但 #2407 的实测数据建立在它之上。
  • #2372 项目(v2,仍 open) — feat(unstable-v2): patch upsert _meta by top-level key (@benbrandt, 10-13 14:28Z)
  • #2266 项目(v2,仍 open) — refactor(unstable): remove next edit suggestions (@benbrandt, 09-30 14:37Z)
  • #2323 / #2316 / #2313 / #2255 / #2163 / #2154 项目(RFD 池) — session list 扩展(limit / order / row metadata / change hints)、quotas & limits、session aliases、session steering、Agent Skill、LSP proxy methods。当前 open PR 共 28 个,其中 RFD 类 20 个。

社区讨论 / 行业方向:

信号观察:

  • 窗口内新 issue 仍为 0。 在 v1 tag 停摆、release PR 未合并、规范 PR 归零的同一时间窗里,唯一的活动是 registry 的版本号推进——这说明生态的实际采用速度并不由 v2 draft 的进度决定。
  • 贡献模式从「改规范」切换到「先测量再提案」。 上期是 Ben Brandt 在 8 小时内合并 13 个规范澄清 PR;本期落地的两个 RFD 都由 nikita-ashihmin 提出,且 #2407 直接附带在真实 Client 上量到的时延分布与 codex-acp 的分页读法。
  • 两个 RFD 的共同点是「宿主无法知道发生了什么」。 #2407:Client 拿到完整历史却无法确信其完整;#2404:Agent 能预测下一条 prompt 但 ACP 没有事件可发,「每一对 Agent–Client 都在自己发明通道」。
  • replay_complete 提案的细节值得记录:v1 由 Agent 与 Client 双方 capability 门控(v1 的 union 是封闭的),v2 无条件发送(v2 的 union 是开放的);错误、取消或连接关闭之前没有 marker 就意味着重放被截断;并与逐条通知打 replay mark(JetBrains 的先例)及「先作答后补历史」两种方案做了对比并说明为何拒绝两者。
  • 上期 #2394 提出的成本实测(落后 50 轮的 transcript 需重放 27,765 条 updates)在本期被 #2407 的实测替换为更具体的时延分布——同一作者、同一问题域,但本期给的数字是「历史已完整但 Client 不知道」而非「重放太贵」。

agegr/pi-web

pi coding agent 的 Web UI| stars: 7398 | open issues: 13 | 默认分支: main | 最近 push: 2026-10-15T15:14:14Z | 主页: (仓库未填 homepage)

近 N 周 release 重点:

  • v0.12.2(2026-10-15T15:15:42Z)— 主题是「把 pi TUI 里已有的信息搬到 Web,再补上成本与用量」

    • 更多主题,按色块挑选:新增暖沙、丁香、暮紫、余烬、岩蓝、高对比浅色、高对比深色与 Zenburn;每个主题画成自己颜色的色块,浅色与深色按色调上下对齐;高对比主题文字在所有背景上达 WCAG AAA(#1269)
    • 终端可单独切深浅色:终端标题栏太阳/月亮按钮只切终端,不影响应用主题;切换时 shell 与正在输出的内容不中断,选择按浏览器记住(#1268、#1270)
    • 每轮回答显示耗时(#1222,@CiereMars 贡献)、缓存与费用提示(#1265、#1267,对齐 pi 的 showCacheMissNotices:缓存未命中及重新计费的 token、缓存预热、压缩、分支摘要,以及 Anthropic 丢弃思考块)
    • agent 切换器显示每个 subagent 的活跃时长、token 与费用(含合计),并可从切换器直接开关某个 subagent 的只读记录侧栏页签
    • 归档视图按项目折叠 + 批量恢复/删除(含删除 30 天前归档,删除前提示数量);项目「在新标签页打开」(#1208);把文件拖到文件树的具体子目录上传(#1192);设置里改内置提供商的模型上下文窗口(#1221);30 多种新语法高亮含 PHP/Lua/Dart/Vue/INI/PowerShell/batch/Protobuf/diff(#1197、#1243);技能说明里的相对 Markdown 链接可点开(#1234)
    • 性能:长思考分段渲染(#1196)、装多扩展时打开设置近乎瞬开(#1226)、大会话刷新只读新增尾巴(#1259、#1264)、浏览器 payload 去掉 provider 签名(#1193)
    • 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.12.2
  • v0.12.1(2026-10-13T06:53:04Z)— 修复 pi 1.2.0 发布后 pi-web 无法启动:0.12.0 只钉了 pi 的四个包,而 pi 内部依赖用 ^ 范围,导致全新安装把 pi-coding-agent 1.1.0 与 pi-codemode 1.2.0 装在一起,报 does not provide an export named 'MCP_TYPESCRIPT_PREAMBLE'。现在依赖树里每个 pi 包都钉到精确版本。

其他重要 commits / PRs(按重要性挑选 5–10 条):

  • 1a94341 项目(性能) — perf(sessions): rescan only the appended tail of a growing session file (#1264,修 #1259)
  • 520ce8d / d749fad 项目(UI) — feat(terminal): switch the terminal between dark and light (#1270)、feat(ui): more themes, picked by swatch (#1269)
  • 653cd7c 项目(成本可见性) — feat(chat): show pi's cache and cost notices (#1267,修 #1265)
  • 972b02d / 4b529b4 项目(用量可见性) — agent 切换器显示每个 agent 的时间 / token / 费用;从切换器开关 subagent 的侧栏页签
  • 49c9ca8 项目(信息架构) — feat(ui): fold the archive's projects and act on them in bulk
  • 0e78bbe 项目(配置) — feat: edit managed-model context windows in Settings (#1221,@22zyfeng-collab)
  • b8ef31e 项目(修复) — fix(tools): keep bash off when defaultTools leaves it out (#1245)
  • ac54e01 项目(修复) — fix(files): find a changed file's own repository for its diff (#1236,@Val.)
  • c5555cd 项目(修复) — fix(subagents): keep a settled run findable by the id it was given (#1198)

社区讨论 / 行业方向:

信号观察:

  • v0.12.2 的十项新增里有四项是「显示本来就在发生、但之前看不见的东西」:每轮耗时、缓存与费用、每个 subagent 的用量与费用、模型上下文窗口。这是成本可见性从 CLI 扩散到 Web 层的直接证据。
  • 性能条目的修复对象高度一致——「一次性读取随时间增长的整个文件」:#1259(会话 .jsonl)、#1196(思考流)、#1226(扩展重复加载)、#1193(provider 签名 payload)。#1256(约 1GB RSS)说明内存侧是同一问题的另一半,且尚未解决。
  • 16 个新 issue 中有 7 条来自同两位报告者,且集中在同一组主题(字体大小 #1277/#1278/#1279、主题 #1266/#1276、终端按键 #1282)——单一大版本发布后的用户反馈往往被同一批人集中放大。
  • #1273「set_model 或 /reload 后已保存的模型定义在已加载的会话里仍是旧值」与 #1274「在 Advanced 设置里暴露 per-model Base URL 覆盖」来自同一人,指向同一个未完成面:会话内模型配置的可变性与可见性。

yxc023/yxc023.github.io

个人博客站(Astro),同时是本报告的发布目标仓库| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-15T00:38:22Z | 主页: (仓库未填 homepage)

近 N 周 release 重点:

  • 窗口期内无 release。 该仓库不使用 GitHub Releases(releases 接口返回空数组),22 个 commit 无 tag。

其他重要 commits / PRs(本期新增 1 个):

  • 本期仅 1 个新增 commit(落在 2026-10-15T00:38:22Z),内容为 2026-10-15 报告的博客同步。

社区讨论 / 行业方向:

  • 窗口期内未检索到公开讨论。

信号观察:

  • 该仓库在本清单中的角色是报告发布目标而非被观察项目:本期 1 个 commit 即上一期报告的同步产物,reports/2026-10-16.md 经 scripts/deploy-blog.sh 同步后会产生本期的第二个 commit。
  • 27 个 open issues 中未检索到本期新增,与上期一致。

跨项目观察

  1. 主题从「声明与生效不符」下沉了一层:这期不再是元数据冻结,而是「同一个名字在不同地方解析成不同的东西」。 上期的形态是 opencode 的 V1 冻结 schema 把合法 V2 配置标错、pi 的 Windows 默认端口落在 Hyper-V 保留块。本期同一机制的新形态有四例,且全部发生在provider / model catalog 这一层:pi 内置 kimi-coding provider 说 Anthropic Messages、远端 catalog 说什么 OpenAI,同一个名字两条路径对 /v1 的归属互相矛盾(#10992,并让 Nix 构建失败 #10985);opencode 的 Zen 免费模型不公布额度也不在 429 里返回(#55816),于是用户只能靠「Only free models work with GO」(#55856)反推;hindsight 的 HINDSIGHT_BANK_ID 在 config.json 存在时被忽略(#5600)、bank_mission 从未发往 bank(#5601);ACP registry 记 OpenCode 1.19.1 而实际在发的是 v2.0.30。一个名字在几处维护,每处都可能在维护不同的东西。

  2. model metadata 成了这一期最可能出错的表面,且四个代码项目同时中招。 pi:max_tokens 被 4-chars/token 启发式夹到 305 而 prompt 只占窗口 48%(#10988)、Gemini 4 无 thinkingLevelMap 时仍发 thinkingBudget: 0 招致 400(#11003,P0)、Vertex 的 token 错误从不重试(#10996)。opencode:ctx.model.transform 为 config 定义的模型返回占位的 limit.context 200000,基于百分比的插件在 1M 模型上会算错(#55768)、Go 端点对宣告支持 image input 的模型一律 400(#55785)。hindsight:OpenRouter 的默认 temperature + 强制 require_parameters 让拒绝 temperature 的模型(如 claude-haiku-5.5)直接 No endpoints found(#5586)。四个项目没有一个把「模型自报的元数据」当成需要校验的外部输入。

  3. 新增的宿主侧能力在发布当天就与它面向的环境发生协议碰撞。 pi v1.1.0 上线 OSC 7501 program status(终端据此知道 pi 在工作 / 卡在对话框 / 已完成 / 失败),iTerm2 3.7.5 开始支持 7501,而 pi 每条 transcript 消息前插入的 OSC 133;A 导航标记会让 7501 清除 working/blocked 记录——重绘时也会插入,因此终端状态会在没有任何 agent 生命周期事件的情况下自行丢失(#11017)。同一天 opencode 把 TUI diff 改成默认停靠侧栏、布局按终端宽度自适应。向终端声明「我在做什么」这件事,两边都在同一天扩大了输出面,而没有先问谁在解析这些序列。

  4. 每一个项目现在都在划「宿主的权限到哪里为止」,但答案方向不同。 opencode #55814:只读 session 通过委派给 general 子 agent 拿到完整写权限,父 agent 自己的 write 仍返回 permission_denied,但文件已经被改了——缺的是继承语义,不是判定逻辑。pi #11018:请求一个原子的、非取消的 idle close,「对 busy 或所有权不明的 session 必须拒绝,而不是取消/排空已接受的工作」。ACP #2404:接受建议只填入 composer、绝不发送,用户仍是 transcript 里每条 prompt 的作者。ACP #2407:没有 marker 就意味着重放被截断——把「不完整」变成可检测而非可猜测。四个答案分别落在策略继承、生命周期所有权、作者归属与完整性信号上。

  5. ACP 在最热闹的一天彻底安静下来,而它的贡献方式换了。 上期:8 小时 13 个规范 PR,全部声明 “No wire-format changes”。本期:4 个 commit 全是 registry 版本号推进(OpenCode 1.19.0→1.19.1、Factory Droid 0.242.0→0.242.1)、0 个新 issue、tag 停在 v1.11.0、release PR #2379 未合并。但落地的两个 RFD 都换了一种写法:先在真实 Client 上量出数字,再提规范——#2407 给出 claude-agent-acp 的历史完整时刻(0.04–0.9s)与作答时刻(空闲 0.5–1.6s、冷启 4.3–4.7s、高负载 8–9s)的分离,以及 codex-acp 每页 100 条、每页一次 RPC 的读法。「重放什么时候算完」从实现细节变成了一个需要实测才能定义的概念。

  6. 「静默的零」这条线索在 hindsight 上走到了第三段,而开源端已经开始建工具而不只是打补丁。 第一段(前期):抽取失败与抽取为空在数据上不可区分。第二段(本期前半):#5615 让「no facts」散文不再被接受为零事实,#5631 让错误形状的已完成文档被重问一次而不是让整次 refresh 失败。第三段(本期):#5626 交付 consolidation eval 套件——发现手段本身被产品化了;但 #5612 显示这一类还没被覆盖(HTTP 200 + finish_reason: "error" 被当成模型没选工具,瞬时传输失败走了模型行为路径,且重试标志在整个 loop 共享)。同一形态在别处是 pi-web 的「不要重扫整个文件」(#1259 冻住 Next.js event loop、#1256 约 1GB RSS)与 opencode 的 #55819(agent-authored 的 watermark-bounded discovery 静默丢掉每周约 500 条全新记录)。

  7. 发布节奏本身成了可观测的数据。 hindsight 的 50,000 stars 博客把这件事量化了:350 天、6,077 forks、288 contributors、3,042 merged PRs、73 releases,「平均每 4.8 天一个 release,持续了 11 个半月」——并把 v1.0 与 Memlake 放在同一周。opencode 一天合并 58 个 commit(其中 12 个是同一个人的同一件事),pi 一天发布 v1.3.0 并在同一天收到 40 个新 issue。「发布很密」与「新问题很密」在本期是同一件事的两面。

  8. 同一组能力在两个项目里走向相反方向。 「把 session 发出去」:opencode 在 v2.0.30 移除已下线的 session-sharing 后端与 /share 命令(#55716,含把 share domain 从 teams worker 交出 #55784),而 pi v1.3.0 新增 sessionShareDestination 让 /share 选 gist 或 radius。一个在收口自建通道,一个在接入第三方通道——两者都发生在同一天。

元信息

  • 报告生成时间: 2026-10-16T00:32:07Z
  • 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段,自 2026-09-08 起连续 8 期未变)
  • 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-16T00:32:07Z(约 37.6 天);本期新增内容全部落在 2026-10-15T00:34:46Z 之后的约 24 小时
  • 数据源: GitHub API(gh CLI)+ mmx web search
  • API rate limit 剩余: 4946 / 5000(core,抓取完成后查询)
  • 抓取失败: 无(6/6 仓库的 repo / releases / commits / pulls 全部成功)
  • 补充说明:
    • commits 按 per_page=100&since=2026-09-08T09:23:29Z 抓取;opencode / pi / pi-web / hindsight / ACP 五个仓库的 100 条已触页(最早一条落在窗口内),但均晚于本期新增起点 2026-10-15T00:34:46Z,因此本期的 24 小时内容未被截断
    • 本期新增 commit 数:opencode 58、pi-web 45、hindsight 25、pi 19、ACP 4、yxc023.github.io 1
    • anomalyco/opencode 的 Discussions 仍处禁用状态,其社区讨论段改由 issue 区、dev:CHANGELOG.md 与外部检索补足
    • opencode 的 2.x release notes 取自 dev 分支的 CHANGELOG.md(GitHub Releases 停在 v1.x);本期 v2.0.30 的全部条目来自该文件
    • yxc023/yxc023.github.io 的 releases 接口返回空数组(该仓库不使用 GitHub Releases)
    • ACP 与 pi 的 Discussions 列表已按 created 排序检查,最近的讨论均在 2025 年,窗口期内无新讨论
    • hindsight 的 50,000 stars 博客内容取自仓库内 hindsight-docs/blog/2026-10-15-hindsight-50k-stars.md(PR #5625 新增)
    • 本期新增 issue 数(search API,created:>=2026-10-15T00:00:00Z):opencode 137(返回上限 50 条,已全部取回)、pi 40、hindsight 29、pi-web 16、ACP 0、yxc023.github.io 0

评论