2026 2026年10月13日 32 min · 9.4k chars by yxc023
GitHub 调研周报 2026-10-13
扫描窗口:2026-09-08T09:23:29Z → 2026-10-13T00:33:30Z(共 34.8 天)| 基准来源:上次报告 2026-10-12
2026-10-13 GitHub 调研周报
扫描窗口:2026-09-08T09:23:29Z → 2026-10-13T00:33:30Z(共 34.8 天)| 基准来源:上次报告 2026-10-12
仓库范围:
config/repos.yaml中 6 个项目。基准时间字段自 2026-09-08 起未变,因此窗口逐日变宽,本期新增内容主要落在 10-12 00:36 之后的 24 小时。本期最重要的一件事是 ACP 把 Client-Provided System Prompt(#1237)合进协议主线——这份 RFD 从 5 月 18 日开到现在,落地意味着 ACP 补上了它作为「唯一没有 system prompt 机制的 agent 协议」这个短板,配套的 unstable schema PR #2361 当天一起合入。第二件是 pi v1.2.0(10-12 23:03)一边加功能一边砍架构:加了 per-key OpenRouter 模型列表、$schema配置 schema、远程剪贴板 OSC 52;同时删掉了从未发布的 experimental server / client / plugin 整栈,并移除@earendil-works/chord依赖,发布后 34 分钟内连落 4 个 chord 修复 commit。**第三件是 opencode v2.0.27(10-12 04:16 打的 tag)**把 worktree 变成 Code Mode 的内建工具(worktree_create/list/remove),并给pair --remote加了「首次启用公网暴露前必须确认」。第四件是 opencode 那条 plan mode 的 SECURITY 报告以最坏的方式收尾:#54632 被 bot 以「duplicate of #53955」关闭,而真正的修复 PR #54165 从 10-09 挂到现在仍未合。第五件是 hindsight 在 24 小时内连发 18 个 integration release,其中openclaw直接跳到 v1.0.0,改用 OpenClaw 2026.10 的 provider-neutralproviderRuntime而不是此前那份 +752 行的伪 file-shaped 适配层。
本期速览
-
agentclientprotocol/agent-client-protocol: #1237「Client-Provided System Prompt」RFD 于 10-12 10:12 合入(作者 @wpfleger96,开于 2026-05-18)。提案理由写得很直白:ACP 是当前唯一没有 system prompt 机制的 agent 协议——MCP、OpenAI、Anthropic Messages API 都有,每家 ACP 实现都各自造了非标准变通(
_meta扩展、user-message 注入、文件系统中转)。方案是sessionCapabilities.systemPrompt在initialize时广告,session/new上挂可选systemPrompt: ContentBlock[],配systemPromptMode: append | replace。配套的feat(unstable): add client system prompt schema(#2361)同一天合入。 -
earendil-works/pi: v1.2.0(10-12 23:03)在 Removed 段删掉了从未进入发布包的 experimental server / client / plugin 栈(
src/experimental、src/cli/experimental),连同它依赖的@earendil-works/pi-client、pi-protocol、pi-server三个包一起停发,并移除@earendil-works/chord依赖。发布后 34 分钟内连落 4 个 chord 修复:facet root 必须在 import 任何模块前注册完、macOS 上进程锁 socket 路径必须留在sun_path长度内、已关闭的 link 不得保留连接、Nix 包里同时去掉 chord 与 esbuild。 -
earendil-works/pi: v1.2.0 的功能面集中在「把配置和远程会话补齐」:per-key OpenRouter 模型列表(按 key 过滤出可用模型,连同该 key 的 context size / max output / 价格一起落盘离线可用,含
models.json里设的 regional endpoint);发布$schema到https://pi.dev/schemas/*.schema.json(settings / models / keybindings / themes 四个,这是 breaking——theme schema 搬家,启动期加载的 theme 现在也走同一套校验,$schema引用要改、可复用颜色要挪到vars);PI_CLIPBOARD_OSC52=1让复制内容经 OSC 52 送到远端客户端剪贴板(多路复用器从另一台机器 attach、远端 IDE daemon 这类检测不到远程会话的场景)。 -
anomalyco/opencode: v2.0.27(tag 10-12 04:16)把 git worktree 收成 Code Mode 内建工具——
worktree_create/worktree_list/worktree_remove,删 worktree 走普通 edit approval,force: true可丢弃改动和未跟踪文件(#53981)。同版opencode pair --remote首次开启公网暴露前会警告并要求确认,非交互场景需显式--yes(#54561)。另外 ChatGPT OAuth 对gpt-6.1-sol/-fast的输入上限提到 500,000 tokens(#54668),Code Mode 的fetch禁掉file://(#54510)。 -
anomalyco/opencode: #54632(SECURITY: plan mode is advisory, not enforced on V2)于 10-12 21:56 被关闭,标签是
pending close+triaging,bot 的措辞是「没等到回复,按之前说的当作 #53955 的 duplicate 关掉」。但 #53955 的修复 PR #54165 自 10-09 提交至今仍 open 未合——也就是说 plan mode 下 shell 无规则、默认放行这个洞在报告关闭后依然存在。 -
anomalyco/opencode: 24 小时内新增 174 条 issue,其中几条指向 v2 迁移期的结构性缺口:#54938 官方 VS Code 扩展 0.0.13 仍在 spawn 已被 v2 删除的
opencode --port;#54940 非 Git 大目录的文件索引封顶 100,000 条,刷新后 26,216 个路径凭空消失、26,216 个凭空出现,磁盘文件未变;#54974 长挂起的 Promise plugin command 在约 5 分钟后被客户端 transport 丢弃,服务端 executor 变成孤儿继续跑;#54935 task tool 起的每个 sub-agent 都新建 session、拿自己的 cache key,导致并行子 agent 的重复计费可能高于单个 agent。 -
vectorize-io/hindsight: 24 小时内 18 个 integration release(openclaw v1.0.0、hermes v1.2.2、coding-agents v0.8.1、paperclip v0.4.2、opencode v0.2.9、cursor v0.2.1、devin-desktop v0.2.1、obsidian v0.3.1、agentcore v0.1.3、n8n v0.1.4、flowise v0.1.1、eve v0.3.1、meta-muse v0.1.1、vapi v0.1.1、smolagents v0.1.2、pipecat v0.1.2、dify v0.1.2、composio v0.1.1)。其中 openclaw v1.0.0 放弃此前那份「伪造 file-shaped legacy runtime」的 +752 行方案,改注册 OpenClaw 2026.10 的
providerRuntime(#5535)。 -
vectorize-io/hindsight: openclaw 的 memory provider 被刻意做窄:不做 Active Memory 候选(会在 autoRecall 之上重复召回)、不做 pre-compaction flush(每轮都已 retain);
search/get只答操作者本人和 agent owner 的 private session,群会话、无 audience 的 session、host authority 一律报错而不返回空结果;只有当 bank 完全由 agent 决定(agentBankMap/ 静态 bank /dynamicBankGranularity: ["agent"])时才允许 search,按 user 或 channel 分库时直接拒绝而不是猜。实测验证跑在真实 OpenClaw 2026.10.2 上,memory.status从 “memory plugin unavailable” 变成{"providerId":"hindsight-openclaw","status":"ready"}。 -
agegr/pi-web: 主分支自 10-11 14:04 起约 34 小时无提交,v0.12.0(10-11)之后无新 release。窗口内唯一显著动作是 #1210(@acniray,+3151 / −156,已关闭未合并):把扩展创建的嵌套子 session 与交互式扩展 UI 桥接进 Pi Web,作者在正文里明确回应了 #1041 的反对意见——只做「检视与导航」,不把内置 subagent 模型重新定义到另一个扩展的内部实现上。同期 issue 区出现两篇成体系的分析(均 @brynne8):#1199 指出
input_files的 8 文件 / 512 KB 上限相对一个刚启动的子 session 太大,模型填满就能让子 agent 在第一次 tool call 之前先触发自己的 compaction;#1202 讨论「subagent 的 worktree 是否该比它的 run 活得久」。 -
earendil-works/pi(社区): 新 Discussion #10841 来自一个材料学研究包 MatPilot 的维护者,问的是「一次性 pre-turn 路由决策该挂在哪个 seam」——用
before_agent_start做每轮廉价分类(<100ms 的 Python sidecar)来决定走哪条研究路径,但不确定这个 hook 会不会在 follow-up、compaction 之后、retry 时重复触发。这是 v1.2.0 刚把before_agent_start语义改成 union 之后立刻出现的真实使用问题。
各仓库详情
anomalyco/opencode
开源 coding agent:TypeScript / Bun,单仓多 target(CLI / Desktop / TUI / ACP server / Web);MIT。| stars: 212,956(上份 212,734,+222 / 24h) | open issues(含 PR): 4,146(上份 3,996,+150;其中 open issues 3,323、open PRs 823) | 默认分支:
dev| 最近 push: 2026-10-13T00:27:17Z | 主页: https://opencode.ai
近 N 周 release 重点:
GitHub Releases 侧最新仍是 v1.19.0(10-11 01:39)——即上份报告记录的那一版,把 opencode upgrade --major 和 /update 变成通往 OpenCode 2 的唯一通道并关闭自动更新。但 2.x 线不发布 GitHub Release,只打 tag,release notes 写在仓库 CHANGELOG.md 里,本段从该文件提取。
- v2.0.27(tag 2026-10-12T04:16:59Z)— 内建 worktree 工具、更安全的远程配对、可安装 Web 应用
- Code Mode 新增
opencode.worktree_create/worktree_list/worktree_remove;删 worktree 需要 edit 审批,force: true丢弃已修改与未跟踪文件(#53981) opencode pair --remote首次启用时明确警告会把服务器暴露到公网并要求确认,非交互用--yes(#54561)- Chrome / Edge 可直接 Install Web 应用,包括部署在带 cookie 认证的反向代理后面(#53905)
- 目录已不存在的项目自动归档隐藏,重新打开目录即恢复(#54354)
- Desktop / TUI 时间线现在会直接显示发生在模型步骤之前或之间的执行错误,不再无声结束(#53826)
- ChatGPT OAuth 对
gpt-6.1-sol与gpt-6.1-sol-fast的输入上限提到 500,000 tokens(#54668) - 新增 Vertex AI 的 Interactions 与 Mistral 路线(#54175、#54058);Code Mode 的
fetch禁用file://(#54510) - 完整 changelog: https://github.com/anomalyco/opencode/blob/dev/CHANGELOG.md
- Code Mode 新增
其他重要 commits / PRs(10-12 00:36 之后,按重要性挑选):
5673bfa项目(核心) —feat(core): add request body encoding setting(@rekram1-node, 10-12 23:17):新增encoding("zstd" | "gzip" | "none")压缩 HTTP 请求体,可设在 provider / model / variant 上,最具体者胜出;用 ChatGPT 登录时 OpenAI 默认"zstd",其余 provider 仍发纯 JSON。背景是 ChatGPT 登录下任何未压缩请求体超过 ~1 MiB 就会503 upstream connect error且重发同样失败,token-sharing 登录被钉在 HTTP 上最容易踩到(#54664,基于 @esafak 的 #54570,后者至今 open 未合)d46588f项目(CLI) —feat(cli): publish and upgrade official WinGet packages(@Filip, 10-12 23:03) 配套039eb85fix(cli): install the native binary on Windows ARM64(#54955)、df63a72feat(console): offer the Windows ARM64 desktop download(#54971)、854b3bbfix(desktop): bundle arm64 binaries for windows arm(#54689):Windows 侧四条 commit 连成一条完整的分发链a22754f项目(核心) —fix(core): support provider-level compatibility and migrate setCacheKey(@rekram1-node, 10-12 20:54):compatibility以前只能设在 model 上,LiteLLM / relay 之类多模型自定义 provider 得在每个模型上重复supportsPromptCacheKey,写在 provider 上会被配置解码静默丢弃;V1 的options.setCacheKey在 V2 里是死设置,迁移时被抄进 providersettings而没有任何东西读它,依赖它的配置无声丢失prompt_cache_key行为(#45113)2bf145b/22326d4/c57c448项目(TUI + Console) — 更新后展示 release highlights(#54969)、把/changelog挪到独立 worker 服务(#54906)、Console 在/changelog渲染CHANGELOG.md(#54902):把「release notes」这条信息从 GitHub Release 搬到产品内的一个独立端点上1438073项目(插件) —fix(plugin): return Promise tool throws as tool failures(#54913):插件里 Promise 型工具抛错此前不走 tool failure 通道80fb31e项目(VS Code) —fix(vscode): launch the V2 CLI without --port(#49084):与 #54938 指向同一个迁移缺口,仓库侧已补,扩展侧仍停在 spawn--porte41e7e9/b9ca4d2/a349618项目(重构 + 基础设施) —refactor(ai): rename OpenCodeZen provider to OpenCode(#54767)、refactor(console): remove legacy database from Console(#54585)、chore(infra): remove legacy Console Stripe products, prices and coupons(#54740):Console 侧一次性清掉旧数据库与旧计费产品,provider 品牌统一0cb4347fix(core): preserve mixed line endings in edit tool(#53166)、5683367fix(core): send unknown v1 openai-compatible model options in the request body(#54694)、7bac892fix(core): stop listing Azure resources at startup(#54870)67f5c21fix(update): return 503 instead of 1101 when D1 is overloaded(@opencode-agent[bot], 10-13 00:27):自更新通道刚切成唯一通道后的第一处加固——D1 被打满时用标准 503 而不是自定义码
社区讨论 / 行业方向:
- 仓库 Discussions 处于禁用状态(GraphQL
hasDiscussionsEnabled: false),社区信号只能从 issue 区与外部检索取。 - OpenCode v2.0.27 adds worktrees, safer remote(AICrier, 10-12):把 v2.0.27 定性为一版基础设施 release——worktree 可创建可移除、目录消失的项目自动归档、Vertex AI Interactions 与 Mistral 路线、
pair --remote暴露前确认。 - OpenCode Changelog(Pro-Linux 转载, 10-12):同一份 v2.0.27 release notes 的第三方转载,可交叉验证 CHANGELOG 内容。
信号观察:
- 1.x 的 GitHub Release 与 2.x 的 tag +
CHANGELOG.md已经形成两条并行的发版叙事:v1.19.0 之后 1.x 线实质冻结,2.x 每天一个 tag,release notes 从 Release 面板迁移到产品内的/changelog端点。 - plan mode 的 shell 放行问题在报告被关闭后仍未修复(#54165 open)。#54632 的关闭理由(duplicate)是技术判断,但修复 PR 仍挂在同一个人手上——这条线的净变化是「可见度下降、风险不变」。
- v2 迁移期的缺口集中在分发与集成层而非 agent 本体:VS Code 扩展、WinGet、Windows ARM64、
--port标志移除、第三方 provider 的配置兼容性,逐条对应一个「V1 能用 V2 不能用」的具体场景。 - 24 小时 174 条新 issue 的量级下,出现多条可复现的定量报告(#54940 给出 26,216 条路径消失的具体数字与 fixture,#54935 直接对比 cache key 重复计费),说明报告者在往可证伪的方向写。
earendil-works/pi
AI agent 工具集:统一 LLM API、agent loop、TUI、coding agent CLI;TypeScript / Bun,可作为 pi extension 扩展;MIT。| stars: 114,609(上份 114,318,+291 / 24h) | open issues(含 PR): 321(上份 321,持平;其中 open issues 239、open PRs 82) | 默认分支:
main| 最近 push: 2026-10-12T23:37:23Z | 主页: https://pi.dev
近 N 周 release 重点:
- v1.2.0(2026-10-12T23:03:53Z)— per-key OpenRouter 模型列表、发布配置 schema、远程剪贴板、codemode 改进;同时砍掉未发布的 experimental 栈
- 新功能:per-key OpenRouter model lists——带着 OpenRouter key 时,Pi 只列出该 key 有权使用的模型,并附带该 key 的 context size、max output 与价格,含
models.json里设为 base URL 的 regional endpoint,列表落盘后可离线使用(#10353、#10672) - 新功能 / breaking:
settings.json、models.json、keybindings、themes 全部加$schema,schema 发布在https://pi.dev/schemas/*.schema.json;theme schema 迁到https://pi.dev/schemas/theme.schema.json,启动期加载的 theme 现在和后续 reload 走同一套校验,$schema引用要改、可复用颜色挪到vars、不支持的 metadata 要删(#9880、#10751) - 新功能 / breaking:
before_agent_start现在也对pi.sendMessage(..., { triggerTurn: true })触发的 run 触发,BeforeAgentStartEvent改为按messageType判别联合:"user"带prompt与images,"custom"带起始message而无prompt。只该对用户 prompt 起作用的 handler 必须自己检查event.messageType === "user"(#10267、#5581、#10739) - 新功能 / breaking:session 在 run 启动期间(含
before_agent_starthandler 执行期间)就算 busy——ctx.isIdle()为 false,pi.sendMessage()排进正在启动的 run 而不是另起一个然后以 “Agent is already processing” 失败,pi.sendUserMessage()强制要求deliverAs - 新功能 / breaking:
pi mcp list --json对提供资源的 server 报resources: true而不是资源计数;Pi 不再在连接时列出资源(#10526) - 新功能:
PI_CLIPBOARD_OSC52=1在本地剪贴板写入之后用 OSC 52 把内容送到终端,覆盖检测不到远程会话的场景(#10826、#10835、#10114) - 新功能:codemode 工具声明把整数、最小/最大值、长度、pattern、默认值等输入约束写成属性注释上的
@tag,脚本不用在描述里重复;codemode 行显示运行中 elapsed 与结束后的 total time(#10707、#10708) - Added:工具定义新增
reachesTools(codemode / tool_search 这类「能触达其它工具」的工具声明某次调用可能触达哪些),MCP 扩展据此等待所需 server 并判断替换用的 codemode / tool_search 是否能触达 MCP 工具;工具 namespace 新增aliases - Removed:删掉从未进入发布包的 experimental server / client / plugin 栈(
src/experimental、src/cli/experimental)及其仅源码导出的./client、./experimental/plugin;它依赖的@earendil-works/pi-client、@earendil-works/pi-protocol、@earendil-works/pi-server三个包一并移除且不再发布;移除对@earendil-works/chord的依赖 - 关键修复:Mistral 流在生成中途(长 thinking 期间)被中止——请求超时现在只作用于等待响应头(#10609);symlink 化的
AGENTS.md位于嵌套在主仓内的 worktree 时导致项目上下文文件不加载(#10681);codemode 里// @options:不在脚本首行时被忽略,脚本照跑且不生效timeout_ms(#10631);codemode 大量text()调用后拼接输出项是平方复杂度,会把进程卡住数秒到数分钟(#10678);print mode(-p)在最终回复被输出 token 上限截断时仍 exit 0,现在打印部分文本、写 stderr 警告并 exit 1(#10799);带资源的 MCP server 在列完所有资源前不注册任何 tool(#10526);MCP server 返回非 object 的 structured content(array / null / primitive,MCP 2026-07-28 允许)时工具调用失败(#10416);Anthropic 因 grammar 体积、tool 数量或 union 限制拒绝 strict tool set 时请求失败,现在改用 preferred tools 非 strict 重试一次(#10409);extensions/skills/prompts/themes设置里的!pattern、+path、-path不展开~(#10765);serializeConversation()(compaction、分支摘要、bug 报告)省略 thinking block——replayed thinking 常常根本不在 live context 里,带上它会让摘要请求比它要总结的 context 还大 - 完整 release notes: https://github.com/earendil-works/pi/releases/tag/v1.2.0
- 新功能:per-key OpenRouter model lists——带着 OpenRouter key 时,Pi 只列出该 key 有权使用的模型,并附带该 key 的 context size、max output 与价格,含
其他重要 commits / PRs(10-12 00:36 之后,按重要性挑选):
7d75a0e项目(chord) —fix(chord): nodeLoader registers every facet root before importing any(@Mario Zechner, 10-12 23:37):发布 v1.2.0 后的第一笔,facet root 必须在 import 任何模块之前全部注册cd6b2a5项目(chord) —fix(chord): keep the process lock socket path within sun_path on macOS(@Armin Ronacher, 10-12 23:16)+7f02204fix(chord): never keep a connection whose link was already closed(@Mario Zechner, 10-12 23:06)+0a8cffffix: drop chord and esbuild from the Nix package(@Armin Ronacher, 10-12 23:16)abfe629/aa499c2/b6fda57项目(durable + env) — 三个 commit 组成listFiles全链路(@Mario Zechner, 10-12 15:22):ExecutionEnv.listFiles作为可选能力,缺失或返回not_supported时调用方退回自己的 walk;pi-env daemon 侧实现fd --hidden --exclude .git语义的目录树列举(不跟随符号链接,用 fd 的 ignore crate 与 ripgrep 的 git ignore 规则),记录以 payload 传输(kind 字节 + 相对/路径 + NUL),在maxEntries/maxBytes/timeoutMs处停下并带truncated标记,cancel 能在条目之间生效,hello上报features: ["listFiles"]以便客户端分辨新旧 daemon;RemoteExecutionEnv.listFiles解析路径后经 daemon 列举,LocalExecutionEnv是NodeExecutionEnv加同机 daemon 上的 listFiles——本地与 SSH 会话用同一份代码441f576项目(coding-agent) —fix(coding-agent): warn and exit non-zero in print mode on truncated response(@David Brailovsky, 10-12 14:06):对应 v1.2.0 的 #107997bd01fb项目(ai) —fix(ai): retry "The upstream provider returned an error"(#10842:分类器少匹配一个词)+d4d5361fix(ai): fall back on Anthropic strict tool limits(#10409)da0eadf项目(MCP) —fix(mcp): do not retry cancelled HTTP requests after an authorization refresh(@Armin Ronacher, 10-12 13:33)+67996abfix(mcp,coding-agent): accept any JSON value as tool structuredContent(#10416)f4cca2d项目(coding-agent) —fix(coding-agent): stop listing MCP resources when connecting(#10526):连接时列资源会让带资源的 MCP server 迟迟不注册工具b0ac396项目(构建) —build: retire Pi Mobile's APK workflow and hook; check apps/p2 instead(@Mario Zechner, 10-12 13:57)e6fb258fix(coding-agent): retry transient Windows EPERM when acquiring auth lock(#10801)、11f9911fix(tui): let unhandled wheel input scroll the transcript under a focused overlay(#10769)、6a51a39fix(coding-agent): expand ~ in resource setting patterns(#10765)、3e477eafeat(coding-agent): add PI_CLIPBOARD_OSC52 to force OSC 52 copies(#10826)、014873dfeat(coding-agent): show elapsed and total time on codemode rows(#10708)
社区讨论 / 行业方向:
- Where should a package put a one-shot pre-turn routing decision?(Discussion #10841, 10-12):材料学研究包 MatPilot 的维护者想在
before_agent_start里做每轮一次的廉价路由(一次 <100ms 的 Python sidecar 调用semantic-router,决定这个 prompt 走哪条研究路径,从而给模型更窄的 skill/tool 上下文)。关键疑问是:这个 hook 是不是「每次 agent loop 一次」?它会不会对 follow-up / steer 消息再触发一次?compaction 之后或 retry 之后会不会再触发?——他们要求「每个真实用户 prompt 最多评估一次」,因为 sidecar 往返是要花钱的。这份提问出现在 v1.2.0 刚把before_agent_start语义改成 union 之后。 - Pi v1.2.0 被 Releasebot 收录(releasebot.io):第三方 release 聚合站已在收录 pi 的 release notes,first seen 2026-10-13。
- A deep dive into Pi(Flavio Copes, 10-02):第三方长文梳理 pi 的设计取向——不内置 subagent / 权限弹窗 / plan mode / todo,「你塑造 agent 围绕你的工作流」,并明确记录 pi 1.0 起从「拒绝 MCP」转为内置 MCP 的转变(引 Earendil 的《You said no MCP!》)。该文所有细节对齐 1.0,作者也标注了「pi 发版很频繁,部分细节会变」。
信号观察:
- v1.2.0 是一次同时做加法与减法的 release:加的是配置可校验性(
$schema)、provider 能力边界(per-key OpenRouter)、远程会话可用性(OSC 52);减的是一条从未发布的架构线(experimental server/client/plugin 三个包整体下架)。发布后 34 分钟内连落 4 个 chord 修复,说明移除依赖这条动作本身触发了 dormant 代码路径的重新暴露。 pi mcp list --json的 breaking change 与before_agent_start的联合类型化,指向同一件事:把「之前靠默认行为兜底」的地方改成显式契约。这与上份报告记录的 compaction 静默失败改显式失败是同一条线。listFiles把「列举目录树」从各扩展自己 walk 变成协议级可选能力,且明确设计成缺失时静默退回本地实现(not_supported)——这是在 host 能力不齐的环境(Workers、SSH、旧 daemon)下保持兼容的典型做法。- 新 issue 密度 36 条/24h,几条集中在 durable 与远程托管:#10857(Durable Object 上
runtime.sleep()只在下一次请求时才醒)、#10845(多租户 Durable Object 下无法判断某次模型请求属于哪个 task,导致计费归属错误)、#10846(希望 pi-env 接受注入的 daemon 进程,好让 client 跑在 Workers 上)。durable 的设计正在被真实的多租户部署压测。
agegr/pi-web
pi coding agent 的 Web UI;TypeScript / Next.js,读取本地 pi session JSONL 维持会话,服务端在真实 workspace 里让 session 持续运行。| stars: 7,282(上份 7,246,+36 / 24h) | open issues(含 PR): 21(上份 6,+15;其中 open issues 13、open PRs 8) | 默认分支:
main| 最近 push: 2026-10-11T14:04:27Z(约 34 小时无提交) | 主页: 无(仓库未填)
近 N 周 release 重点:
- 窗口期内无新 release。最新为 v0.12.0(10-11 14:05),即上份报告记录的那一版纯性能 release:流式回复按 Markdown 块增量解析、会话列表接口不再携带每条会话的完整首条消息(3.2 MB → 385 KB)、Prism 按需加载。
其他重要 commits / PRs(10-12 00:36 之后):
#1210项目(扩展桥接) —feat(extensions): bridge nested child sessions and interactive extension UI(@acniray, 10-12 15:50 更新,+3151 / −156,6 commits,已关闭未合并)。作者在正文里先接住 #1041 的反对意见:pi-web 不应该变成某个特定 subagent 扩展的第二运行时,也不该把内置 subagent 模型重新定义到另一个扩展的内部实现上;这个 PR 采取更窄的做法——让 Pi Web 能检视与导航由扩展创建的可验证关联 session,扩展的执行与配置仍归扩展自己所有。给出的理由:nicobailon/pi-subagents在积极跟进新版 Pi(这对与 Pi 变化的 SDK/runtime 耦合的扩展很重要);高扇出 session 场景下把子 session 存在父 session 之下比几百个顶层 JSONL 更有利(不只是侧边栏整洁,还有磁盘组织);worktree 密集的开发方式。窗口内无 commit。
社区讨论 / 行业方向:
- Subagent 插件,主agent 容易不调用 get result 工具(Discussion #994, 10-12):中文报告——主 agent 常常通过其它方式先拿到结果,于是不调用 get result 工具,导致在长 loop 结束后才收到自动的结果通知。(有 1 条回复)
- 加入中文微信群 / WeChat Community(Announcements #271, 10-08):该仓库 Announcements 类别里唯一的帖子,10 条回复,是本项目唯一带信号量的社区渠道。
- Desktop-style launcher for Pi Web(Ideas #1040, 10-06):3 条回复。
- pi-web-statusline: a single-line status row(Show and tell #763)、Pi Usage:在 pi-web 中查看模型余额和配额(#652):社区侧插件生态仍在围绕状态显示与用量查看长出来。
信号观察:
- 主分支自 10-11 14:04 起静默约 34 小时,是本组 6 个仓库中唯一「上份报告已发布 v0.12.0 之后完全无动作」的仓库;同期 open issues +15(3 → 13)、open PRs +5(3 → 8),其中仅 10-12 当天就新增 10 条 issue——仓库处于「维护停滞但需求涌入」的状态。
- 窗口内最有分量的输入不是 commit 而是两篇 issue 式设计分析(#1199、#1202,均 @brynne8,且都明确表示「我不是来提 PR 的,想听到 wontfix 也行,价值在推理过程」):前者量化了
input_files上限与子 session 起始 context 的关系,后者把「subagent 的 run 结束」与「session 仍可达」「isolation: worktree」三个事实并置,抛出 worktree 该不该比 run 活得久的问题。 - 唯一的大型 PR(#1210,+3151 行)以关闭未合并收场,其正文里的自我约束(不接管别的扩展的运行时)说明扩展与宿主之间的边界仍是社区里的敏感点。
vectorize-io/hindsight
Agent 记忆系统:retain / recall / reflect 三大能力 + 本地嵌入式 hermes / embed,可作 MCP server、CLI、REST API,也可作为 Hermes / OpenClaw / Cursor / Paperclip / Grok Bot 的可插拔记忆层;MIT。| stars: 48,842(上份 48,426,+416 / 24h) | open issues(含 PR): 151(上份 200,−49;其中 open issues 143、open PRs 8) | 默认分支:
main| 最近 push: 2026-10-12T15:59:57Z | 主页: https://hindsight.vectorize.io/
近 N 周 release 重点:
-
核心包窗口期内无新 release(最新 v0.10.3,10-08)。但 integration 层在 24 小时内连发 18 个 release:
Integration 版本 Integration 版本 openclaw v1.0.0 agentcore v0.1.3 hermes v1.2.2 n8n v0.1.4 coding-agents v0.8.1 flowise v0.1.1 paperclip v0.4.2 eve v0.3.1 opencode v0.2.9 meta-muse v0.1.1 obsidian v0.3.1 vapi v0.1.1 cursor v0.2.1 smolagents v0.1.2 devin-desktop v0.2.1 pipecat v0.1.2 dify v0.1.2 composio v0.1.1 -
openclaw v1.0.0 —
register as OpenClaw's native memory provider(#5535)- 问题:Hindsight 占着 OpenClaw 的 memory slot 时,OpenClaw 自己的记忆面(
memory.status、Memory 页、gateway 的memory.search/memory.get)全部报 “memory plugin unavailable”——插件从未注册 memory capability - 改动:注册 OpenClaw 2026.10 的 provider-neutral
providerRuntime,health/search/get分别由 Hindsight recall 与GET /memories/{id}支撑 - 刻意做窄:不做 Active Memory 候选(会在 autoRecall 之上重复召回)、不做 pre-compaction flush(每轮都已 retain);只有操作者本人或 agent owner 的 private session 能读(agent-only bank 持有该 agent 的全部对话),群会话 / 无 audience 的 session / host authority 一律报错而不是返回空结果;只有当 bank 完全由 agent 决定时才 search,按 user 或 channel 分库时拒绝而不是猜
- 这条替换掉了 #4917 的做法——那份方案伪造了一份 file-shaped legacy runtime(+752 行);OpenClaw 2026.10 新增了面向记录型 provider 的接口,正是为 Hindsight 这类形态准备的
- 实测跑在真实 OpenClaw 2026.10.2 上;OpenClaw 2026.9.6 加载该构建无报错且仍能 retain
- 问题:Hindsight 占着 OpenClaw 的 memory slot 时,OpenClaw 自己的记忆面(
其他重要 commits / PRs(10-12 00:36 之后,按重要性挑选):
#5466项目(集成基建) —feat(integrations): every integration identifies itself with its own User-Agent(@nicoloboschi, 10-12 10:12):每个 integration 用自己的 User-Agent 标识自己#5508fix(coding-agents): keep retained sessions whole(pi runs、failed ops、exit、btw sessions、codex starts 五类边界场景)与#5509fix(coding-agents): HTTP error handling in drain, reflect, page latch, append probe, long reflects——两者合起来收的是上份报告里那批「会话结束语义没有和 retain 缓冲绑定」的余波#5527项目(API) —fix(api): a store that sheds a request answers 503 + Retry-After, not 500(#5527):store 主动卸载请求时返回 503 +Retry-After,不再谎报 500#5516fix(api): retain prose 'no facts', claude-code JSON repair, codex stream errors, provider spans, claude-code ToS docs——五合一修复包#5529项目(retain) —fix(retain): merge JSON-array appends to a new document into one array(#5529,回答了 #5528):对尚不存在的文档的 append 此前是用换行拼接,现在合并成一个数组#5538项目(hermes) —fix(hermes): skip cron runs, honour HINDSIGHT_BANK_ID, add reflect_tags, re-probe an unreachable server(#5538):一次带过 #4662 的四个点#5532fix(openclaw): honour logLevel and logSummaryIntervalMs、#5530fix(openclaw): capture inbound identity on message_received so Goals can start——openclaw 集成的两个功能性修复,与 v1.0.0 同批发布#5515fix(clients,cli): forward-compatible decoding and bounded export polling、#5513fix(api): consolidation discovery probe, mental-model edit race, LlamaParse v2、#5534/#5523两批 hermes 小修(均标注「不需要行为变更」)
社区讨论 / 行业方向:
- Invitation: open Memory Tournament(Discussion #5501, 10-12):一场开放的 AI 记忆系统锦标赛征集参赛配置,Hindsight 是 12 个参赛者之一,测的是开源版、自托管。赛程设十项能力:recall、updates、time、multi-hop、abstention、learning from experience、acting on memory、forgetting on request、provenance/isolation、cost at scale。规则写得很具体:先跑公开 benchmark(LongMemEval、LoCoMo、MemoryAgentBench、BEAM、MemoryArena),自研探针测试上限 30% 且需复核,所有系统用同一 answer model,两位来自其它模型家族的盲审,逐题原始结果公开,每阶段后有争议窗口;配置冻结日 2026-11-09,冻结前的修正会生效。组织者同时披露自己做的 Horizon 是同赛道竞品、按同样规则参赛。
- Hindsight is featured in Repository Radar PR#43(#5539, 10-12):第三方开源项目 newsletter 收录,2026-10-14 CET 发出。
- Field report: Hindsight v0.10.3 with local Qwen3.5 4B Q4_K_M(#5495):本地 4B 量化模型下 retain/recall 可用但 consolidation 受限,与上份报告的三份 consolidation 报告同源。
- I Tested Hindsight, the Open-Source Memory Layer for Coding Agents(HackerNoon, 10-09):第三方上手评测,场景是「每个 coding-agent 会话开头 agent 都要重新发现仓库用 pnpm、重新被告知别碰 legacy payment 文件、重新踩到只在 UTC 才通过的测试」。
信号观察:
- 24 小时 18 个 integration release、覆盖 18 个不同宿主,说明维护者把集成层当作独立节奏的发布列车在跑,与核心包 5 天一次的节奏解耦。
- openclaw v1.0.0 是这条线上第一次出现「因为上游加了正确的接口而删掉自己的适配层」:#4917 的 +752 行伪 file-shaped runtime 被换成一次原生注册。适配层的规模变化本身是上游协议成熟度的指标。
- 安全与权限的报告在增多且开始具体化:#5544 指出 daemon 与 Control Plane UI 默认绑
0.0.0.0且无鉴权;#5540 指出bank_id接受无界长度与控制字符后被当作 bank 标识使用;#5542 指出CLAUDE_CONFIG_DIR隔离在 daemon 路径下被绕过。这三条都不是功能 bug,而是默认配置的外扩面。 - open issues(含 PR) 一天内从 200 降到 151(issues 192 → 143),而同期新建 issue 19 条——约 60 余条被关闭,与同一天 44 个 commit 的批量修复同批发生。issue 区在这个仓库是被批量清理的,不是自然衰减。
- 记忆赛道的评价方式正在从「官方 benchmark 表」转向第三方独立评测(HackerNoon 实测、Repository Radar 收录、开放锦标赛)。锦标赛设置里「逐题原始结果公开 + 盲审 + 自研探针占比上限 30%」这套约束,是对官方榜单可比性的直接回应。
agentclientprotocol/agent-client-protocol
Agent 与 Editor 之间的协议(ACP):JSON-RPC 2.0 over stdio / HTTP,本地 agent 作为子进程启动;Rust crate + JSON schema 双轨发布;Apache-2.0。| stars: 4,420(上份 4,414,+6 / 24h) | open issues(含 PR): 34(上份 46,−12;其中 open issues 6、open PRs 28) | 默认分支:
main| 最近 push: 2026-10-12T23:03:46Z | 主页: https://agentclientprotocol.com
近 N 周 release 重点:
- 窗口期内无新 release。最新仍是 schema-v1.25.0 / Rust crate v1.11.0 / v2.0.0-alpha.8(10-09 14:17),即上份报告记录的把 session notices 与 session compaction 两条 RFD 同时从 Preview 推到 Completed 的那一批。
其他重要 commits / PRs(10-12 00:36 之后,按重要性挑选):
#1237项目(协议 / RFD) —docs(rfd): Client-Provided System Prompt(@wpfleger96, 合入 10-12 10:12,开于 2026-05-18,7 条评论):提案原文——ACP 是目前唯一没有 system prompt 机制的 agent 协议,MCP、OpenAI、Anthropic 的 Messages API 都有;每一个 ACP 实现都各自造了非标准变通:_meta扩展、user-message 注入、文件系统中转。方案:sessionCapabilities.systemPrompt能力在initialize时广告(让客户端在发字段前可靠地做特性检测)、session/new上可选的systemPrompt: ContentBlock[](文本作为通用基线,类型与session/prompt一致)、可选systemPromptMode字段区分append(默认)与replace#2361项目(schema / unstable) —feat(unstable): add client system prompt schema(@benbrandt, 10-12 19:16 合入):上一条的 schema 侧配套- 同一批的 v2 文档澄清(均 @benbrandt, 10-12 上午连续合入):
#2362说明git_patch如何写路径、#2359澄清 forked session 处于 active 状态、#2358在AgentCapabilities.session上列出完整的 v2 session baseline、#2356说明如何把 snippet diff 迁移到 v2、#2357澄清 v2 的前台工作可以不带 prompt 就启动、#2355警告 tool-call 的_meta会替换掉已存的 metadata、#2354v1→v2 转换 tool call update 时丢弃 v1 的 null 字段、#2353在 v2 取消 prompt 的响应里展示messageId #2352项目(Rust) —feat(rust): implement Eq for content blocks(@benbrandt, 10-12 11:21)- Registry 更新:
#2367/#2365/#2350(@acp-release-bot[bot],一天三次)+ 人工提交 Muse Spark Code 进 agents 列表(#2349)、Athas 进 clients 列表(#2351) - 窗口内关闭(未合并)的 RFD 提案:
#2315negotiated structured text formats(在 Markdown 之外协商text/plain/text/markdown/text/org,每个文本块携带稳定 format/profile 以跨流式与重放保持一致,含一份 Portable Org profile)、#2291session-scoped instructions(sessionInstructions字段,agent 分别广告append/replace支持,agent policy 与强制控制留在 replaceable instructions 之外)、#2092model request relationships(agent 自有的逻辑模型请求关系图,为并发 subagent 提供可视化,因为「没有可以自上而下读的线性 transcript 了」)、#1292Expose client LSP servers over ACP、#895HITL Editing(fs/write_text_file路径上让客户端回报用户对提议改动的修改,新增ContentDiff类型与agentCapabilities.fs.hitlEditing)
社区讨论 / 行业方向:
- #414 Modify System Prompt:4 条回复——#1237 合入后社区立刻在这个讨论串里继续推同类需求。
- #690 Add new ToolKind: SubAgent(5 条回复)与 #457 Have you considered support subagent(3 条回复):subagent 是被提得最多的协议缺口之一。
- #177 Merge “tool_call” and “tool_call_update” sessionUpdate events(4 条回复)、#176 Extend Diff type(3 条)、#170 Add availableCommands to New Session(4 条)、#2016 Ephemeral tool injection、#72 Editor LSP elicitation(2 条)——窗口内讨论串活动最集中的一段,主题是「agent 侧能力如何表达」而非「agent 如何实现」。
- Requests for Dialog(RFDs)流程说明:RFD 是 ACP 引入协议变更的正式流程。窗口内 5 份 RFD 在同一天下午集中关闭,与 2 份合入形成对照。
信号观察:
- #1237 从 5 月开到 10 月合,中间讨论了约五个月——ACP 的节奏明显是「提案先长期挂着,等生态各方把约束讨论清楚再进主干」,与多数项目的「先合再修」相反。
- 窗口内协议侧同时在做两件事:补齐 v1→v2 的迁移说明(#2356 snippet diff、#2354 null 字段、#2353 messageId、#2355
_meta覆盖语义、#2357 无 prompt 的前台启动、#2359 forked session 语义)与清理长期挂着的提案(5 份 RFD 当天关闭)。前者说明 v2 的主要摩擦已从「设计」转到「迁移」。 - 被关闭的 RFD 里有一个反复出现的形状:提案者提出的是一个具体的宿主集成需求(LSP over ACP、HITL 编辑、model request 关系图、session instructions、协商式文本格式),而不是抽象的协议原语。这与 ACP 作为「editor ↔ agent」定位一致。
- open PRs 一天内从 37 降到 28(总数 46 → 34):合入 9 份、关闭 5 份未采纳的 RFD。PR 队列的变动全部集中在 docs/schema 层,没有一条实现类 PR 进入主干。
yxc023/yxc023.github.io
个人技术博客(Astro);本仓库作为 daily-research 报告自动同步的目标。| stars: 1 | open issues(含 PR): 27(上份 27,持平;其中 open issues 21、open PRs 6) | 默认分支:
master| 最近 push: 2026-10-12T00:34:56Z | 主页: https://yxc023.github.io
近 N 周 release 重点:
- 窗口期内无 release(该仓库不发布 GitHub Release)。
其他重要 commits / PRs(10-12 00:36 之后):
- 窗口内无新 commit(本报告尚未同步)。
- 值得记录的一点:
7844396与e8e20fb是两条内容与时间戳完全相同的 commit(均为auto(reports): 同步 daily-research 2026-10-12,10-12 00:34),10-11 及以前的每日同步都只有一条。 - 未合并 PR 现有 6 个,全部为 dependabot[bot]:
#31Bump devalue from 5.9.0 to 5.9.2(09-18)、#30Bump js-yaml(09-13)、#29Bump sharp and astro(09-11)、#27Bump svgo from 4.0.2 to 4.1.0(09-09)、#26Bump qs from 6.15.3 to 6.16.0(09-03)、#25Bump esbuild and astro(08-12)。上份报告列为 open 的 Astro 5→7 三条提案(#23/#24/#28)实际已全部 closed 且未合并——#28与#23关闭于 09-11,#24关闭于 08-12,均早于上份报告;上份报告的 open 状态与仓库实际不符,本期按 API 实际状态更正。
社区讨论 / 行业方向:
- Welcome to yxc023.github.io Discussions!:Announcements 类别唯一帖子,0 回复;仓库 Discussions 开启但实际未使用(与上份报告一致,窗口内无变化)。
信号观察:
- 连续 10 天的
auto(reports)提交继续与scripts/deploy-blog.sh的 sync → commit → push → build → deploy 流水线一一对应;本仓库的提交历史就是本调研的部署轨迹。 - 10-12 出现两条同内容、同时间戳的
auto(reports)commit,说明当日同步脚本至少被执行了两次且都成功提交——自动化流水线的幂等性没有保障。 - 6 个未合并的 dependabot PR 全部指向 devDependencies,最早的(#25,08-12)已挂起近两个月。Astro 5→7 的三条提案全部以「关闭、不合并」收场,说明该仓库的依赖升级确实不在自动流程里。
跨项目观察
- 「协议补洞」与「用拒绝换默认放行」是本期的主线:ACP 把 Client-Provided System Prompt 合入主干(#1237 + #2361),把「每家实现各自造变通」换成「一条 advertised capability」;pi v1.2.0 把
before_agent_start改成判别联合、pi mcp list --json改成布尔、连接时不再列 MCP 资源,都是把隐式默认变成显式契约;opencode 那边同一条线断了——#54632 报告以 duplicate 关闭,#54165 至今 open。 - 成本归因正在从「优化项」变成「正确性问题」:opencode #54935 指出 task tool 的每个 sub-agent 都新建 session 并拿自己的 cache key,导致并行子 agent 的重复计费可能高于单个 agent,而
setCacheKey在 V2 迁移时又被静默丢弃(#54911 今天才补);pi #10845 指出多租户 Durable Object 下无法判断某次模型请求属于哪个 task,一次后台 compaction 可能在下一位用户的 run 之后才完成,于是「当前 run」把账记到别人头上。两边都是同一个形状:缺一个能把请求归属到发起者的标识。 - 「接进来」的密度全面上升,且集中在分发与集成层而非 agent 本体:hindsight 24 小时 18 个 integration release;opencode 一天内补齐 WinGet、Windows ARM64(4 条 commit 成链)、PWA 安装、
/changelog独立 worker;pi 把目录树列举从各扩展自己的 walk 提升为协议级ExecutionEnv.listFiles并做hello特性通告。共同点是——能力在宿主侧兑现,边界靠「缺失时退回本地实现」维持。 - 远程 / 跨机运行是本期反复出现的具体需求:pi 加
PI_CLIPBOARD_OSC52=1处理检测不到远程会话的复制,pi 的listFiles让本地与 SSH 会话走同一份代码,#10846 希望 pi-env 接受注入的 daemon 好让 client 跑在 Workers 上;hindsight 的 hermes 修「re-probe an unreachable server」;opencode 修远程 workspace 的 filesystem override 与 driver 传播。三家都在把「本地是默认、远程是特例」翻过来。 - 版本节奏本身成了信号:pi 从 1.0.0(10-01)到 1.2.0(10-12)11 天三个 minor,同时砍掉一条从未发布的架构线;opencode 1.x 的 GitHub Release 与 2.x 的 tag + CHANGELOG 两条叙事并行;hindsight 核心包 5 天一版、integration 一天十八版。发布节奏分化本身要求读者先确认「看哪个渠道」。
- Agent memory 进入第三方评测阶段:HackerNoon 实测、Repository Radar 收录、以及一场 12 方参与的开放 Memory Tournament(逐题原始结果公开、双盲审来自其它模型家族、自研探针占比上限 30%、配置冻结日 11-09、组织者自曝竞品关系)。评价权从项目方手里外移到第三方,是这类基础设施进入成熟期的一个可观察拐点。
元信息
- 报告生成时间: 2026-10-13T00:33:30Z
- 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告
reports/latest.md的基准时间:字段,自 2026-09-08 起未变) - 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-13T00:33:30Z(约 34.8 天);本期新增内容集中在 2026-10-12T00:36:43Z 之后的 24 小时
- 数据源: GitHub API(gh CLI)+ mmx web search;Discussions 用 GraphQL 拉取(REST 的 discussions 列表接口返回的是最早一页,本轮未使用);Issue 用 search API 补充
- API rate limit 剩余: 5000 / 5000(core,抓取完成后查询)
- 抓取失败: 无(6/6 仓库的 repo / releases / commits / pulls 全部成功;
anomalyco/opencode的 Discussions 处于禁用状态(hasDiscussionsEnabled: false),其社区讨论段改由 CHANGELOG.md、外部检索与 issue 区补足) - 补充说明: opencode 的 2.x 线不发布 GitHub Release(1.x 停在 v1.19.0),release notes 取自仓库
dev分支的CHANGELOG.md;hindsight / opencode / pi 的 commits 按 per_page=100 重新抓取,以覆盖 24 小时内的高频提交
评论