2026 2026年11月5日 30 min · 8.7k chars by yxc023

GitHub 调研周报 2026-11-05

扫描窗口:2026-11-04T00:30:00Z → 2026-11-05T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间)|基准来源:上次报告 2026-11-04

2026-11-05 GitHub 调研周报

扫描窗口:2026-11-04T00:30:00Z → 2026-11-05T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间)|基准来源:上次报告 2026-11-04

本期速览

  • anomalyco/opencode: “显式状态机”成为主线——56 个合并 PR 的标题里带 state machine,Hona 一人贡献 60 个合并 PR;#61718 把 18 台状态机的迁移经验写成 packages/app/AGENTS.md 的新章节(State Machines),并列出六条”规则 → 它防住的 bug”对照表。这是 opencode 第一次把架构约束写进 AGENTS.md 而不是留在 PR 里。
  • anomalyco/opencode: MCP 连接池 pool: true(#61185)——一个 server 托管 10 个目录时,原本每个目录都各开一条 MCP 连接(10 个 cloudflare 连接、10 份 3765 个 tool;cua-driver 起 10 个进程占 189MB);新开关让设置相同的目录共用一条连接、一份工具表。
  • anomalyco/opencode: background compaction 改为固定提前量(#60049)——不再按窗口的 85% 触发,而是固定在阈值前 60k token 启动摘要。原因是 1M 窗口下 85% 会提前 128k(摘要被反复替换,很多会话根本到不了阈值),而 128k 的 GPT 窗口只提前 13k(太晚),阈值低于 64k 时永远不启动。
  • anomalyco/opencode: 新增 websearch.use 策略动作(#61557)——Console 禁用 web search 时原本只把 opencode 从 /api/v2/config 里去掉,Exa / TinyFish 因为不需要 API key 仍可被调用;现在按 provider ID 一并封禁,策略清空后 websearch 工具会从模型可见的工具列表里消失。旧客户端按未知动作丢弃(文档注明 2.2.6 之前的客户端忽略它)。
  • earendil-works/pi: 默认模型全线换代——anthropic 默认从 Claude Opus 4.8 换成 Claude Opus 5.5;其余 provider 统一”同价或更低价换新模型”:amazon-bedrock → Opus 5.5、azure → GPT-6.1 Sol、google/google-vertex → Gemini 4 Argon、minimax → MiniMax-M3、qwen-token-plan → Qwen3.8 Max、moonshotai 等 → Kimi K2.7 Code、opencode-go → Kimi K3.1 Pro。
  • earendil-works/pi: read 工具改为流式读取(#11750)——原先 read 先把整个文件读进内存再按 offset/limit 切片,200MB 日志读一行峰值 638MB RSS、--max-old-space-size=256 直接 OOM;现在只保留要显示的行。同期 MCP 的大 stdio 消息改为线性时间读取(#11791,12MiB 消息分帧从 ~350ms 降到一次 join)。
  • earendil-works/pi: p2 实验线一天内长出一整套 agent 协作原语——/tree(主会话分支作为 Durable fork)、给 agent 的 terminal 工具(tmux 风格 argv,仅 code mode)、subagent 可用 code mode、工具声明”谁可以调、在哪可以调”(origin/scope)、MCP OAuth 登录、<sender> 块与 peer message、粘贴图片、artifacts 内联渲染。README 仍写着 EXPERIMENTAL / will be gone soon。
  • vectorize-io/hindsight: 一次外部性能审计刷出 8 个量化 issue——#6323 knowledge folder 删除 10.71s → 27.22ms(393×)、#6325 复用 freshness 检查 8.66s → 5.44ms(1593×)、#6326 判定待 consolidation 不再全表计数 530ms → 0.68ms(778×)、#6330 先过滤实体名再计数 8.51s → 26.83ms(317×),均附可复现步骤与 patch 链接。
  • vectorize-io/hindsight: Postgres JIT 编译拖垮 recall(#6317)——source_memory_ids @> ARRAY[...] 的行数只有运行时才知道,Postgres 固定猜 0.5%(实际约 1 行),估算代价 1.13M 超过 JIT 阈值,于是每次调用都重新编译(~950ms 编译 + ~80ms 执行);现在所有连接 jit = off。
  • agegr/pi-web: 发布节奏停摆、外部 PR 涌入——本窗口 0 commit、0 合并 PR,但新开 9 个 PR、13 个 issue,全部来自外部贡献者(jianYanZhiX7 的会话状态筛选与目录选择器、dingxiaobo 的 reasoning_levels / input modalities、GaryCCCC 的 HTML 导出可发现性与说话人标注、vergram 的 /compact 保持输入焦点)。仓库有 19 个 open PR、33 个 open issue。
  • agentclientprotocol/agent-client-protocol: 窗口内仅 1 个 commit(文档:把 AionUi 写进 Desktop/Web 客户端列表);新 PR 2 个(skylands client)。协议层继续把工作让给实现层。

各仓库详情

anomalyco/opencode

开源 coding agent,赛道是终端 / 桌面 / Web 的通用 AI 编码代理| stars: 224595 | open issues: 4013 | 默认分支: dev | 最近 push: 2026-11-05T00:30:44Z | 主页: https://opencode.ai

近 1 周 release 重点:

  • 窗口期内无 release。最新为 v2.2.5(2026-10-30T23:17Z):桌面端 worktree / base branch 快捷键(⌘⌥O / ⌘⌥B)、shell mode 快捷键 ⌘⇧X;quote 弹窗按住 ⌘/Ctrl 直接发送引用;compaction.buffer 支持百分比("20%");stdio 超过 10MiB 的 MCP 消息不再被断开;LiteLLM 的 context window 错误改为触发 compaction 而不是终止会话。
  • 窗口期内 dev → production 的 promote 已合并(#61522,26 个 commit),含 #61461:公开 stats 同步从 AWS ECS 迁到 Cloudflare Workflow + Cron,ECS 服务提前缩到 0。

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

  • #61718 架构约束成文 — docs(app): require explicit state machines for lifecycle state(@Hona)。在 packages/app/AGENTS.md 新增 State Machines 一节,desktop / gui-plugins / session-ui / ui 各自链接到它。附带的规则表把每个 bug 归因到一条规则:
    • 第一个 await 之前先认领工作 → Enter 然后 Send 会把 prompt 发两次(#61581)
    • 每条异步路径都要落到一个状态,且有有界兜底 → 启动时白屏、终端永远 “Loading”、时间线不显示(#61580 / #61650 / #61591)
    • 过期结果按 attempt id 在状态机里拒收 → 登录时按 Back 仍报 “connected”(#61610)
    • 晚到的结果仍可以有副作用 → 按 Back 之后保存的 key 从未刷新 catalog(#61610)
    • 同一份数据上的操作走同一个队列 → steer/remove 与 reorder 竞争把 prompt 拽回来(#61592)
    • 身份变化时换 target 和 attempt → session 错误跨 tab 卡住、凭据被拒后无限重试、deep link 重放(#61585 / #61595 / #61648)
  • #61185 MCP 连接池 — feat(core): share MCP connections across locations with pool: true(@rekram1-node)。每个 server 可选 pool: true,设置相同的目录共用一条连接和一份工具表;不改配置则行为完全不变。
  • #60049 compaction 触发时机 — fix(core): start background compaction a fixed lead before the threshold(@neriousy,关 #58818)。三条规则同时改:固定在阈值前 60k 启动(丢掉 64k 下限)、小窗口时提前量封顶为”本轮首个响应以来剩余空间的一半”、摘要写作期间对话增长超过阈值时的行为另有定义。动机是”85% 提前量只在 200k 窗口上恰好正确”。
  • #61557 websearch.use 策略 — feat(core): add a websearch.use policy action(@adamdotdevin)。资源是 web search provider ID(opencode / exa / firecrawl / parallel / tavily / tinyfish 或插件添加的)。策略清空 provider 时,websearch 工具的 context / compaction / generate 三个 hook 会把该工具从模型可见列表里去掉。文档新增 policies.mdx 的 Web search 一节与 specs/v2/provider-policy.md。
  • #61583 Console 配置在 prompt 时刷新 — feat(core): refresh Console config before prompts and add a console.poll server option(@adamdotdevin)。上一次拉取超过一分钟(笔记本睡眠、Durable Object 休眠)时,prompt hook 重新拉配置,最多等 3 秒;fetchConfig 5 秒超时由 SharedCache 当作瞬时失败重试。加了 Config.Interface.snapshot() 同步快照,修掉”reload 跑在旧文档上”的问题。主机可关掉一分钟轮询。
  • #61533 GUI 插件渲染 code block — feat(app): let GUI plugins render and add actions to code blocks(@Hona)。新增 CodeBlock / CodeBlockAction registry,插件可以把 Mermaid / LaTeX / CSV 或任意 fenced 语言渲染成自己的 Solid UI,并加 “Run in terminal” 这类按钮。与 TUI 的 ctx.markdown.registerCodeBlockRenderer(language, render) 是同一套模型。
  • #61701 URL 权限绕过 — fix(core): reject URL credentials and ignore fragments in web permissions(@rekram1-node)。deny https://evil.com/* 会被 https://user@evil.com/x 绕过,deny https://evil.com/x 会被 https://evil.com/x#a 绕过。
  • #58916 逐行落盘 — perf(core): write each assistant part as its own row instead of rewriting the message(@Hona)。不再每次重写整条消息。
  • #61683 基准改造 — chore: bench with strobe 0.6.0(@Hona)。桌面”首次启动”基准改为真实的首次启动(无 GPU shader cache),并把 install(cold)与常驻(warm)分成两个 case。
  • #61582 嵌入方自定义 fetch — feat(server): let embedders supply the fetch for OpenCode's HTTP and MCP requests(@adamdotdevin)。
  • #61709 Go 线加 Hy4 — feat(go): add Hy4(@opencode-agent[bot]),Go / Go Plus / Go Teams 三档同步更新限额(Teams 上限 $65)、隐私表与各语言 banner。
  • #60791 shell 扫描器 — fix(core): stop repeated zsh q flags from freezing the shell scanner(@yangguan-xue)。反复的 zsh q flag 会卡死 shell 扫描器。
  • #61537 工具入参规范化 — fix(core): normalize and validate tool input schemas at registration(@rekram1-node)。
  • #61546 symlink 快照 — fix(core): capture snapshots for a Location opened through a symlink(@Hona)。

社区讨论 / 行业方向:

信号观察:

  • 状态机不是重构洁癖,是 bug 分类法:#61718 的规则表把 18 台状态机(#61581–#61661)各自修掉的 bug 归到 6 条规则,每条规则都能指回具体 PR 号。这是把”偶发的异步竞态”变成”可检索的架构条款”的尝试。
  • Hona 一人占 60 个合并 PR,其中 56 个带 state machine——本期 opencode 的节奏由单一作者的状态机迁移主导。
  • compaction 与 MCP 连接这两处都在做”同一份工作只做一次”:compaction 提前量固定化、MCP 连接池化、assistant part 逐行写入,三者指向同一类成本。
  • Console(托管版)的策略面在变厚:websearch.use 策略动作、prompt 时配置刷新、embedder 自定义 fetch、console.poll 开关——托管服务正在从”能连上”走向”能精确控制模型看到什么”。

earendil-works/pi

AI agent 工具包:统一 LLM API、agent loop、TUI、coding agent CLI| stars: 120066 | open issues: 264 | 默认分支: main | 最近 push: 2026-11-05T00:05:54Z | 主页: (仓库未填写)

近 1 周 release 重点:

  • 窗口期内无 release。最新为 v1.5.0(2026-11-02T11:05Z):扩展包更新后可显示 changelog;大工具调用增量解析、流式渲染更快;PI_SELF_UPDATE_COMMAND 自定义更新命令;GPT-6.1 Terra(OpenAI / Azure OpenAI Responses / OpenAI Codex,Codex 提供 500K 上下文);breaking:工具参数校验改由 @earendil-works/pi-schema 执行,TypeBox 的 Type.Refine() / Type.BigInt() / codecs 等不再作用于工具参数,普通 JSON Schema(含 MCP 工具)现在获得与 TypeBox 工具相同的类型强转。
  • [Unreleased] 段已有实质内容(packages/coding-agent/CHANGELOG.md):GrepOperations.readFile 被移除是 breaking(grep 的 context 改由 ripgrep 提供);Anthropic message threads 已在 1.5.0 进入 [Unreleased];新增 pi.registerMarkdownTransformer({ messageTypes }) 可选面(custom / summary / changelog);默认 Anthropic 模型改为 Claude Opus 5.5 及一批 provider 默认模型换代;read 工具改为流式;grep 不再自己读文件。

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

  • d84123b + b425754 模型默认换代 — feat(coding-agent): move provider defaults to newer models at the same or a lower price / feat(coding-agent): default Anthropic model is Claude Opus 5.5。CHANGELOG 明确列了每个 provider 的新默认:amazon-bedrock → Claude Opus 5.5、azure → GPT-6.1 Sol、google 与 google-vertex → Gemini 4 Argon、vercel-ai-gateway 与 baseten → GLM 5.3、minimax 与 minimax-cn → MiniMax-M3、qwen-token-plan 与 -cn → Qwen3.8 Max、opencode-go → Kimi K3.1 Pro,moonshotai / moonshotai-cn / huggingface / opencode / openrouter / cloudflare-workers-ai / cloudflare-ai-gateway → Kimi K2.7 Code(原 Kimi K2.6)。
  • #11750 read 工具流式化 — fix(coding-agent): stream the read tool instead of loading whole files(@petrroll)。原先 ops.readFile → toString("utf-8") → split("\n"),一次读一行也要把整个文件存三份。实测 200MB 日志(236 万行):offset:1, limit:1 峰值 638MB RSS,--max-old-space-size=256 在 Runtime_StringSplit 里 OOM;>512MB 报 Cannot create a string longer than 0x1fffffe8 characters,>2GB 报 ERR_FS_FILE_TOO_LARGE。自定义 ReadOperations 可通过新的可选 createReadStream 一同流式化。
  • #11791 MCP 大消息线性读取 — fix(mcp): read large stdio messages in linear time(@robopipi[bot])。JsonRpcLineReader.readStdout 原先每收到一块就 Buffer.concat 全部缓冲并从头找换行;12MiB 的工具结果按 64KiB 切块时,光是分帧就要 ~350ms。改为把未完成消息的字节按块列表保存、只在新块里找换行、命中时一次 join。
  • #11789 minimatch 安全升级 — fix(coding-agent): update minimatch to 11.0.3 for GHSA-g3hv-75wg-m249(@robopipi[bot])。pi 锁在 minimatch@10.2.6,该 advisory(globparts 放大导致的 ReDoS)覆盖所有 <11.0.1 的版本且 10.x 没有修复版,因此必须跨大版本跳到 11.0.3;副作用是每个安装 pi-coding-agent 的项目 npm audit 都会失败。新增传递依赖 @isaacs/nonrecursive-glob-match@1.0.3(无安装脚本),brace-expansion 升到 ^5.0.12。
  • e885255 feat(p2): /tree, branches of the main conversation as Durable forks — 主会话的分支即 Durable fork,每个分支是从某个 entry 顶层 fork 出来的会话。
  • 07c9e5b feat(p2): tools declare who may call them and where, turn origin from the run's inputs, agents give their own tools — P2Tool 增加 origin(any / owner)与 scope(any / main / subagent);turn origin 从 run 的输入推导;agent 可以给自己发工具。
  • 47005db + 474416d feat(p2): terminal tool for the agent, tmux-style argv, code mode only / feat(p2): subagents can use code mode — agent 驱动与 owner 面板共享的 session terminal,subagent 可以选 code mode 并把它写进默认工具集。
  • 43fb4e3 feat(p2): <sender> block for the model, peer messages as p2.peer-message entries, legacy speaker reader removed — 模型侧用 <sender> 块标识消息来源,peer 消息成为一等条目。
  • 386db61 feat(p2): MCP OAuth sign-in, MCP sheet and TUI command, footer menu — 没有 Authorization header 的 HTTP server 走 OAuth 登录。
  • 04f672a / 707888e / d6339fb feat(p2): render artifacts inline at the tool call site / paste images into the composer / TUI side panel; /artifacts opens artifacts beside the chat。
  • 8889e62 + fabf916 feat(chord): group commit in the store (decision S18) / feat(durable): SqliteStorage commits a group in a few statements — 排队中的 commit 步骤共享下一步的后端;durable store 的分组提交压到几条语句。
  • 80c42c0 / 596523e / ff33ef4 / 0efe50c chord telemetry — 页面与 worker 的遥测由服务端存储,span 记录”它为谁而记”,并配了一个小型 trace viewer 教程。
  • #11812 OAuth 刷新落盘 — fix(coding-agent): wait for a started OAuth refresh to be saved before exit(@petrroll,关 #11692)。RPC 模式下启动时的 catalog 刷新会顺带刷新过期凭据;若在 token 请求发出后、写入前退出,provider 已经消耗掉那个一次性的 refresh token,auth.json 只剩旧的,下次请求 invalid_grant。
  • #11813 bash 超时 — fix(coding-agent): report the shell exit code when bash times out after the shell exited(@petrroll)。命令其实已退出、但它起的后台进程还在写输出导致超时时,错误里现在会带上 shell 的退出码与退出时刻。
  • #11810 模型选择器 — fix(coding-agent): keep model selector selection when the catalog refresh lands(@petrroll)。打开选择器会触发后台 catalog 刷新,回来时选择被重置回当前模型或搜索结果首行。
  • #11757 / #11780 / #11777 / #9441 一组 TUI 与文本正确性修复 — 截断不切半代理对(surrogate pair);Windows 与 WSL 下 ctrl+v 恢复为粘贴键(默认改为 ["alt+v","ctrl+v"]);无 TERM_PROGRAM 时识别 Alacritty 的 OSC 8 超链接;防止光标标记泄漏。
  • #11811(未合并)fix(coding-agent): read and edit handle UTF-16 and non-UTF-8 files without corrupting them(@petrroll)。

社区讨论 / 行业方向:

信号观察:

  • pi 的”性能叙事”从 grep 转到 read 与 MCP:上一期 grep 改用 ripgrep 的 --context 解决 OOM,本期 read 改成流式、MCP 改成线性分帧——三处都在拆掉”先整体读入再切片”的模式,这已经成为 pi 处理大文件的一致策略。
  • 模型默认值换代遵循”同价或更低价”,而不是”更强”:Opus 4.8 → Opus 5.5、Gemini → Gemini 4 Argon、GLM 5.3、MiniMax-M3、Qwen3.8 Max、Kimi K2.7 Code。这是一个明确的成本侧判断(升级即降价或等价)。
  • p2 已经在做多 agent 的权限模型(origin: any/owner;scope: any/main/subagent;turn origin 从 run 输入推导),而主线 pi 的 subagent 仍在修”进度与失败不可靠”(#8250)。两层 agent 架构的成熟度差距在拉大。
  • 安全响应速度快于常规节奏:minimatch 的 advisory 让每个下游项目的 npm audit 失败,pi 直接跨大版本跳到 11.0.3 并同步 regenerate install-lock——这类”因为没有补丁版而必须跨 major”的处理在 agent 项目里并不常见。

agegr/pi-web

pi coding agent 的 Web 工作区(桌面 / 手机浏览器 UI)| stars: 8036 | open issues: 33 | 默认分支: main | 最近 push: 2026-11-04T08:40:15Z | 主页: (仓库未填写)

近 1 周 release 重点:

  • 窗口期内无 release。最新为 v0.15.0(2026-11-03T16:26Z,已在上一期报告覆盖):运行中切换模型(从下一次请求起生效)、侧聊标签随主会话恢复、右侧面板标签拖动重排、扩展 UI 使用 pi 的 ANSI 调色板;修掉 pi 1.5.0 升级后 HTML 导出全部失败(sortChildren expected 1 match, found 0)与 ChatGPT 登录 “requires a device ID”。

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

  • 窗口期内 0 个 commit、0 个合并 PR(最近一次 push 为 2026-11-04T08:40,是分支 push 而非 main 合并)。以下为窗口内新开、尚未合并的外部贡献 PR:
    • #1554 feat(sidebar): filter the session list by status and time(@jianYanZhiX7)— 按状态与时间过滤会话列表。
    • #1553 feat(tabs): show the selected chat's run in the tab title(@jianYanZhiX7)— 标签标题显示当前会话的运行状态。
    • #1550 feat(sidebar): let the directory picker follow the typed path(@jianYanZhiX7)— 目录选择器跟随输入路径。
    • #1547 feat(models): read reasoning_levels and input modalities when fetching models(@dingxiaobo)— 拉取模型时读取 reasoning_levels 与 input modalities。
    • #1552 feat(api): allow an operator-set origin allow-list for cross-origin access(@pizhicheng-9realms)— 运维侧设置跨域来源白名单。
    • #1558 Make session HTML export accessible and label transcript speakers(@GaryCCCC)— 让 HTML 导出可被发现,并给 transcript 的说话人加标签。
    • #1564 fix(extensions): honor session shutdown requests in the web UI(@GaryCCCC)。
    • #1556 fix(chat): preserve composer focus through /compact(@vergram)。
    • #1546 feat(sidebar): add a session activity view(@zhangdxchn)。

社区讨论 / 行业方向:

信号观察:

  • 本周 pi-web 的角色从”作者驱动”变成”外部 PR 驱动”:作者一天内未合并任何 PR,但 9 个新 PR 全部来自外部贡献者,集中在会话管理(筛选 / 活动视图 / 目录选择器 / 标签标题)与模型元数据两处。
  • 功能缺口集中在”发现性”而非”能力”:HTML 导出的入口(#1557 / #1558)、未读角标的跨浏览器同步(#1559)——都是已有能力找不到入口或状态不互通,而不是新能力缺失。
  • Windows/WSL 是 pi-web 的持续痛点:MCP 命令选错 shell、node-pty 收到不支持的 SIGKILL,都由同一贡献者(@sm23444)在同一天提出。

vectorize-io/hindsight

Agent 记忆系统:分层认知架构 + 混合检索,让 agent “学会”而非只是”记住”| stars: 58837 | open issues: 203 | 默认分支: main | 最近 push: 2026-11-04T17:51:05Z | 主页: https://hindsight.vectorize.io/

近 1 周 release 重点:

  • 窗口期内无 release。最新为 v1.2.0(2026-11-03T11:38Z,已在上一期报告覆盖):Hindsight Models 三个自研模型公开(hs-decide-1-flash / hs-rerank-1 / hs-embed-1),官方口径 memory 便宜 2.5x、快 2x。
  • 窗口期内另有两次组件级发布:coding-agents v0.8.5(13:33Z)与 hermes v1.2.4(11-03T15:26Z)。

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

  • #6317 Postgres JIT 关闭 — perf(db): run every pool connection with JIT off, so recall stops compiling its observation lookup(@nicoloboschi,关 #6306)。根因:source_memory_ids @> ARRAY[cs.source_id] 的匹配行数只有运行时才知道,Postgres 固定猜 0.5%(报告者约 740 行,实际约 1 行),估算代价 1.13M 超过 JIT 阈值,于是每次调用都重新编译:~950ms 编译 + ~80ms 执行。因为猜测值固定,统计信息也救不了。修法是在每个连接上设 jit = off(与 statement_timeout 同处设置),API 与 worker 都覆盖。
  • #6323–#6330 一组外部性能审计 issue(@harshitgupta31415,均附可复现步骤与 patch 链接):knowledge folder 删除 10.710s → 27.22ms(393×);consolidation 重复扫描已 recall 的 observation 266µs → 39.77µs(6.69×);复用同 scope 页面的 freshness 检查 8.66s → 5.44ms(1,593×);判定有无待 consolidation 不再全表计数 530.76ms → 0.68ms(778×);scoped retain 时批量读 document tag 3.04s → 84.82ms(35.89×);列 observation scope 时复用 tag count 2.01s → 190.46ms(10.57×);shared source token 只计一次 63.17ms → 4.40ms(14.35×);先过滤实体名再计数 mentions 8.51s → 26.83ms(317×)。
  • #6318 bank 别名接管 — fix(banks): clone, transfer import and rename-bank can no longer take over an alias(@nicoloboschi,关 #6280)。clone / transfer import 写进别名名时会被接受:带 bank config 的 restore 会写入归档的 banks 行本身,绕过 create 路径上的别名检查,新真实 bank 赢得解析,所有使用该别名的调用方静默读到写入副本。rename-bank 同样有缺口(改成自己的别名会留下 (new,new) 自别名行);删除 bank 后别名还留在 resolver 缓存里,TTL 内写入被释放的名字会重建这个已删除的 bank。修法是统一用一个 409 检查(bank_aliases.refuse_alias_as_bank_id_on_conn)覆盖创建、事务内 restore 与提交前检查。
  • #6301 store_document_text 语义 — fix(retain): a store-owned bank with store_document_text off keeps no chunk text(@nicoloboschi,关 #6301)。#6270 修了 SQL 侧的 document / chunk writer,但 store 拥有文档存储的路径仍把每个 chunk 的文本写进 store,且 metadata-only 的 re-retain 会把完整 original_text 重新 put 进去。MemoriesExtension.put_document 新增 keep_chunk_text: bool = True,store 仍收到真实 chunk 文本(delta retain 的 diff 依赖真实文本的哈希),但只留哈希、丢文本。
  • #6289 CI 换模型 — ci: run CI's LLM on Gemma 4 (Hindsight Inference Dev), with prompt fixes so it passes(@nicoloboschi)。CI 主 LLM 从 Vertex Gemini 换成 Hindsight Inference Dev 上的 Gemma 4(gemma-4-26b-a4b),通过修 prompt 而不是放松测试让 Gemma 通过全部 Core LLM 测试。HINDSIGHT_API_LLM_OPENAI_COMPATIBLE_JSON_MODE=false:用 json_object 模式时 Gemma 约 1/3 的情况下开头 key 为空、不返回任何 fact(#6295),把 schema 放进 prompt 则 20/20 通过。回退重试改为 8 次、从 2 秒起(dev GPU 服务所有 CI,短促的 429 “capacity busy” 原本会让 job 失败)。图像/PDF 走 VLM slot、测试评委、provider 矩阵、cache-ratio 测试与 perf 基准仍留在 Gemini。
  • #6306 → #6317 的 issue 链 — #6306 Observation probe from #4790 gets JIT compiled on every recall (likely the cause of #4802)。
  • 947350a / 841979d / ac6c0f7 一组 Hermes 修复 — clone、transfer import 与 rename-bank 的别名问题(#6280);store-owned bank 的 chunk 文本(#6301);hermes 侧:找出控制面反代后面的 server 版本(#6137)、告诉被拉起的 daemon 用户的数据库在哪(#6093)、在所有模式下重试 keep-alive 连接失效的 recall(#5734)、不在每次 append 时重写 session 的 memories(#6241)。
  • 9486680 fix(api): one id rule for banks, aliases and mental models; bound page max_tokens(#6282)——把 bank / alias / mental model 收敛到同一套 id 规则。

社区讨论 / 行业方向:

信号观察:

  • 一次外部审计贡献了 8 个带量化指标的 issue,且每个都附可复现步骤、patch 链接与 before/after 数字(393× / 1593× / 778× / 317× …)。这批 issue 的共同模式是**“查询范围比需要的大”**:先全量统计再过滤。性能问题的性质高度一致。
  • bank 身份与别名语义成为本周主线:#6318 修掉了别名接管(真实的安全/一致性问题:别名会让调用方静默读到副本),#6335 是同类问题的另一半(restore 合并导致事实重复),#6282 把 bank / alias / mental model 收到同一套 id 规则。记忆系统的边界正在从”检索准不准”移到”对象身份是否唯一”。
  • CI 从 Vertex Gemini 换到自家 Hindsight Inference Dev 上的 Gemma 4,理由是 prompt 需要修而不是测试需要放松;同时显式关掉 json_object 模式。这让”记忆系统自己的 CI 依赖谁”从外部大厂变成内部服务——同时把 LLM 行为不稳定的问题暴露成了自家 issue。

agentclientprotocol/agent-client-protocol

面向编辑器与 coding agent 之间的 JSON-RPC 协议,赛道是 agent 接入层标准| stars: 4576 | open issues: 33 | 默认分支: main | 最近 push: 2026-11-04T09:36:46Z | 主页: https://agentclientprotocol.com

近 1 周 release 重点:

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

  • 734309d docs: describe AionUi in the Desktop and Web clients list(#2757,@IceyLiu,窗口期内唯一合并)— 客户端目录继续以”文档登记”的方式扩张。
  • #2758 Add skylands client(@autodidaddict,未合并)— 窗口期内新开的第二个 PR。

社区讨论 / 行业方向:

  • 窗口期内未检索到新的公开讨论。Discussions 中最近更新的帖仍是 2026-10-12 的几条(“Can ACP be more generic?”、“Model selection”、“Should the Python SDK be considered?”),说明协议层的讨论活跃度已经低于实现层。
  • 客户端目录(Desktop / Web / Connectors)在本期与上期各新增一项(AionUi、Happier、Remote ACP Bridge、Coincide),扩张方式仍是”文档登记”而非”能力协商”。

信号观察:

  • 1 个 commit、2 个 PR,是本窗口六个仓库里最低的动静。协议层的推进节奏明显慢于实现层——本期 opencode、pi、hindsight 各自新增了成体系的能力,ACP 侧只有目录条目。
  • 客户端目录仍在增长,但增长的是名字不是能力。窗口内 ACP 的实际变更全部是文档与客户端登记,唯一涉及语义的是 11-02 的 spec 文本 reconcile。

yxc023/yxc023.github.io

本项目的报告分发站点(blog)| stars: 1 | open issues: 28 | 默认分支: master | 最近 push: 2026-11-04T05:23:44Z | 主页: (未填写)

近 1 周 release 重点:

  • 窗口期内无 release。

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

  • 9390844 auto(reports): 同步 daily-research 2026-11-04 — 上一期报告的自动同步。
  • 48389f8 / 8c86fb0 / 1192ffa / 965ae24(11-02)新增并三次修改《当代码可以随便生成,抽象还值不值钱?》——把引子前两件事合并,视角统一为”接手 / 回看既有代码”。
  • 窗口期内新开 1 个 PR(#31 dependabot:Bump devalue from 5.9.0 to 5.9.2),未合并。

社区讨论 / 行业方向:

  • 窗口期内无外部讨论(本站为报告分发站点)。

信号观察:

  • 站点仍保持”每次报告自动同步一次”的行为,无人工内容变更。

跨项目观察

  1. “显式状态机”从一个仓库的做法变成一类做法。 opencode 用 56 个合并 PR 把生命周期状态重写为显式状态机,并把规则写进 packages/app/AGENTS.md(#61718);pi 的 p2 用 origin / scope 声明”谁可以调、在哪可以调”(commit 07c9e5b),本质是同一件事的另一面——把隐式约束变成可声明、可查询的条款。两边的落点都不是代码风格,而是”约束要能被检索到”。

  2. 三家仓库同期在拆”先整体读入再切片”的模式。 pi 把 read 改成流式(#11750,200MB 日志读一行从 638MB 峰值降到只留显示行)、MCP 大消息改成线性分帧(#11791);opencode 把 compaction 提前量从窗口百分比改成固定 token(#60049)、把 assistant part 逐行写入而不是重写整条消息(#58916)、给 MCP 加连接池(#61185);hindsight 把 recall 路径上的 JIT 编译关掉(#6317)并砍掉 8 处”查询范围比需要的大”(#6323–#6330)。共同的成本模型是”同一份工作只做一次”。

  3. 性能问题的性质在这批仓库里高度一致:范围过大,而非算法不足。 hindsight 那 8 个带量化指标的 issue 全部是”先全量统计再过滤”(1593×、778×、393×、317× 的改善全部来自把过滤提前)。opencode 的 compaction 与 MCP 池化是同一逻辑的应用侧版本。这是数据规模问题,不是算法问题——对应的修复都在”缩小作用域”而非”换实现”。

  4. 模型能力的”声明 vs 实际”仍是最大的单点故障源。 opencode 侧 deepseek-v4.1-flash 声明支持图像却拒绝图像输入并卡死会话(#61827 / #61842)、gemini-4-argon 返回 403(#61845);pi 侧 minimatch 的 advisory 让每个下游项目 npm audit 失败,只能跨 major 跳到 11.0.3(#11789);hindsight 侧 reflect 在 MiniMax 上因 strict json_schema 含 nullable 报 400(#6321)。上游的能力声明与下游的严格校验之间的缝隙,正在制造大量跨仓库的重复劳动。

  5. “身份唯一性”取代”检索质量”成为记忆系统与多租户服务的新主线。 hindsight 修了 bank 别名接管(#6318——别名会让所有调用方静默读到副本)、restore 合并导致事实重复(#6335)、bank/alias/mental model 三套 id 规则(#6282);opencode 修了 URL 凭据与 fragment 绕过 deny 规则(#61701)并加了 websearch.use 策略按 provider ID 封禁(#61557)。边界一旦被多个调用方共享,身份唯一性就比单点性能更影响正确性。

  6. 供给侧的不稳定仍然每天产生新的用户报告。 opencode 的 Go 模型线新增 Hy4(#61709)的同时,Go 模型的图像能力与 403 问题在同一天出现(#61827 / #61845),免费额度类 issue(#61716 / #61782 / #61553 / #61599)反复出现,Linux 桌面端还有 renderer 100% CPU 的崩溃循环(#61688);open issues 从 3990 涨到 4013。pi 一侧则用”同价或更低价换新模型”(d84123b)在成本侧对冲。

  7. 社区贡献的重心从”提 issue”转向”提带 patch 的量化报告”。 hindsight 的 8 个性能 issue 每个都附了可复现步骤与 patch 链接;opencode 收到 zsh q flag 卡死 shell 扫描器的外部修复(#60791);pi 收到 Ubuntu 系列 provider 兼容修复(#11781 Azure Foundry 1.05M 上下文、#11785 glm-5.3、#11793 session-id 而非 session_id)。上游开始把”如何复现”当成 issue 的必要条件。

元信息

  • 报告生成时间: 2026-11-05T00:30:31Z
  • 基准时间: 2026-11-01T00:30:00Z(按 spec 读取自上次报告 reports/latest.md 的 基准时间: 字段)
  • 扫描窗口: 2026-11-01T00:30:00Z → 2026-11-05T00:30:00Z(共 4 天);本期新增内容全部落在 2026-11-04T00:30:00Z 之后的 24 小时(增量口径 = 上次报告生成时间 2026-11-04T00:30:00Z)
  • 数据源: GitHub API(gh CLI core + Search API)+ mmx web search + npm registry + PyPI + 仓库内 CHANGELOG / release notes / p2 README 校验
  • API rate limit 剩余: 4963 / 5000(core,抓取完成后查询);Search API 独立限流 30 / 30(计数请求已分批 sleep 3s)
  • 抓取结果: 6 / 6 仓库 × 5 endpoint(repo / releases / commits / pulls / issues)全部成功;discussions 5 / 6 成功(opencode 返回「Discussions are disabled for this repo」),pi / hindsight / ACP / pi-web / blog 的 discussions 返回的均为历史帖,窗口期内无新讨论
  • 增量统计口径(2026-11-04T00:30:00Z 之后,Search API committer-date:> / merged:> / created:>):opencode 104 commits / 105 合并 PR / 189 新 PR / 128 新 issue;pi 90 commits / 37 合并 PR / 29 新 PR / 25 新 issue;pi-web 0 commits / 0 合并 PR / 9 新 PR / 13 新 issue;hindsight 4 commits / 4 合并 PR / 9 新 PR / 25 新 issue;ACP 1 commits / 1 合并 PR / 2 新 PR / 0 新 issue;blog 1 commits / 0 / 1 / 0
  • 窗口期内的 release: 无。pi 最新 v1.5.0(11-02)、opencode 最新 v2.2.5(10-30)、pi-web 最新 v0.15.0(11-03)、hindsight 最新 v1.2.0(11-03,另有 coding-agents v0.8.5 与 hermes v1.2.4)、ACP 最新 v1.15.1 / schema-v1.29.1(11-02)、blog 无 release
  • npm / PyPI 校验: @earendil-works/pi-coding-agent 仍为 1.5.0、@agegr/pi-web 仍为 0.15.0(dist-tags: latest 0.15.0 / beta 0.8.12-beta.1)、@opencode/cli 仍为 2.2.5 但 dev 构建持续发布(0.0.0-dev-646,11-04T23:58Z),PyPI hindsight-client 仍为 1.2.0
  • 仓库元信息对比上次报告(2026-11-04):opencode stars 224357 → 224595 / open issues 3990 → 4013;pi stars 119843 → 120066 / open issues 312 → 264;pi-web stars 8015 → 8036 / open issues 14 → 33;hindsight stars 58503 → 58837 / open issues 176 → 203;ACP stars 4575 → 4576 / open issues 32 → 33

评论