2026 2026年10月14日 24 min · 7.0k chars by yxc023
GitHub 调研周报 2026-10-14
扫描窗口:2026-09-08T09:23:29Z → 2026-10-14T00:30:22Z(共 35.7 天)| 基准来源:上次报告 2026-10-13
2026-10-14 GitHub 调研周报
扫描窗口:2026-09-08T09:23:29Z → 2026-10-14T00:30:22Z(共 35.7 天)| 基准来源:上次报告 2026-10-13
仓库范围:
config/repos.yaml中 6 个项目。基准时间字段自 2026-09-08 起未变,窗口逐日变宽,本期新增内容全部落在 2026-10-13T00:33 之后的 24 小时。这一天的重量集中在两件事:hindsight 发 v1.0.0 并同时发布 Memlake(把记忆存储从 Postgres 拆出去);pi 的^依赖范围在 1.2.0 之后炸掉了下游,pi 与 pi-web 分别在 10-13 各自修了一次(下游先修、根因晚 5.5 小时)。
本期速览
-
vectorize-io/hindsight: v1.0.0 于 10-13 14:08(UTC)发布,release notes 直言「架构与 API 已稳定,从这里 API 是一个 promise(承诺)」。开源版继续跑在 Postgres 上。发布前 39 分钟(13:07:13Z,commit
65ef1bd)回滚了 #5513(consolidation discovery probe / mental-model edit race / LlamaParse v2)——1.0 之前主动撤掉一个已合的功能。 -
vectorize-io/hindsight: 同日发布博客《Introducing Hindsight Memlake: serving 100M Memories at <100ms p99 on object storage》。Memlake 是用 Rust 重写的企业级存储引擎,把 memories、links、indexes、documents、mental models / knowledge pages 全部搬进对象存储(S3 / GCS),把 banks、后台任务队列、audit log 留在 Postgres;接入 Hindsight 数据库层,agent、SDK、API 调用方式完全不变。属于 Hindsight Enterprise,Hindsight Cloud 大部分已经在跑它。
-
vectorize-io/hindsight: Memlake 的论证完全建立在实测数字上:4 vCPU 主库上 recall 从 33k memories 的 7.0 qps 掉到 164k 的 1.9 qps,加并发只增加排队;210k 规模的 bank 上一次关键词查询几乎命中所有行;每条 memory 产生约 190 KB WAL;ingest 封顶 55–80 memories/秒;一个组织挂 1000 个小 bank 时只能撑约 2 recalls/秒;托管集群里 memory 之间的 link 表占数据库 65%,其中四分之三是索引而不是数据。结论句是「通用关系库每存一次付一次、每查一次再付一次,而一个只增不减的负载意味着一个永远更大的主库」。
-
earendil-works/pi → agegr/pi-web: 一条
^范围引发的级联。pi 1.2.0 发布后,pi-coding-agent@1.0.4通过^1.0.4解析到pi-codemode@1.2.0,启动报The requested module '@earendil-works/pi-codemode/declarations' does not provide an export named 'MCP_TYPESCRIPT_PREAMBLE'。pi-web 的解法 10-13 06:51:23Z(35067b6,把依赖树里每个 pi 包钉到精确版本),pi 的根因修复 12:28:15Z(f13c00f“pin internal dependencies to exact versions”,closes #10865)——下游比上游早 5 小时 37 分。v0.12.1 06:53:04Z 发布,随后 10-13 上午 pi-web 收到 #1215 / #1216 / #1217 三个内容完全相同的 HTTP 500 报告。 -
anomalyco/opencode: v2.0.28(版本同步 commit
c5aabae,10-13 08:17:45Z,release notes 记在dev分支的CHANGELOG.md)。五个 headline:per-project auto-accept 权限覆盖(Settings → Projects,会话内mod+shift+a);TUI 更新后显示 release highlights(/highlights重开,cli.json里highlights: false关掉);Windows ARM64 原生支持(下载、CLI 安装、desktop 更新全走原生);连续 Gemini 响应(#55056,长响应按 provider continuation token 自动续接,含续接检查点后流被切断的恢复);官方 WinGet 包(winget install --id Anomaly.OpenCode -e)。 -
anomalyco/opencode: #55010(snapshot 仓库 11.5 小时涨到 15 GB,填满 40 GB 根分区)在本期完成定位。bot 在最新
dev(c1615b1)上复现:当项目 worktree 里包含 OpenCode 自己的数据目录时,每次 snapshot capture 会把 snapshot 存储自己的文件(新建的 loose object、临时 index 文件、2 MB 以下的 pack 文件)也录进去——触发条件是$HOME本身是个没有.gitignore的 git 仓库。日志里的第一现场是failed to pack snapshot objects+Git.OperationError: ... Out of diskspace。补充一条此前没写明的机制:#17753 / #14811 里的每小时git gc --prune=7.days是 v1 的,v2.0.27 改成「每次 capture 后至多每 10 分钟检查一次、松散对象 ≥2048 才 pack」。 -
anomalyco/opencode: Console 代理层连续两次安全收口(#55103、#55120)。#55103 把 inference 调用从同 zone
fetch改为INFERENCEservice binding(原来会重新进入 Cloudflare 变成公网请求,inference 看到的是 Worker IP),去掉CF-Access-Client-Id、x-zen-ip和CLOUDFLARE_ACCESS_CLIENT_IDsecret;#55120 停止剥离 legacy Zen header——PR 正文自己写明「只有在 opencode-console#3541 上生产之后才可合并,在那之前客户端可以发旧的 trusted client ID +x-zen-ip来伪造 IP」。 -
earendil-works/pi: v1.2.0 之后 chord(远程/多机执行层)连落 6 个 commit:链路端到端流控(peer 用 ack 确认,ack 数在 hello 里公告,未确认窗口内 state 帧在发送端按订阅合并等待,
AcceptOptions新增maxCalls、超出回unavailable/too_many_calls);大于 64K 字符的帧用 deflate 压缩(IPC 走z: [field, base64],WebSocket 走二进制消息,中继主机原样转发不解析)——实测8b6ab5cc这个 session 首屏 523 KiB → 78 KiB、全量历史 23.5 MB → 4.9 MB;fork 出的子 host 不再继承父进程的CHORD2_LOCK;wire frame 改为「声明一次、作为校验 schema」。 -
agentclientprotocol/agent-client-protocol: 本期零新 issue、零协议本体改动。13 个 commit 里 8 个是 dependabot(
bump the minor group with 28 updates)与acp-release-bot的 registry 批量更新,实质改动是 registry 新增 CUGA agent、littleguys / oxi 两个 client。release PR #2360(schema1.11.0 → 1.12.0、v2alpha.8 → alpha.9)已备好但 merged=null,tag 仍停在 v1.11.0(10-09)。 -
earendil-works/pi: #10864 指出
pi update不检查运行中的 session 就清理旧 release,长跑 session 只要切到一个此前没加载过的 provider 就报Cannot find module '.../dist/bundle/chunks/anthropic-messages-Q7SXESRX.js';detectInstallChange只比对启动时的package.json,文件从仍在列表里的 release 中消失看起来像没变化,因此不给任何重启提示,provider 坏到重启为止。作者补充:1.0.2 时同族错误是直接杀进程,#10439 修了 codemode 的那份(worker 在内存里钉住),provider API chunk 仍然是lazyApi(() => import(...))。 -
anomalyco/opencode: #55084 是一例「声明的能力 ≠ 实际加载的代码」:以 git package spec(
git+https://…#branch)装在opencode.jsonc的plugins里的插件包,它的./tui部分永远不会被 TUI 加载,服务端却报告该插件active且features.tui: true,默认日志级别下静默跳过;同一个包写在cli.json里就正常。
各仓库详情
vectorize-io/hindsight
Agent memory 系统:把 agent 经历过的事转成分层知识(facts / observations / mental models / knowledge pages),Recall 同时跑四种检索,Reflect 在 bank 上推理| stars: 49,263 | open issues: 170 | 默认分支: main | 最近 push: 2026-10-13T14:55:14Z | 主页: https://hindsight.vectorize.io/
近 N 周 release 重点:
-
v1.0.0(2026-10-13T14:08:48Z)— 1.0 里程碑
- release notes 只有一句总述:「After a year in production, the architecture and the API are stable, and from here the API is a promise」(生产环境跑了一年,架构与 API 已稳定,从这里 API 是一个承诺),并明确开源版继续留在 Postgres。
- breaking:#5462
refactor(openclaw)!移除 agent-sdk 包与agent_knowledge_*工具。 - 大批量 integration 修复一次收进 1.0:#5506(claude-code chunk 丢失 + 时间戳、cursor Windows hooks、zed 原生 MCP url)、#5511 / #5508 / #5509 / #5510 / #5514(coding-agents 的 Windows hooks、pi session cwd、retain 保留 session 完整性、HTTP 错误处理、共享 bank 页范围)、#5512 / #5517 / #5522 / #5530 / #5532(openclaw 的 bankMission schema 默认值覆盖、
session_end走 OpenClaw reader 读 transcript、 Goals 起始身份、logLevel/logSummaryIntervalMs)、#5527(卸载请求的 store 返回 503 + Retry-After 而不是 500)、#5463(拒绝 tag 作用域的调用方操作整个 bank)、#5466(每个 integration 用自己的 User-Agent 自报身份)、#5525(retain 测试改为判定 agent-experience 分类,不再数 fact 类型)。 - 完整 release notes: https://github.com/vectorize-io/hindsight/releases/tag/v1.0.0
-
窗口内的其它动作:commit
65ef1bd(10-13 13:07:12Z)回滚 #5513——该 PR 于 10-12 10:07 合入,内容是 consolidation discovery probe、mental-model edit 竞态、LlamaParse v2。回滚发生在 v1.0.0 tag(39c65ff,13:46:13Z)之前 39 分钟。commit610c135(14:51:39Z)补 v1.0.0 changelog、Memlake 发布文与 version-1.0 文档快照(#5550)。
其他重要 commits / PRs(按重要性挑选):
65ef1bdmain —Revert "fix(api): consolidation discovery probe, mental-model edit race, LlamaParse v2 (#5513)"(@Nicolò Boschi, 10-13)39c65ffmain —Release v1.0.0(@Nicolò Boschi, 10-13)610c135main —docs: v1.0.0 changelog, Memlake launch post, and version-1.0 docs snapshot (#5550)(@Nicolò Boschi, 10-13)- #5550 已合并 — v1.0.0 文档三件套(含
hindsight-docs/blog/2026-10-13-memlake.md)(@Nicolò Boschi) - #5462 已合并(breaking)—
refactor(openclaw)!: remove the agent-sdk package and the agent_knowledge_* tools
社区讨论 / 行业方向:
- Introducing Hindsight Memlake: serving 100M Memories at <100ms p99 on object storage: 本日发布的官方长文。核心是「agent 写下的东西只增不减」这条负载特征——一个员工的 agent 一年约写 68,000 条 memory,一个每天跑约 500 个任务的自治 agent 约写 500 万条,1 万人公司配 1000 个自治 agent 一年约 55 亿条,且需要每条都在 1 秒内可查。Memlake 的设计取舍是只换 memories 的存储(memories、links、indexes、documents、mental models 与 knowledge pages 的文本索引进对象存储),banks 与设置、后台任务队列、audit log 留在 Postgres,理由是后者小、关系型、改动频繁,「让每个系统做它最擅长的事」。
- Hindsight, Audited: 27,776 Stars, 64 Watchers, and a ‘Neutral’ Benchmark That Lives in the Vendor’s Own Org: 一份第三方审计稿,标题即论点——Agent Memory Benchmark 的「中立」基准放在厂商自己的组织里。(该文日期为 09-25,属窗口外但在本期发布物发布后仍在流通。)
- Hindsight: AI agent memory becomes a product in its own right (+1,653 stars in one day): 记录 v1.0 发布当日 star 增长 1,653,并把 1.0 解读为「agent 从 demo 进入生产,生产暴露了 notebook 一直没暴露的那道墙」。
- Hindsight: Agent Memory That Learns Over Time: 一份选型向的第三方梳理,罕见地直接把 LLM 成本摊开说——「retain 用一次 LLM 做抽取、reflect 用一次做推理,ingest 量直接翻译成模型调用量」;另指出 LLM wrapper 默认走 Hindsight Cloud,除非显式传
hindsight_api_url;Intel Mac 需改用hindsight-all-slim。
信号观察:
- 1.0 的动作是「对外承诺 API + 对内换存储」,两件事同时做:开源版留在 Postgres、Enterprise 版换 Rust 存储引擎,同一套 API 两种后端。这意味着 1.0 之后 API 不再是破坏性变更的战场,容量问题被移出开源主线。
- 性能论证是实测数字而非叙事:recall qps 随 bank 衰减(7.0 → 1.9)、190 KB/memory 的 WAL、link 表占 65% 且四分之三是索引——三个数字都指向「只增不减 + 四种检索并发」这一具体形状,而不是泛泛地说「数据量大」。
- 1.0 之后 issue 区立刻出现一批「1.0 之前不会有人提」的请求:#5551 NVIDIA NIM reranker 走原生 v2/retrieval wire format、#5549
RecallRequest要limit/max_results、#5553 multi-LLM chain 要跳过配额耗尽的成员直到各自 reset(含 fal)、#5552 consolidation 现在每次网络调用只 embed 一条文本而没有 batch。这些是 1.0 承诺兑现后的正常「下一批」形态。 - retain 质量本身成了被测对象:#5525 把 retain 测试的判定标准从「数 fact 类型」改成「判 agent-experience 分类」,作者署名 @nicoloboschi 即项目主导者——这是把「什么算好记忆」写进测试而不只写进文档。
- hermes / coding-agents 两条 integration 线的 issue 密度高于核心 API(16 个新 issue 里多数落在这两条),且方向集中在「hook / spawn / session 生命周期在真实宿主上的行为不一致」。
earendil-works/pi
AI agent 工具包:统一 LLM API、agent loop、TUI、coding agent CLI| stars: 114,898 | open issues: 330 | 默认分支: main | 最近 push: 2026-10-13T16:17:56Z | 主页: (仓库未填 homepage)
近 N 周 release 重点:
- 窗口期内无 release。最新仍是 v1.2.0(2026-10-12T23:03:53Z),上一版 v1.1.0(10-07)、v1.0.4(10-05)。
- v1.2.0 本身(上一期已详述)的清理动作在本期立刻收到回报:
src/experimental、src/cli/experimental与三个从未发布的包(pi-client/pi-protocol/pi-server)停发,并移除@earendil-works/chord依赖——随后 chord 重新成为本期 pi 上唯一的实质性开发面(见下)。
其他重要 commits / PRs(按重要性挑选):
f13c00fmain —fix: pin internal dependencies to exact versions(更新 release 同步与依赖检查以强制精确版本,刷新两份 lockfile,加回归覆盖,closes #10865)(@Armin Ronacher, 10-13 12:28)db6497cmain —feat(chord): flow control links end to end and limit calls per link(peer 确认已处理帧,未确认窗口内 state 帧在发送端按订阅合并等待;AcceptOptions增maxCalls,超出回unavailable/too_many_calls;Link.send返回编码后帧大小)(@Mario Zechner, 10-13 11:09)018c87dmain —feat(chord): deflate large frame payloads on links; relays forward them unread(JSON 超 64K 字符的 call args / results / state snapshot 做 level-1 deflate;服务端向客户端发打包帧但拒收客户端的打包帧)(@Mario Zechner, 10-13 10:04)cea2574main —feat(coding-agent): configure session share destination(@Vegard Stikbakke, 10-13 13:41)6f2f164main —fix(coding-agent): restore active tools on session resume(#10887) (@David Brailovsky, 10-13 13:55)a4d040dmain —fix(chord): a forked child host no longer inherits its parent's CHORD2_LOCK(@Mario Zechner, 10-13 10:05)90f17f5main —fix(chord): declare wire frames once, as the schema that validates them(@Mario Zechner, 10-13 10:04)3daa202main —fix(coding-agent): keep codemode cancellation prompt and bounded(@Armin Ronacher, 10-13 16:17)4b994d5main —fix(ai): repair invalid \u escapes in tool-call arguments(#10868)(@David Brailovsky, 10-13 13:36)34a8bb3main —fix(ai): drop images from Anthropic error tool results(#10795)(@David Brailovsky, 10-13 13:45)
社区讨论 / 行业方向:
- #10864(Session outliving its release loses not-yet-loaded providers after pi update prunes it):
pi update清理旧 release 时不检查运行中的 session。已在窗口内关闭。issue 正文给出的关键细节是失败不可诊断的原因——detectInstallChange比对的是启动时读到的package.json,因此「文件从仍在列表里的 release 中消失」看起来和没变化一样,没有任何重启提示;并点名 codemode 那边已由 #10439 修过(worker 在内存里钉住),provider API chunk 至今仍是lazyApi(() => import(...))。 - #10865(fix: keep Pi 1.0.x/1.1.x compatible with Pi Codemode 1.2): 触发 pi-web 级联的那个 issue。Node 22.23.3 上
pi-coding-agent@1.0.4经^1.0.4解析到pi-codemode@1.2.0,加载包扩展时SyntaxError。窗口内由f13c00f关闭。 - #10870(Radius changes /share behaviour, make it configurable): 提议新增
PI_SHARE_USE_RADIUS,默认 true,设 0 时/share改存 gist,理由是 Radius 上是过期 artifact,而作者想永久保存 session。正文给出的一行改法指向packages/coding-agent/src/modes/interactive/session-share.ts的tryShareViaRadius分支。窗口内由cea2574(configure session share destination)落地。 - #10883(pi-mcp: Pi does not properly identify itself on every mcp request): pi 的 MCP 实现在每个请求上发
User-Agent: undici,无状态 MCP server 因此难以识别 pi。诉求是设正确 UA 并按最新 spec 发_meta["io.modelcontextprotocol/clientInfo"];作者说明动机是要在 Polar 的 mcp server 里识别出 pi 从而在服务端关掉 codemode,并提到 opencode 会在 URL 上追加?codemode=false来做同样的事。窗口内关闭。
信号观察:
^范围在 pi 自己的 monorepo 里先炸了:pi 内部包之间用^互相依赖,f13c00f把它们改成精确版本并给 lockfile 加了回归检查——但修复在 pi 1.2.0 发布 13 小时之后才落地,下游 pi-web 已经先撞上并先修。- chord 从「刚被移除的依赖」变成 pi 唯一的活跃开发面,且方向一致:带宽与背压(流控 +
maxCalls)、传输体积(deflate)、生命周期(fork 不继承 lock)、协议自描述(wire frame 即 schema)。8b6ab5cc 上实测压缩比是首屏 6.7×、全量历史 4.8×。 - 压缩与流控是同一批 commit 落的(10-13 10:04–11:09 不到 70 分钟内四条),且 deflate 那条明确写了信任边界:「中继主机把字节原样转发,只有使用 payload 的主机解包;服务端向客户端发打包帧但拒收客户端发来的打包帧」。
- 新 issue 的形态从「要功能」转向「要可诊断性」:#10864 的核心诉求不是修好,而是说清楚为什么坏了;#10870 的诉求是把一个「实现细节决定的行为」提到配置面;#10883 的诉求是让 pi 在别的系统里可被识别。
- 窗口内 pi 新增 45 个 issue,其中至少 6 个是 1.2.0 发布当天的回归(#10881 Nix 构建 v1.2.0 tag 失败、#10884 未终止的终端回复后键盘输入停止、#10868
\u转义、#10882 codemode 结构化结果空白、#10865 版本混装、#10864 release 清理)。
agegr/pi-web
pi coding agent 的 Web UI| stars: 7,321 | open issues: 32 | 默认分支: main | 最近 push: 2026-10-13T06:52:45Z | 主页: (仓库未填 homepage)
近 N 周 release 重点:
-
v0.12.1(2026-10-13T06:53:04Z)— 依赖钉版修复版
- 修复 pi 1.2.0 发布后安装 pi-web 无法启动:0.12.0 只固定了 pi 的四个包,而 pi 内部依赖用的是
^范围,因此全新安装会把pi-coding-agent1.1.0 与pi-codemode1.2.0 装在一起,服务端启动报The requested module '@earendil-works/pi-codemode/declarations' does not provide an export named 'MCP_TYPESCRIPT_PREAMBLE'。现在依赖树里的每个 pi 包(含pi-codemode、pi-mcp、pi-telemetry)都钉到精确版本,「以后 pi 再发新版也不会混装」。 - 设置 › MCP:对提供 resources 的服务器点「测试」不再出错,改为显示「提供资源。」,与 pi 的
/mcp一致。 - 配置了提供 resources 的 MCP 服务器时,发送消息不再白等 10 秒。
- pi 升级到 1.2.0。
- 内部:新增测试要求 lockfile 里每个 pi 包都必须是直接依赖且精确版本。
- 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.12.1
- 修复 pi 1.2.0 发布后安装 pi-web 无法启动:0.12.0 只固定了 pi 的四个包,而 pi 内部依赖用的是
-
窗口内仅 2 个 commit:
35067b6(06:51:23Z,chore(deps): upgrade pi to 1.2.0 and pin every pi package)与f83b1a5(06:52:43Z,Release v0.12.1)。
其他重要 commits / PRs:
- 窗口期内无 PR 关闭(合并或关闭均为 0)。上期记录的 #1210(@acniray,+3151/−156,桥接扩展创建的嵌套子 session 与交互式扩展 UI)状态未变。
社区讨论 / 行业方向:
- #1215 / #1216 / #1217(均为 10-13 上午,
Error: HTTP 500/⨯ SyntaxError: The requested module '@earendil-works/pi-codemode/declarations' does not provide an export named 'MCP_TYPESCRIPT_PREAMBLE'): 同一个根因的三个用户报告,报的人互相不知道对方存在(其中 #1215 的正文只有「上一个版本还是正常的」)。均在 v0.12.1 后关闭。 - #1214(open): 打开设置提示「无法读取 models.json」及
Failed to execute 'json' on 'Response': Unexpected end of JSON input——与 v0.12.0 里 models.json 相关改动同期。
信号观察:
- 依赖钉版这个动作本身被写成了测试:「lockfile 里的每个 pi 包都必须是精确版本的直接依赖」——把一次事故的成因固化成回归门槛。
- 10 个新 issue 里至少 3 个是同一个 0.12.0 启动失败,说明下游用户升级路径上没有「锁 pi 版本」这条退路提示。
- 剩余新 issue 已回到功能与打磨:#1220 worktree cwd 切换静默失败(总是退回主 worktree)、#1218 skills 只能在输入框开头用
/调用、#1213 全局 session 并发上限、#1223/#1224 终端主题与位置。
anomalyco/opencode
开源 coding agent| stars: 213,252 | open issues: 4,215 | 默认分支: dev | 最近 push: 2026-10-14T00:20:15Z | 主页: https://opencode.ai
近 N 周 release 重点:
-
窗口期内 GitHub Releases 无新增(最新 v1.19.0,2026-10-11T01:39:22Z)。2.x 线按惯例只在
dev分支的CHANGELOG.md记录,版本同步由 commitc5aabae(sync release versions for v2.0.28 [skip ci],10-13 08:17:45Z)完成。 -
v2.0.28(2026-10-13) — release notes 摘自
dev:CHANGELOG.md- Highlights:per-project auto-accept 权限(
Settings → Projects → Auto-accept permissions覆盖默认,会话内mod+shift+a);TUI 更新后显示 release highlights(/highlights重开,cli.json的highlights: false关闭);Windows ARM64 原生(下载、CLI 安装、desktop 更新均不再走 x64 模拟);连续 Gemini 响应(Gemini 与 Vertex Gemini 的长响应按 provider 自动续接为一条,含续接检查点后流被丢弃的恢复);官方 WinGet 包(winget install --id Anomaly.OpenCode -e,升级也走 WinGet)。 - Core 改进:新增
settings.encoding(zstd/gzip/none,作用于 provider、model、variant 的 HTTP 请求体;ChatGPT 认证在无自定义baseURL时默认 Zstandard);provider 级 compatibility 默认值与compatibility.cacheFormat(Anthropic 与 Alibaba 风格 prompt-cache marker);默认 streamed-chunk 超时 5 → 15 分钟(#55032,正文点名 DeepSeek 要求客户端至少等 15 分钟,推理模型思考期间可能数分钟无可见输出)。 - Core 修复:禁用 Bun fetch 的 idle timeout,避免长流提前结束(#55007);edit 工具改文件时保留 CRLF/LF 混合换行;迁移后的请求体保留未知的 V1 OpenAI-compatible model 选项;启动时不再查询 Azure 资源(改为直接问 resource name);系统配置目录以最低优先级加载(#54921,@rntdrts);Windows ARM64 上免 PowerShell 安装原生 CLI 并解包 ripgrep。
- Desktop:per-project 权限覆盖;Windows ARM64 下载页原生选项;subagent session 计入展示的 session cost(#55052);review 面板加载图片与音频、视频预览改为窗口内 theatre view;提交 prompt 立即显示、
Working标记置于未投递 steer 之上;折叠侧栏 tab 存在时的关闭行为与层叠对话框关闭后的焦点恢复。 - SDK:生成客户端类型新增请求体编码与 model/provider cache-format 字段;Promise 客户端 API 导出
CredentialApi。 - Extensions:官方 Figma 插件(含其 MCP 连接与六个内置 Figma skills,#55049 / #55061);
credential.activate开放给 Effect 与 Promise server 插件(#52797);Promise 型 plugin tool 被 reject 时转成普通 tool 失败而非崩掉执行路径(#54913);修复 VS Code 扩展用已被 V2 删除的--port参数启动 CLI(#49084,@uyencss)。 - 完整 notes:
dev:CHANGELOG.md(2.x 不发 GitHub Release)
- Highlights:per-project auto-accept 权限(
其他重要 commits / PRs(按重要性挑选):
- #55010 处理中 — snapshot 仓库 11.5 小时涨到 15 GB、填满 40 GB 根分区(bot 已在
devc1615b1复现自捕获成因;详见社区讨论) - #55103 已合并 —
refactor(console): call inference through a service binding(@vimtor, 10-13 10:12) - #55120 已合并 —
refactor(console): stop stripping legacy Zen headers in proxy(@vimtor, 10-13 14:43) - #53876 已合并 —
feat(core): continue responses after output token limits(@Aiden Cline, 10-13 21:24:以length结尾且没有本地工具结果继续驱动请求时自动续写,注入合成 user-role 指令「你上一条回复撞到了输出 token 上限(stop reason: length),不要道歉、复述或重复,把剩余工作拆成更小的块」,最多连续两次自动续接,只读最近三条 user/assistant 消息) - #54945 已合并 —
feat(core): configure Anthropic cache breakpoints with compatibility.cacheFormat(@Aiden Cline, 10-13 01:23) - #55032 已合并 —
fix(ai): raise default chunk timeout to fifteen minutes(@Aiden Cline, 10-13 05:03) - #55007 已合并 —
fix(core): disable Bun's fetch idle timeout for provider requests(@Aiden Cline, 10-13 04:12) - #54982 / #54983 / #54984 已合并 —
fix(ci): fail releases that bundle native code for the wrong CPU、Windows ARM64 模拟安装迁移到原生、TUI 正确报告 x64 模拟(@Luke Parker, 10-13 00:46–01:11) - #54981 已合并 —
fix(core): extract ripgrep on Windows without PowerShell(@Luke Parker, 10-13 00:45) - #54780 已合并 —
refactor(app): derive unread state from server viewed watermarks(未读状态改由服务端 viewed watermark 推导) - #55202 / #55109 已合并 —
feat(update): index artifact rollout lookups、fix(update): cache D1 reads and use partial indexes for lookups(更新通道的 D1 读缓存与部分索引)
社区讨论 / 行业方向:
- #55010 Snapshot repo bloats to 15 GB in 11.5 h on v2.0.27: 本期完成定位。bot 指出这不是 #17753 修过的 2 MB 大文件问题,追踪内容都是普通小源文件;bloat 是「松散对象堆积 + 泄漏的
tmp_obj_*/tmp_pack_*垃圾」。日志第一现场:failed to pack snapshot objects/Git.OperationError: fatal: sha1 file .../tmp_pack_odfHeH' write error. Out of diskspace。随后 bot 在最新dev(c1615b1)复现:项目 git worktree 里包含 OpenCode 数据目录时,每次 snapshot capture 会把 snapshot 存储自己的文件(新建的 loose object、临时 index 文件、2 MB 以下的 pack 文件)也录进去,触发条件是该用户的$HOME本身是没有.gitignore的 git 仓库。报告者当前用"snapshot": false+ 每周 guard 脚本兜底,并给$HOME仓库补了.local/、.cache/、.npm/、.nvm/的 ignore 条目。 - #55084 tui: ./tui part of git-installed package plugins is never loaded (silently skipped): 服务端报告该 git 安装的插件
active且features.tui: true,TUI 却静默跳过它的./tui部分,默认日志级别下无任何提示;同一个包配置在cli.json里正常工作。作者的用例是让服务端source.outdated标志驱动一个「update available」toast。 - Snapshot feature needs safeguards for large directories (home directory filled disk) #8577 / #48657 core: session never drains when Snapshot.capture() stalls on huge untracked tree: 同一族问题的历史条目,#48657 记录了 167,697 untracked vs 502 tracked 的场景下
git add挂起、执行 claim 不释放。说明 snapshot 目录膨胀不是 2.x 独有,而是跨版本的一类结构性问题。 - Disable OpenCode filesystem snapshots(ArchiveBox PR #1868): 一个下游项目直接关掉 OpenCode filesystem snapshot——OpenCode 的 snapshot tracker 会把整个 ArchiveBox collection 也
git add进去,在真实/data项目上遍历了嵌套的归档仓库、在它们的 git 状态上失败,留下悬挂的 agent 请求。 - Anomaly Released OpenCode 2.0 Software Update | Wisevoter: 一篇面向公众的 2.0 综述,强调「统一后台进程把 terminal、desktop、web 三端连起来」与 Code Mode 用轻量 JS 解释器把 MCP server 和 OpenAPI endpoint 转成函数,并提示 1.0 插件与 2.x 不兼容、必须手动迁移。
信号观察:
- 24 小时内 62 个 commit、30 个 PR 关闭,其中 12 个 PR 是 closed 未合并(#48858、#48846、#48807、#48796、#48793、#48791、#48779、#48733、#48731、#48727、#48730、#48611、#48401、#53916 等),且这批未合并 PR 多来自外部贡献者、标题风格集中在 v1 → v2 的兼容层(config 解析、SSE 默认 header、TUI i18n、Windows 剪贴板读取)。v2 的外部贡献进入通道与 v2 的内部开发通道是两条速度。
- 成本可见性被补齐了一角:#55052 把 subagent session 计入展示的 session cost,#53785 在 session 视图直接显示 token 与 cost,#54780 把未读状态改由服务端 viewed watermark 推导——三者在同一天落,说明「桌面端从开发工具变成计费可见的工具」这条线在推进。
- 长运行的失败模式被系统性处理:#55032(chunk timeout 5→15 分钟)、#55007(关掉 Bun fetch idle timeout)、#53876(撞输出上限自动续写)、#55056(Gemini 续接 token)——四者都在解决「模型思考 / 生成很久,而客户端的等待假设是短的」。
- 计划模式的洞仍未合:#54632(SECURITY: plan mode is advisory, not enforced on V2)已于 10-12 21:56:32Z 以
state_reason: duplicate关闭,修复 PR #54165(ask before shell commands in plan mode)至今 state=open、merged=null、updated_at 停在 2026-10-10T19:39:35Z。 - Console 层的两次安全收口自带部署序:#55120 的正文明确写「只有在 opencode-console#3541 上生产之后才可合并,在那之前客户端可以发旧的 trusted client ID +
x-zen-ip来伪造 IP」——把跨仓库部署序写进 PR 正文而不是靠口头约定。 - 153 个新 issue 中有相当一部分是 v2 的边界摩擦(#55189 desktop 集成终端在 Windows 找不到
opencode-pty、#55194 question toolAttempted to assign to readonly property、#55216 第二次拖文件进 prompt 被静默忽略、#54991 文本模型下粘贴图片无缩略图),形态上与 2.0.27 那次的 VS Code--port问题同类。
agentclientprotocol/agent-client-protocol
连接任意编辑器与任意 agent 的协议| stars: 4,430 | open issues: 34 | 默认分支: main | 最近 push: 2026-10-13T23:23:43Z | 主页: https://agentclientprotocol.com
近 N 周 release 重点:
- 窗口期内无 release tag。最新仍是 v1.11.0(2026-10-09),内容为:
stabilize session notices(#2336)、stabilize session compaction(#2334)、report failures after prompt insertion with an error stop reason(#2281,unstable)、reject malformed values receivers act on(#2333)。 - release PR #2360(
chore: release,merged=null) 已备好待合内容:agent-client-protocol-schema1.11.0 → 1.12.0(标注 ✓ API compatible changes)、agent-client-protocol-json-schema-v11.25.0 → 1.26.0、agent-client-protocol-json-schema-v22.0.0-alpha.8 → 2.0.0-alpha.9。tag 未推进,说明 1.12.0 尚未发布。
其他重要 commits / PRs(按重要性挑选):
- #2370 已合并 —
docs: add CUGA to the agents list(@segevshlomovIBM, 10-13 10:21) - #2366 已合并 —
docs(clients): add littleguys to Desktop and Web(@Herval Freire, 10-13 06:13) - #2369 已合并 —
docs(clients): add oxi to Desktop and Web(@blue, 10-13 06:11) - #2373 已合并 —
chore(deps): bump the minor group with 28 updates(dependabot,10-13 15:06) - #2371 / #2368 / #2380 / #2381 — 四次
docs: update registry agents(acp-release-bot,10-13 03:40 / 11:49 / 19:20 / 23:22) - #2374 / #2376 / #2375 / #2377 / #2378 — 五条 dependabot 依赖升级(
setup-node7.0.0→7.1.0、taiki-e/install-action、dtolnay/rust-toolchain、crate-ci/typos1.50.3→1.51.1、release-plz/action0.5.139→0.5.141)
社区讨论 / 行业方向:
- Optional timestamps on messages, so replayed history keeps its time(Discussion #2364)(@fzred,10-12 14:47,Protocol Suggestions): 客户端用
session/load(v1)或 v2 草案的session/resume+replayFrom恢复历史时,每条消息回来都没有任何时间信息。客户端能给实时更新打上自己的时钟,但一旦 session 被重载(重启后、打开更早的对话)这个信息就没了,协议里也没有让 agent 交还它的手段。作者指出 agent 侧通常有:Claude Code 的 transcript 每条都记timestamp,Codex 的 app-server 每轮报startedAt/completedAt/durationMs。 - Perch: a native macOS workspace with a DSH ACP integration (early preview)(Discussion #2363)(@chenweigao,10-12 12:21,General): 一个原生 macOS workspace 接 DSH 的 ACP 实现,早期预览。
- Concerns regarding the removal of client filesystem and terminal capabilities(Discussion #2299)(@Ruddickmg,10-04): 对客户端 filesystem / terminal 能力被移除的担忧,仍在讨论区挂着。
信号观察:
- 本期是纯治理节奏:13 个 commit 中 8 个是 dependabot 与 release-bot 的机械更新,协议本体改动为零,新 issue 为零。#1237 的 Client-Provided System Prompt 合入之后,协议侧暂未再有提案合入。
- release PR 与 tag 的脱节已成常态:#2360 准备好 1.12.0 与 v2 alpha.9 却未合并,tag 停在 10-09 的 v1.11.0。读者判断 ACP 版本必须回到 tag 而不是 CHANGELOG 的 Unreleased 段。
- registry 是 bot 批量维护的:一天四次
update registry agents,实质新增只有 CUGA 一个 agent 与 littleguys / oxi 两个 client——registry 的增速明显慢于依赖升级的增速。 - 讨论区的两个新问题都指向「协议没有的字段」:#2364 要消息级时间戳,#2299 质疑客户端能力被收走。方向相反,但共同点是——协议在把「谁负责提供这个信息」当成核心议题,而不是继续加方法。
yxc023/yxc023.github.io
个人博客 / 报告站(Astro)| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-13T00:35:06Z | 主页: (未填)
近 N 周 release 重点:
- 窗口期内无 release(该仓库不使用 GitHub Releases,窗口内抓取返回 0 条)。
其他重要 commits / PRs:
a793064master —auto(reports): 同步 daily-research 2026-10-13(@yxc023, 10-13 00:35:02Z)—— 上一期报告的同步 commit。- 窗口内无 PR 关闭。
社区讨论 / 行业方向:
- 窗口期内未检索到公开讨论。
信号观察:
- 仓库处于纯同步状态:唯一活动是本项目
deploy-blog.sh写入的报告 commit。27 个 open issue 为历史累积。 - 上期记录的结论在此仍然成立:6 个未合并 dependabot PR 全部指向 devDependencies,Astro 5→7 的三条提案均以「关闭、不合并」收场。
跨项目观察
-
「一个
^范围引发下游三级事故」是本期最完整的一条因果链:pi 内部包之间用^互相依赖 → pi 1.2.0 发布后pi-coding-agent@1.0.4解析到pi-codemode@1.2.0→ pi-web 启动报MCP_TYPESCRIPT_PREAMBLE导出缺失 → pi-web 06:51 钉精确版本、06:53 发 v0.12.1 → 用户在 03:13 起陆续报三个一模一样的 HTTP 500 → pi 12:28 才在f13c00f修根因(closes #10865)。下游比上游早 5 小时 37 分,且两侧各自的补救都被写成了回归测试。 这是 agent 生态里「第三方包以 CLI 为依赖」这一分发形态的固有暴露面。 -
agent 产物的生命周期与发布节奏不对齐,同一类洞在三个项目以三种形态出现:pi #10864——
pi update清理旧 release 时不检查运行中的 session,长跑 session 切换到未加载过的 provider 就Cannot find module,且因detectInstallChange只比对启动时的package.json而不给任何重启提示;opencode #55010——snapshot 仓库把 OpenCode 自己的数据目录录进去,11.5 小时 15 GB,pack 因磁盘满而失败,failed to pack snapshot objects之后主机所有写操作中断;opencode 早期条目 #48657——大未跟踪树下git add挂起导致 session 永不 drain。三者形状一致:工具默认「安装物」与「运行物」同步变化,而实际不是。 -
「声明的能力」与「实际加载/生效的代码」开始分离:opencode #55084 里服务端明确报告插件
active且features.tui: true,TUI 却静默跳过其./tui部分,且同一个包在cli.json里正常;opencode #55120 的正文写明跨仓库部署序(须等opencode-console#3541上生产,否则客户端可用旧 trusted client ID +x-zen-ip伪造 IP);ACP 的 registry 由 bot 一天四次批量刷新,与协议本体零改动同期。协议与扩展生态进入「先声明、后兑现」的阶段,能力位(capability flag)的可信度正在变成一个新的评测维度。 -
hindsight 用 1.0 做了一次「承诺 API、换掉存储」的分工:开源版继续 Postgres、Enterprise 版换 Rust 的 Memlake,同一套 API 两种后端。支撑这个决定的不是叙事而是三个实测数字(recall 7.0→1.9 qps、190 KB WAL/memory、link 表占库 65% 且四分之三是索引),结论句是「通用关系库每存一次付一次、每查一次再付一次,而一个只增不减的负载意味着永远更大的主库」。同期它在 1.0 tag 前 39 分钟回滚了 #5513——1.0 的动作既包含对外承诺,也包含对外撤回。第三方侧的审计稿(solosoft)把「中立基准住在厂商自己的组织里」当作主要论点,说明这类基础设施的评价权已经外移到第三方。
-
成本与容量从「优化项」升级为「架构分叉点」:hindsight 那边是「Postgres 到点了 → 换存储引擎」;opencode 这边是同一类调整的客户端形态——chunk timeout 5→15 分钟(#55032,正文点名 DeepSeek 要求至少等 15 分钟)、禁用 Bun fetch idle timeout(#55007)、撞输出上限自动续写(#53876,最多两次、只读最近三条消息)、subagent session 计入展示成本(#55052)。四条都在承认同一件事:agent 的单次运行时间正在逼近传统客户端的等待假设。
-
原生二进制分发与跨架构正确性成为共同战线:opencode 在 v2.0.28 之内做完 Windows ARM64 的下载、CLI 安装、desktop 更新、免 PowerShell 解包 ripgrep,并加了
fail releases that bundle native code for the wrong CPU的 CI 闸(#54982);pi-web 在 v0.12.0 里修掉 Windows 命令行在 Node 23–24.19 / 26.6 上以0xC0000409(libuv 断言)退出的问题。「为错误 CPU 打包」从用户问题变成了构建失败条件。 -
ACP 进入静默期,讨论区从「加方法」转向「定责任」:本期协议本体零改动、新 issue 为零、tag 停在 10-09 的 v1.11.0(release PR #2360 备好 1.12.0 与 v2 alpha.9 未合)。同时讨论区两个活跃议题——#2364 要消息级时间戳(因为 Claude Code 的 transcript 有
timestamp、Codex 有startedAt/durationMs,而协议没有)、#2299 质疑客户端 filesystem / terminal 能力被收走——都不是在提议新方法,而是在追问「这个信息该由谁提供」。#1237 之后协议侧尚未有新的 RFD 合入。
元信息
- 报告生成时间: 2026-10-14T00:30:22Z
- 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告
reports/latest.md的基准时间:字段,自 2026-09-08 起未变) - 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-14T00:30:22Z(约 35.7 天);本期新增内容全部落在 2026-10-13T00:33:30Z 之后的约 24 小时
- 数据源: GitHub API(gh CLI)+ mmx web search;Discussions 用 GraphQL 拉取;Issue 用 search API 补充;opencode 的 2.x release notes 取自
dev分支的CHANGELOG.md - API rate limit 剩余: 5000 / 5000(core,抓取完成后查询)
- 抓取失败: 无(6/6 仓库的 repo / releases / commits / pulls 全部成功)。补充说明:
anomalyco/opencode的 Discussions 仍处禁用状态(hasDiscussionsEnabled: false),其社区讨论段改由 issue 区、CHANGELOG.md 与外部检索补足;yxc023/yxc023.github.io的 releases 接口返回空数组(该仓库不使用 GitHub Releases) - 补充说明: commits 按
per_page=100&since=2026-09-08T09:23:29Z抓取,足以覆盖本期 24 小时内 opencode 的 62 个与 pi 的 14 个提交;opencode 的 GitHub Releases 仍停在 v1.19.0(10-11),2.x 版本以sync release versions for v2.0.28commit 与dev:CHANGELOG.md为准 - 增量说明: 基准时间字段连续 6 期未变,窗口逐日变宽;本期「本期速览」与「跨项目观察」只针对自上次报告(2026-10-13T00:33:30Z)以来的新增内容,历史窗口内的 release / commits 细节不在本期重复
评论