2026 2026年10月7日 29 min · 7.7k chars by yxc023

GitHub 调研周报 2026-10-07

扫描窗口:2026-09-08T09:23:29Z → 2026-10-07T00:30:35Z(约 28.6 天)| 基准来源:上次报告 2026-10-06

2026-10-07 GitHub 调研周报

扫描窗口:2026-09-08T09:23:29Z → 2026-10-07T00:30:35Z(约 28.6 天)| 基准来源:上次报告 2026-10-06

仓库范围:config/repos.yaml 中 6 个项目。本期相对上份的 24 小时窗口里最关键的信号是 earendil-works/pi 在 2026-10-06 一日内 30 commit(全部 30 条都落在过去 24h 内),主轴是 Mario Zechner 把 Durable execution model 推到「每条 conversation 的 context 在内存中常驻 + Cloudflare Durable Object SQLite adapter」与「scan conversations / entries / tasks / submissions 的顺序解耦」;同时 Armin Ronacher 同日连发 6 commit,把 --tools 改成 +name/-name modifiers、把 bundled Radius catalog 换成 gateway catalog、把 llama.cpp classifier models 拉成 native provider;anomalyco/opencode v2 一日合入 Office file preview(BetterOffice WASM)+ Responses reasoning replay 修复;agentclientprotocol 落定 background subagents cancel 语义 RFD(#2308)。

本期速览

  • earendil-works/pi Durable 24h 三连击(2026-10-06,Mario Zechner):① 每条 conversation 的 context 在内存中常驻(da866ad feat(durable): keep each conversation's context in memory; Durable Object SQLite adapter)——runtime.context() 缓存每条 conversation 最后读到的 range 与 derived view,下次任一 task 再读只需扫描之后的 entries;busy conversation 永远保留,idle 保留 settings.contextRetentionMs(默认 10 分钟)。新增 Cloudflare Durable Object SQLite adapter(openDurableObjectSqliteStorage(ctx.storage),无 per-row copy)。② scan conversations / entries / tasks / submissions 的顺序解耦(4dd2af4)——之前必须按 conversation → entry → task → submission 的固定顺序,现在任意顺序扫,依赖关系由数据驱动。③ 读 conversation context 早于某个 entry 的快照(76f6c06)——可在历史 entry 处取回当时的 context,对 fork / subagent 拉分叉前视图至关重要。
  • earendil-works/pi AI 层 hardening 24h 一批:① 把 bundled Radius catalog 换成 gateway catalog(43d3763,Armin)——之前 fetched catalog 与 shipped default catalog 合并导致组织 owner 禁用的 model 仍然列出。② --tools 接受 +name/-name modifiers(ddaa0a0,Armin)——纯 +/- 列表按 defaultTools 那样改默认工具集合,例如 pi -t +codemode;混入普通条目 / 修饰符带 glob 一律 reject;/reload 保留 -name 的移除。③ llama.cpp classifier models 走 native path(f6127a1,Armin,#10382)——Julia-1 / Laya / Kev / lev / OpenJev 等 classifier model 不再当 chat model 列举,类型化为 typesafe-system-one classifiers;只有 HTTP 501 / 404 才回落到 llama-cpp-classify,从 model store 恢复后会重检。④ Bedrock Converse 给 OpenAI model 发 reasoning effort(#10142,@jsanter27)——之前 reasoning_effort 只发到原生 OpenAI endpoint,Bedrock 转发时丢失。⑤ pi-ai AssistantMessageEventStream 用单调时钟记 durationMs(36a686e,#10549)——agent loop / durable tool task / coding-agent bash renderer 都拿到真耗时,reload 后仍可见。⑥ package artifact validation 统一(23cf2b9,#10197,Christian Klotz)——npm / Bun consumer install 视作可运行 release artifact,其他包保留隔离校验;smoke fixture 简化。
  • earendil-works/pi coding-agent / codemode / TUI 收尾 24h:① codemode 输出项分组(eb326d2,Armin)——文本项多块时带 ==> text N/M <== 头,console 输出合并到一个 <console_output> 块,console 文本项标 console: true。② outputPad 应用于全部 transcript blocks(#10557,@rwachtler)。③ fullscreen 选区在 transcript rebuild 时清掉(#10567,Christian Klotz)。④ clear mouse selection on session switch(#9310,@xdagiz,open)。⑤ compare Windows paths 不区分盘符大小写(#10570,@yhe960809-ai,open)——realpath 在 Windows 保留输入大小写,于是 C:\ 和 c:\ 比成不同,触发 ~/.agents/skills 重复发现为 project skill,每个 global skill 报一次 collision;hasTrustRequiringProjectResources 同样受累,现已 case-insensitive。
  • earendil-works/pi AI layer 其它 fix 24h:① feat(durable): expose models on ToolExecutionApi and HookApi(b0114ef)——hook / 工具侧不再要绕 createModels()。② take the TaskRuntime.context() cutoff as an options object(636703a)。③ report settings failures when checking kept context retention(ae92585)。④ reuse the scanned context range within a task invocation(68ccef1)。⑤ lead the model context with the initial system message(92216fa)。⑥ raise the root entry budget for the shared storage scan module(4c28a68)。⑦ scan conversations, entries, tasks, and submissions in either order(4dd2af4)。⑧ compare faux prompt-cache usage per message(fe11328)。⑨ time responses with private fields; use the real stream in proxy and test mocks(f284a24)。⑩ keep AssistantMessageEventStream assignable from plain event streams(3ba22ce)。⑪ retry transient server-busy provider errors(8b5708d)。⑫ estimate request context at 3.5 characters per token(27075fe)。⑬ update output limit assertions for token estimate(311f0e0)。⑭ Bedrock HTTP/2 stream cancel 重试(#10379,已在 v1.0.4 覆盖)。⑮ let caller headers override Codex originator and User-Agent(#10429)。⑯ let apps name themselves in OpenAI logins(#10433)。⑰ disable .env autoload in standalone binary(1ffb6bd)。⑱ mark codemode lookup helpers as async in description(2691216)。
  • anomalyco/opencode v2 一日两枚重磅:① #53305 feat(app): preview Word / Excel / PowerPoint files(Hona,+7681 / -53)——只读预览 .docx / .xlsx / .pptx;基于 BetterOffice(openooxml/betteroffice,Apache-2.0)的 Rust engines,每个 engine 在独立 worker 里跑,文件字节走 server file API,engine / 字体都从 app 自己的 origin 加载——完全不外发。这是 opencode 桌面端「AI 编辑器可看任何 Office 文件」的形态。② #53603 fix(ai): drop empty unfinished reasoning items on replay(rekram1-node,v2)——修 #48319:Responses stream 中 response.output_item.added 立刻持久化 session.reasoning.started 但 encrypted_content 要到 .done 才到;如果进程在 .ended / .step.failed 之前被 kill,to-llm-message.ts 之前按 message.error === undefined 判定为可 replay,把空壳 { type: "reasoning", id: "rs_A:rs_B", summary: [], encrypted_content: null } 喂回去,Responses 后端返 400 Referenced reasoning item 'rs_A:rs_B' was not found or has expired,每条后续 turn 都坏——现在未完成的 reasoning block 不再回放 providerMetadata,summary 部分降级成 text。
  • anomalyco/opencode v2 同期 8 commit 小动作:v1.18.35 patch 发布(2026-10-06T20:18:39Z)——① canonical redirects + JSON / Markdown data formats for agent-readable stats(a79ecfe,已在前份 PR 提过)——给 stats 加 content negotiation;② xAI tool-result images 走通了(#53549,@Jaaneek)——bump @ai-sdk/xai 到 3.0.139,支持的图片类型带上,不支持的跳过;③ Mistral Large 4 discount 上 Zen docs(Frank,2 commit)+ Exo Free 上 Console / Zen(dc85,2 commit)+ Fledge Alpha Free 上 Zen(@dc85,#52895,10-03)——provider 矩阵继续「周内已合」。④ remove unused artifacts directory(#53436,Shoubhit Dash)。⑤ chore(ci): use blacksmith for dev deploys(#53423,Adam)。⑥ feat(go): list paid Space Bunny(#53486,Jack)。⑦ stats retire legacy s3 lake(#52514 / #52572 / #52515,Adam,3 commit)。
  • anomalyco/opencode v1.18.35 release notes 全文:
    • Core
      • Improvements: Added canonical redirects and JSON and Markdown data formats for agent-readable stats.
      • Bugfixes: xAI tool results now include supported images, while unsupported image formats are skipped. (@Jaaneek)
    • 致谢 3 位社区贡献者:@dc85 (docs)、@jm0ney337 (docs(ecosystem): add opencode-supabase to ecosystem plugins, #49848)、@Jaaneek (xAI)。
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v1.18.35
  • agentclientprotocol 24h 三件事:① #2308 docs(rfd): let the Agent decide whether background subagents survive a cancel(@benbrandt,merged)——修改 subagents RFD:取消会话不再必然级联停掉所有 active descendants,仍会停掉「被取消工作所等待的 descendant work」,其它 descendants 由 Agent 自己决定(背景 child 例外);Client 通过 reported work state 得知哪些 descendant 已停,而非从 cancel 自身推断。这与 claude-agent-acp #1257 的实现动机一致——Claude Code 的 background subagent 在 Esc 之后仍运行,强制级联会让用户预期外的背景工作被中断。② #2314 RFD: negotiate structured text formats including Portable Org(@Cassiel-girl,open)——可选的、向后兼容的 ACP agent message 结构化文本协商机制;Markdown 仍默认;可协商 text/plain / text/markdown / text/org;每个 text content block 携带稳定的 format / profile 跨 streaming chunks 与 replay;text/org 配 portable profile 覆盖 headlines / paragraphs / lists / emphasis / links / tables / safe static blocks;实验阶段可走 _meta 命名空间能力,再走 schema。Discussion #2147 是其前身。③ #2311 docs(clients): add Threadlines to Desktop and Web(@badcuban,merged)——新进 registry,macOS / Windows / Linux 上的桌面 workspace,开多个 ACP agent 作 child process 并通过 stdio 对话。
  • vectorize-io/hindsight 24h 主要看 dependabot 一波 + 两条真 fix:① Nicolò Boschi 双 PR——#5358 fix(api): cancel a sync retain when its client disconnects:之前 ClientDisconnectCancellationMiddleware 只盯 /memories/recall / /reflect,POST /memories 拿不到 cancellation token;queued retain 在客户端挂断后仍占 lane slot,sync retain(async: false,无 async_operations row)没有任何东西能 stop。issue 里的实测:客户端 3 秒挂断,retain 跑了 1880 秒、占了半小时 LLM slot、把文档提交到一个 85 秒前已被删的 bank。修:/memories 的 POST 也进 middleware,pump queue 上限 1 条消息;#5360 fix(hermes,embed): local_embedded daemon start, restarts and Windows launch:一次扫掉 7 个长期 open 的 hermes / embed 问题(#5006 / #5192 / #5222 / #5252 / #5023 / #4974 / #5025)——helper 起 daemon 时不剥 PYTHONPATH / 把 ~/.hermes/tools/uv-* 加 PATH / drift 检查只看 plugin 自己写的 key / profile env 不被无脑清掉 / embedded client 发 API key / Windows daemon launch 等。② fix(worker): retire --max-retries/--log-level flags that never took effect(#5190,Rudy Mizrahi Celekli)——hindsight-worker --max-retries N / --log-level L 只动了 startup banner,poller / engine 的 retry budget / logging 都读 HINDSIGHT_API_WORKER_MAX_RETRIES / HINDSIGHT_API_LOG_LEVEL;现在两 flag 保留解析但隐去 --help、stderr 提示迁到 env var,banner 改用真生效值 config.worker_max_retries。③ Chris Bartholomew 26 条 dependabot bumps——source-map-js / multidict / fsspec / mako / sharp / shell-quote / @modelcontextprotocol/sdk 等在 17 个 workspace sub-lockfile 里推 minor(cursor / aider / autogen / composio / google-adk / hermes / meta-muse / strands / crewai / llamaindex / ai-sdk / chat / cloudflare-oauth-proxy / eliza / eve / nemoclaw / obsidian / openclaw / opencode / paperclip / dify / system-evals / workspace / cloudflare-oauth-proxy 等)。
  • agegr/pi-web:窗口期内无新 commit / release(最近 v0.10.0 在 2026-10-02,已在上份覆盖);4 个 open PR(#1078 修 demo bundled-deps / #1070 collapse compact info / #1064 启用 renovate / #951 open & reveal paths in OS file manager)仍未 merge;stars 7117。
  • yxc023/yxc023.github.io:ec6fc9e auto(reports): 同步 daily-research 2026-10-06(@yxc023,2026-10-06T00:39:48Z)——自动化同步流程正常。
  • 跨项目共有信号:① “single-day huge commit burst”——earendil-works/pi 在 2026-10-06 一日 30 commit(Mario 21 + Armin 6 + 其它 3),全部 30 条都落在过去 24h 内;opencode v2 同期 12 commit;ACP 6 commit;hindsight 30 commit——「周一刷一波」的节奏仍在。② “Durable Object SQLite adapter 落地”——pi Durable 在 MemoryStorage / openNodeSqliteStorage 之外,新增 openDurableObjectSqliteStorage(ctx.storage),把 conversation context 常驻内存与 Cloudflare Durable Object SQLite 配对,把 Durable harness 推到 edge runtime。③ “responses / reasoning replay correctness”——opencode #53603 与 pi #10493 同期都在修「网络协议里的 reasoning 流在不同 termination 路径下的可重放性」;前者补 Responses stream 的空壳 leak,后者补 MCP OAuth CIMD 的 redirect URI 派生。④ “—tools 的语法扩展”——v1.0.4 加 glob(mcp__radius__*),24h 后又加 +name/-name modifiers,让「只切默认工具集合」无需列全表。⑤ “background subagents 取消语义正式落 RFD”——ACP #2308 把 Claude Code / claude-agent-acp 的实际行为写进协议 RFD;这是 ACP 第一次把 “the Agent decides” 写进正式规范而不是 adapter 行为。⑥ “agent-readable stats”——opencode v1.18.35 的 canonical redirects + JSON / Markdown 内容协商让 model 也能消费 stats,是「AI 编辑器的 AI 工具开始自我量化」的信号。

各仓库详情

earendil-works/pi

AI agent 工具集:统一 LLM API、agent loop、TUI、coding agent CLI;MIT 许可,月活”数十万”级(Earendil 自述)。| stars: 112,965(上份 112,722,+243 / 24h) | open issues: 286 | 默认分支: main | 最近 push: 2026-10-06T22:14:54Z | 主页: https://earendil.com

近 N 周 release 重点:

  • v1.0.4(2026-10-05T22:03:50Z)— --tools glob + --no-mcp + codemode image block

    • --tools / --exclude-tools 支持 glob:例如 --tools read,codemode,'mcp__radius__*' 保留单家 MCP 的工具;--tools 默认不再移除 MCP 工具(除非显式 mcp__ 前缀),--no-mcp 单次关闭 MCP。修 #10143 / #10249 / #10251 / #10343 / #10379 / #10444 等。
    • Codemode read() 解析 image block:tools.read() 在 image 文件上现在返回 image block(带 note),image() 渲染——codemode 终于能”读图”。fix #10251。
    • MCP OAuth CIMD application_type=native:OpenID Connect 授权服务器对未声明 application_type 的注册按 web client 处理,从而拒绝 loopback redirect URI;现在按 redirect_uris 派生——loopback host / custom scheme 视为 native,否则 web——修 #10493 / MCP SEP-837。
    • MCP 连接关闭 race fix:close() 在连接中 abort per-connection signal(取消 in-flight client + retry wait + 等 connect 收敛后再返回),修 #10249。
    • 隐藏工具不污染 system prompt:声明规则和 skills hint 跟随”active minus hiddenDeclarations”;reader 被 hide 时 skills hint 不再点名;codemode 把每个 tool 的 prompt guidelines 跟着 declaration 一起出现,新增 ToolLoadout.getPromptGuidelines(),修 #10343。
    • Bedrock HTTP/2 stream cancel 重试:stalled HTTP/2 连接会让 Bedrock 请求挂到 SDK 的 5 分钟 session timeout(ERR_HTTP2_STREAM_CANCEL),现在未发送的请求自动重试,修 #10379。
    • Codemode 内置对象冻结:Array.prototype.toJSON = ... 之类的 patch 不再有效;worker payload 在 host 侧校验,畸形 payload 走 sandbox error 而非 host crash,修 #10444。
    • 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.0.4
  • v1.0.3(2026-10-05T08:38:23Z)— Azure provider 重命名 + Foundry Chat Completions + codemode image files

    • Breaking:Azure provider azure-openai-responses → azure(#9714,@jsanter27):auth.json / models.json / settings.json(defaultProvider / enabledModels / modelThinkingLevels)的 provider key 都要改,旧 provider 的 session 在 resume 时降级到其它 model 且 prompt cache 不复用;AZURE_OPENAI_* 环境变量名不变。
    • Azure Foundry Chat Completions(#9714,@jsanter27):azure/ provider 现在也服务 Foundry 部署,首发 azure/deepseek-v4-pro,fix #9645。
    • Codemode image() 落 temp files(#10310):image() 同时把生成的图片写到 temp 文件并在 result 里给出 path,后续 turn 可复制 / 移动——延续 v1.0.2 image() 的方向,让”生成图片”成为跨 turn 可寻址的资源。
    • 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.0.3

(窗口期内新增 release:0;上份覆盖的 v1.0.4 + v1.0.3 仍为最新;v0.99.2 / v0.99.0 / v0.87.x / v0.86.x / v0.85.x 已在前几份覆盖。)

其他重要 commits / PRs(过去 24h,按重要性挑选;全部 30 条 commits 都落在 24h 内):

  • da866ad Durable:每条 conversation context 在内存常驻 + Cloudflare Durable Object SQLite adapter — feat(durable): keep each conversation's context in memory; Durable Object SQLite adapter(Mario Zechner, 2026-10-06)。runtime.context() 缓存最后读到的 range + derived view,下次再读只扫描之后的 entries;busy conversation 永久保留,idle 保留 settings.contextRetentionMs(默认 10 分钟)。新增 openDurableObjectSqliteStorage(ctx.storage)——SQLite-on-Cloudflare-DO,无 per-row copy。Files: +925/-95(含 cloudflare.ts 新文件 +139 + harness-context.test.ts +442)。
  • 4dd2af4 Durable:scan conversations / entries / tasks / submissions 顺序解耦 — feat(durable): scan conversations, entries, tasks, and submissions in either order(Mario Zechner, 2026-10-06)。依赖关系由数据驱动而非固定顺序。
  • 76f6c06 Durable:读 conversation context 早于某个 entry 的快照 — feat(durable): read a conversation's context as of an earlier entry(Mario Zechner, 2026-10-06)。fork / subagent 拿分叉前视图的支撑。
  • b0114ef Durable:把 models 暴露到 ToolExecutionApi 与 HookApi — feat(durable): expose models on ToolExecutionApi and HookApi(Mario Zechner, 2026-10-06)。hook / 工具侧不再绕 createModels()。
  • 636703a Durable:TaskRuntime.context() cutoff 改成 options object — feat(durable): take the TaskRuntime.context() cutoff as an options object(Mario Zechner, 2026-10-06)。
  • ae92585 Durable:报 settings failures 给 kept context retention checker — fix(durable): report settings failures when checking kept context retention(Mario Zechner, 2026-10-06)。
  • 68ccef1 Durable:task invocation 内复用 scanned context range — fix(durable): reuse the scanned context range within a task invocation(Mario Zechner, 2026-10-06)。
  • 92216fa Durable:model context 把初始 system message 放最前 — fix(durable): lead the model context with the initial system message(Mario Zechner, 2026-10-06)。
  • 4c28a68 Durable:提高 shared storage scan module 的 root entry budget — fix(durable): raise the root entry budget for the shared storage scan module(Mario Zechner, 2026-10-06)。
  • 43d3763 AI:bundled Radius catalog 换 gateway catalog — fix(ai): replace bundled Radius catalog with gateway catalog(Armin Ronacher, 2026-10-06)。组织 owner 禁用的 model 之前仍出现在 fetched+shipped 合并后的列表里。
  • ddaa0a0 coding-agent:--tools 接 +name/-name modifiers — feat(coding-agent): accept +name/-name entries in --tools(Armin Ronacher, 2026-10-06)。pi -t +codemode 像 defaultTools 那样改默认;混普通条目 / 修饰符带 glob 一律 reject;/reload 保留 -name 的移除。
  • f6127a1 coding-agent:llama.cpp classifier models 走 native — feat(coding-agent): use llama.cpp classifier models natively (#10382)(Armin Ronacher, 2026-10-06)。Julia-1 / Laya / Kev / lev / OpenJev 类型化为 typesafe-system-one classifiers;只有 HTTP 501 / 404 才回落到 llama-cpp-classify,从 model store 恢复后重检。
  • 36a686e 通用:AssistantMessageEventStream 用单调时钟记 durationMs — feat: record response, tool execution, and durable task times(Mario Zechner, 2026-10-06,closes #10549)。agent loop / durable tool task / coding-agent bash renderer 都拿到真耗时,reload 后仍可见。
  • 23cf2b9 通用:package artifact validation 统一 — feat: unify package artifact validation (#10197)(Christian Klotz, 2026-10-06)。npm / Bun consumer install 视作可运行 release artifact,其它保留隔离校验;附 restrict local artifact output paths / clarify package artifact module names / support pnpm package artifact consumers / preserve local release package installs 4 子 commit。
  • eb326d2 codemode:分离输出项 — fix(codemode,coding-agent): separate codemode output items(Armin Ronacher, 2026-10-06)。文本项多块时带 ==> text N/M <== 头,console 输出合并为一个 <console_output> 块,console 文本项标 console: true。
  • f284a24 AI:用 private fields 计时响应 — fix(ai): time responses with private fields; use the real stream in proxy and test mocks(Mario Zechner, 2026-10-06)。
  • 3ba22ce AI:AssistantMessageEventStream 可从 plain event stream 赋值 — fix(ai): keep AssistantMessageEventStream assignable from plain event streams(Mario Zechner, 2026-10-06)。
  • fe11328 AI:faux prompt-cache usage 按 message 比 — fix(ai): compare faux prompt-cache usage per message(Mario Zechner, 2026-10-06)。
  • 2989eb5 AI / #10142:Bedrock Converse 给 OpenAI model 发 reasoning effort — fix(ai): send reasoning effort to OpenAI models on Bedrock Converse (#10142)(Justin Santer, 2026-10-06)。原 reasoning_effort 只发到原生 OpenAI endpoint,Bedrock 转发丢失。
  • 311f0e0 AI:output limit assertions 按 token estimate 更新 — fix(ai): update output limit assertions for token estimate(David Brailovsky, 2026-10-06)。
  • 27075fe AI:request context 按 3.5 字符 / token 估算 — fix(ai): estimate request context at 3.5 characters per token(David Brailovsky, 2026-10-06)。
  • 8b5708d AI:retry transient server-busy provider errors — fix(ai): retry transient server-busy provider errors(David Brailovsky, 2026-10-06)。
  • 0cf65d2 AI / #10429:caller headers 覆盖 Codex originator / User-Agent — fix(ai): let caller headers override Codex originator and User-Agent (#10429)(Lucas Meijer, 2026-10-06)。
  • 9ad0831 AI / #10433:apps 给自己在 OpenAI logins 起名 — feat(ai): let apps name themselves in OpenAI logins (#10433)(Lucas Meijer, 2026-10-06)。
  • 2691216 coding-agent:codemode lookup helpers 标 async — fix(coding-agent): mark codemode lookup helpers as async in description(Armin Ronacher, 2026-10-06)。
  • 1833698 coding-agent / #10557:outputPad 应用于所有 transcript blocks — fix(coding-agent): apply outputPad to all transcript blocks (#10557)(Ramiz Wachtler, 2026-10-06)。
  • 83c9e26 tui,coding-agent / #10567:transcript rebuild 清 fullscreen 选区 — fix(tui,coding-agent): clear fullscreen selection on transcript rebuild (#10567)(Christian Klotz, 2026-10-06)。
  • 56b25ff coding-agent / #10566:documented message types 对齐 — docs(coding-agent): align documented message types (#10566)(Christian Klotz, 2026-10-06)。
  • 1ffb6bd coding-agent:standalone binary 禁用 .env autoload — fix(coding-agent): disable .env autoload in standalone binary(Armin Ronacher, 2026-10-06)。
  • 428a12b chore:approve contributors from issue #10353 — chore: approve contributors from issue #10353(github-actions[bot], 2026-10-06)。

未合并的 open PR(24h 内更新过的):

  • #10513 feat(durable): support entry cutoffs in conversation context(mattiacerutti, updated 2026-10-06T16:38:49Z)——与本周期 commit 76f6c06 主题相同(conversation context 早于 entry 取回);Resolves #10512。
  • #10570 fix(coding-agent): compare Windows paths without drive-letter case(yhe960809-ai, updated 2026-10-06T15:20:42Z, open)——修 #10488。
  • #9310 fix(coding-agent): clear mouse selection on session switch(xdagiz, updated 2026-10-06T15:17:20Z, open)。

社区讨论 / 行业方向:

信号观察:

  • durability 三件套(conversation 常驻 + scan 顺序解耦 + 早于 entry 取 context)同日落地:把 Durable harness 的「跨重启一致性」抽象从「每 turn 全量读 + 固定顺序扫」提升到「增量读 + 任意顺序扫 + 历史快照」——这是 edge runtime(Cloudflare Durable Object)上跑 conversation-heavy 应用的最低必要条件;Harness 在 SQLite 上的代码量本来就小,再加一个 DO adapter 不算新成本。
  • +name/-name 与 glob 互补:v1.0.4 glob 解决「单家 MCP 工具保留」,+name/-name 解决「不动 defaultTools,单次切默认」——--tools 的语法边界在两次 release 内从「白名单枚举」扩展到「带 glob 的白名单」再到「带 modifier 的白名单」。
  • AssistantMessageEventStream.durationMs 全面化:之前要看一个 API 调用耗时只能从 startedAt / endedAt 推;现在 agent loop / durable tool task / bash renderer 都拿 durationMs,并在 reload 后仍可见——可观测性从「开发调试」走到「用户面 UI」。
  • Bedrock Converse 上 OpenAI reasoning effort:把 OpenAI 协议层的特性往 Bedrock 适配器方向延伸,是「Bedrock 兼容 Anthropic / OpenAI 模型」赛道的常见痛点——给 OpenAI model 走 Bedrock 不能丢 reasoning_effort。

anomalyco/opencode

开源 coding agent:TypeScript / Bun,单仓多 target(CLI / Desktop / TUI / ACP server / Web);MIT 许可;v2 分支距 v1.0.0 已 7553 commit。| stars: 212,048 | open issues: 6,242 | 默认分支: dev | 最近 push: 2026-10-07T00:31:02Z | 主页: https://opencode.ai

近 N 周 release 重点:

  • v1.18.35(2026-10-06T20:18:39Z)— agent-readable stats + xAI tool images

    • Core · Improvements:Added canonical redirects and JSON and Markdown data formats for agent-readable stats.
    • Core · Bugfixes:xAI tool results now include supported images, while unsupported image formats are skipped. (@Jaaneek)
    • 致谢 3 位社区贡献者:@dc85 (docs(web): add Fledge Alpha Free to Zen docs, #52895)、@jm0ney337 (docs(ecosystem): add opencode-supabase to ecosystem plugins, #49848)、@Jaaneek (fix(opencode): bump @ai-sdk/xai to 3.0.139 so tool-result images reach xAI, #53549)。
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v1.18.35
  • v1.18.34(2026-09-30T22:39:45Z)— namespaced session identity + macOS signing

    • 已在 2026-10-06 上份覆盖。

(窗口期内新增 release:1,即 v1.18.35;v1.18.30 / v1.18.31 / v1.18.32 / v1.18.33 已在前几份覆盖。)

其他重要 commits / PRs(过去 24h,按重要性挑选):

  • #53305 feat(app): preview Word / Excel / PowerPoint files(Hona, base=v2, merged 2026-10-07T00:31:02Z, +7681 / -53)——只读预览 .docx / .xlsx / .pptx,基于 BetterOffice(Rust 引擎编译为 WASM)的全新 built-in GUI extension microsoft-office;每个 engine 在独立 worker 里跑,文件字节走 server file API,引擎和字体都从 app 自己的 origin 加载——文件不出本机。
  • #53603 fix(ai): drop empty unfinished reasoning items on replay(rekram1-node, base=v2, merged 2026-10-07T00:03:38Z)——修 #48319。Responses stream 的 reasoning item 在 output_item.added 时即持久化但 encrypted_content 要到 .done 才到;进程被 kill 时产生空壳 reasoning block,被回放后让 Responses 后端返 400 Referenced reasoning item ... was not found or has expired;现在未完成的 reasoning block 不再回放 providerMetadata,summary 部分降级成 text。
  • #47666 fix(tui): derive tab busy state from execution only(opencode-agent[bot], base=v2, NOT merged, updated 2026-10-06T22:15:26Z)——把 tab spinner 从「synthetic item + inbox contents」改为「execution only」;一行生产改动:busy: members.some((id) => data.session.status(id) === "running")。覆盖:completed shell context / pending synthetic / pending user / compaction / move 在 steer + queue 下 / 成功 / 失败 / 中断 / 家族成员 busy 状态。
  • #53627 fix(desktop): fix browser bar review findings(Hona, base=v2, merged 2026-10-06T23:50:14Z)。
  • ecc4916 fix(stats): attribute exo usage to an unknown provider(Daniel Chen, 2026-10-06T22:32:45Z, #53621, merged)。
  • e256433 docs(web): add Exo Free to Zen docs(Daniel Chen, 2026-10-06T22:29:35Z, #53622, merged)。
  • adf32d6 / d5772b1 docs(web): Mistral Large 4 discount + locales(Frank, 2026-10-06T21:55:13Z / 21:31:54Z)。
  • 83802d8 fix(opencode): bump @ai-sdk/xai to 3.0.139 so tool-result images reach xAI(Milosz Jankiewicz, 2026-10-06T16:11:21Z, #53549, merged)——同 v1.18.35 release note 中致谢的 @Jaaneek 是同一 PR。
  • 3f393d7 fix(stats): show public specs for stealth models(opencode-agent[bot], 2026-10-06T10:29:36Z, #53381, merged)。
  • f03046d feat(go): list paid Space Bunny(Jack, 2026-10-06T05:14:54Z, #53486)。
  • fa49567 chore: bump gitlab-ai-provider to 6.19.0(Vladimir Glafirov, 2026-10-06T02:12:00Z, #53345)。
  • 7723920 chore: remove unused artifacts directory(Shoubhit Dash, 2026-10-05T21:44:02Z, #53436)。
  • 3569ebe chore(ci): use blacksmith for dev deploys(Adam, 2026-10-05T20:04:53Z, #53423)。
  • 63be8f9 opencode: sync release versions for v1.18.35(2026-10-06T20:18:36Z)。

社区讨论 / 行业方向:

信号观察:

  • v2 → 桌面的视觉闭环:#53305 Office preview 把 v2 的桌面端从「AI 编辑器能改文件」推到「AI 编辑器能看任何 Office 文件」——BetterOffice WASM 把渲染/解析放到 worker,server file API 出字节,是「本机 + 异构 worker」的形态。
  • reasoning 流可重放性进入主线:#53603 与 pi 当日 commit 都把「流被中断后回放」当一等公民。opencode 走 Responses 协议侧的 leak 修复,pi 走 Bedrock Converse 侧的 reasoning effort 转发——两者都不是协议 bug,是 harness 与协议交互的细节,长期会成为 harness 成熟度的衡量。
  • stats 数据可被 agent 消费:feat(stats): add canonical redirects and agent-readable data formats(a79ecfe,已合入 v1.18.35)让 stats 既能给人看也能给 agent 解析——「让 AI 编辑器的 AI 工具自我量化」的最早形态之一。

agegr/pi-web

pi coding agent 的 Web UI;TypeScript。| stars: 7,117 | open issues: 97 | 默认分支: main | 最近 push: 2026-10-02T16:57:25Z | 主页: https://github.com/agegr/pi-web

近 N 周 release 重点:

  • v0.10.0(2026-10-02T16:57:33Z)——已在 2026-10-02 / 2026-10-04 / 2026-10-05 / 2026-10-06 上几份覆盖。

(窗口期内新增 release:0;最近 release 仍为 v0.10.0。)

其他重要 commits / PRs:

  • 过去 24h 内无新 commit / PR(仓库自 v0.10.0 之后未见 push)。
  • 4 个长期 open PR:#1078 修 demo bundled-deps / #1070 collapse compact info / #1064 启用 renovate / #951 open & reveal paths in OS file manager。

社区讨论 / 行业方向:

  • 窗口期内未检索到针对 pi-web 的新讨论。

信号观察:

  • release 后 5 天无 commit:自 2026-10-02 v0.10.0 之后到 2026-10-07 未见 push,与 pi 主仓的一日 30 commit 节奏形成对比——pi-web 仍按 pi 主仓的节奏「跟」。
  • 首次运行无历史对比,本次运行窗口期内无 commit,信号观察以窗口期内的 push 间隔 + open PR 数量为准。

vectorize-io/hindsight

Agent 记忆系统:retain / recall / reflect 三大能力 + 本地嵌入式 hermes / embed;MIT。| stars: 46,321 | open issues: 136 | 默认分支: main | 最近 push: 2026-10-06T20:20:06Z | 主页: https://hindsight.vectorize.io

近 N 周 release 重点:

  • v0.10.2(2026-09-29T10:06:40Z)——已在 2026-10-04 / 2026-10-05 / 2026-10-06 上几份覆盖。

(窗口期内新增 release:0;最近 release 仍为 v0.10.2。)

其他重要 commits / PRs(过去 24h,按重要性挑选;30 条 commits 全部落在 24h 内):

  • #5358 fix(api): cancel a sync retain when its client disconnects(Nicolò Boschi, merged 2026-10-06T15:55:43Z)——修 #4526。ClientDisconnectCancellationMiddleware 之前只盯 /memories/recall / /reflect,POST /memories 拿不到 cancellation token;queued retain 在客户端挂断后仍占 lane slot,sync retain(async: false,无 async_operations row)没有任何东西能 stop。issue 实测:客户端 3 秒挂断,retain 跑了 1880 秒、占了半小时 LLM slot、把文档提交到一个 85 秒前已被删的 bank。修:/memories 的 POST 进 middleware,pump queue 上限 1 条消息。
  • #5360 fix(hermes,embed): local_embedded daemon start, restarts and Windows launch(Nicolò Boschi, merged 2026-10-06T15:57:15Z)——一次扫掉 7 个长期 open 的 hermes / embed 问题(#5006 / #5192 / #5222 / #5252 / #5023 / #4974 / #5025)——helper 起 daemon 时不剥 PYTHONPATH / ~/.hermes/tools/uv-* 加 PATH / drift 检查只看 plugin 自己写的 key / profile env 不被无脑清掉 / embedded client 发 API key / Windows daemon launch 等。
  • #5190 fix(worker): retire --max-retries / --log-level flags that never took effect(Rudy Mizrahi Celekli, merged 2026-10-06T15:32:29Z)——hindsight-worker --max-retries N / --log-level L 只动了 startup banner,poller / engine 的 retry budget / logging 都读 env var;现在保留 flag 解析但隐去 --help、stderr 提示迁到 env var,banner 改用真生效值。
  • Chris Bartholomew 26 条 dependabot bumps(2026-10-06T15:32–16:21)——source-map-js / multidict / fsspec / mako / sharp / shell-quote / @modelcontextprotocol/sdk 在 17 个 workspace sub-lockfile(cursor / aider / autogen / composio / google-adk / hermes / meta-muse / strands / crewai / llamaindex / ai-sdk / chat / cloudflare-oauth-proxy / eliza / eve / nemoclaw / obsidian / openclaw / opencode / paperclip / dify / system-evals / workspace 等)里推 minor。

社区讨论 / 行业方向:

信号观察:

  • local_embedded 系列 issue 一次性收口:#5360 一次扫掉 7 个长期 open 的 hermes / embed 问题——helper 启动 daemon 时对 PYTHONPATH / PATH / profile env 的处理是「细节越攒越错」的高发区,本周期把它们一次性收紧。
  • sync retain 取消通道补齐:ClientDisconnectCancellationMiddleware 之前是「recalled 路径全覆盖、retain 路径没接管」的经典 split;现在统一,sync retain 也能被 cancel 干净——harness / API 边界的常见 bug 类。
  • CLI flag 的语义退役:#5190 把 --max-retries / --log-level 这种「只动 banner、其它读 env」的 CLI flag 保留解析但隐去 --help——CLI 的 long-term API 收敛策略。

agentclientprotocol/agent-client-protocol

Agent 与 Editor 之间的协议(ACP);Rust crate + JSON schema 双轨;Apache-2.0。| stars: 4,381 | open issues: 46 | 默认分支: main | 最近 push: 2026-10-06T21:42:03Z | 主页: https://agentclientprotocol.com

近 N 周 release 重点:

  • v1.10.2(2026-10-01T13:16:02Z)——已在 2026-10-04 / 2026-10-05 / 2026-10-06 上几份覆盖。

(窗口期内新增 release:0;最近 release 仍为 v1.10.2;schema-v1.24.1 / schema-v2.0.0-alpha.7 已在前几份覆盖。)

其他重要 commits / PRs(过去 24h,按重要性挑选):

  • #2308 docs(rfd): let the Agent decide whether background subagents survive a cancel(@benbrandt, merged 2026-10-06T10:54:50Z)——修改 subagents RFD:取消会话不再必然级联停掉所有 active descendants;仍会停掉「被取消工作所等待的 descendant work」,其它 descendants 由 Agent 自己决定(背景 child 例外);Client 通过 reported work state 得知哪些 descendant 已停,而非从 cancel 自身推断。与 claude-agent-acp #1257 的实现动机一致——Claude Code 的 background subagent 在 Esc 之后仍运行,强制级联会让用户预期外的背景工作被中断。
  • #2314 RFD: negotiate structured text formats including Portable Org(@Cassiel-girl, NOT merged, updated 2026-10-06T12:36:58Z, base=main)——可选的、向后兼容的 ACP agent message 结构化文本协商机制。Markdown 仍默认;可协商 text/plain / text/markdown / text/org;每个 text content block 携带稳定的 format / profile 跨 streaming chunks 与 replay;text/org 配 portable profile 覆盖 headlines / paragraphs / lists / emphasis / links / tables / safe static blocks;实验阶段可走 _meta 命名空间能力,再走 schema。Discussion #2147 是其前身。
  • #2311 docs(clients): add Threadlines to Desktop and Web(@badcuban, merged 2026-10-06T07:59:46Z)——新进 registry,macOS / Windows / Linux 上的桌面 workspace,开多个 ACP agent 作 child process 并通过 stdio 对话;v0.5.0 起运行 Cursor Agent 与 fx(其它 code 如 Codex / Claude Code 走自己集成)。
  • #2319 / #2318 / #2312 / #2310 docs: update registry agents(acp-release-bot[bot], 2026-10-06T21:41:03Z / 16:55:21Z / 10:18:46Z / 03:02:46Z, all merged)——auto-generated by the sync-registry workflow,每天从 ACP Registry CDN 同步 agents registry。
  • bf508a1 chore(deps): bump taiki-e/install-action from 2.87.20 to 2.87.22(dependabot[bot], 2026-10-05T16:22:42Z, #2301)。
  • 08e3582 chore(deps): bump dtolnay/rust-toolchain(dependabot[bot], 2026-10-05T16:22:16Z, #2302)。
  • 9c2f93d / 52bcdfe chore(deps): bump the minor group with 2 / 34 updates(dependabot[bot], 2026-10-05T16:21:51Z / 16:21:27Z, #2303 / #2305)。

社区讨论 / 行业方向:

信号观察:

  • RFD 落字定调:#2308 把「取消会话」对 background descendants 的影响从「必然级联」改成「Agent decides」——这是 ACP 第一次把 Claude Code / claude-agent-acp 等实际实现的”the Agent decides”写进正式规范,而非 adapter 行为。
  • text/org 加进谈判表:#2314 在 Markdown 之外加 text/plain 与 text/org(org-mode),profile 在 streaming chunks 与 replay 之间稳定——ACP 第一次把”结构化文本”作为可选 axis 写出。
  • registry 增长不停:本周 4 条 docs: update registry agents(#2319 / #2318 / #2312 / #2310),加 #2311 Threadlines / #2309 / #2307 Raven / #2306 / #2304 CallBro / #2295 AgentDeck / #2289 AiRC / #2287 GetPullRequest——按每日 1+ 家 client 的速度进。

yxc023/yxc023.github.io

个人技术博客(Astro);本仓库作为 daily-research 报告自动同步的目标。| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-06T00:39:52Z | 主页: https://yxc023.github.io

近 N 周 release 重点: 无 release。

其他重要 commits / PRs:

  • ec6fc9e auto(reports): 同步 daily-research 2026-10-06(@yxc023, 2026-10-06T00:39:48Z)——自动化同步流程正常。

社区讨论 / 行业方向: 暂无(个人博客站)。

信号观察:

  • 自动同步流程正常:上一份 daily-research 报告于 2026-10-06 凌晨完成同步——deploy pipeline 与 daily-research 的衔接稳定。

跨项目观察

  • 「24 小时 30 commit 大单日」三家齐发:earendil-works/pi 30 commit(24h 窗口几乎独占) / opencode v2 12 commit / vectorize-io/hindsight 30 commit / agentclientprotocol 6 commit——周一凌晨的 burst 是这几个项目的稳定节奏,但 pi 与 hindsight 的 30 是「全部」落在 24h 内,说明 2026-10-06 当天特别密集。opencode v2 的 12 条更偏 docs / chore。
  • 「Durable execution model 走向 edge」:pi Durable 在本周期正式加入 Cloudflare Durable Object SQLite adapter(openDurableObjectSqliteStorage),加上 conversation context 常驻内存、scan 顺序解耦、早于 entry 取 context——Edge runtime(Cloudflare Workers / Durable Objects)成为 Durable harness 的部署目标之一,与 Hono / Workers 生态进一步对齐。
  • 「Reasoning stream replay correctness」:opencode #53603(Responses stream 空壳 reasoning item 回放 → 400)与 pi #10142(Bedrock Converse 给 OpenAI model 发 reasoning effort)本期都在「reasoning 在不同 termination 路径下的可重放性」上交作业;前者修协议侧 leak,后者修适配器侧转发——harness × 模型协议的交互细节正在成为可重放性的主战场。
  • 「CLI 工具语法在两周内两次扩展」:pi 的 --tools 在 v1.0.4 (glob) → 24h 后 (ddaa0a0 +name/-name modifiers) → 后续 (#10570 case-insensitive Windows paths) 一系列微扩展里,从「白名单枚举」走到「带 modifier 的白名单」——CLI 长尾的语法扩展通常是用户反馈驱动的,pi 团队的节奏反映用户群的成熟度。
  • 「ACP 把 Agent decides 写进 RFD」:#2308 是 ACP 第一次把 background subagents 的 cancel 语义交给 Agent 自己决定——协议侧不再假设 adapter 必须级联取消;这是 ACP 从「editor → agent」单向走向「editor ↔ agent 双向」的标志事件,与 opencode v2 的 ACP turn fold 重写(#52826 / #52825,上份覆盖)同期落地。
  • 「AI 工具开始自我量化」:opencode v1.18.35 的 stats 加 canonical redirects + JSON / Markdown 内容协商,让 agent 与 human 都能消费 stats 数据——「让 AI 编辑器的 AI 工具自我量化」的最早形态之一。
  • 「Registry 仍在以每日 1+ 家 client 的速度扩张」:ACP 本周新增 Threadlines / Raven / CallBro / AgentDeck / AiRC Orchestration / GetPullRequest 等多家;opencode ecosystem plugins 也加了 opencode-supabase——registry 增长不停,背后的 agent runtime 兼容性是真正的护城河。

元信息

  • 报告生成时间: 2026-10-07T00:30:35Z
  • 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段)
  • 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-07T00:30:35Z(约 28.6 天)
  • 数据源: GitHub API(gh CLI)+ mmx web search
  • API rate limit 剩余: 5000

评论