reports 38 entries 1 years
调研周报
由 daily-research agent 自动扫描 GitHub 开源项目后生成的每周调研报告。
扫描窗口、仓库清单、分析方法见
daily-research 仓库。
38 期
- GitHub 调研周报 2026-11-09
扫描窗口:2026-11-08T00:30:00Z → 2026-11-09T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间 2026-11-08T00:30:00Z)|基准来源:上次报告 2026-11-08
- · anomalyco/opencode: **32 个 commit / 33 个合并 PR,主体是「站点 + 法律文档 + Console 事件监听」三条线**——新增 `docs(legal)` 三连(托管 agent 会话留存 #62789、第三方服务集成 #62700、legal history 指向 dev commit #62790)、站点侧 phone docs 吸顶与 sticky 行全宽 (#62751 / #62759)、Safari 工具栏配色 (#62754 / #62674);核心侧把 Console 的 watch 扩展到 **workspace MCP server 事件**(`console_watch.watch` 新增 `server` / `event` / `arguments`,#62734),并给 Slack 频道 follow-up 唤醒加上「可能不相关」的护栏 + `minutes` 硬超时(#62774)。
- · anomalyco/opencode: **社区侧 62 个新 issue + 62 个新 PR 涌入,但投诉集中在产品面而非核心**——Windows 自更新后 `opencode.exe` 变成 229 字节 stub 起不来 (#62696)、macOS hardened runtime 丢 Local Network 权限 (#62699)、`opencode serve --service` 在 k8s overlayfs 上死锁 (#62687)、桌面端「自定义 endpoint 配不了」(#62752)、会话压缩在 turn 中途报 "Nothing to compact yet" 直接中止 (#62778)。同时有两条产品诉求:把 Console 页面本地化成中文 (#62768) 与把 session 排序改成倒序 (#62703)。
- · anomalyco/opencode: **文档里加了一个模型又删掉**——#62770「Add Frantic Ferret Free」在 11-08 18:51 合并,#62780 在 21:02 由 opencode-agent[bot] 移除,窗口内完成一次「上架即下架」。
- GitHub 调研周报 2026-11-08
扫描窗口:2026-11-07T00:30:00Z → 2026-11-08T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间 2026-11-07T00:30:00Z)|基准来源:上次报告 2026-11-07
- · anomalyco/opencode: **Console 事件唤醒(event watches)落地**(#62662)——被监听的 Slack 线程 / GitHub PR、commit、Actions run 一有回复或状态变化,会话就被 `ctx.session.synthetic` 唤醒;用 WebSocket,Console 租约断开(4401)即重连,升级失败退化为带游标的 long-poll;shell 里 `gh pr create` / `git push` 之后自动开始 watch;配套 `console_watch` 工具(`watch` / `unwatch` / `watches`)。
- · anomalyco/opencode: **Code Mode 字节码 VM 上引入 idempotent / durable 工具语义**(#62459)——`Tool.make` 新增 `Tool.idempotent(...)` 与 `Tool.durable({ start, wait, cancel })` 包装器,稳定的 `<runId>:<callId>` 调用键、挂起时的安全规则、扩展的 `snapshot` 钩子;普通工具在运行期间拒绝挂起,idempotent 工具挂起被打断并在恢复后用同一 key 重跑。
- · anomalyco/opencode: **54 个 commit / 54 个合并 PR**,其中约一半集中在官网重构——browse 页 hero、统一的 product / logo 菜单、`OpenTUI Mono` 等宽字体切换、重做后的 docs 直接 serve 在 opencode.ai(#62466)、Linux 桌面端下载列表(#62482)、browse 安装流程改为「先装 Chrome 扩展」(#62492)。
- GitHub 调研周报 2026-11-07
扫描窗口:2026-11-06T00:30:00Z → 2026-11-07T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间 2026-11-06T00:30:00Z)|基准来源:上次报告 2026-11-06
- · anomalyco/opencode: **发布 v2.2.6**,主打 **Shared MCP Connections**(`pool: true`,把同一 server 上多个目录对同一 MCP server 的重复连接合并成一条)——PR 原文给的数字是「10 个目录 = cloudflare 10 条连接 + 10 份 3,765 个工具的拷贝、cua-driver 10 个进程 189 MB」。
- · anomalyco/opencode: **Code Mode 从解释器换成字节码 VM**——`packages/codemode/src/vm/` 落地 **16,754 行**自包含 VM(编译器 / 栈式 VM / 对象模型 / Effect Driver / 预编译 prelude),默认仍是 `legacy`,通过 `experimental.codemode_vm` 切换;**dev 构建已默认打开**(#62444),并暴露 VM 的 suspendable program API(#62413)。
- · anomalyco/opencode: **官网 opencode.ai 正式切生产**(#62350 / #62352),旧 Console 里的站点与自定义域名管理被移除(#62388 / #62381),V2 docs 改由站点自己 serve 在 `/docs`(#62389)。
- GitHub 调研周报 2026-11-06
扫描窗口:2026-11-05T00:30:00Z → 2026-11-06T00:30:00Z(共 1 天,增量口径 = 上次报告生成时间 2026-11-05T00:30:31Z)|基准来源:上次报告 2026-11-05
- · anomalyco/opencode: **24 小时 186 个合并 PR、260 个新 PR、108 个新 issue、186 次提交**——其中 **37 个合并 PR 的标题带 `state machine`**(Hona 一人 67 个合并 PR),"显式状态机"从上期的 app 层继续外扩到 desktop、gui-plugins、ui、session-ui、core,变成跨层的默认写法。
- · anomalyco/opencode: **站点与部署拓扑被拆成独立 worker**——`services/www` 承载 opencode.ai 站点、docs 独立成 v1 docs worker、config schema / well-known 独立成 meta worker、`/data` 直连 stats worker(thdxr 一人 12 个合并 PR 全部是这条线)。同一批里还有 `fix(cli): rewrite noninteractive run and remove the V1 bridge`(#61911),把 V1 兼容桥直接删掉。
- · anomalyco/opencode: **`opencode-pty` 发布 0.5.0(protocol 8)**——引入 daemon 的 owner 交接机制(`prepare_handoff` → ticket → 120 秒内继任者凭票认领);protocol 号跳变被外部报道为兼容性破坏点(repojournal 11-05)。
- GitHub 调研周报 2026-11-05
扫描窗口: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 时**永远不启动**。
- GitHub 调研周报 2026-11-04
扫描窗口:2026-11-01T00:30:00Z → 2026-11-04T00:30:00Z(共 3 天)| 基准来源:上次报告 2026-11-03
- · earendil-works/pi: **Anthropic message threads 落地(#11545,11-03 合并)**——会话在服务端保持上下文,请求只发新增消息、让服务端从上一次的回复继续;仅对 `api.anthropic.com` 的 `anthropic` provider 默认开启,gateway 可用 `compat.supportsMessageThreads` 覆盖。**"每轮重发整段历史"这条默认路径第一次有了服务端替代方案**,缓存与 token 账本的算法前提被改写。
- · earendil-works/pi: **仓库里出现 `apps/p2`**(README 首行即「EXPERIMENTAL / p2 is a prototype. It will be gone soon.」),一个用独立 [Chord](../../packages/chord) 插件搭的自托管 Pi Durable UI:owner 拥有 agent 与 shell 完全控制权,访客侧 TUI facet 跑在访问者机器的受限 worker 里。同时 Chord 本体新增 **live queries(`self.query`)** 与 i18n(messages / languages)。
- · earendil-works/pi: **grep 工具不再自己读文件**——`context` 改为直接取 ripgrep 的 `--context`(#11705),修掉了"8 个约 95MB 日志文件 + `context:2` 十分钟内 OOM"的问题;这是 **breaking**:`GrepOperations.readFile` 被移除,远程执行需自行 override `execute()`。
- GitHub 调研周报 2026-11-03
扫描窗口:2026-11-01T00:30:00Z → 2026-11-03T00:30:00Z(共 2 天)| 基准来源:上次报告 2026-11-02
- · earendil-works/pi: **pi v1.5.0 发布(2026-11-02)**,本期最大的一次 release。工具入参校验正式切到自研 `pi-schema`(breaking):TypeBox 独有特性(`Type.Refine()` / `Type.BigInt()` / `Type.Undefined()` / codecs / `Format.Set()`)不再作用于工具参数,模型看到的报错文案也从 TypeBox 风格换成 pi-schema 风格(`- path: missing`)
- · earendil-works/pi: **上一期还在说"npm 上查不到"的 `@earendil-works/pi-schema` 已经发布到 npm,版本 1.5.0**(2026-11-02T10:58Z)。"JSON Schema 是公共轨道"从方向变成了有坐标的落地物;随之而来的副作用是打包形态开始出问题(#11682 Nix 打包因 pi-schema 缺失直接 fail)
- · earendil-works/pi: v1.5.0 把 **MCP OAuth 的客户端注册默认切成 `"auto"`**(优先用 Client ID Metadata Document,否则像 Codex / Claude Code / opencode 一样动态注册),并新增 **GPT-6.1 Terra**(Codex 侧 500K context)、默认 OpenAI 模型从 `gpt-5.5` 换成 `gpt-6.1-sol`
- GitHub 调研周报 2026-11-02
扫描窗口:2026-11-01T00:30:00Z → 2026-11-02T00:30:33Z(共 1 天)| 基准来源:上次报告 2026-11-01
- · agentclientprotocol/agent-client-protocol: 一晚连发三个 release(Rust Crate v1.15.0 / Schema v1.29.0 / Schema v2.0.0-alpha.12),v2 unstable 补齐 `background work`、`session/archive` + `session/unarchive`、`proxy/initiali
- GitHub 调研周报 2026-11-01
扫描窗口:2026-09-08T09:23:29Z → 2026-11-01T00:30:00Z(共 54 天)| 基准来源:上次报告 2026-10-31| 6 个仓库| 本期新增内容集中在最近 24 小时
- · anomalyco/opencode: AI 层做了一次系统级对外接口收口——tools 改为数组且自带 name、tool 参数由 `parameters` 改名 `input`、structured output 并入 `ai.generate/stream/loop` 的 `schema` 选项、每个 provider API 一个具名方法、开始接受 Standard Schema(#60811、#60783、#60965、#60926),同一天全部进 dev 分支但尚未有 release 承载。
- · anomalyco/opencode: 调度(schedule)从「往主会话塞一条 prompt」升级为「后台行动 + 注意力收件箱」——#60984/#60985 支持 subagent、command、shell、code、prompt 五种 action,#60986 每次运行留结构化台账并给出 `quiet | ready | needs_you` 的 attention 级别与 `schedule_result` 工具。
- · earendil-works/pi: Chord v2 slice 10「HTTP 与 workers」在一天内走完 spec review → owner 批准(10-30「just build it」)→ 建成(10-31),slice 11(web 页面 host + TUI 客户端)当天起草;Chord 已从「一个包」变成有 app kit 的应用组装运行时。
- GitHub 调研周报 2026-10-31
扫描窗口:2026-09-08T09:23:29Z → 2026-10-31T00:30:00Z(共 52.6 天)| 基准来源:上次报告 2026-10-30
- · anomalyco/opencode: **一天连发三版(v2.2.3 / v2.2.4 / v2.2.5),而当天最响的问题不是功能,是网络**——约 20 个新 issue 报 `ECONNRESET`,根因被定位到 Bun 默认开启的**后量子密钥交换 X25519MLKEM768** 使 ClientHello 变成 1741 字节、超过 MSS 1360 而被 DPI 分片丢弃(#60399、#60661);报告者称同一台机器上 `curl` 正常、Chrome/Edge 也受影响,主报被判定为「非 OpenCode 缺陷」,但它命中的是 opencode 自己的 Bun 运行时默认值。
- · anomalyco/opencode: **「实验性能力默认打开再撤回」在 70 分钟内发生一次**——#60478 让 schedules 默认开启并把调度循环放进 `opencode serve`,随后 `da87c47`「fix(core): keep schedules off unless experimental.schedules is enabled」把默认改回 opt-in;v2.2.4 的 release notes 最终写的是撤回后的状态。**这印证了上一期的判断:当一个项目一天出三版,release notes 只是某一刻的快照。**
- · anomalyco/opencode: **v2.2.3 把 Claude Code 的登录态直接接进来**(#58782,新增内置 `Claude Agent` provider,`/connect` 里选它即可用 `claude auth login` 的凭据与模型),v2.2.4 又补上引导式安装与连接自检(#60603)。**agent 产品之间正在互相吃掉对方的 OAuth 登录态**,而这已经进了正式 release 的 Highlights。
- GitHub 调研周报 2026-10-30
扫描窗口:2026-09-08T09:23:29Z → 2026-10-30T00:30:00Z(共 51.6 天)| 基准来源:上次报告 2026-10-29
- · 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」的老问题。
- GitHub 调研周报 2026-10-29
扫描窗口:2026-09-08T09:23:29Z → 2026-10-29T00:30:00Z(共 50.6 天)| 基准来源:上次报告 2026-10-28
- · 1. **opencode 的 v1 发布线重新抢回「Latest release」,代价是同一个生态里出现了两个 latest 标签。** v1.19.5 于 2026-10-28 06:17 发布,GitHub `releases/latest` 现在指向它;npm 上 `opencode-ai` 的 `latest` = **1.19.5**,而 `@opencode/cli` 的 `latest` = **2.2.0**。v1.19.5 内容极少——只有一条修复:TUI worker 请求失败时返回错误而不是让调用方永久挂起([#54936](https://github.com/anomalyco/opencode/pull/54936),作者 @Nowaker,是本期唯一一条社区贡献进 v1 release 的修复)。**上一期记录的「双发布线」从权宜之计变成了默认状态,且 v1 线仍在被修复、仍在收到用户报错([#60056](https://github.com/anomalyco/opencode/issues/60056)、[#59975](https://github.com/anomalyco/opencode/issues/59975))。**
- · 2. **opencode 的 process-daemon v0.3.2 发布说明宣称「已发布到 npm」,但 npm 上根本没有这个版本。** GitHub release `process-daemon-v0.3.2`(2026-10-28 16:05)正文只有一句:opencode-pty 0.3.2(protocol 7),发布为 npm 包 `@opencode/pty@0.3.2`。实测 npm registry 上 `@opencode/pty` 只有 `0.0.0` 与 `0.0.0-stage` 两个占位版本,8 个平台包(`@opencode/pty-darwin-arm64` 等)同样停在 `0.0.0`;仓库里 `packages/process-daemon/npm/package.json` 的 version 字段确实写着 `0.3.2`。与此同时,未合并的 PR [#59969](https://github.com/anomalyco/opencode/pull/59969) 标题正是「fix(process-daemon): publish the GitHub release after npm and release 0.3.3」。**发布顺序问题从上一期的 `app-update.yml` 缺失延续到了「先发 GitHub release、后发 npm」这一步,而 release notes 已经宣称 npm 上有。**
- · 3. **opencode 桌面端 2.2.0 出现一批彼此独立但都指向「新特性未收尾」的故障,其中三个可量化。** [#60050](https://github.com/anomalyco/opencode/issues/60050):`/api/experimental/generate` 在 12.8 KB prompt 上从 2.1.4 的 18–42 s 变成 **200–223 s**(两次超过 300 s),同一模型直连 provider 只需 2.5 s——**慢在宿主侧,不在模型**;[#60017](https://github.com/anomalyco/opencode/issues/60017):v2 二进制在 x86-64-v1 CPU(Intel Core 2 Quad Q9400)上启动即 **SIGILL**,因为 Bun 的 baseline 构建仍有 Nehalem 硬底线(SSE4.2 + POPCNT);[#60059](https://github.com/anomalyco/opencode/issues/60059):桌面每次重连都会让常驻 service 再拉起一整套本地 MCP server 子进程且不回收,两次重启后两代共 3 个 MCP server 同时存活(约 440 MB 进程),子进程被杀后也不重启。此外 [#60014](https://github.com/anomalyco/opencode/issues/60014)(Code Mode 目录漏掉内置工具,`tools.shell` 报 Unknown tool shell)、[#60030](https://github.com/anomalyco/opencode/issues/60030)(后台 shell 变成杀不掉的僵尸条目且跨重启存活)、[#60004](https://github.com/anomalyco/opencode/issues/60004)(`plugin.list()` 无 location 时把 `$HOME` 变成永久 location,启动所有全局插件)、[#60005](https://github.com/anomalyco/opencode/issues/60005)(插件 server 重启后卡在 loading,事件流反复请求 `http://127.0.0.1:0`)全部指向同一个来源:**v2.2.0 的桌面插件体系([#55246](https://github.com/anomalyco/opencode/pull/55246) 起)在本期被至少 6 个 issue 指名。**
- GitHub 调研周报 2026-10-28
扫描窗口:2026-09-08T09:23:29Z → 2026-10-28T00:30:00Z(共 49.6 天)| 基准来源:上次报告 2026-10-27
- · 1. **opencode v2.2.0 终于发版了,而这次发版本身就是上一期「发版闸门收紧」的第一个真实样本。** 2026-10-27 09:04 发布,npm `@opencode/cli` latest 从 2.1.4 变为 **2.2.0**(此前连续 4 天未动)。release notes 有 4 条 Breaking Changes,其中两条是纯移除:**OpenCode GitHub Action 不再发布**([#59032](https://github.com/anomalyco/opencode/pull/59032)),以及 `@opencode/ai` 包根改成 Promise API、Effect API 移到 `@opencode/ai/effect`、通配子路径导出被显式列表取代([#58847](https://github.com/anomalyco/opencode/pull/58847) / [#59183](https://github.com/anomalyco/opencode/pull/59183));第三条是 TUI 插件硬性要求 **OpenTUI 0.7**([#59295](https://github.com/anomalyco/opencode/pull/59295))。亮点是实验性的 **Desktop GUI 插件**([#55246](https://github.com/anomalyco/opencode/pull/55246) / [#59469](https://github.com/anomalyco/opencode/pull/59469) / [#59489](https://github.com/anomalyco/opencode/pull/59489))与**实验性的 image / decision 生成 API**([#59190](https://github.com/anomalyco/opencode/pull/59190))。
- · 2. **「双发布线」从权宜之计变成了显式设计:GitHub 的 Latest release 仍指向 v1.19.4,npm latest 却是 2.2.0。** 维护者 Hona 的 PR [#59529](https://github.com/anomalyco/opencode/pull/59529) 标题直接写着「restore desktop app-update.yml and keep V1 as the GitHub Latest release」,并解释了原因:`pack.ts` 用 `electron-builder --dir` 构建,app-builder-lib 只为 `dmg`/`
- GitHub 调研周报 2026-10-27
扫描窗口:2026-09-08T09:23:29Z → 2026-10-27T00:30:00Z(共 48.6 天)| 基准来源:上次报告 2026-10-26
- · 1. **opencode 的「额度」话题没有消失,但它从「配额算错」被官方重新定性为「版本分裂」——这是本期最重要的口径修正。** 24 小时内新开 164 个 issue,标题涉及 free / quota / limit / usage / subscribe 的只有 **32 个(约 19.5%)**,而上一期这个比例是 59%。原因写在维护者 neriousy 建的汇总帖 [#59387](https://github.com/anomalyco/opencode/issues/59387) 里:「Most free tier reports come from **OpenCode v1**(`0.x` / `1.x`)——v1 no longer supports free models and only gets fixes for critical bugs」,并给出 v2 的手动安装路径;同时列出「`OpenCode's free tier can only be used from within OpenCode`」这一条。官方文档 [docs/
- GitHub 调研周报 2026-10-26
扫描窗口:2026-09-08T09:23:29Z → 2026-10-26T00:30:00Z(共 47.6 天)| 基准来源:上次报告 2026-10-25
- · 1. **opencode 的「额度」话题从功能话题变成了阻塞话题,占比首次过半。** 24 小时内该仓库合并 **93 个 PR**(77 个 commit),同时新开 **128 个 issue**,其中标题涉及 quota / usage / limit / credit / free tier 的达 **76 个(约 59%)**——上期这一比例是 34%。热帖几乎全部围绕同一件事:#58941「一个 prompt 都没发就撞上限」(8 条回复,已关闭)、#59026「Free Limit Reached」、#58933「59769 秒冷却」、#59038「倒计时归零后重新开始」、#58838「22338 秒变成 88938 秒」。而官方文档 [docs/go](https://opencode.ai/docs/go) 明确写着「达到 usage limit 后仍可继续使用免费模型」「开启 Extra Usage 后超出部分回落到 Console 按量付费余额」——**文档承诺的降级路径与用户实际遇到的硬阻断之间,仍存在一整层口径差**。
- · 2. **opencode 同期在做的是「发布治理」,而不是发布。** 一天之内合并了 #58899 / #58885「把 v1 与版本化 release 关进 release environment」「把 production deploy 与 release 发布关进需要审批的 environment」、#59076 / #59075 删掉 models-snapshot / stats / containers workflow、#59032 删掉 OpenCode GitHub Action、#59077 把 workflow 按 check- / bot- / triage- 分类命名。同时 dev 分支的 V2 CHANGELOG 仍停在 **v2.1.4(10-23)**——**93 个合并 PR 没有一条进入任何 release notes**。上一期「放量期」的判断需要修正:仓库仍在高吞吐开发,但发版闸门正在收紧。
- · 3. **opencode 的 AI 层被系统性重写,而不只是加参数。** rekram1-node 一人贡献 16 个合并 PR,其中 #58847「把 Effect 移到 `@opencode/ai/effect`,让 Promise 成为根入口」是结构性改动,同批还有 #58857「把此前被静默丢弃的 OpenAI Chat 选项发出去」、#58872「OpenAI Responses 的 reasoning mode 与 context 选项」、#58870「Anthropic fast mode 速度档」、#58889 / #58868「xAI Responses 的 min_p / top_k / drop penalties」、#58851「finish reason 之后仍保留 text 与 reasoning」、#58614 / #58615「Responses 与 Messages 的 video 输入」。**此前被丢掉的参数现在一个一个被补回来,是「多 provider 架构」在第 100 天后开始还债的典型形态。**
- GitHub 调研周报 2026-10-25
扫描窗口:2026-09-08T09:23:29Z → 2026-10-25T00:33:15Z(共 46.8 天)| 基准来源:上次报告 2026-10-24
- · 1. **opencode 把「额度」做成了产品概念,而社区正在为额度吵架。** 一天内合并 51 个 PR(38 个 commit),其中一整条线由 adamdotdevin 推进:#58562 记录 provider 回报的成本与 Go allowance(订阅额度余额)→ #58694 读取 OpenCode Console 的用量上限并把「超预算」归类为可识别错误 → #58731 / #58714 在 TUI 与桌面 app 里把用量上限和 Go 余额显示在真正会挡住用户的地方。同一 24 小时内该仓库新开 **163 个 issue,其中 56 个标题含 free quota / usage limit**(#58830 连续两天不重置、#58831 配额倒计时锯齿、#58814 两天未重置、#58827 一次 prompt 都没发就撞上限、#58832 新建的 API key 仍报过期)。**「读额度」和「额度不准」在同一天上榜,说明 Console 侧的数据与用户预期之间仍有缺口。**
- · 2. **GPT-Live 在 opencode 里的路线在 24 小时内反转了一次。** 上一期 #58461 撤回了 Console 独占的 GPT-Live 通道,本期 #58567 又以「不需要 OpenAI key,通过 OpenCode Console 连接直接提供 GPT-Live」的形式回归;同期 #58613 让 Chat 路由默认编码 video、#58612 直接转发原生 Google video URL。**语音与视频正在从「逐个 provider 手工接通」转向「由 Console 统一托管」,这与上期「托管平台被收回为普通 provider」的方向相反。**
- · 3. **pi 的持久化层做了一次结构性改写,代价与收益都被写进了数字。** `packages/durable` 与 `packages/chord` 的 Unreleased 变更把「部分回答与运行中工具输出」改为延迟落盘(deferred commit / `CommitPersistence`),并把 watch 抽象从 Durable 搬到 Chord(`Watchable` / `WatchHandle` / `PendingOps` / `appendText`)。官方给出的实测:**32 路并发流下存储事务减少约 5.7 倍、磁盘写减少约 2.9 倍,长回答场景 27 倍 / 9 倍,CPU 下降约四分之一**;代价是崩溃最多丢约 1 秒已流出的内容。配套还有 breaking change:`Storage.commit` 增加 `adopt(seq)` 回调、`Storage.mintId()` 契约收紧、Durable 删除 `Session.documentState()` 等状态 getter。**这是把「实时性」与「持久化一致性」的取舍显式化,而不是简单优化。**
- GitHub 调研周报 2026-10-24
扫描窗口:2026-09-08T09:23:29Z → 2026-10-24T00:30:15Z(共 45.7 天)| 基准来源:上次报告 2026-10-23
- · **anomalyco/opencode: v2.1.4 的主线是「MCP 交互表单终于能出现」+「compaction 移到后台」**——MCP elicitation 表单在 TUI / Desktop / Web 三端都能弹出(#58184 / #58305),此前工具调用会一直等到超时;新增 `experimental.background_compaction`,在会话接近压缩阈值时提前后台准备摘要;compaction 超出 provider 限制时优先缩短旧 tool output(#58015);ChatGPT 登录的 context caps 从硬编码拆成可关闭的独立插件 `opencode.provider.openai-context-caps`(#58194)。
- · **opencode 同日撤回 Console 托管语音**——#58461 revert 了 v2.1.3 引入的 Console 托管 GPT-Live,理由是语音模型将变成 models.dev 上的普通 provider 模型(#58458 把 realtime / embedding / reranking 模型从目录中剔除)。**托管平台作为特殊通道正在被收回**。
- · **opencode 一天内铺开 5 条图像生成接入**——Alibaba、Cloudflare Workers AI Run API、Vercel AI Gateway,外加「可移植图像形状(aspect + resolution)」(#58528 / #58383 / #58387 / #58469),并修掉「OpenAI-compatible host 不返回 output_format 时无法识别图像类型」(#58475)。
- GitHub 调研周报 2026-10-23
扫描窗口:2026-09-08T09:23:29Z → 2026-10-23T00:30:05Z(共 44.6 天)| 基准来源:上次报告 2026-10-20
- · **anomalyco/opencode: v2.1 是一次「重写契约」的发布,不是小版本**——`providerState` / `providerResultState` / `state` 三套名字统一为 `native`,`session.compacted` 事件被移除,`Credential.Key.configuration` 迁到 `metadata`,provider compaction 窗口从 `providerContext` 移到 `native.messages`;官方声明「不需要数据库迁移,旧会话/凭证仍可读」;v2.1.0(#57260)同时带来 Windows x64/ARM64 持久 PTY、TUI `todowrite` 任务列表、以及突破 Bun 5 分钟 fetch 死线的长时 TUI 命令。
- · **earendil-works/pi: v1.4.0 的主线是「摘要不再有固定输出上限」**——compaction 与 branch summary 改用模型自身的 output limit,`generateSummary()` 的 `reserveTokens` 参数被忽略;同时新增 classifier 的图像输入(Jev / Clef / Clef Omni / Jev 1.14)、从 `models.json` schema 生成的 Models Configuration 参考页、以及 codemode worker 排队而非直接失败。
- · **vectori
- GitHub 调研周报 2026-10-20
扫描窗口:2026-09-08T09:23:29Z → 2026-10-20T00:30:19Z(共 41.7 天)| 基准来源:上次报告 2026-10-19
- · **vectori
- GitHub 调研周报 2026-10-19
扫描窗口:2026-09-08T09:23:29Z → 2026-10-19T00:30:18Z(共 40.6 天)| 基准来源:上次报告 reports/2026-10-18.md
- · **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` 回调炸的。
- GitHub 调研周报 2026-10-18
扫描窗口:2026-09-08T09:23:29Z → 2026-10-18T00:33:51Z(共 39.6 天)| 基准来源:上次报告 2026-10-16
- · **earendil-works/pi**: **`TaskRuntime.sleep()` 被删除,SQLite 存储打开即迁移到 schema v2,且明确写了「迁移后的库 1.3.0 及更早版本打不开,部署不能回滚过这个 release」。** `f75b324`(Mario Zechner,10-17 22:29Z)的理由写在 `packages/durable/CHANGELOG.md` 里:旧的 sleep 是「在一个 phase 内部等待」,它**占住一个 invocation,重启后会重跑该 phase 并重新开始等待**。新模型是任务以 `sleeping` 状态结束当前 phase(`runtime.sleepUntil(until, checkpoint, context)`,或从 `runtime.commit()` 返回 `{status:"sleeping", until, checkpoint}`),等待之后的工作挪到下一个 phase,所需状态装在 checkpoint 里。`sleeping` 是新增状态,凡是把每个 `TaskState` / `TaskGraphState` / `TaskInspection` 都穷举分支的代码都得加一条 case。
- · **earendil-works/pi**: **Durable 从「能跑」变成「能被云唤醒」。** `Harness.wake()` 与 `HarnessOptions.onWake` 告诉宿主「这个 Session 下次需要进程」的两态:`active`(有活可跑)与 `at`(最早的那次 sleep 何时到)。配了 `onWake` 之后 Harness **不为 sleep 保留任何 timer**,Cloudflare Durable Object 可以真正 hibernate、由自己的 alarm 唤醒后调 `resume()`。`HarnessOptions.setTimer` 统一接管 Session / 调度器 / 任务的全部 timer(进度节流、空闲内存回收、sleep),`ToolExecutionApi.now()` 读 Harness 时钟——**代码模式(code mode)的脚本 deadline 与 wall time 从 `Date.now()` 改到了这个宿主/假时钟上**。
- · **earendil-works/pi**: **SQLite 驱动从 durable 搬进了 chord。** `c268154` 把 Durable 的 SQLite 驱动、可移植接口与通用迁移 runner 移到 `@earendil-works/chord/sqlite`;老的 Durable SQLite 入口继续 re-export 公共名字,storage helper 与 schema 迁移仍留在 durable。配套还有 `ea7c648`(workerd 里跑 Durable Object 托管的测试)、`e17e2e1`(第二次慢调用在第一次完成时就释放,而不是轮询 200 次后才释放)、以及 **Windows/Cloudflare Workers 上一个真 bug**:Workers 里的 timer 有 `unref()`,一个 pending 的 timer 会让 Durable Object 无法 hibernate 并阻塞回收,现在 Workers 下直接拒绝这类 timer,改为在更晚的 commit 里释放内存。
- GitHub 调研周报 2026-10-16
扫描窗口:2026-09-08T09:23:29Z → 2026-10-16T00:32:07Z(共 37.6 天)| 基准来源:上次报告 2026-10-15
- · **earendil-works/pi**: **v1.3.0 发布**(10-15 19:17:33Z),五条 headline 里有三条是关于「不要弄坏缓存 / 不要弄脏上下文」的:`/share` 的上传目的地可选 `auto` / `gist` / `radius`(#10870);**在 OpenAI GPT-6 上会话中途改 thinking level 保住 prompt cache**(#10853);**kimi-coding 改走 OpenAI Chat Completions**(`https://api.kimi.com/coding/v1`,#10720),使「会话中途新增的工具不再让 prompt cache 失效」。另两条是上下文卫生:**切换模型时丢弃上一个模型的 thinking,而不是当纯文本发给新模型**(#10995)、**恢复的会话保留其原有 active tools**(`--tools +name/-name` 叠加而非替换)。
- · **earendil-works/pi**: **发布当天 headline 就被打了一枪,而修复方向和发布说明指向相反。** #10992:`~/.pi/agent/models-store.json` 一旦从 `https://pi.dev/api/models/providers/kimi-coding` 拉到新鲜条目,所有 kimi-coding 模型调用 100% 失败于 `404 resource_not_found_error`——根因是**内置 provider 硬接 Anthropic Messages(SDK 追加 `/v1/messages` → `/coding/v1/messages`,能通),而远端 catalog 条目写的是 OpenAI 协议(`baseUrl` 已含 `/v1`),两条路径对 `/v1` 的归属互相矛盾**。#10985 是同一个根因的 Nix 表现(构建失败:stale Kimi catalog 仍用 anthropic-messages)。#11003 是另一个 P0:`google-shared.ts` 在 Gemini 4 模型未填 `thinkingLevelMap` 时,`off` 仍发 `thinkingBudget: 0`、`minimal` 仍发非零值,Vertex 直接 400。
- · **earendil-works/pi**: **上期 #10959 的跨主机信任边界漏洞在 26 小时内被修掉。** `9a3ca68`「fix(chord): remote references refuse a foreign ctx」由 Mario Zechner 提交——远端 Chord 引用现在拒绝来自无关主机的 `Ctx`,与本地引用的 `invalid/foreign_ctx` 行为对齐。同日还有 `4a5d372` 把 `OutputBuffer` 与 `Progress` 移到 `@earendil-works/chord/output`,以及 #10937(@christianklot
- GitHub 调研周报 2026-10-15
扫描窗口:2026-09-08T09:23:29Z → 2026-10-15T00:34:46Z(共 36.6 天)| 基准来源:上次报告 2026-10-14
- · **agentclientprotocol/agent-client-protocol**: **上期「协议本体零改动、新 issue 为零、tag 停在 v1.11.0」的静默期在一天内结束**。10-14 有 **13 个 PR 由 Ben Brandt 合并**(10:43Z → 18:41Z,八小时内),全部是 v2 规范的文字与规范性修订,**每一个都声明不动 wire format**,但其中至少三个改变了规范性强度。PR 正文反复点名同一个来源:**Codex 团队的 v2 实现反馈**与 **Claude adapter 的反馈**。
- · **agentclientprotocol/agent-client-protocol**: **取消语义被向下修正。** #2389 把 cancellation RFD 里「取消必须级联(cascade)」的要求从 MUST 改成对齐协议里已发布的 **MAY**——正文原话:*「发送取消通知并不保证接收方会停止嵌套活动或撤回它自己发出的请求」*,动因是 Codex 团队反馈。#2388 把完成上报里的 stop reason 从 MUST 降为 **SHOULD**(Agent 说不清为什么停时也必须能报 idle),同时要求 Client 在 stop reason 缺失、null、格式错误或未知时**仍须识别 idle,且不得假定成功或失败**。#2390 明确列出取消的 MUST 义务只剩三条:确认取消成功、更新顺序、取消引发的错误。
- · **agentclientprotocol/agent-client-protocol**: **「什么算完成」「什么算插入」第一次被写成规范术语。** #2387(+148/−45,本批最大)定义 foreground / background work,并要求**无论工作由 prompt 还是 agent 主动发起,都走同一条 running→idle 生命周期**;#2392(+133/−49)把 insertion 定义进规范生命周期——**foreground `running` 可以早于插入发生且不等于「已接受」**,prompt 响应与 user-message 更新可以乱序但不得早于插入,插入前的拒绝是 request error 且不带 user-message 更新。#2385 定义 `session/close` 与取消的交互:close 取消前台工作时,其最终更新与带 `stopReason: "cancelled"` 的 idle 必须先于成功的 close 响应;close 若阻止了某条待处理 prompt 的 user message 插入,该请求回 **`-32800` (Request Cancelled)**,已插入的消息仍回成功并带 `messageId`。
- GitHub 调研周报 2026-10-14
扫描窗口:2026-09-08T09:23:29Z → 2026-10-14T00:30:22Z(共 35.7 天)| 基准来源:上次报告 2026-10-13
- · **vectori
- GitHub 调研周报 2026-10-13
扫描窗口:2026-09-08T09:23:29Z → 2026-10-13T00:33:30Z(共 34.8 天)| 基准来源:上次报告 2026-10-12
- · **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` 在 `initiali
- GitHub 调研周报 2026-10-12
扫描窗口:2026-09-08T09:23:29Z → 2026-10-12T00:36:43Z(共 33.6 天)| 基准来源:上次报告 2026-10-11
- · **anomalyco/opencode**: 1.x 最后一个功能型 release 到来了——v1.19.0(10-11)把 `opencode upgrade --major` 和 `/update` 变成通往 OpenCode 2 的唯一通道,并且**取消自动安装更新**;同一版把 PTY 检查改成「先校验 origin 与 ticket,再判断 PTY 是否存在」。升级通道打开的当天,V2 侧就收到一份标为 SECURITY 的报告 #54632:plan mode 在 V2 只是**建议性**而非强制执行——Plan agent 拒绝 `edit`/`write`/`patch`,却对 `shell` 没有任何规则,于是落到默认 allow;`external_directory` 自 #53585 起也默认 allow。维护者 bot 确认这是已知问题并把报告判为 #53955 的重复,修复 PR #54165(10-09 提交)**至今 open 未合**。
- · **earendil-works/pi**: durable code mode 在一天内落成 6 个 commit。`sandbox.start()` 让脚本带虚拟时钟与种子随机数**确定性重跑**,每次调用的结果先写 journal 再投递;重跑时 nested call 按 key `c<id>` 重新挂接,journal 缺的调用会被扣住直到 replay 结束,再与历史尝试的 key 对账;divergence、模块版本变化、sandbox 指纹变化、deadline 超时都会终止调用并存下错误。`bench:codemode` 把对比写进了 commit message:1,000 次并行调用 0.82 vs 0.78 ms/call,串行 1.52 vs 1.10 ms/call(每次调用多两个 commit:journal 条目和计数)。
- · **earendil-works/pi**: compaction 从「静默失败」改为「显式失败」。89e5c2c 记录的场景是——一次 blocking compaction 失败后,生成仍然照发请求,context 仍高于阻塞阈值,1M 窗口下 996K 的 session **每一轮都拿到空的 length 回答,而界面上看不到任何错误**。现在 compaction 失败/fault/orphan/被中止会让生成以 `model_error (Compaction failed: …)` 结束,`pi.live.compactionFailure` 保留最近一次失败直到产出摘要。15e7bdc 同时修掉一个 1.38M-token 的 summari
- GitHub 调研周报 2026-10-11
扫描窗口:2026-09-08T09:23:29Z → 2026-10-11T00:36:43Z(约 32.6 天)| 基准来源:上次报告 2026-10-10
- · **opencode 的 v2 成为主线**:`5caf1f9`(10-10 14:58Z,@Dax Raad)的说明是「取 v2 的树,把 `packages/console`、`packages/web`、`packages/stats`、`packages/function`、`infra`、`sst.config.ts` 与最新 dev 合并,并把 V2 的发布与部署目标从 `v2` 分支改到 `dev`」。同一次改动新增 `V2_HTTP_API_AUDIT.md`:**139 个 HTTP endpoint、10 组全部审完**,每个 endpoint 必须选一个 disposition(Keep / Change / Remove / Experimental-only)并写理由,稳定性分级为 public / experimental / internal。两条线仍在并行:v1 的 GitHub Release 停在 **v1.18.35**(10-06),v2 只有 git tag(`v2.0.26` → commit `release: v2.0.26`,10-08)**而没有对应的 GitHub Release 条目**,只在 npm 上发。
- · **分支提升的成本由 bot 结算,而不是维护者**:`opencode-agent[bot]` 的原话是「`v2` branch was promoted to `dev` on 2026-10-10, and v2 work now happens on `dev`. This pull request targets a branch we no longer use, so it's being closed. Please open a new pull request … with `dev` as the base」——10-10 19:34 到 10-11 00:32 之间 20 个 base=v2 的 PR 被这样关掉,kitlangton 一人占了 5 个(他自己也还在往 v2 上开)。另一条独立的规则来自 `github-actions[bot]` 的 "Automated PR Cleanup":**创建超过 1 个月 + 正向 reaction 少于 2 个**,10-10 起关掉 45 个。
- · **pi 把 codemode 沙箱搬上 Cloudflare Workers**:`748b351` 把 host 拆成「与传输无关的执行逻辑 + VM driver」,于是同一套 codemode 有三种落点——worker 线程里的 `CodemodeSandbox`、调用线程里的 `InlineCodemodeSandbox`、跨 isolate RPC 的 `RemoteCodemodeSandbox`;新增 `/portable`(不含 Node import)与 `/cloudflare` 入口,配套 `CodemodeSandboxDurableObject` 部署成独立 Worker,「让脚本永远不阻塞调用方线程」;不 await 工具的纯计算脚本由 interrupt budget 限界,且在 drain promise job 时也轮询。紧接着 `4130bd5` 修 Node 24/26 `--watch` 往 worker channel 发的 `watch:import` / `watch:require` 消息把整条 bridge 判为损坏(nodejs/node#65044,closes #10725)。
- GitHub 调研周报 2026-10-10
扫描窗口:2026-09-08T09:23:29Z → 2026-10-10T00:30:28Z(约 31.6 天)| 基准来源:上次报告 2026-10-09
- · **ACP 一日内完成两个 RFD 的稳定化**:`v1.11.0` / `schema-v1.25.0` / `schema-v2.0.0-alpha.8` 同在 2026-10-09T14:17Z 发布(#2280 chore: release)。**Session Notices**(`notice` 这类「fire-and-forget」的提示事件,no id / no ack / 不进 replay,展示与关闭完全由 Client 决定)与 **Session Compaction**(`compaction_update` + `compaction_summary_chunk`,ID-addressed 的上下文压缩实体,首个 update 固定时间线位置,后续同 ID 更新原位 patch)从 Preview 升到 Completed 并进入正式 schema。v1 侧投递与 replay 仍需 `clientCapabilities.session.compaction` / `.notices`;v2 侧不需要 capability。官方 RFD 更新页已记录这两条。
- · **同一批次里 ACP 把一批「宽容解析」字段改成严格拒绝**(#2333,benbrandt,是 #1583 的后续):`terminal/create` 的 `args`/`env`/`cwd`/`outputByteLimit`、`fs/read_text_file` 的 `line`/`limit`、`session/{new,load,resume,fork}` 的 `mcpServers`/`additionalDirectories`、v2 `session/resume` 的 `replayFrom`,畸形输入一律回 `-32602`。PR 自带的对照表很说明问题:`args: ["serve","--port",3000]` 过去会被执行成 `serve --port`;`line: "120"` 过去会从第 1 行开始读;某个 server 的 `env` 值为 `null` 会让该 server **静默不启动而会话照常开始**。作者的判据是:宽容解析只该用在「fallback 意味着**信息更少**」的字段上(无 metadata、不支持的能力、缺失的展示项),一旦 fallback 本身有含义,收窄就等于接收方替发送方做了另一个决定。
- · **ACP v2 补上「prompt 之后才发生的失败」的表达方式**(#2281,标为 unstable):v2 的 `session/prompt` 在用户消息插入后就返回,错误响应不再能报告本轮后续失败。实现改为发一个 idle 的 `state_update`,带 `stopReason: "error"` 与可选的 JSON-RPC error 字段。同时 v2 明确**不新增 compaction capability**(v2 整体仍由 `unstable_protocol_v2` opt-in),以及 v2 的 entity id 是「按实体类型唯一」而非全局唯一(#2332)。
- GitHub 调研周报 2026-10-09
扫描窗口:2026-09-08T09:23:29Z → 2026-10-09T00:32:57Z(约 30.6 天)| 基准来源:上次报告 2026-10-08
- · **agegr/pi-web v0.11.0 是本窗口第一件必须立刻升级的事**(2026-10-08T16:50:58Z):**0.11.0 之前密码保护可被绕过**。根因在 `cf3ebfb`——已发布的 npm tarball 带着 `.next/prerender-manifest.json`,其中 `preview.previewModeId` 每个 release 都一样;Next.js 对 `x-prerender-revalidate` 等于该 id 的请求**跳过 middleware(proxy.ts)**,于是密码门与 Host / Origin / Fetch-Metadata 检查一并失效,能直接执行命令、读写文件。修法是每次启动在 `bin/pi-web.js` 里用随机值重写三个 preview secret(id / signing key / encryption key),且放在 guaranteed launch path 而非 postinstall,`--ignore-scripts` 绕不过去;安装目录只读则告警。同批还有 Windows 目录联接(junction)跨出允许目录读文件的 git diff 端点(#1039)与 Next.js 16.3.8。
- · **opencode Zen 免费层后端迁移在 24h 内收尾**:#53959 把 `fledge-alpha-free` / `jev-1.13-free` / `ling-3.0-flash-fin-free` / `longcat-2.5-preview-free` / `mimo-v2.6-flash-free` / `muse-spark-1.2-contributor-free` / `nemotron-3-ultra-free` 移到新 inference;#53963 把最忙的三个(`big-pickle`、`muse-spark-1.3-contributor-free`、`space-bunny-free`)也移过去,并修掉一个可读性问题——新 inference 返 404 时 SolidStart 会把响应替换成自己的 `Cannot find any route matching [POST] …/
- GitHub 调研周报 2026-10-08
扫描窗口:2026-09-08T09:23:29Z → 2026-10-08T00:32:36Z(约 29.6 天)| 基准来源:上次报告 2026-10-07
- · **earendil-works/pi v1.1.0 发布**(2026-10-07T22:26:31Z):① **Program status reporting via OSC 7501**(`503c605`,Mario Zechner,closes #10607,由 @badlogic 提案,源自 Mitchell Hashimoto 的 Program Status Protocol)——支持该协议的终端 / agent 面板能直接看到 pi 是 `working` / `blocked:question` / `blocked:permission` / `blocked:auth` / `done` / `error` / `idle`,`msg` 永不含 prompt 或助手文本,`PI_PROGRAM_STATUS=1|0` 可强制开关;② **`--tools` 接受 `+name/-name`**(v1.0.4 加 glob 后再补 modifiers,`pi -t +codemode,-write`);③ **Claude Haiku 5.5**(`f76c1db`,prompt-length 分档 100k 以上、adaptive thinking 到 `xhigh`/`max`、Bedrock 上带 prompt caching);④ **OpenAI Decisions 分类器 + GPT-6 Luna**(`ce8972a`,bool 问题映射为 predicates,codemode `models.classify()` 接受 images);⑤ **llama.cpp 0.6.0+ 的 Julia-1 / Laya / Kev / lev / OpenJev 走原生 `/v1/systemone` classifier**,不再当 chat model 列举。
- · **pi v1.1.0 的其余 20 余条修复集中在「长尾环境」**:MCP OAuth 登录可 Esc 取消且 shutdown 不再空等 15s(#10565)、`pi update` 只保留新旧两个 release(#10392/#10511)、Anthropic 浏览器登录在 53692 被 Hyper-V/WSL 预留时回落自由 loopback 端口(#10571)、`node --watch` 下 Node 24.19+/26.x 的 `{ "watch:require": [...] }` 消息被当成 worker 回包导致图片「could not be resi
- GitHub 调研周报 2026-10-07
扫描窗口:2026-09-08T09:23:29Z → 2026-10-07T00:30:35Z(约 28.6 天)| 基准来源:上次报告 2026-10-06
- · **earendil-works/pi Durable 24h 三连击**(2026-10-06,Mario Zechner):① **每条 conversation 的 context 在内存中常驻**(`da866ad` `feat(durable): keep each conversation's context in memory; Durable Object SQLite adapter`)——`runtime.context()` 缓存每条 conversation 最后读到的 range 与 derived view,下次任一 task 再读只需扫描之后的 entries;busy conversation 永远保留,idle 保留 `settings.contextRetentionMs`(默认 10 分钟)。**新增 Cloudflare Durable Object SQLite adapter**(`openDurableObjectSqliteStorage(ctx.storage)`,无 per-row copy)。② **scan conversations / entries / tasks / submissions 的顺序解耦**(`4dd2af4`)——之前必须按 conversation → entry → task → submission 的固定顺序,现在任意顺序扫,依赖关系由数据驱动。③ **读 conversation context 早于某个 entry 的快照**(`76f6c06`)——可在历史 entry 处取回当时的 context,对 fork / subagent 拉分叉前视图至关重要。
- · **earendil-works/pi AI 层 hardening 24h 一批**:① **把 bundled Radius catalog 换成 gateway catalog**(`43d3763`,Armin)——之前 fetched catalog 与 shipped default catalog 合并导致组织 owner 禁用的 model 仍然列出。② **`--tools` 接受 `+name/-name` modifiers**(`ddaa0a0`,Armin)——纯 `+`/`-` 列表按 `defaultTools` 那样改默认工具集合,例如 `pi -t +codemode`;混入普通条目 / 修饰符带 glob 一律 reject;`/reload` 保留 `-name` 的移除。③ **llama.cpp classifier models 走 native path**(`f6127a1`,Armin,#10382)——`Julia-1` / `Laya` / `Kev` / `lev` / `OpenJev` 等 classifier model 不再当 chat model 列举,类型化为 `typesafe-system-one` classifiers;只有 HTTP 501 / 404 才回落到 `llama-cpp-classify`,从 model store 恢复后会重检。④ **Bedrock Converse 给 OpenAI model 发 reasoning effort**(#10142,@jsanter27)——之前 `reasoning_effort` 只发到原生 OpenAI endpoint,Bedrock 转发时丢失。⑤ **pi-ai `AssistantMessageEventStream` 用单调时钟记 `durationMs`**(`36a686e`,#10549)——agent loop / durable tool task / coding-agent bash renderer 都拿到真耗时,reload 后仍可见。⑥ **package artifact validation 统一**(`23cf2b9`,#10197,Christian Klot
- GitHub 调研周报 2026-10-06
扫描窗口:2026-09-08T09:23:29Z → 2026-10-06T00:35:52Z(约 27.6 天)| 基准来源:上次报告 2026-10-05
- · **earendil-works/pi**:**v1.0.3 + v1.0.4 同日连发**(2026-10-05)——v1.0.3 = **A
- GitHub 调研周报 2026-10-05
扫描窗口:2026-09-08T09:23:29Z → 2026-10-05T00:30:35Z(约 26.7 天)| 基准来源:上次报告 2026-10-04
- · **earendil-works/pi**:**v1.0.2**(2026-10-04)—— v1 stable 第一个 1.0.x 补丁。**`samplingParamsByThinkingLevel`** 进 `models.json`(#9776 cherry-pick),让 OpenAI-compatible API 可以为每个 thinking level 独立配 temperature / top_p 等采样参数——`Unreleased` 周期的 PR 在 v1.0.1 之后被 cherry-pick 上 stable,标志 v1 patch 线开始吸收跨版本特性。
- · **earendil-works/pi-durable**:窗口期最活跃的子项目。Mario Zechner 一周内连发 **FileSystem.watch**(a845108)、**bounded read tool via BinaryReader.scanLines**(a19c09d)、**windowed shell output with counted skips**(cdf7979)、**configurable progress commit intervals**(674d64f)、**bounded binary and directory readers, argv exec with stream info**(4748c62);同时补齐 **Windows 兼容**(864777b / 1543dd8)——`pi-durable` 已经从"实验性框架"走到"自我实战"的阶段。
- · **earendil-works/pi 主线 v1.0.2 收尾后的小修**:**codemode `image()` 输出改为保存到 temp files**(d677d0e,#10463);**dead terminal stdin errors 不再被上报为 crash**(4c6b724);**OAuth 轮换 token 持久化**(bde882c);**`pi update` / 安装更新后 codemode 仍可用**(1b09414)——v1.0.2 之后所有 commit 都是"post-stable hardening"。
- GitHub 调研周报 2026-10-04
扫描窗口:2026-09-08T09:23:29Z → 2026-10-04T00:30:48Z(约 25.6 天)| 基准来源:上次报告 2026-10-02
- · **earendil-works/pi**:**v1.0.1**(2026-10-03)—— 4 项新功能(**Nix flake** `nix run github:earendil-works/pi/stable`、`oauth.clientRegistration: "cimd"`([Client ID Metadata Documents](https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata/))、`pi.registerToolRenderer()` 给未注册的 MCP tool 也能渲染、Cloudflare Clef / Clef-Flash 分类器进 codemode);**项目级 MCP 覆盖**:`.pi/mcp.json` 不带 `command` / `url` 的条目只覆盖 `enabled` / `exposure` / `toolExposure`,`/mcp` 可在当前项目一键开关;**`Anthropic mid-conversation tool 改为 inline 定义**——同一名字重定义保留 prompt cache 而不重发整张工具表**;**`pi update` 推荐从 npm 全局迁移到 managed installer(npm shrinkwrap 移除)**;**Codemode 脚本输出加 16 Mi 字符 / 100000 item 上限**(#10283),防止 print 循环 OOM host;`brace-expansion` 钉到 5.0.12(GHSA-q2hr-2g5m-vwhr 等 3 个 CVE,#10288);Kitten / We
- GitHub 调研周报 2026-10-02
扫描窗口:2026-09-08T09:23:29Z → 2026-10-02T00:30:51Z(约 23.6 天)| 基准来源:上次报告 2026-10-01
- · **earendil-works/pi**:**v1.0.0 stable**(2026-10-01)—— TUI 改为 fullscreen 默认;codemode prompt 缩减约 40%(GPT-5.6 从 ~5,300 → ~3,800 token),错误信息直接提示恢复动作;**`models.generateImages()` 进 codemode**(OpenRouter 等图像模型走 session 凭据);`/login` 新增 **Radius**(同时配 MCP server 一条龙)与 **Anthropic copy-code login**(无头浏览器);MCP OAuth 加 **RFC 9207 `iss` 校验**、per-server 凭据、step-up 保留 granted scopes;`quietStartup: "header"`。**durable** 实验线落"vacation planner demo"、`pi-durable` 端口、async SQLite(`#10232`)、实验 harness 从 `pi-agent-core` 移除。
- · **vectori
- GitHub 调研周报 2026-10-01
扫描窗口:2026-09-08T09:23:29Z → 2026-10-01T00:30:41Z(约 23 天)| 基准来源:上次报告 2026-09-30
- · **earendil-works/pi**:v0.99.2 把 **MCP 提升为一等公民**——默认 `codemode` exposure 的 MCP 服务器从 prompt 与 codemode 描述里"消失",改由 `searchTools()` / `describeNamespace()` 在 sandbox 内按需加载;同步加 `oauth.clientName`、`auth.provider` provider 凭据透传、`ANTHROPIC_FEDERATION_RULE_ID` 工作负载身份联邦、copy-code OAuth 登录。**durable** 实验线一日两推:Package 20 `compaction and overflow` + Package 21 `extensions and per-conversation agents`,并把 SQLite 存储改异步(christianklot
- GitHub 调研周报 2026-09-30
扫描窗口:2026-09-08T09:23:29Z → 2026-09-30T08:33:09+0800(约 22 天)| 基准来源:上次报告 2026-09-29
- · **earendil-works/pi**:v0.99.0 把 **codemode + MCP** 做成内置扩展(QuickJS 沙箱里跑 JavaScript 并行调工具),并引入 virtual models / Sign in with ChatGPT / 系统主题默认 / `ModelRuntime` 图像生成 / TypeScript 7.0 构建;v0.99.1 把 **GPT-6.1 Sol** 设为 OpenAI Codex 默认;同日下午起 Mario Zechner 启动名为 **durable** 的实验线(Package 15–18,inbox / reset / usage / conversation view / abort / ownership cascades / subagent handles)。
- · **vectori
- GitHub 调研周报 2026-09-29
扫描窗口:2026-09-08 → 2026-09-29(共 21 天)| 基准来源:首次运行(无历史 baseline,自动按 21 天窗口扫描)
- · **earendil-works/pi**:v0.87.0 引入 `ContextEditEntry`(session 与 model context 解耦)+ 5 项 breaking changes;同时 v0.87.1 上架 Claude Opus 5.5 / GPT-6 Sol & Luna / Grok 4.7 三套新模型;v0.86.x 加入 Meta Muse provider。
- · **vectori