Codex 这两个钩子最值得注意的是它刻意不做的事:输出只记日志,不能否决请求,也不能改模型上下文。矩阵里 Codex 那一格写的是 11 个由配置声明、进程外执行的钩子事件;新加的两个在实现上就排除了控制流,观察和控制成了两类不同的事件。Pi 那一格的立场正好相反,BeforeProviderRequestEvent 的处理器可以返回结果改写请求。两种做法对应两种用户:Codex 的钩子面向最终用户配置,提交没有解释为何只给观察权,一种合理的解读是不想让任意外部命令改写模型请求;Pi 的钩子面向扩展开发者,改写本来就是用途之一。
同一周 Codex 还收紧了插件钩子的信任边界:审批从只看钩子声明改为绑定插件包内容的哈希,脚本一变就要重新审批,执行前在钩子超时内校验。钩子既然是进程外命令,审批的对象就应该是要执行的代码本身,而不是一段声明。
Pi 的 durable 包继续往「恢复失败时怎么停」推进。上周加上了按日志重放的 code mode,这周补了崩溃循环保护:每次崩溃中断的任务计数加一,任务自己提交新状态就清零,到 restartLimit(默认 5)就挂起为 blocked,等宿主调用 retryTask;另外用持久化的 sleeping 状态取代 runtime.sleep,截止时间扛得过重启,休眠期间不占用调用。能恢复只是第一步,恢复本身也会反复失败,需要一个停下来的条件。
按需暴露工具是另一条共同线索。Pi durable 新增 deferred 工具,模型在加载前看不到它们,配套与 coding agent 相同的 BM25 tool_search;加载只往工具声明末尾追加,规格里写明这样缓存前缀不会失效。openJiuwen 反方向打了个补丁:开启渐进式工具暴露时,团队协作工具强制直出,不能藏在 tool_search 后面,因为那是成员的主接口。Codex 加了默认关闭的 wake_on_agent_messages,让子代理在父代理给出最终答案后才完成时,消息也能唤醒空闲的根会话。DeepSeek Harness 本周 471 个提交,大半落在 computer use、Web 与桌面端,发到 0.2.1-rc.2;结构上的改动在实验性的 Agent Team:成员身份从初始任务里的一条提醒,改为每一步都由 runtime context 按当前角色重新生成,压缩和 fork 都不会再把它弄丢或弄错。