2026 2026年10月19日 36 min · 10.5k chars by yxc023

GitHub 调研周报 2026-10-19

扫描窗口:2026-09-08T09:23:29Z → 2026-10-19T00:30:18Z(共 40.6 天)| 基准来源:上次报告 reports/2026-10-18.md

2026-10-19 GitHub 调研周报

扫描窗口:2026-09-08T09:23:29Z → 2026-10-19T00:30:18Z(共 40.6 天)| 基准来源:上次报告 reports/2026-10-18.md 仓库范围:config/repos.yaml 中 6 个仓库。基准时间字段自 2026-09-08 起连续 10 期未变,窗口逐日变宽,本期新增内容全部落在 2026-10-18T00:33:51Z 之后的约 24 小时。 本期的形状是「零 release 日」——6 个仓库没有一个打出新版本,但 24 小时内 opencode 合了 14 个 PR、pi-web 合了 17 个 PR。信号全部压在 commit 与 issue 层。 pi 补上了可观测性底座,ACP 只有 bot 在动,opencode 把 1.x/2.x 分裂的前端收口了,而「静默降级」第三次成为主要缺陷形状。

本期速览

  • earendil-works/pi: 48909d9 把 pi-telemetry 从「只有 span 契约」补成完整的可观测性底座——TelemetryPropagation(inject/extract + opaque carriers)、span links、TelemetryMetrics(counter / up-down counter / histogram)、typed metric schemas(createTypedMetrics)、in-memory measurement log、propagation 与 metrics 的 conformance tests(+140 行 metrics.ts、+135 行 propagation.test.ts、README +123/-4)。chord/context 同步拿到 Context.telemetry(NOOP 默认)、withTelemetry、traceIn。
  • earendil-works/pi: 包 README 自己写死了立场——「no exporter, global current-span state, or dependency on a telemetry backend」,可观测性是显式注入的契约,不是全局埋点。durable 只加了 HarnessOptions.telemetry 的类型,changelog 原文:「adds the configuration type only; Durable instrumentation and persisted carriers are not yet implemented.」
  • earendil-works/pi: 91b33ca 让 durable 的失败面从字符串变成类型。ReportInfo.type 有 9 种取值(session_failed / task_faulted / task_parked / migration_failed / task_outdated / task_error / extension_error / host_error / listener_error),restart_limit 与 outdated 定义不再是 error.cause 里的一段文本,host_error 点名是哪个 HarnessOptions 回调炸的。
  • anomalyco/opencode: 501b15a 把 21 个语言版本的 README 安装方式全部改指 V2(README.md / .ar / .bn / .br / .de / .es / .fr / .ja / .ko / .ru / .th / .tr / .uk / .vi / .zh / .zhht …)。配合上期 v1.19.2 那条「1.x 安装永不把 2.x 当常规更新推给它」,1.x/2.x 分裂的前端在本期收口。
  • anomalyco/opencode: 同一个迁移 bug 被三个人在三天内各开了一个 issue——#54679(Ivony, 10-12)、#55081(crash123, 10-13)、#55275(yzy-15, 10-14),都是「V1 的 global project 会话在 V2 的 cwd-scoped 列表里消失」,三个全部已 closed。这不是巧合,是同一份账单被重复提交。
  • anomalyco/opencode: 当天又到两个「配置看起来对、功能却不存在」的报告——#56903(Desktop 2.0.32 / Windows 11,File → Open Project… 恒灰:菜单项绑到 project.open,而整个 app bundle 里没有注册过这个 command id,菜单渲染器把未知 id 视为永久禁用)与 #56902(2.0.32 / Linux,provider 配置里新增的模型要 opencode service restart 才出现在 opencode models,因为 catalog 是启动时的快照)。
  • agentclientprotocol/agent-client-protocol: 本窗口仓库里唯一的变化来自 bot——5 次 docs: update registry agents,全部是 docs/get-started/registry.mdx 的版本号顶替:harn 0.10.168 → 0.10.169 → 0.10.170(一天两次)、sigit 1.7.0 → 1.7.1。生态扩张体现在还 open 的 PR 上:#2427 acp-sdk (Ruby) 进 community libraries、#2423 Eleven 进 clients、#2420 Octomind 进 agents。
  • agentclientprotocol/agent-client-protocol: v2 的形状在 docs/protocol/v2/migration.mdx 里已经写死——五条要点之一是 「The Client file system, terminal execution, and session modes APIs are gone」,Agent 侧要 client 工具就改用 client 提供的 MCP server;Agent 拥有的终端输出变成一个独立的、仅显示的 v2 surface。同一页反复要求 「gate v2 support behind explicit version negotiation and feature flags until it stabilizes」。
  • vectorize-io/hindsight: 本窗口 main 分支零提交、零 release,star 仍 +370(+807 → +370,环比腰斩),open issues 从 148 升到 162。行业侧却是它最热的一周:10-13 这一天,Vectorize 把 Hindsight 推到 1.0 GA + Memlake 存储引擎,同一周 Tencent 开源了 TencentDB Agent Memory,两家不约而同落在同一条赛道上。
  • vectorize-io/hindsight: TencentDB Agent Memory 的接入清单里同时写着 Opencode 和 Pi——本清单 6 个仓库里有 4 个(OpenCode、Pi,外加 Claude Code / Codex 阵营)已经成了竞品的接入目标。其分层记忆为 L0 Conversation → L1 事实原子 → L2 场景 → L3 长期画像,召回由 Proxy 在每轮注入 system prompt。
  • agegr/pi-web: 24 小时 20 个 commit / 17 个 PR 合并 / 0 release。主线是模型配置面:per-model Base URL 原生覆盖(#1288)、Claude adaptive thinking 开关(#1331)、provider id 参与搜索匹配(#1308,修 #1272)、保存的模型定义应用到 idle session(#1287)。
  • agegr/pi-web: AI 协作已经不是例外:2026-09-01 以来最近 100 个 commit 里 52 个带 Co-authored-by: Claude Opus 5.5,且 PR 标题与它所关闭的 issue 标题完全一致(#1308 ↔ #1272、#1329 ↔ #1277、#1311 ↔ #1286、#1310 ↔ #1296)。
  • agegr/pi-web: 「子 agent 正在后台跑」第一次有了常驻指示——Agents badge 在有 subagent 运行时才切到运行数 + accent 色 + spinner(prefers-reduced-motion 下退化为静态),并复用 sidebar 已有的 running poll,不新增任何请求(#1311,修 #1286)。
  • agegr/pi-web: 附件存储的边界正在重画——#1333 提议把每次上传的原始文件落到 <agentDir>/attachments/<sha256>/<name>(同名不同内容得到不同路径,会话删除时才剪枝无引用目录);同期 #1332 暴露了「Uploads must total 100MB or less」的硬上限,且没有人知道去哪里改。
  • earendil-works/pi: 新贡献者的 PR 依然在 8–10 秒内被自动关闭且未合并——#11098(feat(ai,agent,coding-agent): server-side compaction via Responses API,06:19:37 创建 / 06:19:45 关闭)、#11104、#11108、#11109 均如此。#11108 / #11109 的作者改走 issue 通道,两个 issue 当天就被维护者接住。
  • earendil-works/pi: 增长曲线明显拐头:+178 star / 24h,上期 +509,环比约 −65%;open issues 持平 347(未变)。这是本清单里增速掉得最狠的一个。

各仓库详情

earendil-works/pi

AI agent 工具包:统一 LLM API、agent loop、TUI、编码 agent CLI;MIT,Pi 生态的核心 harness| stars: 116152(上期 115974,+178)| open issues: 347(上期 347,±0) | 默认分支: main | 最近 push: 2026-10-18T20:43:40Z | 主页: (仓库未填 homepage)

近 40.6 天 release 重点(本期无新 release):

窗口期内的最新 release 仍是 v1.3.0(2026-10-15)。本期 24 小时内无新 release。

  • v1.3.0(2026-10-15)— Durable 的 SQLite 存储层
    • SqliteStorage.open(database, { prefix }) 可以给所有表和索引加命名空间,openNodeSqliteStorage() / openDurableObjectSqliteStorage() 透传该参数,给宿主自有表共库用。
    • 同一个 storage object 创建的多个 Cloudflare Durable Object SQLite adapter 现在会协调各自的操作,多个 Pi storage 可以安全共用一个 DO database。
    • 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.3.0

其他重要 commits / PRs(本期窗口内 6 个 commit,全部为 Mario Zechner):

  • 48909d9 可观测性 — feat: telemetry propagation, span links and metrics; telemetry member in chord/context (2026-10-18T20:36Z)
    • pi-telemetry: TelemetryPropagation(inject/extract、opaque carriers)、span links(SpanOptions.links、addLink)、TelemetryMetrics(counter / up-down counter / histogram)、typed metric schemas(createTypedMetrics)、in-memory measurement log、propagation 与 metrics 的 conformance tests。
    • chord/context: 固定的 Context.telemetry 成员(NOOP 默认),withTelemetry、traceIn。
    • durable: HarnessOptions.telemetry 选项类型——commit message 自己标注 “no instrumentation yet”。
  • 91b33ca 可观测性 — feat(durable): ReportInfo says what happened, with typed reasons (2026-10-18T01:58Z)
    • onReport 的 info 按类型打标:session_failed / task_faulted / task_parked / migration_failed / task_outdated / task_error / extension_error / host_error / listener_error。
    • task report 携带一个 ReportTask;restart-limit 与 outdated 定义的 reason 变成类型化字段而不是 error.cause 字符串;host_error 点名出问题的那个 HarnessOptions 回调。
  • 5ba1cba durable — fix(durable): close keeps admitted aborts, reports name the extension that ran, review nits (2026-10-18T01:00Z)
    • close 在已 admit 的 commit 之后回读它写的记录,让排队中的 abort mark 活下来;task 的 report 记下装它的那个 extension(在 reservation 时捕获);wake() 只在真的有活时才算一次 reconcile pass。
  • 440a5fc durable — fix(durable): review fixes for the crash-loop guard, reports, and blocked tasks (2026-10-18T00:53Z)
    • crash-loop guard:一个任务连续 5 次被崩溃打断而没有提交新状态就被 park 而不是再跑;只有状态变化才重置计数;被 abort handler 打断 restartLimit 次的任务以 faulted 结束;parked report 带 blocked: restart_limit。
  • 1402973 测试 — fix: chord boundary test allows pi-telemetry, the dependency of Context.telemetry (2026-10-18T20:43Z)
  • 482c138 定价 — fix(ai): update GLM-4.6V Coding Plan cache read price in test (2026-10-18T02:15Z):models.dev 现在给 glm-4.6v 列 cache_read 0.05,Coding Plan 条目拿它当参考成本。
  • #11098 [未合并,8 秒关闭] feat(ai,agent,coding-agent): server-side compaction via Responses API — 让持有 compaction 的 provider(OpenAI Responses 的 context_management)在服务端摘要并裁剪上下文,pi 把结果当成一条普通的 session compaction 条目采纳。创建于 06:19:37,关闭于 06:19:45。
  • #11104 [未合并,10 秒关闭] durable: add task-scoped model access for hosts [piclaw-bot] — HarnessOptions.taskModels(scope, models) 回调,scope 含 task ID / conversation ID / task kind / invocation abort signal,让宿主按任务返回模型访问权限。
  • #11109 [未合并] fix(durable): builtin read resolves images to programs as image blocks in codemode — 根因写得很清楚:codemode program 里嵌套 read 读图片拿到空串,因为 read 没声明结构化输出 schema,harness 把它投影成文本,图片没有文本就被丢掉。
  • #11108 [未合并] fix(tui): keep the leading tilde in fullscreen double-click word selection — TERMINAL_WORD_SELECTION_JOINERS 里有 / 和 - 但没有 ~,双击 ~/Downloads/archive.zip 会丢掉开头的 home 标记。

社区讨论 / 行业方向:

信号观察:

  • 可观测性底座成形,但还没接线。 pi-telemetry 一次性补齐 propagation + metrics + typed schema + conformance tests,README 立场是「no exporter, global current-span state, or dependency on a telemetry backend」——可观测性被设计成显式传递的契约(Context.telemetry NOOP 默认、withTelemetry、traceIn),而不是全局埋点。但 durable 的 changelog 明确说「adds the configuration type only; Durable instrumentation and persisted carriers are not yet implemented」——这是一块刚浇好的地基,还没有管线接上去。
  • durable 的失败面从字符串变成类型。 9 种 ReportInfo.type、类型化的 restart_limit reason、点名的 host_error 回调、report 里携带装它的 extension 名字——三期报告连起来看,pi durable 正在把「任务为什么没跑起来」这个问题从日志里挖出来变成 API 的一部分。
  • 新贡献者入口仍然是自动关闭。 #11098 / #11104 / #11108 / #11109 全部在 8–10 秒内 closed 且未合并。值得注意的是 #11108 / #11109 的作者随后把同样的根因写成了 issue(#10980、#11015),两个 issue 当天就被维护者接住——筛人的机制没变,但被筛掉的人有第二条路。
  • 增长明显拐头。 +178 star / 24h,上期 +509,环比约 −65%;open issues 持平在 347(本清单里唯一零增长的 issue 数)。1.x 主力版本停在 10-15 的 v1.3.0 已 4 天,本期全部产出都在 unreleased。
  • 社区侧同时存在三类「隐藏失败」报告,且都在 idle / compaction / context 这条线上:#10704(waitForIdle() 在 settled-handler compaction 期间提前 resolve,Dante-dan 已在 main 1402973a9 上复现并给出对比修复链接)、#10956(cacheWarming 的 “idle” 在 extension 接管 turn_end 后静默停掉,ianks 报告看到 idle agent 打出 $500 级别的调用费,自嘲「lighting money on fire」)、#9409(reasoning 模型上会话永久卡在 context ceiling,chironcheng 今天补上来自 @deepseek-ai/dsh → @earendil-works/pi-ai 1.1.0 的 openai-completions 路径数据点,指出该路径下限是 MIN_MAX_TOKENS = 1)。

anomalyco/opencode

通用开源编码 agent,MIT,提供 TUI、桌面端、Web 与共享后台服务| stars: 216573(上期 215308,+1265)| open issues: 4668(上期 4617,+51) | 默认分支: dev | 最近 push: 2026-10-19T00:08:57Z | 主页: https://opencode.ai

近 40.6 天 release 重点(本期无新 release):

最新仍是 v1.19.3(2026-10-16),本期 24 小时内 1.x 与 2.x 均无新版本。

  • v1.19.3(2026-10-16)— 模型 reasoning 选项
    • 模型 reasoning 选项改为生成 reasoning variants,替换 catalog variants,同时保留用户已配置的 variant 覆盖。
  • v1.19.2(2026-10-16)— 1.x / 2.x 分裂写成契约(上期已详述)
    • update check 只用 npm opencode-ai 的 latest 版本,1.x 安装永不把 2.x 作为常规更新推给它。
    • 升级到 OpenCode 2 是独立且显式的选择(/update 里的 2.0 offer,或 opencode upgrade --major)。
    • 修 yarn 托管安装的升级;Homebrew Core 安装跳过 1.x 更新(它现在跟 OpenCode 2),提供更新前先查 tap 与 Chocolatey;安装脚本拒绝安装 2.x。
  • v1.19.1(2026-10-15)— session sharing 下线
    • session sharing 已停止:既有 share 链接与 session-sharing 命令不再可用,从 share URL 导入 session 不再支持。

V2 线(release notes 记在 dev:CHANGELOG.md,GitHub Releases 上无对应条目):

  • v2.0.32(2026-10-16)— 本期无新增条目
    • /copy 改为复制最近一条 assistant 消息或已完成的 compaction 摘要,完整 transcript 走命令面板或 /export(#56053、#56055)。
    • opencode auth login 在无法打开浏览器的容器 / headless 环境不再崩溃(#56082)。
    • 实验性 client.voice.session(...):服务端 broker 的 OpenAI GPT-Live / Realtime WebRTC、OpenAI Realtime WebSocket、xAI Grok Voice WebSocket;用服务端存的 API key 或 OPENAI_API_KEY / XAI_API_KEY,不使用 ChatGPT 登录凭据(#55951)。

其他重要 commits / PRs(本期 12 个 commit,14 个 PR 合并):

  • 501b15a 文档 — docs: point README install methods at V2 (#56839, 2026-10-18T17:13Z, Aiden Cline)
    • 改动 22 个文件:README.md + 21 个语言版本(ar / bn / br / bs / da / de / es / fr / gr / it / ja / ko / no / pl / ru / th / tr / uk / vi / zh / zht)。这是 1.x/2.x 分裂在前端入口上的收口。
  • 3099ec2 控制台 — chore(console): retire the Black pages and redirect them to Go (#56612, 2026-10-18T01:10Z, Kit Langton)
    • 27 个文件,含 routes/black.tsx、routes/black/index.tsx、routes/black.css、middleware.ts 与 19 个 i18n 文件。Black 页面退役并重定向到 Go。
  • 214fb7f 文档 — docs(console): add harness setup guides (#56364, 2026-10-18T09:54Z, Victor Navarro)
    • 新增 5 份 harness 接入指南:console/harnesses/claude-code.mdx、codex.mdx、hermes.mdx、pi.mdx、raycast.mdx,外加 harnesses/index.mdx 与 console/go.mdx。
  • 802f2d8 CI — chore(ci): run Cloudflare deploys on Blacksmith runners (#56818, 2026-10-18T15:03Z, Dax)
  • 9c2611b CI — chore(ci): verify Cloudflare token rotation (#56841, 2026-10-18T16:39Z, Dax)
  • 49e9786 — fix(core): bound skill discovery and watches (#55597):给 skill 发现与文件监听加上界。
  • 60a5a6c — fix(ai): treat null Responses stream fields as absent (#56669):Responses 流里的 null 字段按「缺失」处理而不是当值。
  • 63c1a27 — fix(core): tolerate sandboxed filesystem denials during location boot (#55817)。
  • 3bdab63 — fix(core): report shell exit only after output is captured (#56321)。
  • c38d83c — fix(protocol): accept idle in the message type filter (#56504)。
  • #56904 [已合并,2026-10-19T00:08Z] fix(desktop): install each Windows channel into its own directory [Hona] — 每个 Windows channel 装到 %LOCALAPPDATA%\Programs\<app id>(与数据目录同名),既有安装在下次安装/更新时自动搬出共享的 @opencodedesktop 目录,不动其它 channel 的文件。
  • #56900 / #56899 / #56897 / #56898 — V2 桌面端与插件宿主的连续小 PR(share host runtime with compiled plugin consumers、Target one V2 terminal client when selecting a session、ship the CLI as opencode and put it on the Windows PATH、add Focus and Pro interface picker to preferences)。

社区讨论 / 行业方向:

信号观察:

  • 1.x/2.x 分裂的前端收口完成。 v1.19.2 用五条 release note 把 1.x 钉在自己的线上(1.x 永不把 2.x 当常规更新推给它),本期 501b15a 把 21 个语言版本的 README 安装方式全部改指 V2。两端合起来的效果是:1.x 从「默认版本」正式退位成「需要显式选择的旧线」,而 /update 与 opencode upgrade --major 成为唯一的越线入口。
  • 同一个迁移 bug 被三个人各开一个 issue。 #54679 / #55081 / #55275 三天三个账号,标题措辞各不相同但根因一致,全部 closed。当一个缺陷类第一次以「重复提交」的形式出现时,通常意味着它没有被归类,只是被逐个关闭。
  • 「静默降级」第三次成为主要缺陷形状。 上期是 #56602(V2 配置静默丢弃 MCP server,opencode mcp list 说「没有配置任何 MCP」)、#56583(CLI 对更高版本创建的 DB 报一个不指向根因的错误)。本期是 #56903(project.open 从未被注册,菜单渲染器把未知 command id 视为永久禁用,于是 File → Open Project 在 Windows 上恒灰)、#56902(配置里新增的模型要重启 service 才出现,因为 catalog 是启动时的快照)、#56906 / #56907(subagent 视图里 permission prompt 挂住)。共同点:配置看起来完全正确,功能却不存在,且没有任何一句警告。 这类缺陷不会自己冒出来,只会由用户逐个撞上。
  • Console 在做品牌与定位的双重调整。 Black 系列页面退役、redirect 到 Go(#56612),同期补上 claude-code / codex / hermes / pi / raycast 五份 harness 接入指南(#56364)——Console 的叙事正在从「OpenCode 自己的 Web 端」转成「多 harness 的控制面」,而 pi 是它文档里的五家之一。
  • 基础设施在换供应商。 Cloudflare 部署迁到 Blacksmith runners(#56818),并加了 token 轮换校验(#56841)。V2 的活跃面停在 2.0.32(10-16),本期 14 个 PR 合并却没有打包——开发节奏与发布节奏第一次明显分离。
  • 注意力已经整体转向 V2 线。 +1265 star / 24h 是本清单最高,open issues +51 也是最高;但 1.x 分支上一个 release 都没出。

agegr/pi-web

pi coding agent 的 Web UI| stars: 7484(上期 7466,+18)| open issues: 22(上期 43,−21) | 默认分支: main | 最近 push: 2026-10-18T13:10:59Z | 主页: (仓库未填 homepage)

近 40.6 天 release 重点(本期无新 release):

最新仍是 v0.12.2(2026-10-15),本期 24 小时内无新 release。

  • v0.12.2(2026-10-15)— release body 10,008 字符,为本清单最长的单条 release notes。

其他重要 commits / PRs(本期 20 个 commit,17 个 PR 合并):

  • f0b3117 模型 — feat(models): Claude adaptive thinking switch for custom models (#1331, 2026-10-18T11:58Z, Alex Yang):给自定义模型加 Claude adaptive thinking 开关。
  • dd8201b 模型 — feat(models): expose native per-model Base URL override (#1288, 2026-10-18T11:51Z, xcg):暴露每个模型原生的 Base URL 覆盖。
  • df163cd 模型 — feat(models): match provider ids in the model and Add provider searches (#1308, 2026-10-18T13:00Z):模型选择器此前只匹配模型名与 id,像 relay-a 这样的 provider id、或带限定的 anthropic/claude 在多家 provider 提供同一模型时就搜不到;现在也匹配 provider id 与 provider/modelId,大小写不敏感且 trim,排序与分组不变。Settings › Models › Add provider 此前 API-key provider 按名或 id 匹配、OAuth provider 只按名匹配,现在两者都走 providerMatchesSearch()。修 #1272。
  • 0347c5d 模型 — fix(models): apply saved definitions to idle sessions (#1287, 2026-10-18T03:19Z, xcg)。
  • fbcbc31 子 agent — feat(agents): show running subagents on the top bar's Agents badge (#1311, 2026-10-18T12:56Z):Agents 按钮此前只显示 session family 的 subagent 总数,一次长时间后台运行要打开面板才会被发现。现在只要 family 内有 subagent 在跑,badge 就切到运行中的个数、accent 色着色并套一圈 spinner(prefers-reduced-motion 下静态),title 与 aria-label 说明有几个在跑。运行态复用 sidebar 已有的 running poll,即 Agents 面板表头数的同一集合,不新增任何请求。 修 #1286。
  • 35af710 终端 — feat(terminal): follow the chat font size in the terminal (#1329):xterm 原先硬编码 13px 字体且无从更改;现在跟随 Settings › General › Fonts & layout 的 chat 字号,与代码块一致(terminalFontSize(): chat - 1,即 11–23px),今天的默认值仍然精确是 13px。滑块变动会设置 live xterm 的 fontSize 并通过面板的 fitAndResize 重排,其 onResize 把新 cols/rows 发给 PTY,shell 与它的 SSE 流都保住。修 #1277。
  • 51b1159 对话 — feat(chat): play markdown audio and video files inline (#1280/#1281, 2026-10-18T03:16Z, maximilize)。
  • 5a2f991 侧边栏 — fix(sidebar): keep a repo-root session open after a subdirectory (#1307):紧跟在子目录视图之后点击仓库根(或其某个 worktree)的会话会再次关掉聊天,文件动了、聊天空着、URL 退回 /。修 #1305 系列。
  • 4eed9e9 — fix(sessions): leave the system prompt out of agent status reads (#1306)。
  • 246c1f2 — fix(chat): mark the lines a diff leaves out between hunks (#1304)。
  • 3e4c175 — fix(sidebar): sync unread markers between a browser's tabs (#1292, dingxiaobo)。
  • f4adfd0 — fix(files): keep the panel tabs 36px and scroll them with the wheel (#1303, Val.)。
  • f1b6d62 — fix(files): open PDFs from Android Chrome's placeholder (#1305)。
  • cc041d8 — fix(models): keep the mobile picker visible above the keyboard (#1294, xcg)。
  • 42909b6 — fix(skills): group skills installed into .agents/skills under skills.sh (2026-10-18T04:34Z)。
  • 962f1e8 / 6967ad6 / 1280e4f / b8a3ffc — 设置页居中、字体权重显示名字而非数字、Models 表单字段说明与 footer 文案收紧。
  • #1321 [已合并 2026-10-18T02:05Z] feat(shortcuts): read pi's keybindings.json instead of hard-coding keys
  • #1314 [已合并 2026-10-18T13:29Z] PWA 下用 Keyboard Lock API 支持浏览器保留快捷键(如 Ctrl+N 新建会话),并扩展全局快捷键

社区讨论 / 行业方向:

  • HTTP/1.1 multi-tab event streams can starve Settings requests · #1283(wowayou,10-18 更新):在 0.12.2(Pi SDK 1.2.0)直接走 HTTP/1.1 时,多个 Pi Web 标签页打开的情况下 Models / Skills / Plugins 会一直 loading,关掉任意一个其它标签页立刻恢复。报告者自己做了严格取证:事故期间 /api/plugins、/api/skills、/api/auth/providers、/api/models/enabled、/api/models-config 全部 HTTP 200、耗时 3–132 ms;同一生产环境的干净浏览器上下文加载同样的面板无 JS 报错;受影响浏览器一侧有 6 条持久 TCP 连接(但没抓到具体路由)。并明确写下「用户感知的一条消息丢失,是显示/同步症状的证据,不是持久化丢失的证据」。
  • Store chat attachments in the Pi agent directory · #1333(TophC7,10-18 更新):指出图片目前只内联传输(且大图会在服务端看到之前被缩放),其他附件则上传进 workspace——污染项目目录、同名上传被跳过时会引用到过期文件、粘贴的非图片文件直接丢失。提议把每次上传的原始文件存到 <agentDir>/attachments/<sha256>/<name>,再插入绝对 @path 复用现有 mention formatter。
  • 被限制了上传文件大小 · #1332(sxfbest,10-18):报错原文 Uploads must total 100MB or less,提问「需要上传大文件,请问在哪里修改?」——一个硬上限,且没有暴露配置入口。
  • agegr/pi-web – GitHub stats & insights: 第三方统计站记录 #211 本周 stars、1.1K forks。
  • Pi Coding Agent 包注册表: pi.dev 的包注册表里已经出现至少 6 个第三方 pi-web 变体——@jmfederico/pi-web、@gang-of-beads/pi-web、@hyperdreamer/piwebui、@larose/pi-web、pi-web-ui、@firstpick/pi-package-webui,描述高度雷同(「Web UI for persistent Pi Coding Agent sessions in real workspaces」)。

信号观察:

  • AI 协作从例外变成默认工作流。 2026-09-01 以来最近 100 个 commit 里 52 个带 Co-authored-by: Claude Opus 5.5;PR 标题与它所关闭的 issue 标题完全一致(#1308 ↔ #1272、#1329 ↔ #1277、#1311 ↔ #1286、#1310 ↔ #1296),issue 侧则大量是中文报告(#1296、#1286、#1332、#1319)。中文 issue → 英文 PR 标题 → Co-authored-by 的完整链路已经是这个仓库的常规形态,而不是新鲜事。
  • 主线是「模型配置面」而不是「新功能面」。 per-model Base URL 原生覆盖、Claude adaptive thinking 开关、provider id 参与搜索匹配、保存的模型定义应用到 idle session——四个 PR 都在解决「同一个模型在不同 provider / 不同环境下表现不同」这一类问题。这与 provider id 匹配修复(#1308)指向同一个根因:当同一个模型被多家 provider 提供时,UI 层缺少「这条到底是哪一家」的表达。
  • 子 agent 的后台运行第一次有了常驻指示。 之前 long-running background run 要打开面板才看得见;现在 Agents badge 在有 subagent 运行时才切到运行数 + accent 色 + spinner,并且明确复用 sidebar 已有的 running poll,不新增请求——这是一个「零额外成本换可观测性」的典型做法。
  • open issues 从 43 掉到 22,方向与别处相反。 本期合并 17 个 PR,其中多数 PR 用 Closes #NNNN 关掉了对应的 issue;同时 star 只 +18。这是本清单里唯一一个「关闭速度快于新增速度」的仓库。
  • 附件存储的边界正在重画。 #1333 把原始上传从「workspace 里的一次性文件」改成「agent 目录里按 sha256 寻址的持久资产」,并要求会话删除时才剪枝无引用目录;同期 #1332 暴露的 100MB 硬上限说明这条 intake 路径还没有配置面。「聊天附件属于项目还是属于 agent」这个问题正在被明确回答。
  • 多标签页 / 多连接的资源争抢第一次被完整记录。 #1283 的取证方式值得注意:报告者主动区分了「显示症状」与「持久化丢失」,并逐一给出各 API 的延迟数据。这是一个本清单里少见的、把「我以为」和「我验证了」分开写的 bug 报告。

vectorize-io/hindsight

Agent 长期记忆系统(Agent Memory That Learns),MIT,四类隔离记忆网络 + retain/recall/reflect/consolidate 循环| stars: 51231(上期 50861,+370)| open issues: 162(上期 148,+14) | 默认分支: main | 最近 push: 2026-10-17T14:59:44Z | 主页: https://hindsight.vectorize.io/

近 40.6 天 release 重点(本期无新 release):

最新仍是 v1.0.0(2026-10-13)。

  • v1.0.0(2026-10-13)— 1.0 GA:确立稳定且向后兼容的 API 标准,配套自研存储引擎 Memlake。

其他重要 commits / PRs:

窗口期内 0 个 commit、0 个 PR。main 分支自 2026-10-16 19:58Z 起无新提交(pushed_at 停在 2026-10-17T14:59:44Z)。

社区讨论 / 行业方向:

信号观察:

  • 代码停了,注意力没停。 main 分支自 10-16 起零提交、零 release,但 star 仍 +370(+807 → +370,环比腰斩但仍是本清单第三)。open issues 从 148 升到 162(+14),是本清单里唯一 issue 数上升的仓库。注意力与代码在这两周里脱钩了。
  • 它所在品类在同一周完成了对位。 10-13 这一周,Vectorize 把 Hindsight 推到 1.0 GA + Memlake,同一周 Tencent 开源 TencentDB Agent Memory(L0–L3 分层、Team Memory、Memory Proxy、TypeScript/Python SDK)。两家不约而同落在同一条赛道上,且都在同一周对外发布。
  • 竞品的接入清单里写着本清单的两个仓库。 TencentDB Agent Memory 明确支持 Opencode 和 Pi。它的策略不是替换 harness,而是在 harness 旁边加一层记忆——这与 Hindsight 的 60+ integrations 是同一条路线的两种执行。
  • 可观测性是这一品类对外的主要论据。 墨天轮那篇的中文对照给出了具体数字:1 亿条记忆、99 分位召回 500 毫秒 vs Hindsight 单次 99 分位 80 毫秒、4 路统一 vs 单路极致延迟。能给出 p99 数字的记忆系统,已经在用数据库的方式而不是插件的方式自我推销。
  • 「本地 = 离线」这个卖点当场被社区拆掉。 r/AI_Agents 与 r/LocalLLaMA 的讨论里,最实际的反驳是:本地 SQLite 存储不代表整条处理链路离线,模型端点仍然要联网看配置。这是「本地优先」叙事在 2026-10 的实际接受度。

agentclientprotocol/agent-client-protocol

连接任意编辑器与任意 agent 的协议(LSP 之于编辑器之于编程 agent)| stars: 4464(上期 4461,+3)| open issues: 37(上期 35,+2) | 默认分支: main | 最近 push: 2026-10-18T23:16:15Z | 主页: https://agentclientprotocol.com

近 40.6 天 release 重点(本期无新 release):

最新仍是 2026-10-16 的 v1.12.0(Rust crate)、schema-v1.26.0、schema-v2.0.0-alpha.9,本期无新 release。

  • schema-v2.0.0-alpha.9(2026-10-16)— v2 草案的又一次澄清
    • (unstable-v2) 按顶层 key patch upsert _meta(#2372);(schema) 对齐 v2 实验特性兼容性(#2397)。
    • 其余几乎全是 Other 类的文档澄清:定义前台状态转换(#2411)、澄清 replay ID 与不支持的 cursor(#2398)、对齐规范化取消要求(#2390)、澄清 prompt 插入契约(#2392)、澄清前台工作生命周期(#2387)、澄清关闭 session 时的 prompt 取消(#2385)、说明 git_patch 如何写路径(#2362)、澄清 fork 出的 session 是 active 的(#2359)、列出 v2 完整 session baseline(#2358)、澄清前台工作可以无 prompt 启动(#2357)。
  • v1.12.0(2026-10-16)— Rust crate 与上面同一批条目,另加 (rust) 为 content block 实现 Eq(#2352)。

其他重要 commits / PRs(本期 5 个 commit,全部为 acp-release-bot[bot]):

  • 191987a / 2c82704 / 2848de6 / 39e495e / de7b6e5 — docs: update registry agents(10-18 的 09:40 / 14:05 / 17:26 / 20:44 / 23:15Z,一天五次)
    • 每次只改一个文件 docs/get-started/registry.mdx,且只顶替版本号:harn 0.10.168 → 0.10.169 → 0.10.170(一天两次),sigit 1.7.0 → 1.7.1。
  • #2427 [仍 open] docs: add acp-sdk (Ruby) to community libraries [bottrall],10-18 19:57Z 更新。
  • #2423 [仍 open] docs: add Eleven to the clients list [Zfinix],10-18 09:23Z 更新。
  • #2420 [仍 open] docs: add Octomind to the agents list [donk8r],10-17 11:54Z 更新。
  • #2413 [仍 open] chore: release [acp-release-bot],10-18 23:16Z 更新。

社区讨论 / 行业方向:

信号观察:

  • 本期仓库里唯一的变化来自 bot。 5 个 commit 全部是 docs: update registry agents,每次只改 registry.mdx 里的一个版本号:harn 一天从 0.10.168 走到 0.10.170,sigit 从 1.7.0 到 1.7.1。ACP 本体(schema、文档、示例代码)本期零改动。
  • 生态扩张体现在还 open 的 PR 上,不在 commit 里。 acp-sdk (Ruby) 进 community libraries、Eleven 进 clients、Octomind 进 agents,三个 PR 都在等待。注册表是 ACP 唯一的「活动面」,而它由 bot 驱动、由社区 PR 填充。
  • v2 的破坏性变更已经写死在迁移文档里。 docs/protocol/v2/migration.mdx 的五条要点之一是 「The Client file system, terminal execution, and session modes APIs are gone.」——Agent 侧要 client 工具就改用 client 提供的 MCP server;Agent 拥有的终端输出变成一个独立的、仅显示的 v2 surface。同一份文档的「五条要点」还规定:更新语义变成 upsert(省略 = 不变、null = 清空、值 = 替换、chunk = 追加);capabilities 重组成两侧各一个 capabilities + 必填 info;枚举与 tagged union 接受未知值,_ 前缀归你自己、其余保留给未来版本。
  • 同一份文档反复要求「按开关上 v2」,而且给了理由。 原文:「gate v2 support behind explicit version negotiation and feature flags until it stabilizes」,并解释「一个丢掉 v1 的 Agent 会切断自己与现有 Client 的连接,一个丢掉 v1 的 Client 会失去对现有 Agent 的访问」——每条连接只讲一个协商后的版本,但实现方要 v1/v2 并行。 对照本期仓库状态:v2 停在 alpha.9,v1.12.0 与两个 schema 一起发,这个节奏与文档要求一致。
  • 协议正在从「编辑器标准」向「agent 通用遥控器」扩张。 一家支付公司(Block)的播客在讲它,多个第三方站点在做 ACP client/agent 目录,Hivebook 在维护 v1/v2 逐条对照。但 star 增速是本清单最低(+3 / 24h),open issues +2。叙事在扩张,代码在沉淀。

yxc023/yxc023.github.io

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

近 40.6 天 release 重点:

窗口期内无 release。

其他重要 commits / PRs:

  • dc5c762 — auto(reports): 同步 daily-research 2026-10-18 (杨晓辰(小德) & 再探再报, 2026-10-18T00:35:16Z):上一期报告的自动同步,本期该仓库同样只有这一个 commit。

社区讨论 / 行业方向:

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

信号观察:

  • 本仓库是本报告的发布目标,不是被观察的对象。唯一的 commit 永远是上一期报告自己的同步,它的 push 时间戳(00:35Z)与报告生成时间(00:33Z)差两分钟,可以当作流水线是否跑通的探针。
  • stars: 1 | open issues: 27 —— 27 个 issue 是历次自动同步留下的,不是待办信号。

跨项目观察

  1. 「零 release 日」第一次出现,而开发节奏是本清单里最快的。 本期 6 个仓库全部没有新版本,但 24 小时内 opencode 合了 14 个 PR、pi-web 合了 17 个 PR。发布节奏与开发节奏第一次明显分离:上期是「架构改动日」(pi durable 删 sleep、ACP 从规范里删特性),本期是「纯 commit 日」。对读者的含义是明确的——当报告里没有 release 时,信号全部在 commit 与 issue 里,去看 pushed_at 与 PR 数而不是 tag 列表。

  2. 可观测性第一次作为「显式注入的契约」被设计,而不是全局埋点。 pi 的 pi-telemetry README 逐条列出了它不做什么:「no exporter, global current-span state, or dependency on a telemetry backend」,Context.telemetry 默认 NOOP,用 withTelemetry / traceIn 显式包装;同一批提交把 durable 的失败面从字符串变成 9 种 typed reason,并让 report 点名是哪个 extension、哪个 HarnessOptions 回调出的问题。opencode 同日有机器人开的 fix(core): log providers removed by policy(#56905)。三方都在补同一个东西:「这个进程到底做了什么」的查询面,而且都不打算依赖一个后端 SDK。

  3. 「静默降级」第三次成为主要缺陷形状,而且这一次是跨三个仓库的。 opencode 上期的 #56602(V2 配置静默丢弃 MCP server)与 #56583(CLI 对高版本 DB 报一个不指向根因的错误),本期变成 #56903(project.open 从未注册,菜单渲染器把未知 command id 视为永久禁用,File → Open Project 在 Windows 11 上恒灰)与 #56902(provider 配置里新增的模型要重启 service 才出现,catalog 是启动时的快照);pi 侧同时有 #10074(Anthropic tool call 里 \uXXXX 掉了 u 变成控制字符,会话在 streaming edit 时无限卡住,eyalroth 今天补了 1.3.0 上的数据点)、#10704(waitForIdle() 在 settled-handler compaction 完成前就 resolve)、#10956(cacheWarming 的 idle 静默停掉,烧掉约 $500)。共同点一句话:配置看起来完全正确,功能却不存在,且没有任何一句警告。 这类缺陷不会自己冒出来,只会被用户逐个撞上——而每一个撞上的用户都会开一个独立 issue。

  4. 「一个缺陷类第一次以重复提交的形式出现」是它没被归类的证据。 opencode 的 #54679 / #55081 / #55275 是同一个 bug(V1 的 global project 会话在 V2 的 cwd-scoped 列表里消失),三个人在 10-12 / 10-13 / 10-14 各开一个,措辞各不相同,三个都 closed。加上 #56902 与上期的 #56583(CLI 1.19.3 跑在 Desktop 2.0.32 建的 opencode.db 上崩),V1→V2 迁移的断点不在代码里,而在「谁拥有 ~/.local/share/opencode」这个没有写下来的约定上。

  5. Agent memory 这一周完成品类对位,而且竞品已经反向接入本清单的仓库。 10-13 这一周,Vectorize 把 Hindsight 推到 1.0 GA + Memlake,Tencent 开源 TencentDB Agent Memory(L0 Conversation → L1 事实原子 → L2 场景 → L3 长期画像,Team Memory、Memory Proxy,TypeScript + Python SDK,80 天 star 破万并多次上 trending 第一)。墨天轮把这两件事并列成「Agent Memory 独立数据库品类成型」,并给出可比的硬指标(1 亿条记忆、99 分位 500ms vs Hindsight 的 4 路统一单次 99 分位 80ms)。TencentDB Agent Memory 的接入清单里同时写着 Opencode 和 Pi——本清单 6 个仓库里已有 2 个成了别人的接入目标。而本期 hindsight 本体零提交、star 仍 +370:注意力的来源已经从它自己的代码,转到了它所在的品类。

  6. 「一个 harness + 多个界面 + 多个 harness 并列」正在收敛成同一张图。 pi-web 本期 20 个 commit 几乎全是设置项与移动端打磨(模型配置面、字体、面板、移动端 picker),同期 pi.dev 的包注册表里已出现至少 6 个第三方 pi-web 变体(@jmfederico/pi-web、@gang-of-beads/pi-web、@hyperdreamer/piwebui、@larose/pi-web、pi-web-ui、@firstpick/pi-package-webui),描述几乎相同;opencode 侧同期把 Console 的 Black 页面退役并 redirect 到 Go,补齐 claude-code / codex / hermes / pi / raycast 五份 harness 接入指南。「Web UI for X」正在变成一个可复制的品类,而 ACP v2 那条「Client 侧 fs/* 与 terminal API 整体删除、Agent 要 client 工具就用 client 提供的 MCP server」则给出了这个品类在协议层的收敛方向。

元信息

  • 报告生成时间: 2026-10-19T00:30:18Z
  • 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段,自 2026-09-08 起连续 10 期未变)
  • 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-19T00:30:18Z(约 40.6 天);本期新增内容全部落在 2026-10-18T00:33:51Z 之后的约 24 小时
  • 数据源: GitHub API(gh CLI)+ mmx web search
  • API rate limit 剩余: 4903 / 5000(core,抓取完成后查询)
  • 抓取结果: 6 / 6 仓库 × 4 endpoint 全部成功;V2 changelog 另取自 anomalyco/opencode 默认分支的 CHANGELOG.md;ACP v2 迁移说明取自 docs/protocol/v2/migration.mdx

评论