2026 2026年10月11日 40 min · 11.7k chars by yxc023

GitHub 调研周报 2026-10-11

扫描窗口:2026-09-08T09:23:29Z → 2026-10-11T00:36:43Z(约 32.6 天)| 基准来源:上次报告 2026-10-10

2026-10-11 GitHub 调研周报

扫描窗口:2026-09-08T09:23:29Z → 2026-10-11T00:36:43Z(约 32.6 天)| 基准来源:上次报告 2026-10-10

仓库范围:config/repos.yaml 中 6 个项目。基准时间字段自 2026-09-08 起未变,因此窗口逐日变宽,本期新增内容主要落在 10-10 00:30 之后的 24 小时。本期最重要的一件事是 anomalyco/opencode 在 10-10 14:58Z 把 v2 分支提升为 dev(5caf1f9),dev 分支的 package.json 现在是 2.0.26;紧随其后的第二件事是这次提升触发的自动化 PR 结算——20 个以 v2 为 base 的 PR 在 23–45 秒内被 bot 关闭,另有 45 个「创建超 1 个月 + 正向 reaction 少于 2 个」的老 PR 被批量清理,仓库的 open issues+PRs 一夜从 6,163 掉到 5,231(−932)。第三件是 earendil-works/pi 把 codemode 的沙箱 VM 抽象成可插拔 driver 并落到 Cloudflare Workers 的 remote Durable Object 上(748b351)。第四件是 pi-durable 三天内把调度器从「每趟遍历全部 live task」改成索引(cb43754 / 4ac0bd8 / ea448f4)。第五件是 agegr/pi-web 在侧边栏重设计后立刻收到一批回归 issue(open 9 → 21)。ACP 本期零协议变更,hindsight 只剩依赖运维。

本期速览

  • opencode 的 v2 成为主线:5caf1f9(10-10 14:58Z,@Dax Raad)的说明是「取 v2 的树,把 packages/console、packages/web、packages/stats、packages/function、infra、sst.config.ts 与最新 dev 合并,并把 V2 的发布与部署目标从 v2 分支改到 dev」。同一次改动新增 V2_HTTP_API_AUDIT.md:139 个 HTTP endpoint、10 组全部审完,每个 endpoint 必须选一个 disposition(Keep / Change / Remove / Experimental-only)并写理由,稳定性分级为 public / experimental / internal。两条线仍在并行:v1 的 GitHub Release 停在 v1.18.35(10-06),v2 只有 git tag(v2.0.26 → commit release: v2.0.26,10-08)而没有对应的 GitHub Release 条目,只在 npm 上发。
  • 分支提升的成本由 bot 结算,而不是维护者:opencode-agent[bot] 的原话是「v2 branch was promoted to dev on 2026-10-10, and v2 work now happens on dev. This pull request targets a branch we no longer use, so it’s being closed. Please open a new pull request … with dev as the base」——10-10 19:34 到 10-11 00:32 之间 20 个 base=v2 的 PR 被这样关掉,kitlangton 一人占了 5 个(他自己也还在往 v2 上开)。另一条独立的规则来自 github-actions[bot] 的 “Automated PR Cleanup”:创建超过 1 个月 + 正向 reaction 少于 2 个,10-10 起关掉 45 个。
  • pi 把 codemode 沙箱搬上 Cloudflare Workers:748b351 把 host 拆成「与传输无关的执行逻辑 + VM driver」,于是同一套 codemode 有三种落点——worker 线程里的 CodemodeSandbox、调用线程里的 InlineCodemodeSandbox、跨 isolate RPC 的 RemoteCodemodeSandbox;新增 /portable(不含 Node import)与 /cloudflare 入口,配套 CodemodeSandboxDurableObject 部署成独立 Worker,「让脚本永远不阻塞调用方线程」;不 await 工具的纯计算脚本由 interrupt budget 限界,且在 drain promise job 时也轮询。紧接着 4130bd5 修 Node 24/26 --watch 往 worker channel 发的 watch:import / watch:require 消息把整条 bridge 判为损坏(nodejs/node#65044,closes #10725)。
  • pi-durable 把调度器从遍历改成索引:此前每个 reconcile pass 都从每个 live task 向上走到 root 找取消意图,owned live work / idle scopes / chain loads / reservation / finalization / failFast 各自扫全量 live task,n 个 held task 的链约 n³ 步——500 个 12 s,20,000 个跑不完;cb43754 用内存索引(#below / #intent / #unloaded / #finalizeChecks / #runnable / #waiters,无递归)降到 500 → 50 ms、20,000 → 1.5 s。4ac0bd8 把 NestedCallsDoc + NestedResultDoc 换成每次调用一个文档的 NestedCallDoc(pi.tool.nested-call,按 key 存 {taskId, result?},admission 建成员、嵌套调用的终态 commit 写结果、没有任何一次 commit 改写另一个调用的文档),并新增 TaskRuntime.ownedTasks(),8000 个并行嵌套调用 9.2 s → 2.7 s。ea448f4 再把 owner edge 的持有范围限制在「下面还有活工作」时:10,000 次 ended subagent 循环从 10,000 个 settled task + 10,001 条边降到 0 条 task、1 条边。
  • pi-web 的重设计立刻产生回归:v0.11.1(10-10)把桌面端的文件浏览器从独立标签改成会话列表下方的可拖动可折叠「文件 · N」区(3fe257f,设置里可切回标签,手机仍用标签),并重排新会话页(品牌靠左、项目与工作树移到输入框正上方 e2fe4fb),新增 pi-web version / update / status / stop / open 五个命令(#1154)。同时 open issues+PRs 从 9 涨到 21,其中 10 条 issue 是 10-09 之后新建的,且多为新布局的直接回归:#1171「Session listing incorrectly groups worktrees」、#1168「A link to a deleted session opens the project’s last session instead」、#1165/#1159(隐藏/恢复项目分组、分支标签上色);另有 solidlime 的 #1172/#1173 ——「reload during an in-flight turn kills the turn with This extension ctx is stale after session replacement or reload」,指向 10-09 那次「run 写文件时与窗口聚焦时自动重载文件树」(#1144/#1153)。
  • pi 的外部贡献入口是「先拿 lgtm」:github-actions[bot] 在几秒内自动关闭未获批贡献者的 issue 与 PR,评论里写明规则——先开 issue,让 maintainer 回 lgtmi(只保 issue)或 lgtm(issue 与 PR 都保持打开)。10-09 起已有 64 个 issue 与 8 个 PR 被这样关掉,例如 zetneteork 同一人 22:29 的 issue #10783 与 22:30 的 PR #10782/#10784 在一分钟内全部消失。
  • ACP 本期只有 bot 动作:30 个 commit 里 6 个是 acp-release-bot 的 registry 版本同步(claude-agent-acp 0.89.0 → 0.89.1、codex-acp 2.2.2、harn 0.10.160 → 0.10.162、新增 dirac 0.5.19、copilot-cli 1.0.95、kimchi…),人工提交只有 3 条 registry 名单条目:Outmake(原生 Mac app,跑 Claude Code / Codex / Gemini CLI / OpenCode,#2341)、Bellows(桌面工作区,发链接让对方看同一个运行中的 session 并提建议,#2317)、Gonggong Space(群聊里互相 @ 各人自己机器上的 agent,自托管 Web + 飞书,#2321)。v1.11.0 / schema-v1.25.0 / schema-v2.0.0-alpha.8 之后没有新 release。
  • hindsight 只剩运维动作:10-10 14:23–14:24 的一分钟内四个依赖 bump(根 lockfile handlebars 4.7.10、llamaindex 集成 banks 2.5.1、pydantic-ai 集成 pydantic-ai-slim 1.107.7、eliza 集成 handlebars 4.7.10),此后主线是 Grok Bot 的博客与文档(#5461、#5465)。open issues 179 → 191。

各仓库详情

anomalyco/opencode

开源 coding agent:TypeScript / Bun,单仓多 target(CLI / Desktop / TUI / ACP server / Web);MIT;Zen 为其模型网关。| stars: 212,561(上份 212,390,+171 / 24h) | open issues(含 PR): 5,231(上份 6,163,−932,其中 open issues 4,568、open PRs 663) | 默认分支: dev | 最近 push: 2026-10-11T00:27:32Z | 主页: https://opencode.ai

近 N 周 release 重点(窗口内):

  • v2.0.26(tag,2026-10-08T19:45:43Z,commit 9b4ec57 release: v2.0.26)— 只有 tag,没有 GitHub Release 条目
    • 新增:/connect 里选 Vertex 后可选 Google Cloud credentials(gcloud auth 或环境变量),用 Application Default Credentials,并从环境变量、gcloud 配置与 ADC 里发现 project / location(#53798)
    • 性能:session snapshot 开销降低、多文件恢复更快、捕获能从崩溃与并发进程中恢复、快照对象做无损后台打包(#51996)
    • 修复:大量未跟踪文件的仓库里 working-tree diff 会超时或卡住服务端(改为批处理 Git 操作,#53449);大范围 revert 的路径超过 OS 命令行长度限制会失败(#53956);含 Git pathspec 字符的文件名、损坏或被锁的快照索引、并发捕获、以 .. 开头的项目目录
    • 安全向改动:opencode service 的远程访问地址改为持久的随机子域名而不是可预测路由,关闭再开启远程访问会生成新地址(#53962)
    • TUI:OSC 8 超链接在更多终端可用(VS Code 及其它 xterm.js 终端、Zed、mintty、新 VTE),FORCE_HYPERLINK=1 可覆盖自动检测(#53904);转录里的链接点击修好,含跨行折断的 URL(#53903)
    • 模型:Step 5 Preview Free 限时加入免费模型阵容,退役 Fledge Alpha Free
    • 完整 release notes: https://github.com/anomalyco/opencode/blob/dev/CHANGELOG.md
  • v1.18.35(2026-10-06T20:18:39Z)— GitHub Release 线的最新一条
    • 新增:agent 可读的统计数据提供 canonical redirect 以及 JSON / Markdown 两种数据格式
    • 修复:xAI 的 tool result 现在能带受支持的图片,不支持的格式跳过(@Jaaneek,#53549)
    • 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v1.18.35
  • (窗口内更早的 v1.18.30 ~ v1.18.34 已在上份报告中覆盖。)

其他重要 commits / PRs(按重要性挑选):

  • 5caf1f9 项目(v2 → dev)— chore: promote v2 to dev (@Dax Raad, 2026-10-10)。取 v2 的树,packages/{console,web,stats,function} + infra + sst.config.ts 与最新 dev 合并,把 V2 的发布与部署目标从 v2 改到 dev;同时新增 V2_HTTP_API_AUDIT.md(139 个 HTTP endpoint,10 组全部审完)与新的根 CHANGELOG.md(第一版条目就是 v2.0.26)。
  • 分支提升触发的自动化关闭(bot,2026-10-10 19:34 ~ 2026-10-11 00:32)— 20 个 base=v2 的 PR 被 opencode-agent[bot] 在 23–45 秒内关闭(#54414、#54405、#54403、#54392、#54385、#54381、#54380、#54369、#54365、#54341、#54270、#54253、#54252、#54243、#54241、#54227…)。kitlangton 独占 5 个,其中 #54403 是他自己写的「让 session interrupt 更快、steer 幂等」——PR 正文指出 POST /api/session/:id/interrupt 走了 location 的 service middleware,而那个 middleware 会等整个 service graph(含启动 MCP 进程)加载完毕,位置还在启动或重载时 Stop 响应就被拖住。
  • 批量 PR 清理(github-actions[bot],2026-10-10)— “Automated PR Cleanup”:因「PR 来自用户与 AI agent 的量太大」,按自动化标准周期性关闭老 PR,判据是创建超过 1 个月且正向 reaction 少于 2 个(👍 ❤️ 🎉 🚀);10-10 起关掉 45 个,含 9 月 9–10 日那批 #48248 ~ #48356。
  • 823ac87 修复(Copilot 回退路由)— fix(core): follow models.dev packages for Copilot fallback routing (@rekram1-node, 2026-10-10, #54210);同日 1a9e29a fix(core): route Copilot Gemini fallback to chat completions (#54208)、b2a3926 / 9f282f8 accept interleaved Copilot reasoning_opaque values (#54207 / #54201)——同一天三条都在修「Copilot 的交 reasoning 与回退路由」。
  • d2905b8 新增(Vertex 路由)— feat(ai): add Vertex AI Interactions route (@Aiden Cline, 2026-10-09, #54175);配套 93a7c84 feat(ai): add Vertex Mistral route (#54058)、744aa0c + e0fe07d 把 Vertex location 默认值收敛为 global 并丢掉过时的 fallback 参数 (#54171 / #54202)、c9c5985 支持 Google Vertex ADC 的 CLOUDSDK_CONFIG (#54164)。
  • 55dde88 SDK 层 — feat(sdk): seed host plugins before recovery and harden workerd defaults (@Kit Langton, 2026-10-10, #54219)。
  • 41b03de 依赖 — chore: upgrade Effect to 4.0.1 (@Kit Langton, 2026-10-10, #54198)。
  • 4b6fea2 CI — chore(ci): build desktop from the unsigned CLI artifact (@Luke Parker, 2026-10-10, #53313);同日 7b3d4ce chore(ci): deploy the update service from production (@Dax Raad)。
  • 893d0f2 TUI — fix(tui): retain unavailable saved session model selection (@Kit Langton, #53822);c50e39b fix(core): route file overrides through Workspace.connect (#54089)。

社区讨论 / 行业方向:

  • OpenCode 双线狂奔:v1 每周还在发版,v2 已经冲到 2.0.22(头条,2026-10-08):中文侧的观察与本期 GitHub 数据一致——「9 月 30 日发了 v1.18.34,两天后发了 v2.0.22;这不是同一个产品的两次小修」,并指出 v2 是彻底重写、命令行里要用 opencode2 启动。
  • OpenCode V2 来了:一套后台,终端桌面网页接着干(科技区角,2026-09-28):把三处硬断写得很清楚——V1 与 V2 命令名都是 opencode,默认不再并排装(包管理的 V1 要先卸;curl 安装脚本会替换 V1 二进制);插件 API 换了,老插件不能原样跑;服务端 API / 客户端契约换了,调 V1 接口的集成要迁。
  • OpenCode V2 Beta: One Backend, Three Interfaces(Newshunt,2026-09-24):V2 beta 于 9 月 22 日落地,核心是把 TUI、桌面与 Web 客户端收到同一个后端上。
  • OpenCode 2 Version Tracker(TurboAI,2026-09-26):V2 自 2026-09-11 的 2.0.0 起以 @opencode/cli 在 npm 上发布,按版本追踪环境变量与配置变化;v2.0.26 专页(2026-10-08)与本期 CHANGELOG 内容一致。
  • issue #54269(@doomsday616,2026-10-10 提交、当日 23:17 被关):github-copilot/claude-opus-5.5 思考约 6 分钟后,回合以 finish=length 静默结束,没有文本、没有工具调用、也没有报错。作者定位到两处:maxOutputTokens() 把每个请求卡在 OUTPUT_TOKEN_MAX = 32_000,而模型自己报的 limit.output = 128000;Copilot 的 Opus 5.5 变体用 adaptive thinking 且没有 thinking budget。
  • issue #49908(@363045841,2026-09-19 提交、2026-10-11 00:14 才被关闭):「OpenCode V2 cannot access OpenCode Zen free models (e.g., Big Pickle) due to unsupported latest Zen authentication headers」——V2 接不上 Zen 最新的认证头,从报告到关闭用了 17 天。
  • opencode 仓库的 Discussions 处于关闭状态(API 返回 410 Discussions are disabled for this repo),因此本仓库无 discussion 维度数据。

信号观察:

  • 一次分支拓扑变更 = 一次批量自动化结算。promote-to-dev 的 commit 在 14:58Z,而自动关闭从 19:34Z 开始、持续到次日 00:32Z,20 个 PR 全部在 45 秒内处理完;配合「超龄 + 低 reaction」的老 PR 清理,open issues+PRs 一夜 −932。这说明 opencode 已经把「收 PR」这件事完全交给规则,而不是维护者的手动判断——代价是贡献者必须自己发现 base 分支已经变了(kitlangton 在提升后仍连续 5 次往 v2 上开)。
  • v1 / v2 的发布形态现在不对称:v1 有 GitHub Release、有周更的 release notes;v2 只有 git tag + npm,release notes 放在仓库根的 CHANGELOG.md 里(本次 promote 才把它带进 dev)。对下游的集成方来说,「去哪儿看 v2 变了什么」这个问题目前只有仓库内一个答案。
  • V2_HTTP_API_AUDIT.md 是这次提升里最有信息量的新文件:139 个 endpoint 已经按 10 组审完,每条要落到 Keep / Change / Remove / Experimental-only 之一并标出 public / experimental / internal。这是在把「v2 换了后端」这件事的对外契约先审一遍再发布,而不是发布后再修。
  • provider 层的改动密度远高于 core:单日 5 条 commit 全是 Copilot / Vertex 的路由、回退与认证元数据(models.dev packages、Gemini fallback → chat completions、interleaved reasoning_opaque、Vertex Interactions / Mistral route、CLOUDSDK_CONFIG)。同期 core 的结构改动只有 SDK 的 host plugin 与 workerd 默认值一条。
  • @opencode/sdk 的嵌入式消费路径被反复修(#54219 之后还有 #54206 想要 quiesce 诊断、#48295 要保住 Cloudflare gateway 认证)——workerd / service graph 这条嵌入路径上的问题密度高于主路径。

earendil-works/pi

AI agent 工具集:统一 LLM API、agent loop、TUI、coding agent CLI;TypeScript / Bun,可作为 pi extension 扩展;MIT。| stars: 114,115(上份 113,800,+315 / 24h) | open issues(含 PR): 323(上份 324,−1;其中 open issues 237、open PRs 86) | 默认分支: main | 最近 push: 2026-10-10T19:29:45Z | 主页: https://pi.dev

近 N 周 release 重点(窗口内):

  • v1.1.0(2026-10-07T22:26:31Z)— 窗口期内最后一个 release
    • 新功能:Program status reporting(OSC 7501,支持的终端与 agent dashboard 能看到 pi 在工作 / 卡在对话框或登录 / 完成 / 失败,PI_PROGRAM_STATUS=1|0 可覆盖检测);Claude Haiku 5.5(anthropic/claude-haiku-5-5,adaptive thinking 到 xhigh/max);--tools 支持 +name / -name 做增量调整默认工具集(如 pi -t +codemode,-write)而不是整体替换;OpenAI GPT-6 Luna 作为 Decisions API 的分类模型,codemode 的 models.classify() 因此可接受图片;llama.cpp 0.6.0+ 的 Julia-1 / Laya / Kev / lev / OpenJev 以 /v1/systemone 的原生 decision model 形式支持
    • 变更:pi mcp login --timeout 现在限制整个登录流程(含对授权服务器的请求),不再只限制等浏览器的时长;outputPad 也作用于 ! 命令输出、工具输出与摘要块
    • 修复(MCP OAuth 一组):OAuth 登录在等授权服务器时无法取消、session 结束后仍继续运行(现在每步 Esc 可取消、session 关闭中止登录、对授权服务器的每个请求 15 s 超时);关闭 session 时为即将过期的 token 最多空等 15 s;/mcp 不再等所有 server 连上才打开
    • 修复(codemode):searchTools() / describeTool() / describeNamespace() 未标 async,模型会把未 await 的 promise 序列化成 {};多个 text 输出项之间没有分隔,模型分不清一段输出在哪里结束(现在每个 text 项以 ==> text N/M <== 开头,console 调用归到一个 <console_output> 块)
    • 上下文估算:把输入按 3.5 字符/token 而不是 4 来估,减少 context-limit 请求失败(#10497)
    • 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.1.0
  • v1.0.x 系列(v1.0.0 10-01 → v1.0.4 10-05)已在上份报告覆盖。

未发布的 [Unreleased] 段落(窗口内新增,CHANGELOG.md):

  • Breaking:发布用的 theme JSON Schema 移到 schemas/theme.schema.json,并且 theme 加载现在拒绝未知的顶层属性以及 colors / export 下的未知属性;自定义颜色要改放到 vars 下,未支持的 metadata 要删掉。
  • Changed:showHardwareCursor 现在只用终端自己的光标,不再同时画 pi 的反显光标。
  • Fixed:Mistral 流在长思考阶段被请求超时中断(超时只作用于等待响应头,#10609);主仓库内嵌套 git worktree 里 symlink 的 AGENTS.md 导致不加载任何项目上下文文件(#10681)。

其他重要 commits / PRs(按重要性挑选):

  • 748b351 codemode 上 Cloudflare — feat(codemode): run sandboxes on Cloudflare Workers via a remote Durable Object (@Armin Ronacher, 2026-10-10)。把 host 拆成「与传输无关的执行逻辑 + VM driver」,VM 可以跑在 worker 线程(CodemodeSandbox,行为不变)、调用线程(InlineCodemodeSandbox)或另一个 isolate 上走 RPC(RemoteCodemodeSandbox);新增不含 Node import 的 /portable 入口与 /cloudflare 入口 + CodemodeSandboxDurableObject,按设计要单独部署成一个 Worker,让脚本永远不阻塞调用方线程;不 await 工具的纯计算脚本由 interrupt budget 限界,且在 drain promise job 期间也轮询。examples/cloudflare 给出搭建方式。
  • 4130bd5 修复 — fix(codemode): ignore Node --watch notifications from the worker (@Armin Ronacher, 2026-10-10)。Node 24/26 的 --watch 会往 worker channel 发 watch:import / watch:require,导致整次运行以「损坏的 bridge」失败(nodejs/node#65044,closes #10725)。
  • cb43754 durable 性能 — fix(durable): scheduler no longer visits every live task on each pass (@Mario Zechner, 2026-10-10)。n 个 held task 的链约 n³ 步(500 个 12 s,20,000 个跑不完);改为在 open 时重建的内存索引承载每趟候选:#below(围绕活工作向下的所有权树)、#intent(从有取消意图的任务向下走,不进入另一个这样的任务,因此最近的取消者仍然决定原因)、#unloaded、#finalizeChecks、#runnable、#waiters,没有任何走查会递归。语义不变。结果:500 → 50 ms,20,000 → 1.5 s,8000 并行嵌套调用 18.8 s → 9.2 s(余下时间花在嵌套调用索引的文档复制上)。
  • 4ac0bd8 durable 结构 — feat(durable): one document per nested call; TaskRuntime.ownedTasks() (@Mario Zechner, 2026-10-10)。NestedCallsDoc(每个 caller 一个索引、每次嵌套调用一个 key、每次 admission 都复制)与 NestedResultDoc 合并为 NestedCallDoc(pi.tool.nested-call),task 作用域、key 是调用方的 key、存 { taskId, result? };TaskRuntime.ownedTasks(context) 从调度器索引返回该 task 直接拥有的存活任务副本(不论是哪个 invocation 建的),工具调用结算时中止其中的活嵌套调用;task memo 记住「某次尝试里做过嵌套调用」的叶子,结算时无需扫描 pi.live。8000 并行嵌套调用 9.2 s → 2.7 s,且随规模线性。
  • ea448f4 durable 内存 — fix(durable): bound the scheduler's ownership indexes by live work (@Mario Zechner, 2026-10-10)。此前调度器会保留它见过的每一条对话边,以及 conversation owner、chain load、known task 的 owner 上方所有已结束任务,整个进程生命周期;现在 owner edge 或已结束任务的所有权只在「#below 里它下面还有东西」时保留,无用的节点在每次发布后入队清扫(或在 Session 线上的 sweep job 里做),从不在操作过程中做。10,000 次 ended subagent 循环挂在活着的 parent 下:从 10,000 个 settled task + 10,001 条边降到 0 和 1;之后往一个旧的 subagent 对话里发消息时从 storage 读 7 条记录而不是 5 条。
  • c5f5b32 MCP 安全修复 — fix(mcp): reject iss when no authorization server metadata was discovered (@Armin Ronacher, 2026-10-10)。没有发现 metadata 时就没有 issuer 可与 RFC 9207 的 iss 参数比对,于是这项检查被跳过,恶意 MCP server 可以收到来自另一个授权服务器的 authorization code;现在在 code 交换之前直接拒绝该响应。由 Alexios Stefanopoulos(@AizenvoltPrime)报告。
  • f1b2e77 修复 — fix(coding-agent): load symlinked AGENTS.md in nested git worktrees (@David Brailovsky, 2026-10-09, fixes #10681)。嵌套 worktree 的去重逻辑比较的是上下文文件的 realpath 与主仓库的文件,于是 symlink 到主仓库副本的 worktree AGENTS.md 被一起跳过;改为比较「走过的目录的 realpath + 文件名」。
  • 7f9e119 配置 schema — feat(coding-agent): publish configuration schemas (@Christian Klotz, 2026-10-08, #9880),把配置契约的 schema 集中化并对齐运行时与生成物,同时文档化了严格的主题校验。
  • 7933a0e issue 流程 — feat: assign owners and reopen issues when mcp, codemode, or durable labels are applied (@David Brailovsky, 2026-10-08)。
  • ce950d7 模型目录 — fix(ai): use models.dev metadata for Claude 5.5 models (@David Brailovsky, 2026-10-08):删掉 Opus 5.5 / Sonnet 5.5 / Haiku 5.5 的硬编码兜底,Sonnet 5.5 的测试改为期望官方 cache read 价 0.1。
  • 窗口内还有 b9f2b3e docs(durable): read only through tx inside a commit callback 与 e37cdc4 fix(durable): drop redundant nested-call parent check; test ownedTasks() with a held child——两条都是同日对上面 durable 改动的收尾。

社区讨论 / 行业方向:

  • Cloudflare 官方文档:Pi harness(2026-10-05 更新)与 Run Pi in a sandbox(2026-09-30):Cloudflare 侧把 Pi 列为受支持的 agent harness,并提供沙箱里跑 Pi 的路径。本期 748b351 的 /cloudflare 入口 + CodemodeSandboxDurableObject 是同一方向上的官方实现。
  • How I Run the Pi Coding Agent on Cloudflare(dev.to / Cloudflare,2026-08-04):wrangler secret + deploy host application 的完整步骤。
  • 社区自建的 Workers 侧 pi 变体:pi-worker(pi agent 跑在 Cloudflare Worker 里,持久化虚拟文件系统 + git,每个 session 一个独立 Durable Object + SQLite)、qaml-ai/pi-worker(浏览器终端 UI ghostty-web + SQLite Durable Object)。第三方已经把「一个 session 一个 Durable Object」当默认做法,而 748b351 把这个模式搬进了 pi 自己的 codemode。
  • Pi Durable: An Agent Harness That Survives Its Own Crashes(2026-10-03)、Pi Durable: Where a Long-Running Agent Picks Up After a Crash(2026-10-05,另有中文版同页)、Pi 1.0發布:長任務另拆 Pi Durable,崩潰後還能接著跑(BlockBeats,2026-10-02):第三方解读集中在同一个点——「in-flight 工作有 30 秒的窗口,然后闹钟重启 object」,即 durable 的价值不在于会话可恢复,而在于副作用边界(工具调用发出后、结果落库前进程死掉怎么办)。
  • discussions #10498「pi-durable OPENTELEMETRY」与 #10447「pi-durabletask-mcp: extending pi-delegate-mcp with steering and optional recovery」显示社区正在给 durable 长出观测与编排层。
  • 贡献入口是「先拿 lgtm」:github-actions[bot] 会自动关闭未获批贡献者的 issue 与 PR(10-09 起 64 个 issue、8 个 PR),评论原文:「Only contributors approved with lgtm can open PRs. Open an issue first and ask a maintainer for approval… If a maintainer replies lgtmi, your future issues will stay open. If a maintainer replies lgtm, your future issues and PRs will stay open.」

信号观察:

  • v1.1.0 之后的 pi 明显分成两条战线:一条是面向用户的 model / tool / TUI 打磨(Claude Haiku 5.5、classifier、OSC 7501、codemode 输出可读性),另一条是 runtime substrate——codemode 的 VM driver、durable 的调度器索引、MCP OAuth 的超时与 issuer 校验。窗口内后一条战线的 commit 全部来自 Mario Zechner 与 Armin Ronacher,且都在解决「规模」而不是「功能」:20,000 个 held task、10,000 次 subagent 循环、8000 个并行嵌套调用。
  • durable 的三次改动是同一条线索的三段:先去掉遍历(cb43754)、再让每次嵌套调用有自己的文档而不互相改写(4ac0bd8)、最后让索引本身只覆盖活工作(ea448f4)。三者的共同点是所有权信息不再由「向上走到 root」临时重建,而是常驻且有界——这是 resume 型执行引擎必须付的账。
  • 安全向的修复集中在 OAuth 与授权元数据:c5f5b32 是明确的越权风险(没有 issuer 就等于不校验 iss),v1.1.0 里还有 client_secret_basic 的 form 编码问题在社区 PR 里被指出(#10690)、mcp.oauth.clientId 不解析 ${VAR}(#10698)。这三者共同指向 MCP OAuth 实现的细致程度还不如它承载的权限。
  • --tools +name/-name 是一个很小但很关键的接口变更:从「替换默认工具集」变成「加减」,意味着默认工具集本身变成了可被配置的对象,而不只是起点。

agegr/pi-web

pi coding agent 的 Web UI;TypeScript / Next.js,读取本地 pi session JSONL 维持会话,服务端在真实 workspace 里让 session 持续运行。| stars: 7,224(上份 7,196,+28 / 24h) | open issues(含 PR): 21(上份 9,+12;其中 open issues 12、open PRs 9) | 默认分支: main | 最近 push: 2026-10-10T15:37:47Z | 主页: https://github.com/agegr/pi-web

近 N 周 release 重点(窗口内):

  • v0.11.1(2026-10-10T15:27:41Z)
    • 文件浏览器默认移到会话列表下方(桌面端):可拖动、可折叠的「文件 · N」区,带自己的文件搜索;设置 › 通用 › 侧边栏可切回独立标签;手机仍用标签;文件树按项目记住展开的目录(3fe257f)
    • 新建会话页重排:品牌(logo、版本、更新提示)单独靠左,项目与工作树选择移到输入框正上方一行(e2fe4fb)
    • 新增 CLI 命令:pi-web version、update、status、stop、open(#1139 / #1154)
    • 新增:右侧面板标签里查看 subagent 的工作(只读对话记录,#1129);subagent 支持 opt-in codemode(#1097);PWA 安装后的应用名可运行时配置(#1147 / #1148);会话停在扩展对话框上时侧边栏显示「等待输入」(#1145);自定义消息可从标题折叠(#1133);attach 按钮接受任意文件(#1101 / #1122);CSV / TSV 在文件查看器里渲染成表格(#1150);压缩摘要默认折叠,与 pi TUI 一致(#1026 / #1123);minimap 轮次从会话第一轮起编号(#791 / #1151)+ 锁定开关关掉 hover 预览(#1128);显示 Kimi For Coding 用量额度(#848 / #1113);保留 obsidian:// / vscode:// / zoommtg:// 链接(#1108 / #1118);项目分组可从菜单重命名(#1047 / #1125)
    • 修复:侧边栏「显示更多」后选中最末条会话不再露出更旧的会话(51dda7c)、折叠分组会丢弃它的「显示更多」窗口(0066d5f);run 写文件与窗口获得焦点时文件树自动重载(#1144 / #1153);新会话的第一条消息即使切换到别的会话也会发出(#1146 / #1152);外部会话文件自动发现(#1100);httpIdleTimeoutMs 也作用于 Web UI(#1127);subagent 由配置文件决定启动参数(#1138)、已删除的工作树从其所属仓库回答(#1137)
    • 改进:侧边栏会话行 28px、只用三种文字颜色、选中行 3px 强调条(4fa6799 / 02532c3 / cae6201);折叠文件区与进出归档视图有动画且尊重「减少动态效果」(02532c3);服务端启动时就开始导入 pi SDK(#964 / #1117)
    • 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.11.1
  • v0.11.0(2026-10-08T16:50:58Z)— 侧边栏重新设计 + 安全修复(0.11.0 之前,npm 包里带着一组固定的内部密钥,任何人从公开的 npm 包读到就能绕过密码登录与 Host / Origin 检查;新版本每次启动生成新的随机密钥;Windows 上 git diff 接口可通过目录联接读到允许范围外的文件也已修复,#1039;Next.js 升到 16.3.8)。已在 2026-10-10 报告中展开。
  • v0.10.0(2026-10-02)已在窗口内、上份报告覆盖。

其他重要 commits / PRs(按重要性挑选):

  • 3fe257f feat(sidebar): files below the sessions on desktop, section-style project headers (@Alex Yang, 2026-10-10) — v0.11.1 的主改动,把 v0.11.0 引入的「会话 | 文件」双标签改成单列布局。
  • 4fa6799 / 02532c3 / cae6201 侧边栏样式 — 恢复旧侧边栏在新布局里的视觉规则;会话行 28px、文件键按 tab 顺序、折叠与归档有过渡动画;文件区头部按键更大、13px 图标(@Alex Yang, 2026-10-10)。三连 commit 说明 v0.11.0 的新布局上线后一天内就被回调到旧规则上。
  • e2fe4fb feat(new-session): brand above, project and worktree right over the composer(@Alex Yang, 2026-10-10)
  • f98c088 CLI — feat(cli): add version, update, status, stop and open commands (#1139) (#1154)(@Alex Yang, 2026-10-10),把「启动一个 Web UI」变成了可被脚本管理的服务。
  • 0066d5f / 51dda7c 侧边栏缺陷修复 — 折叠分组丢弃「显示更多」窗口;点「显示更多」后选中最末条会话不再显示更旧的会话(@Alex Yang, 2026-10-10)。这两条是 v0.11.0 侧边栏重设计留下的边界条件。
  • 4ad8aa3 fix(files): reload the file tree while a run writes and on window focus (#1144) (#1153)、e7d0fda fix(chat): send a new session's first prompt even after switching away (#1146)(@Alex Yang, 2026-10-09)
  • 311a901 feat(agents): view sub-agent work in a right-panel tab (#1129)(@斑泥狼)、fb6df88 / f9a370e subagent 修复(@Brynne Taylor)、81cc285 subagent opt-in codemode(@Zllf)、2adb185 PWA 运行时名称(@TossPig)、50486b3 minimap 锁定开关(@Mitchell Kager)、8e602ca 外部会话文件自动发现(@arkkwang)——均为 10-09 的三小时合并批次。
  • 30af3b4 docs(release): push the tag by name, check prerequisites, note npm propagation(@Alex Yang, 2026-10-10)— 发布流程本身开始被文档化,说明发版频次已经高到需要固定步骤。

新 issue(10-09 之后新建,占当前 12 条 open issue 的 10 条):

  • #1172 / #1173(@solidlime,2026-10-10 20:26 / 2026-10-11 00:07):「reload during an in-flight turn kills the turn with This extension ctx is stale after session replacement or reload」,第二条是前者的完整修复提案(守住其余仍在飞行中的回合的失效路径)。这两条直接指向 10-09 上线的「run 写文件 / 窗口聚焦时自动重载文件树」(#1144 / #1153)——为可见性加的重载,把进行中的会话打死了。
  • #1171(@renzhamin):Bug: Session listing incorrectly groups worktrees。
  • #1168(@wowayou):A link to a deleted session opens the project's last session instead。
  • #1170(@plhshared):Feature Request: Turn tools or set of tools on/off——与 pi v1.1.0 的 --tools +name/-name 是同一个需求在 Web 端的对应物。
  • #1164 / #1163(@LiuQhahah):merge multiple sessions into one, with similarity scoring(重复提交)。
  • #1156(@hsuanguo):feat: Intelligent-UI, interactive responses and versioned artifacts。
  • #1053(@MCJEModder2026,2026-10-03):MCP does not work in subagents。

社区讨论 / 行业方向:

  • discussions 在 10-02 之后无新帖(最近一条是 #1040「Desktop-style launcher for Pi Web」,3 条回复)。#994(09-29)仍是 subagent 体验的讨论主线:主 agent 容易不调用 get result 工具而用别的途径拿到结果,导致在长 loop 结束后才收到自动的结果通知——本期 #1097 / #1129 / #1115 三条 subagent 改动都指向这一类问题。
  • 维护者对一个功能 PR 写了明确的拒绝理由(#1105「feat(schedules): run prompts on a cron schedule」,@0xfa1e):PR 本身设计得很干净(每次运行都走 startRpcSession,因此定时运行就是一个普通 session,不新增存储),但 agegr 的回应是——「Pi Web aims to stay a light web wrapper around pi,而一个服务端调度器(cron 解析器、tick 循环、schedules.json、保留策略、新的 Settings 分区)是一个有自己生命周期的新子系统,我们得拥有它。调度更适合放在 Pi Web 之外,比如系统 cron 或一个跑 pi -p 的 extension。」
  • agegr/pi-web v0.11.0 on GitHub / v0.11.1(newreleases.io):两个 release 都已被外部镜像站收录,说明 release notes 的传播不依赖 README。
  • npm 上 pi-web 的分叉与再发布已经成规模:@cyia/pi-web、@fffattiger/pi-web(带 HTTP Proxy 支持)、@mc2100/pi-web、@kkkiio/pi-web-ui(fork 自 deflating/tau,作为 pi extension 运行,不需要独立服务端),GitHub 上也有 PriceNing/pi-web 这样的个人 fork。上游 v0.11.0 的固定密钥漏洞对所有 fork 同时生效。

信号观察:

  • 「issue sweep 之后立刻回归」的模式值得单独记:10-09 三小时把 open issues 从 54 压到 9,同一批 commit 完成了侧边栏重设计;24 小时后 open 回到 21,其中至少 3 条是新布局的直接回归(worktree 分组、已删除会话的链接、分组隐藏/恢复),1 条是自动重载打断了进行中的回合。一次大 UI 重构的代价,在 issue 关闭数上是看不见的。
  • v0.11.0 → v0.11.1 的三个侧边栏样式 commit(「恢复旧视觉规则」「28px 行」「文件键顺序」)本质是回退:新布局上线后一天,作者用三个 commit 把旧布局的视觉规则搬回来,同时保留新的「文件放在会话下方」的结构。结构换、视觉不换。
  • 维护者对「服务端子系统」的边界有明确主张,并且用一次带理由的 decline 表达出来(#1105)。这与 opencode 的 v2(把 console / web / stats / function / infra 全部收进一个后端)正好相反:同样是 Web / 服务端入口,一个在收,一个在拒绝长出第二个子系统。
  • CLI 命令的出现(version / update / status / stop / open)说明 pi-web 已经默认自己会长期驻留——这是与「light web wrapper」定位的张力,也是 #1105 那次拒绝的真实压力来源。

vectorize-io/hindsight

Agent 记忆系统:retain / recall / reflect 三大能力 + 本地嵌入式 hermes / embed,可作 MCP server、CLI、REST API,也可作为 Hermes / OpenClaw / Cursor / Paperclip / Grok Bot 的可插拔记忆层;MIT。| stars: 48,072(上份 47,700,+372 / 24h) | open issues(含 PR): 191(上份 179,+12) | 默认分支: main | 最近 push: 2026-10-10T14:24:49Z | 主页: https://hindsight.vectorize.io/

近 N 周 release 重点(窗口内):

  • v0.10.3(2026-10-08T15:47:49Z)— 随 release 附了 changelog 与博客(#5435)
  • v0.10.2(2026-09-29T10:06:40Z)、v0.10.1(2026-09-21T15:24:30Z)、v0.10.0(2026-09-14T11:09:45Z)
  • 这四个 release 已在 2026-10-10 报告中展开,本期无新 release。

其他重要 commits / PRs(按重要性挑选):

  • 依赖批次(@Chris Bartholomew,2026-10-10 14:23–14:24,一分钟内四个):ac99185 eliza 集成 handlebars 4.7.10(#5482)、ecd15ec pydantic-ai 集成 pydantic-ai-slim 1.107.7(#5483)、a0adcf0 llamaindex 集成 banks 2.5.1(#5484)、a9eeed7 根 lockfile handlebars 4.7.10(#5481)。四个 lockfile 分支用同一个 handlebars 版本对齐。
  • 44d5340 博客 — blog: Grok Bot Can Read What Your Other AI Tools Already Learned (#5461)(@Ben Bartholomew, 2026-10-09)——本期最有信息量的一篇官方文章,见下。
  • d144bb7 文档 — docs(grok-bot): the marketplace listing is not approved yet (#5465)(@Ben, 2026-10-09):在集成文档发布后立刻补一条「marketplace 上架尚未获批」的状态说明。
  • d29b842 breaking — refactor(openclaw)!: remove the agent-sdk package and the agent_knowledge_* tools (#5462)(@Nicolò Boschi, 2026-10-09);8caa109 — fix(api): refuse tag-scoped callers on operations answered for the whole bank (#5463)(@Chris Bartholomew)。两条已在 2026-10-10 报告中展开。
  • ca4da5f 正确性 — fix(worker): defer a lost append race instead of failing it (#5396):丢失的 append 竞态改为延后处理而不是失败。
  • ddc660b + fb11ddf consolidation 原子性 — fix(consolidation): apply one response's writes as one store batch, and prepare its actions concurrently (#5420) 与 fix(consolidation): read a response's sources together before applying it (#5421):一次响应的写入必须作为一个 store 批次应用,其来源要在应用之前一起读取——两句话是同一个事务边界的两面。
  • a77c1f3 启动 — fix(worker): run startup recovery in the background so restarts claim at once (#5411)。
  • 31fc17c 缓存一致性 — fix(api): 404 any store call for a bank deleted by another process within the cache TTL (#5432):被其它进程删掉的 bank,在缓存 TTL 内对所有 store 调用一律 404。
  • dc3093f LLM 反馈质量 — fix(retain): tell the model which keys it got wrong, instead of asking again identically (#5402)。
  • 7808a44 结构化输出 — fix(llm): strip numeric bounds from every provider structured-output schema (#5275) (#5401)。
  • 文档/站点侧:9ed897e 全宽 overview hero + 活的、可 hover 的记忆星座(#5436)、eb6df49 Oracle 时间改为 UTC(#5437)、45bd39d hero 在宽屏铺到窗口边缘(#5440)、6d8b096 修正首页链接预览(#5441)、eb24aa8 博客页改为「朴素标题 + 描述副标题 + 作者行」(#5460)。

社区讨论 / 行业方向:

  • Grok Bot Can Read What Your Other AI Tools Already Learned(官方博客,Ben Bartholomew,2026-10-09,16 分钟阅读):文章的论点是「上下文存在,只是它不迁移」。银行与权限的对应关系写得很具体——grok-bot::<bot-name>(一个 Bot 自己学到的,读写)、cursor::<project-name>(Cursor agent 在一个项目里学到的,读写)、grok-bot::shared(所有 Bot 都该知道的、handoff、「About the user」档案,读写)、以及「你的其它银行」只读;Bot 通过 list_banks + memory-context skill 里的判断自己找银行,不硬编码路径。三个诚实的限定写在 TL;DR 里:读取是单向的(Bot 写自己的银行与共享银行,其余只读);对 grant 要有清醒认识——OAuth 连接会触达你授权的那个组织里的每一个银行,「只读纪律是 skill 里的一条约定,不是服务端权限」;没有 hooks——Grok Bot 不跑插件生命周期钩子,所以整件事由模型自己选择使用的 skill 驱动。文章末尾还指出共享记忆本身也是一条指令通道,无论你是否这么对待它。
  • Grok Bot 集成页:每个 Bot 保有自己的对话与学到的上下文,一个 Bot 看不到另一个 Bot 的结论;定时 routine 会启动……(与上一篇同源)。
  • discussions #5489(2026-10-10 18:47):「hindsight is #1 in Memory on Archestack(badge, if you want it)」,0 回复。
  • discussions #5215(2026-10-04):社区基准测试——评估 Hindsight 0.10.2(仅检索、中文语料),给出数字并邀请纠正,2 条回复。这是本期唯一一条带可复现数字的第三方评测,且明确限定在 retrieval-only。
  • discussions 里另有两类值得记的自述问题:#5035「My consolidation always fails at duration 8.1m」、#4822「Self-hosted on a shared local GPU: consolidation never catches up (38k backlog)」。
  • 站外:Hindsight Review: Vectorize Agent Memory, Install Tested(2026-10-05)记录 91.4% LongMemEval(论文口径);45.2K Star 登顶热榜:Agent 终于有了”长记性”的办法(头条,2026-10-08)口径为 94.6%。两个数字不一致,来源分别是官方论文与二手转述。
  • 中文侧还有 解决 AI Agent 健忘难题!开源项目 Hindsight 适配主流 Agent 工具(2026-10-04)这类以「接入主流工具」为主线的介绍文章。

信号观察:

  • Grok Bot 集成把「共享记忆」的安全边界写成了散文而不是权限:作者自己在 TL;DR 里点明「只读是 skill 里的一条约定,不是服务端权限」,并且 OAuth grant 覆盖整个组织。这是同一个仓库上一周刚做完 tag-scoped 授权收紧(#5463,让整库操作对 tag caller 一律 403)的反向对照:一处把「覆盖不到」变成显式拒绝,一处把「本该只读」留在约定层。
  • 窗口末段只剩运维动作:一分钟四个依赖 bump 之后没有功能提交,主线让位给文档与站点打磨(hero、UTC、链接预览、博客排版)。star 仍在以 +372 / 24h 的速度涨,issue 数 +12。
  • 第三方评测开始出现,且都主动标注自己的边界(「retrieval-only、中文语料、邀请纠正」)。同一指标在站外出现 91.4% 与 94.6% 两个版本,说明长记忆的横向对比还没有形成共识口径。

agentclientprotocol/agent-client-protocol

Agent 与 Editor 之间的协议(ACP):JSON-RPC 2.0 over stdio / HTTP,本地 agent 作为子进程启动;Rust crate + JSON schema 双轨发布;Apache-2.0。| stars: 4,408(上份 4,395,+13 / 24h) | open issues(含 PR): 45(上份 45,持平) | 默认分支: main | 最近 push: 2026-10-10T22:35:45Z | 主页: https://agentclientprotocol.com

近 N 周 release 重点(窗口内):

  • 窗口期内无新 release。最近的仍是 v1.11.0 / schema-v1.25.0 / schema-v2.0.0-alpha.8(均 2026-10-09T14:17Z,Session Notices 与 Session Compaction 两个 RFD 转入 Completed),已在 2026-10-10 报告中展开。

其他重要 commits / PRs(按重要性挑选):

  • 6 条 docs: update registry agents(@acp-release-bot,2026-10-10 00:53 / 07:09 / 13:43 / 18:38 / 22:35,10-09 另有 16:15、20:56)——全部是版本号同步,无协议变更。窗口内可见的版本推进:claude-agent-acp 0.89.0 → 0.89.1、codex-acp 2.2.2、harn 0.10.160 → 0.10.162、新增 dirac(dirac-run)0.5.19、github/copilot-cli 1.0.95、kimchi 1.9.1 等。
  • #2341 名单新增 Outmake(@DaneBentley, 2026-10-10)— free native Mac app that runs Claude Code, Codex, Gemini CLI and OpenCode over ACP, next to open models running on the Mac itself (macOS)。
  • #2317 名单新增 Bellows(@bellowsai, 2026-10-08)— desktop workspace for ACP agents with live session sharing: send someone a link to a running session and they watch, suggest or type from a browser, with suggestions held until the host accepts them; shared permission rules and a hash-linked audit trail (Windows, macOS, Linux)。
  • #2321 消息类工具新增 Gonggong Space(@yoqu, 2026-10-08)— self-hosted web chat, Feishu/Lark:group chat where teammates @ each other's Claude Code / Codex agents running on their own machines, with live process, diffs, owner approvals and in-chat previews of the apps they start。
  • 0612810 RFD 文档 — docs(rfd): let the Agent decide whether background subagents survive a cancel (#2308)(@Ben Brandt, 2026-10-06):取消后后台 subagent 是否存活由 Agent 自己决定。这条在本期窗口内但未被上份报告收录。

社区讨论 / 行业方向:

  • discussions 在 10-04 之后无新帖。#2299(2026-10-04,Protocol Suggestions)「Concerns regarding the removal of client filesystem and terminal capabilities」是当前最值得注意的一条——它针对的正是 v2 里「client 的 fs / terminal 执行 / session modes API 全部移除、agent 需要的客户端侧工具改用 client 提供的 MCP server」这一决定,1 条回复。
  • RFD Updates(官方生命周期页):Session Notices 与 Session Compaction 已于 2026-10-09 转入 Completed;Next Edit Suggestions (NES) RFD 2026-09-30 转入 To be removed。
  • 实现侧的跟进可见于站外:codex-acp 的 session compaction 文档 说明客户端在 initialize 时以 clientCapabilities.session.compaction opt-in;claude-agent-acp PR #1243(2026-10-02)在实验性 v2 面上补报 compaction 与 notice。
  • 站外综述:ACP | Tom Rochette(更新于 2026-10-09)、acpserver.org(强调 ACP 是「编辑器与 coding agent 之间像 LSP 一样的标准」,本地 agent 走 stdio,远程走 HTTP 与 WebSocket)。另需注意命名冲突:搜索「ACP」会大量命中 OpenAI/Stripe 的 Agentic Commerce Protocol。

信号观察:

  • 协议面连续第二天零变更:人工带宽只用在 registry 名单上(3 条),其余 6 条是 bot 的版本同步。协议稳定化的成本正在转嫁给实现方——claude-agent-acp、codex-acp 这些适配器自己消化 RFD 变化,协议仓库本身进入维护态。
  • registry 的新增内容集中在「多 agent 协作」而不是「又一个编辑器」:Outmake(本机跑多个 agent + 本机开源模型)、Bellows(把一个运行中的 session 以链接形式共享出去,建议在宿主接受前不生效)、Gonggong Space(群里 @ 各人自己机器上的 agent,带 live process / diff / owner 审批)。三者都是多写者场景,而 v2 刚刚把「实体 ID 按类型唯一」写进规范(#2332)。
  • Bellows 的「建议在宿主接受前不生效」与 ACP 的 notice 语义是对偶的:notice 明确「Agent 必须表现得像这条 notice 没被收到」,Bellows 则要求「用户的建议在宿主接受前不生效」——两端都在给异步事件加「不被看到就不算数」的约束,只是方向相反。

yxc023/yxc023.github.io

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

窗口内动作:

  • 每日自动同步:8fb5dff(10-10 00:33)auto(reports): 同步 daily-research 2026-10-10,此前 10-09、10-08、10-07、10-06、10-05、10-04、10-02、10-01、09-30 各一条,节奏稳定在每日 00:33–00:43。
  • 内容侧:bffed37(10-08 04:03)revert: 撤下《Agent Skill 管理实践调研》——发布次日撤回;其前是 604a732(09-29 11:34)post: 新增《Agent Skill 管理实践调研》。同期还有 70599c7(09-29 11:28)feat: 新增调研周报板块 + 协议相对化。
  • 09-29 11:34–11:35 有一次 auto(reports): 同步 daily-research 2099-12-31 及其 revert —— 一次日期格式错误的同步尝试(a9ccbec)。
  • 3 个 dependabot PR 仍未合并:#28 astro 5.18.2 → 7.2.8、#23 sharp + astro、#24 astro → 7.1.1。

信号观察:

  • 报告同步链路稳定运行 13 天,日均一条 commit,无失败记录;唯一的异常是 09-29 那个 2099-12-31 日期(已被 revert)。
  • 《Agent Skill 管理实践调研》在发布约 16 小时后被撤下,PR 与后续报告同步没有关联记录。

跨项目观察

  1. 分支与贡献入口的策略差异,用自动化程度区分开来。 opencode 在 v2 → dev 提升后 5 小时内关掉 20 个 base=v2 的 PR(每条 23–45 秒),并用「创建 > 1 个月 + 正向 reaction < 2」清掉 45 个老 PR;pi 用 github-actions[bot] 把未获 lgtm 的 issue 与 PR 在几秒内自动关闭(10-09 起 72 个),规则是「先开 issue 拿批准」;pi-web 则完全不自动化,靠维护者手写理由拒绝(#1105)。三家的外部贡献默认都不被接收,区别只在于拒绝由谁执行、成本由谁承担。 opencode 的代价可以直接量化:贡献者会在分支已死之后继续往旧 base 上开(kitlangton 提升后仍连开 5 次)。

  2. 重设计的回归窗口出现在下一批 issue 里,而不是 release notes 里。 pi-web 的侧边栏重设计(v0.11.0,10-08)上线后 24 小时内出现 10 条新 issue,其中 #1171(worktree 分组错误)、#1168(已删除会话的链接)、#1165(隐藏/恢复分组)是新布局的直接回归,#1172/#1173(reload 打断 in-flight turn)来自 10-09 那次「自动重载文件树」的可见性改动;作者随后用三个 commit(4fa6799 / 02532c3 / cae6201)把旧视觉规则搬回新布局。同类现象在 opencode 的 V2 侧也有一条:#49908「V2 访问 Zen 免费模型失败」从 09-19 报告到 10-11 00:14 才被关闭。

  3. 运行时正在离开「本机进程」,于是「谁持有这段工作」必须显式回答。 pi 把 codemode 的 VM 抽象成 driver(worker 线程 / 调用线程 / 跨 isolate RPC),RemoteCodemodeSandbox 的存在理由是「让脚本不阻塞调用方线程」;第三方(pi-worker)早已把「一个 session 一个 Durable Object」当默认做法。opencode 把 TUI / Desktop / Web 收到一个后端,并持续修 workerd 嵌入路径(#54219、#48295)。hindsight 则把记忆银行挂到别人的 harness 上(Grok Bot / Cursor)。三处面对的是同一类问题:跨进程后,超时、中断与恢复的归属不能靠调用栈隐式决定。

  4. 「用索引换掉遍历」与「用拒绝换掉默认放行」是同一方向的两种动作。 pi-durable 用内存索引把 reconcile 从 O(n³) 遍历降到 500 held task 50 ms、20,000 个 1.5 s,并把常驻边从 10,001 条压到 1 条(所有权只在下面还有活工作时保留);ACP 把 9 个字段位的宽容解析改成 -32602 严格拒绝;hindsight 让 tag-scoped caller 对整库操作一律 403 并补了一条守卫。共同点是:把「按需临时重建 / 静默降级 / 默默放行」换成常驻且有界的显式结构。

  5. 共享记忆的授权边界目前仍以约定为主。 hindsight 上一篇刚把「tag scope 覆盖不到哪些整库操作」变成显式拒绝清单,本周又发布 Grok Bot 集成——而那篇文章自己承认「只读纪律是 skill 里的约定,不是服务端权限」,且 OAuth grant 触达整个组织。当一个记忆层同时服务多个 harness 时,「谁能读谁的记忆」目前仍依赖集成方自觉。

  6. 长时运行的两个成本项被公开量化了。 pi 用 bench:scheduler-fanout / bench:scheduler-memory 把性能写进 commit message(18.8 s → 9.2 s → 2.7 s;10,000 条边 → 1 条),ACP 则在 RFD 阶段就固定「notice 不进 replay」「compaction 首个 update 固定时间线位置」。可对比的基准数字正在成为长时 agent 基础设施的验收方式,而不只是实现细节。

元信息

  • 报告生成时间: 2026-10-11T00:36:43Z
  • 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段)
  • 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-11T00:36:43Z(约 32.6 天)
  • 数据源: GitHub API(gh CLI)+ mmx web search;GitHub Discussions 补充用 GraphQL(REST 的 discussions 列表接口在本轮返回的是最早一页)
  • API rate limit 剩余: 5000
  • 抓取失败: 无(6/6 仓库的 repo / releases / commits / pulls 全部成功;anomalyco/opencode 的 Discussions 处于禁用状态,API 返回 410)

评论