2026 2026年10月30日 39 min · 11.8k chars by yxc023
GitHub 调研周报 2026-10-30
扫描窗口:2026-09-08T09:23:29Z → 2026-10-30T00:30:00Z(共 51.6 天)| 基准来源:上次报告 2026-10-29
2026-10-30 GitHub 调研周报
扫描窗口:2026-09-08T09:23:29Z → 2026-10-30T00:30:00Z(共 51.6 天)| 基准来源:上次报告 2026-10-29 本轮新增内容全部落在 2026-10-29T17:35:00Z 之后的约 7 小时(同日 01:26 的上一轮已覆盖至 2026-10-29T17:35Z,本文件为合并后的完整版)
本期速览
- anomalyco/opencode: 同日第二个版本 v2.2.2 把实验性生图正式转正——
experimental_image_generate在连接的 provider 支持图像模型时默认开启(#60258),v2.2.1 release notes 里「opt-in」的措辞在 24 小时内失效;同日process-daemon v0.4.0/ npm@opencode/pty@0.4.0上架(protocol 7),并新增 terminal 重命名(#60324)与桌面端 terminal 迁到持久 PTY(#60346)。 - anomalyco/opencode: 定时任务有了第二种条件闸门——#60140 让 schedule 支持 Code Mode JavaScript 检查(
if: { code }/until: { code }):创建时用 Acorn AST 静态扫描出tools.<path>(...)调用、拒绝动态索引与别名、一次性授权这些工具(不落项目级授权表),检查过程不调用模型。这让 OAuth 凭据在 OpenCode 内的 Slack / Linear / MCP 集成也能用结构化 JSON 游标状态驱动唤醒。 - anomalyco/opencode: 「长任务不许阻塞会话」成为主线——#60367(steer 时把阻塞中的 shell / subagent 转到服务端后台)已在 dev 落地,#60375(
shell/execute/subagent超过yield_after默认 30 秒自动转后台,配套job_list/job_output/job_wait/job_stop工具)仍是 open PR;两者都修掉「foreground shell 2 分钟被杀」与「后台任务跑着会话却显示 idle」的老问题。 - anomalyco/opencode: 额度投诉仍在增长(新增 32 个 issue、关闭 91 个),并第一次出现社区主动要求「只显示免费模型」——#60392 提内置 free-only 模型过滤、#60383 要
OPENCODE_ONLY_FREE_MODELS环境变量;官方侧对应动作是integration.connect/integration.use策略(#60315),可用 MDM 策略把签名外的免费层、个人账号与其它 org 全部 deny 掉。 - agentclientprotocol/agent-client-protocol: v2 正式移除 JSON-RPC batching(#2625,跟随 MCP「2025-03-26 加、2025-06-18 删」的先例),理由是双向连接上无法区分「一批请求」与「一批响应」;接收方对数组回一个
id: null的-32600。同日新增 v2 background work RFD(#2452):后台 shell / 监控 / 定时唤醒 / 后台 subagent 不新增实体,而是让 tool call 在会话 idle 后仍保持pending/in_progress,state_update增加可选background列表,tool call 可单独tool_call/cancel。 - agentclientprotocol/agent-client-protocol: 单日 59 个合并 PR(上一轮 29),依然全部由 benbrandt 一人提交,社区侧仍是 0 新 issue、0 新讨论;本期新增内容集中在「v1→v2 迁移指南」逐条落地(batch 移除算 framing 变更、
initialize可重复调用、cancel_request对未知或已应答请求忽略、currency 约束放宽到 credits 等)。 - vectorize-io/hindsight: MCP 的
recall对齐 HTTP API(#6195),接受同一个rerank: { prune, dedup }对象,缺省时依次回落到 bank 配置与服务端环境变量;官方博客同步发布 OpenBot 集成(2026-10-29),OpenBot 上的一队常驻 agent 通过 MCP 共享同一份记忆。 - vectorize-io/hindsight: 插件生态的问题开始集中爆出来——本轮 8 个新 issue 里有 4 个来自第三方插件:openclaw 复制版把未解析的
SecretRef直接发成Bearer [object Object]导致全部 401(#6201)、API 不可达时 retain 被静默丢弃而非排队(#6196)、默认recallTypes: ["observation"]下回填/导入的记忆在 consolidation 之前完全不可见(#6198)、Codex 的 OAuth token 刷新后 embeddings 401(#6200)。 - earendil-works/pi: 本轮 9 个提交几乎全是细节修复(TUI 换行处样式空格与删除线复位、Windows 路径大小写不敏感比较、
-e扩展的临时 git/npm 源刷新、项目 trust 记忆);7 个新 issue 多是 Windows / WSL 路径与剪贴板类问题,没有新增功能面。 - agegr/pi-web: v0.13.0 发布后约 11 小时无新提交、open issues 仍为 3、新 PR / 新 issue 全为 0——上一轮「9 天空窗后单日 65 提交」的爆发暂未延续成持续节奏。
- anomalyco/opencode: v2.2.1 把「让会话继续干一件事」做成产品——
/goal(模型自审 + pause/resume/clear)+/schedule(opt-in 定时提示词 +client.experimental.schedule.*API),但发布后当天就把 image 工具默认打开并改名experimental_image_generate(#60258),release notes 里的「opt-in」措辞随即过期。 - anomalyco/opencode: 定时任务在发布次日补上「shell 检查」闸门(#60137,
until: {run}/if: {run, changes:true}),用外部命令的结果决定是否唤醒会话——这正是上一期第三方分析指出「本次发布不包含」的那块能力。 - anomalyco/opencode: 免费额度问题升级成集群。窗口内新 issue 147 个,按评论排序的前 60 个里有 23 个在谈 free/quota/limit;#60124「重置时间自己从 10-29 推到 10-30」、#60062「重置计时器多加 24 小时」、#60173「到点没重置」等,全部被关闭。
- anomalyco/opencode: npm 双线仍未收敛——
opencode-ailatest 仍是 1.19.5,而@opencode/clilatest 已是 2.2.1;上一期「release notes 说已发 npm、npm 上没有」的@opencode/pty本期已实地上架 0.3.3(2026-10-29T15:49Z)。 - earendil-works/pi: 本期几乎全部产能投在 Chord v2 slice 7a/7b——依赖模型落地(
feat(chord): Chord v2 slice 7a, the dependency model),并用 10 余条 decision 文档固化「不做环探测、改用parked_long诊断」「getters 由 reviewer 投票」「用hostAddress取代placement」。 - earendil-works/pi: 长会话的性能问题被用户量化报上来——#11570(V8 OOM / SIGABRT:flatMap 里对巨型 ConsString 做 flatten+regex-replace)、#11567(
getSessionName()每次渲染都全量扫描);另一个长期项 #11554 是 Responses 中转账号轮换后invalid_encrypted_content让会话不可恢复。 - agegr/pi-web: 9 天空窗结束,2026-10-29 单日 65 个提交并发布 v0.13.0(上一期还在记录「停更了?」的公开质疑);open issues 从 9 降到 3,新 issue 4 个且全部当天闭环。
- agegr/pi-web: v0.13.0 大量条目直接以「与 pi 的 TUI 一致」为验收口径(用量行
↑1.2k ↓567 R8.9k W12 $0.0036 · took 10s、用户消息里的 HTML 按原文显示、压缩期消息排队、代码块长行换行、附件图片不前端压缩);CI 改为 Trusted Publishing 从 CI 发 npm(#16f195c)。 - vectorize-io/hindsight: #6176 放弃 native tool calling,所有 provider 的工具调用改走一条 response schema 路径——理由是 20 来个 provider 各修一遍仍会漏:vLLM 的 gemma4 解析器不执行
required/具名 tool_choice 的语法,导致 reflect 被强制的后续检索有 75% 直接返回 stop 信号。 - vectorize-io/hindsight: 托管版叙事继续推进(10-27 博客:Hindsight 1.0「API 是一个承诺」、Memlake 已跑在大部分 Cloud 上、bank 文档 zip 可导入导出、reflect 展示证据);代码侧同期加了 decision-model 托管 provider 与管理员 sign-in 命令(#6169,opt-in、暂未写进
--help)。 - agentclientprotocol/agent-client-protocol: 单日 29 个合并 PR、全部是 v2 协议语义(session/resume 的 cwd 必须与 session 一致、
session/list的 cwd 匹配、stdio MCP 启动环境与唯一 server 名、prompt 响应与 update 无固定顺序、初始化完成前的消息、未声明的 prompt 内容必须拒绝、保留$/前缀与未知方法处理);社区侧仍是 0 新 issue、0 新讨论。 - agentclientprotocol/agent-client-protocol: 合并速度从上一期的 17 升到 29,但依然几乎全部由 benbrandt 一人承担;本期唯一非 bot 的外部贡献是 #2592(把 SpurCode、SpurLab 加进 clients registry)。
各仓库详情
anomalyco/opencode
开源编码 agent(CLI + Desktop + HTTP API + SDK)| 赛道:AI 编程工具 | stars: 223060 | open issues: 3794 | 默认分支: dev | 最近 push: 2026-10-29T23:57:31Z | 主页: https://opencode.ai
近 51.6 天 release 重点(窗口期新增 4 个):
-
v2.2.2(2026-10-29T18:43Z)— 生图默认开启 + worktree 选择器 + 引用/标注统一编辑器
- Image Generation by Default:连接的 provider 支持图像模型时,
experimental_image_generate直接可用,无需额外配置;偏好模型仍用experimental.image_generate.model指定(#60258)——这正是把 v2.2.1 里「opt-in」的措辞改口 - 新会话页点击当前 Git 分支即可直接打开该项目的 “Run session in” worktree 选择器(#60263)
- 时间线引用、终端引用与浏览器标注共用同一个带可选评论的编辑器,source highlight 仍附着在本地草稿上(#60164)
- Core:记录每次会话最近一次执行的开始时间;拒绝 cwd 已不存在的持久终端请求;会话 fork / import 时保留媒体;把生图通知关联到正确的后台任务
- TUI:保留已捕获附件及其原始来源路径(#60222,社区贡献);极窄终端下中间截断路径不再溢出;Go 用量上限提示带上重置时间与账号页链接,并修正 Go / ChatGPT 用量上限错误的类型与显示
- Desktop:恢复经典问答卡片为默认(新增 Settings → Experimental → New question UI 切换到键盘向新 dock,#59723);侧边栏页签菜单、溢出时保留关闭按钮;排队 prompt 内容变大时不再掉帧;inbox 的 Working 分区按执行开始时间排序;切换目录时保留每个 tab 的时间线
- SDK:
client.experimental.schedule.create新增if/until入参与检查结果、输出字段(#60137);暴露SessionInfo.time.busy;prompt 文件附件可选来源元数据 - 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v2.2.2
- Image Generation by Default:连接的 provider 支持图像模型时,
-
process-daemon v0.4.0(2026-10-29T22:01Z)— opencode-pty 0.4.0(protocol 7),已发布为 npm
@opencode/pty@0.4.0- 同日两版 pty(0.3.3 → 0.4.0);配套提交含持久终端重命名(#60324)与共享持久 pty 协议的重构(#60323)
- 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/process-daemon-v0.4.0
-
v2.2.1(2026-10-29)— 目标驱动会话 + 生图 + 新模型选择器
- Breaking:
@opencode/ai移除 fal / Black Forest Labs / Replicate / Stability 四个 provider 及其入口(#59977);5 个旧入口路径改名(./providers/amazon-bedrock-mantle→./providers/amazon-bedrock/mantle,./providers/google-vertex-{chat,interactions,mistral,responses}→./providers/google-vertex/*,#59506);每个 provider 的configure()入参类型统一改名Config(Groq.LanguageModelOptions→Groq.Config,#59765)。不影响 CLI / Desktop / HTTP API,只影响直接 import@opencode/ai的代码。 /goal <objective>:会话持续工作直到 reviewer 确认目标达成,配/goal pause|resume|clear(#59437)image_generate工具(当时为 opt-in):后台生成/编辑图片,可用experimental.image_generate.model指定默认模型(#59939、#60096)- 定时提示词:
/schedule、agent 工具与experimental.schedules,并暴露client.experimental.schedule.{create,list,get,pause,resume,delete}(#59401、#59457) - 新增 GPT Image 2(Codex 登录后)、MiniMax 与 Meta Muse 生图(#60085、#59929、#60081);OpenRouter / DigitalOcean / Venice 支持 Responses API(含 freeform 工具,#59991、#59963)
- 修复:工具输出塞进上下文时保留更多 headroom(#59934);provider 限流改为正确重试而不是报成 context 溢出(#59649);OpenRouter / Google / Vercel Grok 的图片编辑参考图与尺寸按各自期望格式发送(#60067、#59927);凭证元数据与 prompt cache 设置不再混进 model settings(#60057、#59500);split index 仓库的 Git snapshot 修复(#59417)
- TUI:显示首个模型步骤之前就发生的执行失败(#60079);续跑 subagent 时保持 activity spinner(#59950)
- Desktop:
/reload不重启即可重载配置(#59887);重做后的可搜索模型选择器成为默认(#59997);后台 shell 可在活动 pill 里看实时输出并停止(#59496) - 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/v2.2.1
- Breaking:
-
process-daemon v0.3.3(2026-10-29)— opencode-pty 0.3.3(protocol 7),已发布为 npm
@opencode/pty@0.3.3- 上一期记录的问题(v0.3.2 release notes 宣称已发布、npm 上却查不到)本期已闭环:npm
@opencode/pty的 latest 现在确实是 0.3.3(2026-10-29T15:49:42Z) - 完整 release notes: https://github.com/anomalyco/opencode/releases/tag/process-daemon-v0.3.3
- 上一期记录的问题(v0.3.2 release notes 宣称已发布、npm 上却查不到)本期已闭环:npm
其他重要 commits / PRs(按重要性挑选):
c784d17定时任务支持 shell 闸门 (#60137) —until: { run: "gh pr checks 123" }一次性等待,if: { run, changes: true }给循环计划加条件;静默轮询不消耗模型调用,ends.times只计真实唤醒d4e48f5生图工具默认开启并改名experimental_image_generate(#60258) — 只要连上的 provider 有图像模型就出现;关闭方式改为权限规则"experimental_image_generate": "deny",旧的true/false值仍兼容f74b141release: v2.2.1 (#60113);87a35faprocess-daemon release 0.3.3 (#59969)c1b5f1b新增 session_part 表并从它读取历史 (#58915)fbb47c9agent、/schedule与 experimental API 三条入口都能排定时提示词 (#59457)d9ecbbc/3eb834bGo 与 ChatGPT 用量上限类型化,并展示重置时间与页面链接 (#60284、#57897)756f832拒绝 cwd 缺失的持久终端 (#60300);ccd406b小宽度下 truncateMiddle 不再溢出 (#60287);6b9f214切换目录时保留每个 tab 的时间线 (#59168)aaa0d7c告诉 Code Mode 模型内建工具仍在顶层 (#57627);ecc075afor…in 遍历继承的可枚举键 (#59933)2f3e56d/f023f7c生图工具描述与开关字段的重写 (#60090、#60096)
本轮(17:35Z → 00:30Z)新增的 commits / PRs:
c24c5affeat(core): schedule 支持 Code Mode 检查与静态工具扫描 (#60140) — 创建时用 Acorn AST 扫描tools.<path>(...)调用,拒绝动态tools[x]与别名,一次性授权这些工具(不写项目级授权表),无人值守 tick 只暴露这些工具且不含fetch;state/now/runs作为全局变量直接读b2bd02efeat(core):integration.connect/integration.use策略 (#60315) — 组织可只靠 MDM 策略强制使用自家 Console workspace,无需维护 provider 列表或OPENCODE_DISABLE_FREE_MODELS;策略形如{"action":"integration.connect","resource":"*","effect":"deny"},随后只放行目标 org 的连接8609cc5refactor(core): 把 shell 权限检查彻底移出 tree-sitter (#60332);055a2a9code check 抛异常时创建 schedule 失败并立即暂停无效检查 (#60349)06bf854删除会话时同时移除其持久终端 (#60322);756f832拒绝 cwd 缺失的持久终端 (#60300)b6f82bfexecute 进度最多每 100 ms 推送一次 (#60120);b653a62MCP 工具失败时保留权限理由与反馈 (#60102)84aed13TUI 按引用加载已存图片,与桌面端一致 (#60116);c24760c高亮没有开标签的 PHP 代码块 (#60359)d09e2c6桌面端新增问答通知与提示音 (#60358);83e3999设置页里对新增项目分组 (#60221);51625f7打开会话时保留 inbox 滚动位置 (#60356)dc0bfc5检查重定向、PowerShell 方法调用与动态目录变更 (#60376)f7b4d50页脚挂上实时系统状态链接 (#60223);3e8e974/go增加 Go Teams 套餐与限额 (#60308)- 仍为 open、尚未合并的方向性 PR:#60367(steer 时把阻塞工作转到后台)、#60375(工具超过
yield_after默认 30 秒自动转后台,配套job_list/job_output/job_wait/job_stop)、#60351(实验性 artifacts,可插拔存储 provider)、#60342(task-parallel并发子任务工具,2–5 个)、#60360(子代理 idle 时把结果报告回父代理)、#60346(桌面端 terminal 迁到持久 PTY)
社区讨论 / 行业方向:
- OpenCode v2.2.1 adds /goal and image generation(RepoJournal): 第三方把 2.2.1 与 Goose 1.57.0 并列解读——Goose 同一版收紧 allowlist(必须 HTTPS、校验重定向、策略失败即阻断);提到 gemini-cli 修掉 Auto 别名被误标 preview 导致
/model里消失的问题 - OpenCode adds goal-driven coding and opt-in scheduled prompts(RohitAI): 第三方实测结论值得记——goal 的完成判定由会话自己的模型来做,不是人,也不是另选的 reviewer 模型;连续 3 轮停滞或 50 轮上限才暂停,恢复后重置轮次额度;goal 没有专门的 token 预算。schedules 默认关闭,需要在配置里显式开
experimental.schedules;定时器跑在 OpenCode server 侧,本机关机就不会继续。这篇文章发布于 2.2.1 当天,因此「本次不含条件式 shell 检查」的说法已被次日 #60137 推翻 - OpenCode Changelog(官方): 官方确认 v2.2.1 与 process-daemon 0.3.3 两个版本同日出
- opencode-gpt-imagegen(npm): 第三方插件复用 OpenCode 已有的 ChatGPT 订阅通道做生图,走 Codex 后端的 images 端点并把 PNG 落盘——说明「image_generate 工具」在第三方生态里已经有插件抢跑
- OpenCode Changelog(官方,v2.2.2): 官方把 v2.2.2 的首条列为 Image Generation by Default,并把
client.experimental.schedule.create的if/until写进 SDK 变更 - anomalyco/opencode v2.2.2 on GitHub(NewReleases): 第三方镜像站把三块 Highlights(生图默认、worktree 选择器、引用/标注统一)与 SDK / Extensions 变更完整列出
- AI Coding Tool Releases — Timeline(Havoptic): 按天追踪各家 AI 编码工具发版,把 OpenCode v2.2.1 与 v2.2.2 记为 10-29 同日两版,并与 Codex CLI rust-v0.166.0、Amp 2026.10.29 并列——同日发两版在这一层级的工具里已不算异常
- AI Agent 动态(AgentMaps 中文): 中文视角的解读——“同日两版把实验性图像工具在 provider 支持处转正为零配置默认,从实验转正正是功能成为标配的标志”;并指出引用与标注统一后,评审产物可在整个会话中移植
信号观察:
- 额度类投诉已成集群而非个案:窗口内新 issue 147 个,按评论排序前 60 个里 23 个谈 free/quota/limit;#60124 描述「设备整夜未用,重置时间却从 10-29 推到 10-30」,#60062 标题直指「重置计时器多加 24 小时」,#60173「到点没重置」,#60149「重置后仍被封」。这些全部被关闭,说明修复速度赶上了投诉速度,但根因描述高度一致
- 发布即改口:v2.2.1 的 release notes 写
experimental.image_generate是「opt-in」,但 tag 之后 10 分钟的 #60258 就把它改成默认开启并改名,把「开启」这件事从配置项挪到权限规则。同一天内发布说明与实现不一致,是本期最刺眼的一处 - npm 双线仍未收敛:
opencode-ailatest = 1.19.5、@opencode/clilatest = 2.2.1,两者仍是两套版本线;周下载量 445.8 万(2026-10-22 ~ 10-28) - 「条件式唤醒」补齐:上一期第三方指出的缺口(schedule 只按时间发 prompt,不看条件)本期以 shell 闸门补上,且明确把静默轮询与真实唤醒分开计数;本轮又补上 Code Mode 检查(#60140),把「条件」从「跑一条命令」扩展到「跑一段能被静态审计的脚本」——条件闸门开始变成一个可组合的子系统,而不是一次次打补丁
- 「实验 → 默认」的节奏明显加快:v2.2.1 写 opt-in、v2.2.2 就默认开启,中间只隔 21 小时;同期还有 4 个新 PR(#60351 artifacts、#60342 task-parallel、#60367、#60375)以「先开开关再观察」的方式进入 dev
- 额度信任从「计时不准」走向「默认给什么」:除了重置时间不准,本轮出现两条社区诉求——要内置 free-only 模型过滤(#60392)与
OPENCODE_ONLY_FREE_MODELS(#60383);官方反手给出的integration.connect/integration.use策略(#60315)是把「用谁的账号」也做成了可下发策略。免费额度问题正在被重新定义为「默认可见性与默认账号归属」问题 - 会话不再等长任务:steer 即转后台(#60367)+ 30 秒自动转后台(#60375)+
SessionInfo.time.busy(v2.2.2 SDK)三件一起,指向同一件事——会话的「忙」与工具的「忙」必须能分别表达
earendil-works/pi
AI agent 工具包:统一 LLM API、agent loop、TUI、coding agent CLI(外加独立的 Chord 应用组合运行时)| 赛道:agent 框架 / SDK | stars: 118808 | open issues: 353 | 默认分支: main | 最近 push: 2026-10-29T21:11:08Z
近 51.6 天 release 重点(窗口期内无 release):
- 窗口期内无 release。最新为 v1.4.0(2026-10-21),其中与本期相关的是 Chord v2 以
@earendil-works/chord/next(experimental)导出,以及 slice 8 的 registries / writables /host.root。 - 本期新增能力集中在
packages/chord/CHANGELOG.md的 [Unreleased] 段(Breaking Changes):traceIn(options, fn, context)改为 context 在后;watch 监听器改为接收一个 change 对象{ value, ops, retired };新增SqliteExecutor.runCounted(返回 SQLitechanges()计数);退休从「结束」改成一个标志位(advance({ value, ops, retired: true })+endAfterDelivery());watch 调用带 tag({ kind: "value" | "failed" });WatchEnd用kind而非reason,cancelled更名aborted。
其他重要 commits / PRs(按重要性挑选):
339847efeat(chord): Chord v2 slice 7a, the dependency model — 本期唯一的功能性 feature 提交,落地 slice 7 的依赖模型5ec2418用hostAddress取代placement:远程类型仍需声明 placement,但只有带地址的 host 才能服务远程类型,且 hold 永远携带自己的地址601461e/b857fbd/adfa8f3/972d701slice 7b 的四份 brief:插件布局与构建加载、资源、HTTP、app kit、度量;决策是插件依赖默认内置、外部依赖 opt-in,reload 在 kernel 内进行a5609aa决策:不做环探测,改用parked_long诊断与编写规则249f24b/a54f250getters 由 reviewer 投票决定,getter 在waiting状态里一直等到自己的readyTimeoute7a0df2缩放图片时在 PNG 与 JPEG 里挑更小的 (#11577) — 对应 issue #11550「缩放后 PNG 比 JPEG 大约 10 倍」0d23d53npm 包更新后若安装版本没变则给出警告 (#11571)c719d5bZhipu 用量上限错误(code 1308)不再重试 (#11572)f14813eskill 诊断信息统一标为[Skill warnings](#11566);19ce805普通模式不再写 OSC 133 prompt 标记 (#11565)6fed3cfSDK 流在生成摘要时可自行完成鉴权 (#11556)
本轮(17:35Z → 00:30Z)新增的 commits / PRs:
f09d01bfix(tui): 把 Orca terminal 识别为支持 Kitty 图像的终端 (#9329) — 本地终端能力的探测范围被明确扩展1be312bfix(coding-agent): Windows 下路径比较大小写不敏感 (#11588);31ade0e对没有需要信任资源的项目也遵守已保存的项目 trust (#11589)bec60c5刷新临时 git 源中被 branch ref 钉住的版本;cd6a8f7临时 npm 扩展未钉版本时,发现有更新版就刷新 (#11590)2ce9d52fix(tui): 换行边界处去掉样式词后的空格,行尾重置删除线 (#11591)86dc686fix(tui): 原生 Shift 下的 ESC+Return 识别为 Shift+Enter (#11586)- 新 issue(7 个,均已关闭):#11583 把非活跃会话从会话选择器移到当前目录;#11587 会话目录 0700、会话文件 0600;#11592 WSL 下 cwd 较深时剪贴板图片粘贴静默失败(PowerShell interop 撞 MAX_PATH);#11593 远端目录元数据被重置后缓存模型消失;#11594 Alibaba 端点上的 reasoning 模型因 developer role 报 400;#11595 内容型编辑在 context handler 里会中途坍缩 system message;#11597 Windows 下
pi update的git clean -fdx应改为-ffdx
社区讨论 / 行业方向:
- Pi:可自我扩展的 AI 编码 Agent 工具包(VvVzzz Blog): 第三方梳理 pi 的包职责地图——
pi-ai统一多 provider LLM API、pi-agent-core负责 agent loop,@earendil-works/chord被描述为「与 pi 完全解耦的独立应用组合运行时(services、replicated state、RPC、plugins)」 - LLM之Agent(六十七) PI(六) Monorepo 结构与包职责地图(CSDN): 中文圈对同一包地图的独立复述,与上条互相印证——Chord 在外界叙述里已经是与 pi 并列的独立交付物,而不是 pi 的插件
- 窗口期内仓库 Discussions 无新帖(最近 10 条均为 2025-12 起的旧帖)。
信号观察:
- 本期几乎全部产能是设计文档:
packages/chord的提交里 10 余条是docs(chord):决策与 brief,功能提交只有 slice 7a 一条。slice 顺序被显式写死为「7b, 7c, 10, 11, telemetry last」 - 「同一语义只写一份」的第三种形态:Chord 的 watch 体系在本期把「值 / 失败 / 退休 / 结束」四种状态彻底拆开——退休不再是终止而是一个标志位,失败有独立 kind,结束也有独立 kind。这与上一期观察到的 opencode「免费即默认可见」、hindsight「把在服务的 reranker 写进 trace」是同一类动作:把原本混在一起的多义状态拆成互斥的、可组合的显式状态
- 长会话性能成为用户可量化的投诉:#11570(V8 OOM / SIGABRT:flatMap 内对巨型 ConsString 做 flatten+regex-replace)、#11567(
getSessionName()每次渲染扫描全部条目)。这两条都不是新功能,是「用了两个月的项目开始暴露出规模问题」 - 不可恢复的失败仍存在:#11554 报告 Responses 中转账号轮换后
invalid_encrypted_content会让整个会话不可恢复;#11552 提出对不支持的 tool-result 图片格式做可恢复处理的提案(本期未合并) - 本轮的 9 个提交全是细节修复,没有新的功能面(TUI 换行样式、Windows 路径大小写、临时扩展缓存刷新、项目 trust)。与上一轮「几乎全部产能投在 Chord v2 设计文档」相比,节奏从「写设计」切回「修边角」——典型的发版前后节奏:v1.4.0(10-21)之后的静默期
- 跨平台细节开始占用真实工作量:#11588(Windows 路径大小写)、#11592(WSL 深层 cwd 下的剪贴板图片)、#11597(Windows
git clean参数)都指向同一个事实——pi 的用户里 Windows/WSL 占比不低,而这些坑在 issue 区是「一次一个」被报出来的 - 临时扩展的更新语义仍不稳定:#11590(未钉版本的临时 npm 扩展有新版就刷新)与上一轮的 #11571(安装版本没变则警告)指向同一个未完成的机制——「临时装的扩展到底该不该自动升级」还没有定论
agegr/pi-web
pi coding agent 的本地浏览器界面(读本机 pi 会话文件,非云端 agent)| 赛道:agent 前端 / Web UI | stars: 7907 | open issues: 3 | 默认分支: main | 最近 push: 2026-10-29T13:25:43Z
本轮(17:35Z → 00:30Z)增量:无。 新提交 0、新 PR 0、新 issue 0、open issues 仍为 3;最近一次 push 停在 v0.13.0 发布当天的 13:25Z。
近 51.6 天 release 重点(窗口期新增 1 个):
- v0.13.0(2026-10-29)— Debug 面板、工具参数逐行显示、SVG 代码块预览、公式复制 LaTeX、Markdown 音视频播放
- Debug 面板(只读,工具栏虫子图标):显示本页与服务器之间的连接(每页 SSE 数量 vs 浏览器每源 6 连接上限、轮询往返、事件流与租约倒计时),以及服务器持有的会话、子代理、MCP、终端与文件监听,并列出当前连接的所有页面。打开面板不会启动、恢复或续期任何东西(#1443、b5acfe8、3a01952、e368baf)
- 工具卡片参数改为逐行显示,shell 命令保留真实换行(#1324、#1396)
```svg代码块像 mermaid 一样渲染成图片(可切源码、放大、下载 SVG)(#1455);块级公式带复制按钮,复制模型写的 LaTeX 源码(#1380、#1454)- Markdown 里的音频与视频直接渲染播放器(#1281)
- 压缩期间发送的消息改为排队,压缩结束后按序发出,与 pi 的 TUI 一致(#1426)
- 顶栏 Agents 徽标显示运行中的子代理数量与转圈;子代理列表显示实际使用的模型与思考深度(#1311、#1415、#1450、#1440)
- 模型设置:自定义模型可单独设 Base URL(#1288)、
anthropic-messages新增 Claude adaptive thinking 开关(#1331)、支持图片的自定义模型可设图片大小上限(ec9f38a)、搜索可匹配 provider id 与provider/modelId(#1308) - 用量行与 pi 的 TUI 对齐:形如
↑1.2k ↓567 R8.9k W12 $0.0036 · took 10s,零值省略,箭头与时钟改用 SVG 绘制(Windows 上不再变形)(#1417、#1449、3383ba6) - 代码块长行自动换行,与 TUI 一致(#1369);手机端 diff 改单栏(#1325);附件图片原样交给 pi,由 pi 按模型限制缩放,前端不再压缩(#1442)
- 完成通知改为整组代理(含主代理)都结束后才发(#1437、#1361)
- 后台标签页释放空闲事件流;页面读取会话状态时不再带上系统提示词(大 AGENTS.md 时每次可达数百 KB,#1306)
- 子代理等待可设上限:前台
Agent与get_subagent_result新增wait_timeout(秒,默认 30 分钟)(#1448) - 修复:会话目录被删时不再报误导的 “Model error”(#1453);发送失败的消息退回输入框(#1457);二进制文件显示下载提示而非乱码(#1401、#1452);用户消息里的 HTML 按原文显示(#1444);Ctrl+Alt+N 在 macOS 上生效(#1337)
- 完整 release notes: https://github.com/agegr/pi-web/releases/tag/v0.13.0
其他重要 commits / PRs(按重要性挑选):
16f195cci(release): 用 Trusted Publishing 从 CI 发布到 npm(取代本地发版凭据)d128baeRelease v0.13.0f78c672自定义 provider 从延迟模型缓存中排除 (#1458)6b8005dPI_CODEMODE_MAX_WORKERS默认值改为 802eee05服务器从未收到的 prompt 退回输入框 (#1457);246e625子代理可配置等待预算 (#1448);9ccde25已有分支的 worktree 命名 (#1456)377c012SVG 围栏按图片预览 (#1455);5e2d92d公式复制按钮 (#1454);95d0c9d二进制文件下载提示 (#1452)6c9dbbe三行列表中显示子代理实际模型与思考深度 (#1440);ed3f8cb整组子代理与主代理结束后再发完成通知 (#1437)a295025压缩期间排队的 prompt (#1426);1fefdf0斜杠命令补全优先匹配命令名 (#1414);f3bd2a7导航恢复时保持工具顺序 (#1405)158e914区分「不可用的选项」与「非法条目」 (#1427);80a61d7Models 侧栏按名称列出 models.json 中的模型 (#1408)e368baf/3a01952/b5acfe8Debug 面板三件套(SSE 计数、页面清单、面板改双栏)
社区讨论 / 行业方向:
- @agegr/pi-web - npm Package Security Analysis(Socket): 显示 v0.13.0「2 小时前发布」、周下载 4K、单一 maintainer;npm API 实测近一周(10-22 ~ 10-28)下载 4541 次
- Pi Web Windows 安装教程(KnightLi): 中文社区对该项目的定位描述——「读取本机已有的 Pi 会话文件,把 Markdown、工具调用和执行结果整理成更清楚的消息视图」,与仓库自述一致
- 本周 TOP 17 排名的 GitHub 开源项目大盘点(BestBlogs / python88 转载): 中文开源周报把 pi-web 列为「给 pi Agent 装上一个本地 Web 工作台」入选项目
- 仓库 Discussions 窗口期内无新帖(最近一条为 2026-10-14 的感谢帖)。
信号观察:
- 上一期的「停更」质疑在本期被正面回答:2026-10-20 之后到 2026-10-29 之间无提交,10-29 单日 65 个提交 + v0.13.0。窗口内合并 PR 计数(Search API)显示 16 个新建 / 53 个合并,说明大量 PR 是集中 rebase 后一次性合并
- 单维护者特征没有变:本窗口内提交作者仍以 agegr 为主,但 v0.13.0 的 release notes 逐条标注了外部贡献者(Brynne Taylor、Vlad Sirenko、TossPig、xcg、maximilize、draxxris、沈青川、Delthin、jiangzhangg 等),并为多项功能附了 issue/PR 号——这是「小项目用 issue 编号替代传统 changelog 治理」的典型形态
- 「与 pi 的 TUI 一致」被当作可验收的规格,出现在 HTML 显示、压缩期排队、代码块换行、用量行格式、附件不压缩、斜杠命令补全等多处。这是前端 agent 与 CLI agent 之间的对齐成本第一次以「一致性条款」的形式出现在 release notes 里
- Debug 面板明确写了「打开它不会启动、恢复或续期任何东西」——把「只读观测」写进功能语义,是对上一期「静默丢弃 / 静默触发」类问题的反向规避
- 「沉默后爆发」尚未变成节奏:v0.13.0 发布后约 11 小时无新提交。上期「9 天空窗 → 单日 65 提交」是存量集中 rebase 后一次性合并的产物,目前看不到后续持续投入的证据
vectorize-io/hindsight
Agent 记忆系统:retain / recall / reflect、mental models、knowledge pages | 赛道:agent 记忆基础设施 | stars: 56193 | open issues: 191 | 默认分支: main | 最近 push: 2026-10-29T18:52:58Z | 主页: https://hindsight.vectorize.io/
近 51.6 天 release 重点(窗口期内无 release):
- 窗口期内无 release。最新为 v1.1.0(2026-10-21):Hindsight 1.0 变更日志、Memlake 发布、1.0 文档快照;decision-model 的 per-operation override(#5607)、Cloudflare Clef 与 OpenAI Decisions API 作为 decision-model provider(#5613)、recall 默认偏好 observations(#5617)等均在该版本内。
- 本期新增能力记在
hindsight-docs/blog/与提交里(无根级 CHANGELOG.md)。
其他重要 commits / PRs(按重要性挑选):
6c425f1feat(llm): 每次工具调用都走 response schema,放弃 native tool calling (#6176) — 理由是 native tool calling 在约 20 个 provider 里各有一份实现、各有各的 workaround(只接受tool_choice: "auto"的端点、拒绝 reasoning effort 与 tools 共存的模型、丢 tool 定义的网关、Gemini thought signature、Anthropic 的 tool_result 顺序);且部分服务端解析 tool call 时不强制 tool_choice——vLLM 的 gemma4 解析器supports_required_and_named = False,跳过required与具名选择的语法,导致 reflect 被强制的后续检索在多租户负载下有 75% 直接返回 stop 信号,收尾的done调用约 1/20 把 section 的blocks当字符串送出而被拒重问。现在所有服务端都强制 response schema,于是统一成一条路径0333ad7feat(consolidation): 每条事实一条 answer entry,为小模型而建 (#6164)3411088feat(decision-model): 新增托管 provider 选项与 sign-in 命令 (#6169) — opt-in,浏览器登录经带 state 校验的 127.0.0.1 回调,key 以 0600 存本地;尚未写进文档或--helpc8a7b4efix(refresh): delta 编辑保留表行、移除已离开的成员、拒绝溢出的操作 (#6171)a6ee1bcfeat(recall): decision-model reranker 的实时去重开关,按请求 prune 与 dedup (#6139)0764971fix(recall): decision model 能看到每条记忆的日期;recall eval 可大规模重放冻结的 bank (#6168)120d90efix(db): 要求 asyncpg>=0.32,避免连接掉线后卡死 worker (#6107)9213dba/8210947OpenBot 集成页与 Hindsight Memory skill (#6160、#6161)ff9d223release(coding-agents): v0.8.3;c12f294说明 OpenCode 2.2 如何找到 v2 入口,把exports['.']钉在 v1 (#6170)
本轮(17:35Z → 00:30Z)新增的 commits / PRs:
4af9878feat(mcp): MCP 的 recall 也接受 rerank prune/dedup,与 HTTP API 对齐 (#6195) — 请求体接受{"query": "...", "rerank": {"prune": true, "dedup": true}};缺省时依次回落到 bank 的recall_decision_model_prune/_dedup,再回落到服务端环境变量;RerankOptions从api/http.py移到engine/response_models.py供两边共用,OpenAPI 重新生成后无差异8e8e9dcblog: OpenBot 集成与基于 MCP 的共享记忆(新增hindsight-docs/blog/2026-10-29-openbot-persistent-memory.md)- 新 issue(8 个)集中暴露插件生态与嵌入端的真实问题:#6201 openclaw 复制版把未解析的
SecretRef当成Bearer [object Object]发出,导致每次调用 401;#6196 openclaw 在 Hindsight API 不可达时把已完成的 turn 直接丢弃(“client not initialized, skipping retain”)而不是排队;#6198 openclaw 默认recallTypes: ["observation"]时,回填或导入的记忆在 consolidation 追上之前完全不可见;#6200 OpenAI-Codex 的 OAuth token 刷新后 embeddings 401,而 Codex LLM 调用正常;#6199reflect的 done() 路径崩溃(HindsightConfig缺llm_supports_max_items);#6197 llama.cpp 忽略dimensions,HINDSIGHT_API_EMBEDDINGS_OPENAI_DIMENSIONS无法缩小 Matryoshka 模型;#6202 希望给视觉模型单独设 reasoning level(HINDSIGHT_API_VLM_REASONING_EFFORT);#6203 Hermes 插件的参考实现(回应 #5375 / #5426 / #6145 / #5639 提出的 recall 控制项)
社区讨论 / 行业方向:
- What’s New in Hindsight Cloud: The API Is a Promise Now(官方博客,2026-10-27): 托管版叙事——Hindsight 到 1.0 后「API 是一个承诺」;Memlake(Rust 写的对象存储记忆引擎)已跑在大部分 Cloud 上,服务 1 亿条记忆、p99 < 100 ms、每次写入在被确认前已持久化;bank 的文档 zip 可导出也可导入(facts 重新嵌入并关联到目标 bank);reflect 展示证据并能把手册排在闲聊之上;一个 bank 可有多个名字;成员可审批 AI 客户端,访问权撤销时连接随之结束
- Hindsight — Open Source Agent Memory(OSSroster): 第三方对其定位的复述——「可自托管的记忆层,agent 可 retain 事实与经验、按语义/关键词/关系/时间 recall,并 reflect 出长期记忆」
- Ways to run Hindsight(官方文档): 三种运行方式共用同一记忆引擎(retain / recall / reflect、mental models、knowledge pages、同一套 API 与 SDK)
- 仓库 Discussions 窗口期内无新帖(最近 10 条为 2025-12 起的旧帖)。
- OpenBot Shared Agent Memory with Hindsight(官方集成页): 官方文档页——OpenBot 在本机跑一队常驻 agent(Claude、Codex、Grok、Gemini、OpenCode 等),接上 Hindsight 作为 MCP server 后,每个 agent 都能 recall 早前线程里学到的东西、并在工作时 retain 新事实
- Three AI Agents Sharing One Memory(智柴论坛): 中文社区的实测——把工作偏好告诉一个 Codex 实例,另一个实例能通过 Hindsight 取到,跨设备、跨 agent 的共享记忆已被普通用户验证
- Hindsight 共享记忆指南(CSDN): 中文教程梳理
tags/tags_match六种可见性模式与 temporal_window(排序而非硬过滤),并强调 bank 边界与访问规则仍然生效
信号观察:
- 「每个 provider 各修一遍」被换成「一条路径」:#6176 是本期最有分量的一次收敛——不是修 bug,而是把 20 份分散实现换成统一的 response schema 路径,代价是必须显式处理各家 schema 严格度差异。issue #6187 立刻反证了这个成本(Anthropic 非严格 structured output 把 per-request schema 塞进被缓存的 system block,污染 prompt cache)
- 测试基建债开始被系统性记账:单日新开 4 个 flaky-test issue——#6175(并发 append 触发 ModifyTable 错误)、#6178(两个 schedule 同时到期时全量 refresh 赢)、#6189(
test_invalid_shape_index_is_rebuilt死锁)、#6191(test_shared_document_id_folds_sync_large_batch删除 bank 数据时死锁),全部由维护者自己开 - 托管版与开源版的节奏差:博客讲的是 Memlake、1.0 承诺、zip 导入导出、reflect 证据面板;代码窗口期内的主线却是 decision-model(托管 provider + sign-in)、refresh 的 delta 语义、recall 的去重与日期可见性。「记忆的正确性」正在从架构叙事挪到可观测的字段上
- 两个 provider 形状的问题同源:#6174(Gemini thought_signature 在 OpenAI 兼容 tool call 中丢失 → Reflect HTTP 400)与 #6172(Responses-API provider 仍发 chat/completions 格式的 content part)都是「把一种 provider 的消息形状硬套到另一种上」的残留,与 #6176 试图消除的正是同一类问题
- 本轮的 8 个新 issue 里有 4 个来自第三方插件,且形状一致:插件层把「对象」当「字符串」用、把「失败」当「无事发生」用(#6201 把
SecretRef对象拼进 Authorization 头;#6196 把 retain 静默丢弃;#6198 把回填记忆在 consolidation 之前归为不可见)。MCP 接口的参数校验与失败语义,没有在第三方集成里被完整继承 - 「同一能力开两个入口」的维护成本再次显现:#6195 把
RerankOptions从api/http.py移到engine/response_models.py让 MCP 复用,OpenAPI 重新生成后无差异——这是「HTTP API 先长出来、MCP 后跟上」模式的标准补账流程
agentclientprotocol/agent-client-protocol
连接任意编辑器与任意 agent 的协议(JSON-RPC 2.0 over stdio)| 赛道:agent 互操作协议 | stars: 4539 | open issues: 29 | 默认分支: main | 最近 push: 2026-10-29T23:04:01Z | 主页: https://agentclientprotocol.com
近 51.6 天 release 重点(窗口期内无 release):
- 窗口期内无 release。最新为 Rust Crate v1.13.0 / Schema v1.27.0 / Schema v2.0.0-alpha.10(2026-10-27):v2 的 terminal size、ResourceLink.size 无符号化与未知 tool kind、DiffPatch / ToolCallPermissionSubject / Icon / cancelled 的
_meta、禁止 null request id、available commands 的类型判别、version mismatch 错误定义;v1 的 session message view 与 chunk 身份分离;v2 侧修了 nextCursor 与目录解析、非法值不清空替换列表、未知变体保留可选字段原样、elicitation schema 根类型非对象即拒绝、ToolCallLocation.line 改为 1-based、terminal exitCode 改有符号整数。 - 完整 release notes: https://github.com/agentclientprotocol/agent-client-protocol/releases/tag/schema-v2.0.0-alpha.10
其他重要 commits / PRs(按重要性挑选,本期几乎全是协议语义文档):
2bb9facfix(unstable-v2):usage_update的 cost 改为 patch 字段 (#2617) — 协议面本期唯一的字段语义变更5750db5session/resume 的 cwd 必须与 session 一致 (#2612);5fea479定义 session/list 的 cwd 匹配 (#2609)76ff0e4定义 stdio MCP 的启动环境与唯一 server 名 (#2608)26d7570prompt 的响应与 update 之间无固定顺序 (#2607);f83692c定义初始化完成前的消息 (#2606);85a4551定义 session/new 响应之前发出的 session 消息 (#2603)25c127f未声明的 prompt 内容在插入前必须拒绝 (#2601);d9a9e2e保留$/前缀并定义未知方法的处理 (#2600);fbfe296列出 v2 的封闭 union (#2599)86dd3a4指定 slash command 的名字与调用方式 (#2598);97c7381说明 Client 在 elicitation/complete 时该做什么 (#2597);0b32ae1plan_update无论 type 如何都整体替换 plan (#2596)4d54e09澄清 authMethods 的义务、terminal gating 与 auth/login 错误 (#2589);64819c7报告 subagent 工作目录 (#2593)361d1d4为已定义的 error data 增加 schema 类型 (#2605);b3ab19delicitation content 接受其它 JSON 值 (#2595)20dfb9aresume 的 mcpServers 即 Client 提供的完整集合 (#2614);6ed72bb迁移指南说明 replay 覆盖保留的历史 (#2613);ad3ce89把 v2 变更清单与迁移指南对齐 (#2615);c71b127记录按类型的 message ID 唯一性 (#2616)1f3e03d把 SpurCode(CLI/TUI orchestrator)与 SpurLab(notebook)加入 clients 列表 (#2592,kevintruong) — 本期唯一非 bot、非维护者的合并
本轮(17:35Z → 00:30Z)新增的 commits / PRs(本轮全部由 benbrandt 提交):
bf529a9feat(unstable-v2): v2 移除 JSON-RPC batching (#2625) — 跟随 MCP(2025-03-26 加、2025-06-18 删);理由是双向连接上无法区分「一批请求」与「一批响应」、数组混两者、batch 是否可在初始化完成前发送。规范改为:每条消息必须是单个 JSON-RPC 对象,发送方 MUST NOT 发数组,接收方回一个id: null的-32600a7855aadocs(rfd): 新增 v2 background work RFD (#2452) — 告诉客户端「前台工作结束后仍在跑的工作」:后台 shell / 监控 / 定时唤醒 / 后台 subagent;不新增实体,而是让 tool call 在会话 idle 后仍保持pending(尚未开始)或in_progress(运行中),tool call 可单独tool_call/cancel,state_update增加可选background列表(每次整表替换,缺省=不报,[]=无运行中)6746228/d2b1fcf/f94571d/21384d7/40fd3d6/d7b9754:迁移指南逐条落地——batch 移除属于 framing 变更、held prompt 与 cancel 的-32800、terminal size、chunked replay primer、更宽的 cancelled 权限结果be10657新实体的默认字段取协议默认值而非 Client 默认值 (#2652);b69e3d5replay ID 规则适用于所有实体类型 (#2654);51daf5c命令名后必须有边界 (#2646);a7d1a51Client 不得发送空 prompt (#2647);b0f99bcclose 与 pending prompt 对齐 (#2648)301cdc9session/resume的 cwd 必须与 session 一致 (#2640);468a71aSessionInfo.additionalDirectories不允许 null (#2638);28684aa$/cancel_request后允许正常响应 (#2636);c248248对未知或已应答的请求忽略cancel_request(#2672)e348016定义AbsolutePath语法并拒绝相对 cwd (#2629);9ae19bfsubagent 的 cwd 与additionalDirectories用 AbsolutePath (#2660);22797adMCP 的lastModified对齐 ISO 8601 (#2661);521c328elicitation 的requestedSchema必须有 type 与 properties (#2645);effce04currency 允许非 ISO 单位(如 credits)(#2621)c4aa60d允许在第一个其它请求之前重复initialize,以最后一次成功为准 (#2639);0cf6fc1恢复终端鉴权重连的成功门槛 (#2623);3e332d3URL elicitation 的用户检查限定为已认证用户 (#2641);7fd3daesession 命名请求限定为其 owner (#2642)9d4c7d5/97ff714/9e5e0dd/bf529a9:session update 用 active 而非 attached;前台工作结束时 Agent 收尾 tool call;end-turn 的 Usage 字段限定在已完成的工作;v2 scope 的 transports8eba6ef/41afcef:registry agents 更新(bot)与降低 registry 同步噪声
社区讨论 / 行业方向:
- v2 Required Session Methods(RFD): v2 提案——声明 session capability 的 Agent 必须支持
session/list、session/resume、session/close三个核心生命周期方法 - v2 Session Resume Replay(RFD): v2 提案——把
session/load与session/resume统一为一个session/resume;需要 replay 的 Client 可设replayFrom游标,省略则拿当前状态 - Protocol Specification — v2 (Draft)(DeepWiki): 第三方把 v2 定性为「面向一致性与核心交互循环简化的重设计」
- Agent Client Protocol: AI 编程时代的 LSP(博客园): 中文社区把 ACP 类比为「AI 编程时代的 LSP——编辑器与编码 Agent 的标准化桥接协议」,并提到远程传输(Streamable HTTP / WebSocket)RFD 已在开发中,
initialize将返回Acp-Connection-Id - 仓库 Discussions 窗口期内无新帖(最近 10 条为 2025-08 起的旧帖)。
- Migrating from agent-client-protocol 1.x to 2.0(Rust SDK 迁移指南): 官方 Rust SDK 侧的迁移说明——v2 让 JSON-RPC notification 语义变显式,改了进程内传输边界以保证帧不被切碎,并区分「回复请求」与「路由响应」
- JSON-RPC batch handling across transports(AgentFence 文档): 第三方代理厂商记录 batch 处理策略(默认 reject-by-default)与迁移影响,可作 ACP 移除 batching 的外部参照
- ACP 协议深度解析:v1/v2 架构、迁移与安全(QubitTool): 中文技术文把 ACP 与 LSP 类比(LSP 标准化有界的语言智能功能,ACP 承载开放式会话、流式输出、计划、工具、权限、diff、终端、用量与取消),并强调 ACP 与 MCP 的分工不同
信号观察:
- 合并速度回升但仍是单人产出:本期 29 个合并 PR(上一期 17),其中 28 个由 benbrandt 提交,且全部是
docs(protocol)/docs(schema)/docs(rfd)语义定义;窗口内新 issue 0 个、新讨论 0 个 - v2 的收敛方式可见:RFD(提案)→ schema 变更 → 迁移指南三件在同一批提交里对齐(#2613、#2615),说明 v2 的变更正在被当作「有迁移路径的协议升级」而不是「草稿」
- 社区侧的沉默仍是最大结构性风险:31 个 open issue 是历史累计,本期没有新 issue 进来,也没有外部实现者提交协议语义改动(唯一外部 PR 是往 registry 加名字)。协议规范的推进速度与使用者的反馈之间,仍没有形成回路
- 本轮的 59 个合并 PR 比上一轮又翻了一倍(29 → 59),且 100% 来自 benbrandt:内容包括 v2 移除 batching、background work RFD、以及一整批迁移指南条目。协议本身在加速,但「谁来用」这条线依然空白
- 「移除 batching」是一次跟随式决策,而非独立设计:PR 正文直接引用 MCP 的时间线(2025-03-26 加、2025-06-18 删)作为理由。ACP v2 在多处采用「跟随 MCP、但收紧语义」的路线:收紧到接收方必须用单个
-32600拒绝数组 - background work RFD 选择了「不加新实体」:复用 tool call 与 subagent 实体,靠
pending/in_progress语义拉宽 +state_update.background列表 +tool_call/cancel表达。这与 opencode 本轮的SessionInfo.time.busy、hindsight 的 rerank prune/dedup 是同一个思路——用已有字段表达新语义,而不是新增一套结构
yxc023/yxc023.github.io
个人博客 / 报告站(承载本调研的公开版本)| stars: 1 | open issues: 27 | 默认分支: master | 最近 push: 2026-10-29T00:49:08Z
近 51.6 天 release 重点:
- 窗口期内无 release。
其他重要 commits / PRs:
1b7a56aauto(reports): 同步 daily-research 2026-10-29(2026-10-29T00:49Z)——本期唯一提交,为上一期报告的自动同步- 其余 4 个 open PR 均为 dependabot 的依赖升级(astro、sharp、devalue),全部未合并
- 本轮(17:35Z → 00:30Z)无新提交——本报告自身的同步要等本次部署步骤完成
社区讨论 / 行业方向:
- 无(窗口期内无新讨论、无外部报道)
信号观察:
- 该仓库是本调研的发布载体,本期无独立信号
跨项目观察
-
「实验 → 默认」的节奏明显加快,而发布说明不再是最终事实。 opencode v2.2.1 的 release notes 写
experimental.image_generate需手动开启,21 小时后的 v2.2.2 就把它改成默认开启并把开关从配置挪到权限规则;v2.2.2 自己也把 v2.2.1 的内容重写进 Highlights(“Image Generation by Default”)。当一个项目一天出两版,release notes 只能当作「某一刻的实现快照」读。 -
「不阻塞会话」从工程细节升为产品契约,并且三家给出了三种粒度。 opencode 在同一晚提出 steer 即转后台(#60367)与工具 30 秒自动转后台(#60375),并用
SessionInfo.time.busy暴露“会话在忙什么”;ACP 用 background work RFD(#2452)把同一件事写进协议(tool call 可在 idle 后继续、state_update.background列表、可单独 cancel);pi 则反向处理——长会话的性能债(#11570 V8 OOM、#11567 全量扫描)仍在被用户量化投诉。opencode 在往前跑,pi 在补陈账,ACP 在把追不上的语义写成规范。 -
「同一能力开两个入口」的维护成本,本周在三个仓库重复出现。 hindsight 的 MCP
recall补上 HTTP API 的rerank prune/dedup(#6195,RerankOptions从api/http.py搬到engine/response_models.py);opencode 的 schedule 同时服务 CLI、agent 工具与 SDK(#59457、#60137、#60140);ACP 的同一语义同时要写进 schema、RFD 与迁移指南(#2613、#2615、#2620)。“多写一份”的成本不会消失,只会从代码转移到文档与参数映射上。 -
社区反馈的形状继续分化,而且本轮出现一个值得注意的反差。 opencode 窗口内新增 32 个 issue、关闭 91 个,关闭速度远快于新增速度,但新增内容里开始出现“要内置 free-only 模型过滤”这种产品诉求型 issue(#60392、#60383),而不是单纯的报错;ACP 合并 PR 翻倍到 59、仍是零外部反馈;hindsight 的 8 个新 issue 里有 4 个来自第三方插件,全部是集成层的语义错误。三家的社区信号分别是“用户在提要求”“用户没出现”“用户在别人的集成里报错”。
-
边界项目开始暴露边界问题。 hindsight 的插件生态问题(SecretRef 被当字符串发出 #6201、API 不可达时 retain 被丢弃 #6196、默认 recallTypes 下导入记忆不可见 #6198、Codex OAuth 刷新后 embeddings 401 #6200)都不是核心引擎的 bug,而是**“接口的语义有没有被完整继承”**的问题;pi 的 Windows / WSL 坑(#11588、#11592、#11597)同理。当一个项目从库变成产品,bug 会从“函数不对”变成“边界不对”。
-
“只复用、不新增”正在成为共同的设计偏好。 ACP 的 background work 拒绝新增实体;hindsight 的 rerank 参数从 HTTP 层搬进共享的 response model;opencode 的
SessionInfo.time.busy、hindsight 的RerankOptions都是把新语义压进已有字段或已有类型。三家都选择了“先压扁语义,再扩结构”。
元信息
- 报告生成时间: 2026-10-30T00:30:00Z
- 基准时间: 2026-09-08T09:23:29Z(按 spec 读取自上次报告
reports/latest.md的基准时间:字段,自 2026-09-08 起连续 20 期未变) - 扫描窗口: 2026-09-08T09:23:29Z → 2026-10-30T00:30:00Z(约 51.6 天);本轮新增内容全部落在 2026-10-29T17:35:00Z 之后的约 7 小时(同日 01:26 的上一轮已覆盖至 2026-10-29T17:35Z,本文件为两轮合并后的完整版)
- 数据源: GitHub API(gh CLI + Search API)+ mmx web search + npm registry(registry.npmjs.org)+ 仓库内 CHANGELOG / blog 目录校验
- API rate limit 剩余: 见
tmp/2026-10-30/_rate_limit_remaining(core 4927 / 5000;Search API 单独限流,计数请求已分批 sleep) - 抓取结果: 6 / 6 仓库 × 4 endpoint 全部成功(opencode 的 Discussions endpoint 返回「Discussions are disabled for this repo」,已跳过);本轮增量统计口径为
created:>2026-10-29T17:35:00Z/merged:>2026-10-29T17:35:00Z的 Search API 计数(opencode:60 新 PR / 32 合并 PR / 32 新 issue / 91 关闭 issue;pi:8 / 6 / 7;pi-web:0 / 0 / 0;hindsight:2 / 2 / 8;ACP:56 / 59 / 0;blog:0 / 0 / 0);本轮新增 release 为 opencode v2.2.2 与 process-daemon-v0.4.0(npm@opencode/clilatest 已是 2.2.2、@opencode/pty已是 0.4.0,而opencode-ai仍停在 1.19.5,双发布线未收敛);pi / pi-web / hindsight / ACP 本轮无新 release
评论