2026 2026年10月20日 27 min · 7.9k chars by yxc023
GitHub 调研周报 2026-10-20
扫描窗口:2026-09-08T09:23:29Z → 2026-10-20T00:30:19Z(共 41.7 天)| 基准来源:上次报告 2026-10-19
2026-10-20 GitHub 调研周报
扫描窗口:2026-09-08T09:23:29Z → 2026-10-20T00:30:19Z(共 41.7 天)| 基准来源:上次报告 2026-10-19 本期新增内容全部落在 2026-10-19T00:30 之后的约 24 小时。这一天的形状是「成本进入 PR 正文」+「一个模型契约同时打断两个仓库」。
本期速览
-
vectorize-io/hindsight: 10.5 小时 49 个 commit + 20 个 PR 合并,结束自 2026-10-16T19:58Z 起约 2 天 13 小时的 main 静默,并打出
coding-agents v0.8.2。上期「代码停了、注意力没停」的判断在本期被推翻——star 增速也从 +807 → +370 回升到 +432。 -
MiniMax-M3.1 的「思考不可关」在同一天改了两个仓库的代码:pi
d2e7d8b加入 MiniMax-M3.1-Flash(关掉旧 MiniMax 模型),hindsight#5774把thinking从disabled改成adaptive——在 M3.1 上 retain / consolidation / reflect 的每一次 LLM 调用都返回 HTTP 400(error 2013),即该 provider 整体不可用。这是本期唯一一个跨仓库的、由同一个外部契约触发的事件。 -
anomalyco/opencode
#56983把成本写成了美元:一个重度 Studio 安装的 24hopencode.db(Opus 5.5)测出 517 次完整 cache 重写 / 天 = $502/天,其中图像预算这一条占 150 次、$101/天(20%),是 subagent 的第二大成因。根因是boundImages每次请求重算切点,一有新截图就把切点往前推一格,Anthropic cache 只能复用 tools + system。 -
同一天
#57091处理了同一个 cache 主题的另一面:压缩原本只把keep之前的旧部分发给模型,请求在 tail 处与正常请求分叉,只能复用更早前缀;改成发整个当前对话后延长了可复用前缀。两条 PR 都出自同一份 24 小时 usage 账单。 -
压缩(compaction)在两个 harness 同一天各自坏掉:opencode
#57187在接近 context limit 时把整段对话(~128.8K / 131,072)当摘要请求,max_tokens只剩 2,254,thinking 模型把预算全花在 reasoning 上、finish_reason=length,无重试、无输入截断,会话永久死在 context limit;pi#11143的_compactBeforeNextAssistantResponse()跳过_sanitizeProjectionMessages(),重复tool_result打到 Anthropic 返回 400,自动重试每次都报同一条错。 -
earendil-works/pi 的 telemetry 从「契约」变成「实现」:上期刚补完 propagation + metrics 契约,本期
d9025a5落地 SQLite telemetry store(StoredSpan/StoredTrace、findTraces带 name/attribute/error/时间窗过滤 + 游标分页、metrics 按 series 每 10s 聚合、1s 批量 flush + retention + 有界队列并计数丢弃),2ec55d8补上pi.ai.request/pi.ai.poll与pi.durable.submit/pi.durable.phasespan。 -
pi 同日落下第二个破坏性变更:
5c1736f让checkpointWhen在defineDoc/defineDocFamily上成为必填且不提供默认值(Breaking change)。在上期「schema v2 迁移后不可回滚」之后,Durable 文档 API 又被收紧一次。 -
「静默降级」第四次成为主要缺陷形状,且这次跨三个仓库:pi
#11124modelTools对着空 registry 过滤,子 agent 静默拿到零工具,无报错无警告,模型退化成把工具调用当纯文本输出(OpenAI-completions adapter 不解析成结构化 toolCalls);opencode#57230openai-compatible恒注入stream_options+store,文档给的includeUsage: false变通法在 v2 失效(resolveSDK()只读provider.options,而 v2 已把它归一化进settings);hindsight#5771embedding/rerank 从不计量,hosted 花费在llm-requestsAPI 里完全不可见。 -
anomalyco/opencode 的 open issues 一天从 4668 掉到 4491(−177),是本清单单期最大变动;open PR 已触顶(
?per_page=100返回满 100)。同期d2c4c38只在连接时才轮询 Console 配置、b154f6a停止轮询 DigitalOcean routers——轮询面在被系统性收窄。 -
ACP 连续第 5 天只有 bot 变动:4 次
docs: update registry agents+ 5 个 dependabot PR。唯一的实质提交是#2427把 acp-sdk (Ruby) 加进 community libraries——上期它还是「仍 open」状态,本期已合并。registry 内部顶替:claude-agent-acp 0.93.0→0.94.0、2.169.0→2.170.0、copilot-cli 1.0.98→1.0.100、nova 1.1.55→1.1.57。 -
agegr/pi-web 连续第 2 天零活动:最后 commit 停在 2026-10-18T13:00(约 35.5 小时),0 PR 合并,而 open issues 从 22 升到 28——上期「唯一关闭快于新增」的仓库,方向反转。
-
行业侧:hindsight 的 benchmark 叙事正在被外部反复质疑。其 91.4% LongMemEval 数字出自公司 CEO 与一位 Virginia Tech 教授合著的论文;9 月 21 日 release 把自带的评测脚本换成了一个持续更新的在线看板(
benchmarks.hindsight.vectorize.io)。多个外部站点记录「两个外部实验室自称复现过」与「star 数跑在自家作者发布的分数上」这两点。
各仓库详情
vectorize-io/hindsight
Agent 长期记忆系统(Agent Memory That Learns),MIT,四类隔离记忆网络 + retain/recall/reflect/consolidate 循环| stars: 51663(上期 51231,+432)| open issues: 157(上期 162,−5) | 默认分支: main | 最近 push: 2026-10-19T21:53:48Z | 主页: https://hindsight.vectorize.io/
近 41.7 天 release 重点:
-
v1.0.0(2026-10-13)— 1.0 GA
- 完整 release notes: https://github.com/vectorize-io/hindsight/releases/tag/v1.0.0
-
coding-agents v0.8.2(2026-10-19T16:39,
16df02a release(coding-agents): v0.8.2)— 子包发布,本期窗口内唯一新 tag- 配套
5529f9b fix(coding-agents): append only new commits to the git-log document (#5711):git-log 文档只追加新 commit,不再每次重放整条历史
- 配套
(如无 release:“窗口期内无 release。”)
其他重要 commits / PRs(按重要性挑选):
c5f585f文档 — docs(api): runbook for splitting a memory bank in place (#5803) (@benfrank241, 已合并) — 原地拆分 memory bank 的操作手册cfef79e新特性 — feat(documents): per-document change history rebuilt from operations (#5638) (@nicoloboschi, 已合并) — 改一条事实(哪怕只改日期)、追加、重新 ingest 或 invalidate 都会删掉建在它上面的 observation,而被删的行不留任何痕迹,导致一次把两个无关事件合并掉的 rebuild 事后无法追查。修复后每次变更在对应 operation 的result_metadata.document_events上记 id 与计数(绝不记文本,id 列表上限 100)a8c5802provider 修复 — fix(minimax): send thinking=adaptive to MiniMax-M3.1, which rejects disabled (#5718) (@nicoloboschi, 已合并) —provider=minimax一直发thinking: {"type":"disabled"}(来自 #2558),而 M3.1 始终思考并以 HTTP 400(error 2013) 回应,导致该 provider 上每一次 retain / consolidation / reflect 调用全部失败。修复后名字含m3.1的模型发adaptive,M3 与 M2.x 仍是disabled;显式*_LLM_EXTRA_BODY仍以setdefault胜出878adae并发修复 — fix(consolidation): lock in the writers’ order so it cannot deadlock against retain or delete (#5433) (@nicoloboschi, 已合并) — 不只是 pgvectorscale:consolidation 对同一 bank 的 batch facts 先 share-lock、再锁它要改写或删除的 observation、最后盖 batch 戳;delta retain 先锁 document、sweep 锁住建在重切 facts 上的 observations、再重标幸存 facts(可能就是那个 batch)。双方各持对方下一步需要的东西,普通 Postgres 上是行锁死锁,pgvectorscale 的 DiskANN 又加了第二条路径0646d3c并发修复 — fix(consolidation): lock in the writers’ order (#5433) 的同批修补:dbb86c9 test(consolidation)给死锁测试的 fake engine 补上 embedder(#5797起因是test_retain_consolidation_deadlock在 main 上因a4db343引入的批内单次 embedder 调用而失败)b463785降级修复 — fix(typesafe): shrink and retry a request Jev finds over its window, stop dropping decision answers (#5794) (@nicoloboschi, 已合并) — 我们用自己的 tokenizer 估 TypeSafe 请求大小,而 Jev 对混合文字(emoji、CJK、阿拉伯文、重音)约计 2×。26k 预算内fit的请求可能返回400 max_tokens_exceeded:reranker 侧 recall 变成 HTTP 500;decision modelask_all侧失败只记日志,这些答案被静默丢弃,decision reranker 再把对应候选排到最后。改为超限时按 26k → 13k → 6.5k → 3.25k 重建请求再抛0619793新特性 — feat(operations): retry runs a deferred operation now (#5772) (@nicoloboschi, 已合并) — provider 报配额重置时间时 worker 会把 operation park 到那一刻,但provider 会高估窗口(#5684看到「65 小时后重置」的配额约 7 小时就回来了),且retry拒绝 deferred op(status is 'pending', expected 'failed' or 'cancelled')——用户看得到它被 park,却跑不了它7f18b6f成本 — fix(embeddings): defer operations when OpenAI embeddings run out of credits (#5746) (@nicoloboschi, 已合并)64c83a0新特性 — feat(api): tag globs in observation_scopes + per-bank default_observation_scopes (#5666) (@nicoloboschi, 已合并)31520ca修复 — fix(mental-models): sibling pages no longer rewrite a document whose memory scope is empty (#5728) (@nicoloboschi, 已合并)7c73b65性能 — perf:a4db343 perf(consolidation): embed a batch's recall queries in one embedder call (#5769)(@nicoloboschi, 已合并) — 一批 recall query 合并进一次 embedder 调用668b159故障转移 — fix(llm): mental-model refresh inherits the global failover chain (#5780) (@nicoloboschi, 已合并)856b3fc性能 — fix(api): stop a big graph read from freezing the event loop (#5703) (@nicoloboschi, 已合并)0ee8b17可用性 — fix(control-plane): make the control plane usable on phones (#5776) (@nicoloboschi, 已合并) — 关闭sghng #5736(竖屏下 sidebar 占 66% 屏宽、页面横向滚动、header 控件够不到、iOS 主屏图标是字母块)b18f425部署 — fix(api): honor a systemd CPUQuota and bound ONNX Runtime threads (#5725) (@nicoloboschi, 已合并)0686d3c依赖 — fix(deps): stop the win32-only onnxruntime cap from locking every platform (#5770) (@nicoloboschi, 已合并) — 让 slim server 能在 Python 3.14 上安装231b44e内存 — fix(transfer): export and import a bank’s growing tables a page at a time (#5737) (@nicoloboschi, 已合并) — 关闭lusoris #5737:json.dumps整个行列表把大 bank 的 API OOM 杀掉04f0345迁移 — fix(migrations): build a new schema’s indexes plainly so provisioning never waits on other transactions (#5700) (@cdbartholomew, 已合并)1a3c5e8API — fix(api): return consolidation state on GET /memories/{id} (#5767) (@nicoloboschi, 已合并) — 关闭a-min-7 #5730
社区讨论 / 行业方向:
- Hindsight Agent Memory Passes 41,000 Stars on a Score Its Own Authors Published: 91.4% LongMemEval 这个数字的论文由公司 CEO 与一位 Virginia Tech 教授合著,作者自己指出 fine print 的问题。
- Vectorize’s Hindsight Drops Its Benchmark Script for a Live Site: 9 月 21 日的 release 把自带的评测 runner 换成一个持续更新的看板(
benchmarks.hindsight.vectorize.io)——评测产物从仓库里搬到了官网上。 - Hindsight Wants to Give AI Agents a Real Memory: 记录该项目的 trending 建立在「两个外部实验室自称复现过」的分数上。
- 认识 Hindsight:把 LongMemEval 打到 94.6%: 中文解读,特别表扬「一个记忆系统愿意承认『我不知道』」;同时泼冷水说官方看板数字「全部自称第一」。
- Hindsight: 30K Stars Agent Memory Framework — 5-Level Bio-Inspired Architecture 与 【论文解读】HINDSIGHT: 中文侧已从「介绍」进入「论文解读」阶段。
- Fixing “requires adaptive thinking” (2013) When Moving from MiniMax M2.7 to M3.1 Flash: 与 #5774 同一个错误的公开复现——问题与修法都不是 hindsight 独有的。
信号观察:
- 「注意力与代码脱钩」在上期成立、本期反转。 main 静默区间实测为 2026-10-16T19:58Z → 2026-10-19T09:07Z(约 2 天 13 小时),随后 10.5 小时内 49 个 commit、20 个以上 PR 合并。star 增速走成 +807 → +370 → +432,在 +370 触底后回升。
- 本日 49 个 commit 里约 60% 是 Nicolò Boschi 一人提交,且几乎全是 fix/perf;这类形状通常对应 1.0 GA 之后的第一波真实负载问题。
- 死锁仍是头号结构性缺陷:
#5433的 PR 正文直接画出 retain vs consolidation 的锁顺序图,且指出 pgvectorscale 的 DiskANN 会加出第二条死锁路径。合并当天就新开 5 条Flaky:issue,其中 3 条是死锁或 teardown 期错误(#5806、#5805、#5781)。 - 成本可见性被官方承认为缺口:新 issue
#5771指出llm_requests只覆盖 chat/completion,embedding 与 reranker 调用从不记录,hosted 花费无法归因到 bank、operation 或时间窗。这与 opencode 本期把美元写进 PR 正文是同一趋势的两端。 nicoloboschi自己在 issue 区公开挂 flaky 清单(#5806、#5805、#5804、#5786、#5785、#5765、#5764、#5752)——故障透明度高于本清单其它仓库。
anomalyco/opencode
通用开源编码 agent,MIT,提供 TUI、桌面端、Web 与共享后台服务| stars: 217795(上期 216573,+1222)| open issues: 4491(上期 4668,−177) | 默认分支: dev | 最近 push: 2026-10-20T00:27:42Z | 主页: https://opencode.ai
近 41.7 天 release 重点:
- v1.19.3(2026-10-16)— 1.x 线最后一个 tag
- 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v1.19.3
- v1.19.2(2026-10-16)— 1.x/2.x 分裂写进产品契约
- 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v1.19.2
窗口期内无新 release(最新为 2026-10-16 的 v1.19.3;V2 线 2.0.32 同日)。本期全部产出在 dev 分支 unreleased。
其他重要 commits / PRs(按重要性挑选):
#56983成本修复 — fix(core): keep the image budget cut stable so the prompt cache survives (@kitlangton, 已合并,closes #51985) —boundImages每次请求从头重算图像切点;会话内联图超过 25 MiB 后,每来一张新截图就把切点往前推一格,替换掉历史中间的一条消息,Anthropic cache 只能复用 tools + system。实测数字:24hopencode.db(Opus 5.5)517 次完整 cache 重写 = $502/天,本条占 150 次、$101/天(20%),是 subagent 第二大成因;一个 concept-art subagent 连续 77 步各重写 50–60k tokens。#57091成本修复 — fix(core): summarize the whole conversation during compaction (@Filip, 已合并,closes #52761) — 压缩原本只发keeptail 之前的旧对话再追加摘要提示,请求恰好在 tail 起点与正常请求分叉,只能复用更旧的前缀缓存;这些条目过期后(最新请求的前缀是唯一保温的),压缩要为整段历史付全价 cache-write。改成发整个当前对话以延长可复用前缀#57203契约变更 — refactor(schema): remove recent from compaction messages and events (@rekram1-node, 已合并) — 自 #56954 起摘要压缩改用metadata.firstKeptMessageID并恒写recent: "",字段却仍留在 public contract 里,于是每个 API reader / client / plugin 都看到一个只为旧压缩记录才有意义的空串。本 PR 从 schema、OpenAPI、生成客户端、plugin 四处移除#56947能力回补 — feat: restore the todowrite tool behind an experimental flag (@rekram1-node, 已合并,refs #42421) — 为对齐 V1 恢复todowrite,默认关闭,需{"experimental":{"todo":true}}。与 V1 同样的整表形状{todos:[{content,status}]},priority被丢弃;模型拿到的是短摘要而非整表;不新增存储,列表就是最近一次调用。迁移过来的 V1 会话提示语从「must not be called」改为「no longer available by default」#56245平台能力 — feat(core): enable persistent PTYs on Windows (@jlongster, 已合并) —@opencode-ai/pty0.2.0 → 0.3.1,新增 Windows 原生 daemon(命名管道 + ConPTY),发布@opencode-ai/pty-win32-{x64,arm64}。移除 Windows 门控,PersistentPty.available在 Bun 与 Node 上均为 true,服务端现在在每个平台都上报persistentPty能力#54090静默失败 — fix(core): drop undefined permission metadata values before publishing requests (@kitlangton, 已合并,closes #37650) —glob/grep权限挂起且模型省略可选输入时,GET /api/session/:id/permission返回 HTTP 400(glob.ts/grep.ts把input.hidden/input.limit直接拷进 metadata,省略即undefined)。任何通过permission.list补齐挂起权限的客户端(会话打开、重连、第二个客户端、opencode run --session、Drive 的multi-tool-interleavings探测)都会拿到错误而看不到待处理请求,只有实时permission.askedSSE 事件能过去,因为它走JSON.stringify#57181事件作用域 — fix(core): publish sdk.plugin.updated globally across locations (@kitlangton, 已合并) —SdkPlugins是个makeGlobalNode,其 docstring 明写「注册时发布一个无位置更新,让每个已启动的 Location 从共享 store 重载插件代次」,但bus.publish(Updated, {})漏了{global:true},导致携带Location.Service的 fiber 里调用sdk.register(...)只会刷新单个 Location#57175轮询收敛 — fix(core): stop polling DigitalOcean routers (@opencode-agent[bot], 已合并)d2c4c38轮询收敛 — fix(core): only poll Console config while connected (#57201) (@Aiden Cline, 已合并)#57166噪音 — feat(console): drop enterprise form spam before it reaches Salesforce (@opencode-agent[bot], 已合并)#57189+#57112桌面端 — refactor(desktop): drop Drive-specific service handling(@James Long)/ feat(desktop): preserve Drive-managed development state(@James Long, 已合并)#56888能力 — feat(voice): add Gemini Live ephemeral token support (@Kit Langton, 已合并)#57151TUI — fix(tui): open /models on the current model and keep the server’s model order (@kitlangton, 已合并)a15de38修复 — fix(merman): treat apostrophes in flowchart labels as text (#57060) (@opencode-agent[bot], 已合并)
社区讨论 / 行业方向:
- OpenCode 双线狂奔:v1 每周还在发版,v2 已经冲到 2.0.22: 中文侧描述 v2 架构:一个 Hono/SQLite 服务端同时托起终端、Electron 桌面端、Web UI 三个界面,关掉终端再开桌面端会话仍在原地,配套带 SSE 推送的 REST API 与
@opencode-ai/client@next。 - OpenCode 2.0 Turned the Coding Agent Into a Service: 把 v2 概括为「每个 tool call 都移进后台服务」,旧终端客户端外围加了 sandbox。
- “A major overhaul”: OpenCode 2.0 puts its terminal, desktop, and web apps on one shared service: 记录 v2.0 在公开 beta 三个月后成为主线版本。
信号观察:
- open issues 从 4668 掉到 4491(−177),是本清单单期最大变动;同时 open PR 查询
?per_page=100已返回满 100,合并队列可能已饱和。 - star 增速 +1222 与上期 +1265 基本持平,是本清单绝对值最高,但相对增速在 opencode 自己的体量下已明显放缓。
- 「成本」第一次以美元/天出现在本仓库的 PR 正文里,且两条 PR(#56983、#57091)指向同一个根因族:prompt cache 命中率。这与上期「成本意识进入 PR 正文」是同一条线的延续,但单位从 token 数升级到账单金额。
- 压缩是本日唯一被三条改动 + 一个严重 issue 同时击中的子系统(#57091 改请求形状、#57203 删契约字段、#57187 预算塌陷),且这些改动互为因果:#56954 引入
firstKeptMessageID→ #57203 清理遗留字段 → #57091 修 tail 处的缓存分叉,而 #57187 是同一处的反面。 - 轮询面在系统性收窄:停止 DigitalOcean routers 轮询、Console config 仅在连接时轮询、plugin 更新从 location-scoped 改成 global——都在减少「后台无条件发请求」。
- 新 issue 里「静默降级」占比高:
#57210(TUI model picker 漏掉全部 ollama 模型,CLI 与 API 都能列出来)、#57204(Location plugins did not finish activating)、#57180(tool-result metadata.diagnostics在 TUI 有、web timeline 丢)、#57185(切换 agent 后 delegation 工具在 native agent 上仍可见)。 iceteaSA一个人提交了 6 条 Plugin API 请求(#57217、#57216、#57214、#57213、#57212、#57215),指向同一件事:plugin 只能在 host 存储之前介入,无法干预或观察消息/part 的写入。
earendil-works/pi
AI agent 工具包:统一 LLM API、agent loop、TUI、编码 agent CLI;MIT,Pi 生态的核心 harness| stars: 116420(上期 116152,+268)| open issues: 349(上期 347,+2) | 默认分支: main | 最近 push: 2026-10-19T22:14:04Z | 主页: (仓库未填 homepage)
近 41.7 天 release 重点:
- v1.3.0(2026-10-15)— 当前 1.x 主力版本
- 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.3.0
- v1.2.0(2026-10-12)
- 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.2.0
窗口期内无新 release(最新为 2026-10-15 的 v1.3.0,已 5 天)。本期全部产出在 unreleased。
其他重要 commits / PRs(按重要性挑选):
d9025a5新特性 — feat: SQLite telemetry store in Chord, shared TelemetryStore and trace renderer (@Mario Zechner) — 上期落地的 telemetry 契约,本期有了存储与渲染:StoredSpan/StoredTrace/TelemetryStore(findTraces支持 name、attribute、error、时间窗过滤 + 游标分页;getTrace;findMetrics),trace id 随 carrier 传递,renderTrace放在/render子路径;内存适配器实现该 store,适配器契约改为信任强类型输入(malformed-input conformance 用例被删除)。@earendil-works/chord/telemetry-sqlite建在chord/sqlite之上:settled spans 带内联 events 与 links,metrics 按 series 每 10 秒聚合、1 秒批量 flush + retention、有界队列(丢弃并计数)2ec55d8新特性 — feat: Durable and pi-ai telemetry; Context.telemetry is always a span (@Mario Zechner) — pi-ai 新增AI_TELEMETRY_SCHEMA,pi.ai.request/pi.ai.pollspan 围绕 Models 请求(经一个 lazyStream observer,不改 provider),first_chunk 与 block 事件按非每 delta 发出,usage/cost 作为结束属性,provider_error带有界长度的 message,aborted 保持 ok;选项从telemetryContext改名为telemetry(一个 parent span)。chord/context的Context.telemetry恒为TelemetrySpan(NOOP 默认),withTelemetry接收 span。durable 新增DURABLE_TELEMETRY_SCHEMA:pi.durable.submit(输入自起一条 trace 并 link 到调用方)与每个 task phase 的pi.durable.phasespan,carrier 随 submission 与 task 存储(TaskOptions.trace、links),entry/submission/checkpoint/replay/report 事件均在 commit 之后发出,恢复的任务仍留在原 trace 内,失败 phase 带固定分类与有界 message5c1736f破坏性变更 — feat: checkpointWhen is required on Durable document definitions (@Mario Zechner) — commit message 首行即写Breaking change::defineDoc与defineDocFamily现在必须提供显式的checkpointWhen谓词,不提供默认值,内置文档、示例、测试与 triage state 均已补策略d2e7d8b模型 — feat(ai): add MiniMax-M3.1-Flash and hide only old MiniMax models (@David Brailovsky) — 同时关闭SaladDay #11121e86b054修复 — fix(ai): OpenRouter reasoning test uses deepseek-r1-0528, deepseek-r1 left the catalog (@Mario Zechner) — 模型下架后测试未跟进,是同一类契约漂移73f8de8修复 — fix(ai): recover from Copilot request-size overflow (@Petr Houška, PR #11016)0ed1b04终端 — feat(tui): detect Rex terminal for OSC 8 hyperlinks (@Petr Houška, PR #11150) — 关闭nihaals #1113161060dd+28bea00Windows 修复 — resolve Windows shells from installation directories(#9501)/ accept Windows Store shell aliases(#9504)(@Petr Houška)e28e708— ignore .pi/settings.json (@David Brailovsky)
社区讨论 / 行业方向:
- Beyond the Ephemeral Loop: The Architecture of Durable AI Agents: 第三方长文分析 pi-durable 的架构,论点是从「while 循环」转向可持久化的 agent。
- Pi (Coding Agent Harness) — Superteams.ai: 第三方词条把 Pi 描述为 Mario Zechner 创建的极简 MIT coding-agent harness,论点与仓库 README 一致。
- Pi: a layered agent harness monorepo: 明确「不是单个 CLI,而是分层的包集合」,并提到 108k+ stars。
信号观察:
- 增长从上期的急跌中回升:+178 → +268 / 24h(约 +50%),但仍远低于两期前的 +509。open issues 持平在 349(+2),85 个 open PR。
- telemetry 连续两期推进,方向从「约定」→「落库 → 可渲染」。上期包 README 写死的立场(no exporter、no global current-span state、no telemetry backend 依赖)本期依然成立,但已经配上了 SQLite store 与
renderTrace。Context.telemetry从 NOOP 默认改成「恒为 span」,telemetryContext更名为telemetry——契约名字在两个包之间统一了。 - 24 小时内落下第二个破坏性变更(
checkpointWhen必填)。继上期 schema v2 迁移「不可回滚」之后,Durable 文档 API 又收紧一次;两次都明确写在 commit 首行而非 release notes——破坏性变更目前只活在 git 历史里,尚未随 release 固化。 - 「静默降级」第四次出现:
#11124 modelTools过滤已注册工具集,若目标工具从未经registry.install(...)注册,子 agent 静默拿到零工具,无报错无警告,模型退化为把工具调用当纯文本输出,而 OpenAI-completions adapter 不把它解析成结构化toolCalls——最终表现是模型「说话」而不是「干活」,没有任何一层报错。 - 本仓库 issue 关闭速度仍极高(本日新 issue 中绝大多数已 closed),本期 4 个合并 PR 全部来自同一外部贡献者
petrroll,且集中在 Windows 与终端两个窄面——外部贡献正在被引导到平台适配,而不是核心架构。 #11138(pi-ai 跨轮保留 provider server-tool blocks)、#11135(MCP sign-in refresh 与 connection refresh 竞态导致清除刚轮换的凭据)、#11143(压缩路径跳过 sanitize 导致 Anthropic 400 且重试无效) 三条同日关闭,指向同一个主题:provider 契约(Anthropic 的 tool_result 唯一性、MCP 的 refresh token 轮换)在 pi 内部有多条路径需要各自满足。
agentclientprotocol/agent-client-protocol
连接任意编辑器与任意 agent 的协议(LSP 之于编辑器之于编程 agent)| stars: 4468(上期 4464,+4)| open issues: 40(上期 37,+3) | 默认分支: main | 最近 push: 2026-10-19T23:44:05Z | 主页: https://agentclientprotocol.com
近 41.7 天 release 重点:
- v1.12.0(2026-10-16)— Rust Crate v1.12.0(配套 schema-v1.26.0 与 schema-v2.0.0-alpha.9)
- v1.11.0(2026-10-09)— Rust Crate v1.11.0
窗口期内无新 release(最新为 2026-10-16 的 v1.12.0)。
其他重要 commits / PRs:
58bf805文档 — docs: add acp-sdk (Ruby) to community libraries (#2427) (@Jake Bottrall, 已合并) — 上期这条还在 open 队列里,本期已合并;窗口内唯一的非 bot 提交2f5a9a0/891600e/17bb882/beac4ba— docs: update registry agents (#2441 / #2439 / #2432 / #2431) (@acp-release-bot[bot]) — 全部是registry.mdx的版本号顶替91d6cc2— chore(deps): bump the minor group with 20 updates (#2438) (@dependabot[bot])adc1552/a5ba012/70e7698/cb44acf— dependabot 4 项(actions/create-github-app-token 3.2.0→3.3.0、release-plz/action 0.5.141→0.5.142、dtolnay/rust-toolchain、taiki-e/install-action 2.87.27→2.87.29)
社区讨论 / 行业方向:
- 窗口期内该仓库无新增 issue(GitHub 返回空)。
- 行业侧无新的独立讨论;上期已记录的 Block 播客、第三方 ACP client/agent 目录、Hivebook 的 v1/v2 对照表在本窗口无更新。
信号观察:
- 连续第 5 天只有 bot 变动:10 个提交里 9 个来自
acp-release-bot或dependabot,唯一的人类提交是一条文档。 - registry 内部版本推进:claude-agent-acp 0.93.0→0.94.0、2.169.0→2.170.0、copilot-cli 1.0.98→1.0.100、nova 1.1.55→1.1.57,registry 日期 2026.10.16→2026.10.18。
- star 增速 +4 / 24h 仍是本清单最低,open issues +3(40)。
- 上期的判断(叙事在扩张、代码在沉淀)在本窗口未变:唯一的实质变化是一个 Ruby SDK 被登记进 community libraries。
agegr/pi-web
pi coding agent 的 Web UI| stars: 7516(上期 7484,+32)| open issues: 28(上期 22,+6) | 默认分支: main | 最近 push: 2026-10-18T13:00:00Z | 主页: (仓库未填 homepage)
近 41.7 天 release 重点:
- v0.12.2(2026-10-15)— 最新 tag
- 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.12.2
- v0.12.1(2026-10-13)/ v0.12.0(2026-10-11)
- 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.12.0
窗口期内无新 release(最新为 2026-10-15 的 v0.12.2)。
其他重要 commits / PRs:
- 窗口期内零 commit、零 PR 合并。 最后三个提交停在 2026-10-18:
df163cdfeat(models): match provider ids in the model and Add provider searches (#1308)35af710feat(terminal): follow the chat font size in the terminal (#1329)fbcbc31feat(agents): show running subagents on the top bar’s Agents badge (#1311)
- 新 issue(本日):
#1345Extension commands sent as prompt trigger a spurious “Session complete” Web Push(@moshouhot, open)#1335macOS 下 Ctrl+Alt+N 新建会话快捷键永不触发(Option+N 是死键,e.key为"Dead")(@jianzhangg, open)#1334[Session Info] Active Time stays frozen at the last session snapshot while token totals keep updating(@Popcornnnnnnnn, open)#1338UI 界面优化建议(@arch3rPro, open)
社区讨论 / 行业方向:
- 窗口期内未检索到新的公开讨论。
信号观察:
- 连续第 2 天零活动:最后 commit 停在 2026-10-18T13:00,距今约 35.5 小时;
commits?since=2026-10-19T00:30:00Z返回 0 条,closed PR 合并 0 个。 - open issues 从 22 升到 28(+6),方向与上期反转——上期它是本清单唯一「关闭速度快于新增」的仓库(43→22),本期这个优势消失,且是在完全没有开发活动的情况下发生的。
- star 增速 +32(上期 +18),略有回升,但绝对量仍是本清单最低。
- 新 issue 全部来自中文用户,且集中在快捷键(死键)与静默状态:
#1345的「扩展命令被当成 prompt 发出,触发一次假的『Session complete』推送」与#1334的「Active Time 冻结而 token 继续累加」是同一类——界面显示的状态与实际状态脱节,且无提示。
yxc023/yxc023.github.io
个人博客站(Astro),同时是本报告的发布目标仓库| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-20T00:10:46Z | 主页: (仓库未填 homepage)
近 41.7 天 release 重点:
窗口期内无 release。
其他重要 commits / PRs:
- 本仓库的提交来自报告同步脚本,非人工内容。
信号观察:
- stars: 1 | open issues: 27 —— 27 个 issue 是历次自动同步留下的,不是待办信号。
跨项目观察
-
一个模型契约在同一天改了本清单两个仓库的代码,而失败模式是「整个 provider 不可用」。 MiniMax-M3.1 强制
thinking: adaptive(发disabled返回 HTTP 400 error 2013)在 pi 表现为「加一个模型、隐藏旧模型」(d2e7d8b),在 hindsight 表现为「retain / consolidation / reflect 每次调用都 400」。差别在于 hindsight 的 LLM 调用全部走这条路径,因此没有部分可用状态。同一时期 pi 还修了e86b054(deepseek-r1 下架后测试未跟进)——模型目录的生命周期正在变成各仓库必须自己维护的契约。 -
成本第一次以「美元/天」出现在 PR 正文,并且两条 PR 同源。 opencode #56983(图像预算切点抖动,$101/天,占实测 $502/天问题的 20%)与 #57091(压缩请求在 tail 处分叉缓存前缀)出自同一份 24 小时 usage 账单。hindsight 侧的对应动作是 #5746(OpenAI embeddings 欠费时 defer)与新 issue #5771(embedding/rerank 从不计量,hosted 花费在 API 里不可见)。四个仓库里有三个在同一天处理「花了多少钱、花在哪里」,但只有一个真的把账单写进了 PR。
-
压缩(compaction)成为跨 harness 的共同故障面。 opencode 同日三条改动(#57091 改请求形状、#57203 删
recent字段、#57187 预算塌陷致会话永久死锁)与 pi 的 #11143(压缩路径跳过 sanitize,重复tool_result打 Anthropic 400 且自动重试每次报同一条错)。两边都不是「模型不够强」而是同一段代码有两个以上路径必须同时满足上游约束,而只有一条路径做了 sanitize / 预算检查。 -
「静默降级」第四次成为主要缺陷形状,本期横跨三个仓库四个缺陷。 pi #11124(
modelTools对空 registry 过滤 → 子 agent 零工具无警告)、opencode #57230(v2 把provider.options归一化进settings,导致文档给的includeUsage: false变通法失效)、opencode #57210(TUI model picker 漏掉全部 ollama 模型)、hindsight #5771(embedding/rerank 不计量)、hindsight #5794(decision modelask_all失败只记日志,被丢弃的答案让 reranker 把候选排到最后)、pi-web #1334(Active Time 冻结而 token 继续涨)。共同形状:配置或流程看起来在工作,实际某一步被跳过,且跳过不产生任何可见信号。 -
上期「注意力与代码脱钩」的判断在 hindsight 上被推翻,但换成了另一种形态。 静默区间实测 2026-10-16T19:58Z → 2026-10-19T09:07Z(约 2 天 13 小时)后,10.5 小时内 49 个 commit、20 个以上 PR 合并。star 增速 +807 → +370 → +432,在 +370 触底后回升。这不是「持续开发」,而是「1.0 GA 后的负载问题一次性集中回流」——本期 49 个 commit 里约 60% 来自单人以 fix/perf 为主。
-
pi 的 telemetry 走完了一个完整闭环,而 opencode 同期在同一主题上选了另一条路。 pi 两期连做:先是 propagation + metrics 契约(并明写「no exporter, no global current-span state, no backend 依赖」),本期是 SQLite store +
findTraces游标分页 +renderTrace,同时把Context.telemetry改成恒为 span、telemetryContext更名为telemetry。契约被统一了,但「显式注入而非全局埋点」的立场没有松动。 -
破坏性变更开始从 git 历史里冒出来,但还没进 release notes。 pi 的
5c1736f在 commit 首行写Breaking change:(checkpointWhen必填、无默认值),紧接在上期 schema v2「迁移后不可回滚」之后。两个破坏性变更都还没随 release 固化——v1.3.0 停在 10-15 已 5 天,本期全部产出 unreleased。ACP v1.12.0 相反,它第一次删特性时同时留下了 Removed 通知。 -
「一个 harness + 多个界面」的收敛在加速,但速率不对称。 opencode 侧 TUI/桌面/Web 三界面共享服务端的能力已延伸到 Windows(#56245 persistent PTY 全平台可用)与 Drive 管理状态(#57112/#57189);pi 生态侧 pi-web 连续第 2 天零活动、open issues 反而 +6。收敛发生在 harness 一侧,界面一侧正在掉队。
元信息
- 报告生成时间: 2026-10-20T00:30:19Z
- 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告
reports/latest.md的基准时间:字段,自 2026-09-08 起连续 11 期未变) - 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-20T00:30:19Z(约 41.7 天);本期新增内容全部落在 2026-10-19T00:30 之后的约 24 小时
- 数据源: GitHub API(gh CLI)+ mmx web search
- API rate limit 剩余: 4975 / 5000(core,抓取完成后查询)
- 抓取结果: 6 / 6 仓库 × 4 endpoint 全部成功;hindsight 新增提交数经
per_page=100二次确认(49 条,列表接口 30 条为截断);opencode V2 changelog 取自默认分支CHANGELOG.md(最新 v2.0.32,2026-10-16);ACP registry 版本变化取自registry.mdx的 patch;coding-agents v0.8.2为 hindsight 仓库内子包 release,非 GitHub Release 对象
评论