Skip to content

v0.18.15

Choose a tag to compare

@github-actions github-actions released this 28 Aug 00:59
· 2356 commits to main since this release

Agent Workflow v0.18.15

本版本主线是人工门的原子停驻与持久续跑(RFC-333,收口 RFC-294 P0-C):评审 / 反问 / 提问三类人工门的「打开门」与「提交决定」各自收敛成单个事务,提交后的续跑由唯一的驱动协调器负责唤醒与恢复——提交界面不再出现「决定已提交,但续跑可能失败」这种自相矛盾的回执。另含后台目标架构的两波演进(RFC-331 W2-A 拓扑切分、RFC-332 W2-B TaskEngine 拆分,均零产品行为变化),以及任务推送的代码平台端点解析、Windows 运行时版本探测、首个管理员初始化表单校验、案例成员的任务列表归属等修复。

本版本含 2 个数据库迁移(迁移端点 0211 → 0213),升级前请务必备份数据库并阅读文末「升级说明」。

主要更新

人工门原子停驻与持久续跑(RFC-333)

  • 打开门是一个提交:review / clarify / questions 的 gate、round、doc manifest、node 投影、task 状态转移(awaiting_review / awaiting_human)与 committed event 现在同属一个 TaskParkTx。此前是「领域事实先后写入,TaskEngine 稍后再单独停驻任务」,进程在中途中断会留下「有 parked node 却没有完整 gate manifest」「有 gate row 但 task 仍是 running」「已广播但事务组合未完成」这类中间态。
  • 提交决定也是一个提交:回答 / 评审决定 / 提问派发与 node 投影、task 回 pending、恰好一条 RFC-328 gate-continuation intent 同事务落地;提交之后才由 RFC-332 的唯一 TaskDriveCoordinator 唤醒或恢复。三条人工门路由里直接调用 resumeTask 的生产路径归零。
  • 不再把内部续跑失败当成决定失败回报:路由返回已提交的决定回执,唤醒失败只进入持久恢复通道由守护进程重试;daemon 重启后能从已提交的决定继续,网页与 MCP 都不再需要各自的补偿逻辑。
  • 多文档评审轮次整轮原子可见:此前逐个文档先写文件再插 row,中断会留下不完整的一轮;现在文件等 DB 外产物先进 prepare 日志,最终事务只消费已准备好的引用。
  • 收尾阶段咬出并修掉两条真实功能缺口:慢 sibling 的 claimed → pending 交接;auto-dispatch 的 deferred question 被初次手工停驻抢先重停,导致已经铸好的前驱重跑执行不了、排队的后续也点不着。
  • 既有能力逐项保持:评审的 approve / reject / iterate、评论与选区、rollback、蒸馏;反问的部分 / 完整回答、directive、defer / stop;提问的提问者台账、批量回答、定向重跑;手工提问的可创建范围——输入、顺序、规则与最终结果均不变,REST / MCP / 网页 wire 无破坏性变化。

后台目标架构演进:任务执行的拓扑切分与引擎拆分(RFC-331 / RFC-332)

  • RFC-331(W2-A):以实例注入切断 task → scheduler 的四条 drive、scheduler → task 的三条 child-control,以及任务状态发布与调用图查询共六条 exact debt;backend / repo 值级 SCC 由 5/7 降到 4/6,task 的强连通族消失。
  • RFC-332(W2-B):initial / resume / retry-prep / retry-node 四路已准入执行汇入唯一 TaskDriveCoordinator;仓库准备成为复用 RFC-328 workspace-prepare 账本的 phase 0;task 级 hydrate / claim / settle 与 DAG 的 frontier / scope / graph 从 scheduler.ts 迁入 task-execution 并形成唯一 owner;执行入口收敛为 dag | workgroup-turns | dw-generate 三路闭集。
  • 两波均为零产品行为变化、零迁移、零新增权限或策略,为后续的节点执行器注册表(W2-C)让路。

其他修复

  • 任务推送的代码平台端点解析在部分启动路径上丢失(RFC-321 后续):仓库 publication transport 现已贯穿全部任务启动与续跑拓扑,provider 元数据优先,既有管理员 mapping 与 SaaS 约定回退保持不变;并加了覆盖全部生产启动 / 拓扑调用点的架构棘轮防止再次漏接。
  • Windows 上运行时版本探测拿不到输出:不再以 detached 方式启动 .cmd 探测(Bun 在该形态下丢掉管道输出),同时保留 POSIX 进程组清理与 Windows 进程树 kill 的超时处理;Windows 平台工作流补上真实 opencode.cmd 回归用例。
  • 首个管理员初始化表单:全部校验约束常驻可见,非法提交渲染所有字段错误并聚焦第一条,改用共享 bootstrap schema,单测与 Chromium 覆盖同步扩展。
  • 案例成员看不到自己参与的案例(RFC-330 缺口收口):数字员工案例进入统一任务列表的「我的」/「与我共享」两档(我的 = 发起人 ∨ 成员,与我共享 = 成员 ∧ 非发起人,无主案例同样成立),facets 同口径;任务侧「与我共享」对无主任务也成立。
  • 清理若干 Windows / macOS 上的运行时与 e2e 时序竞态(已回答反问与随后停驻评审门的先后、冷启动余量、生命周期终态等待)。

升级说明

  • 数据库迁移:新增 2 个(0212_rfc333_human_gate_operations.sql、0213_rfc333_gate_continuation_handoff.sql),迁移端点由 0211 前进到 0213。升级前务必备份数据库。
    • 0212 新增 collaboration_gate_operations 与 collaboration_gate_artifacts 两张表,记录三类人工门命令的 prepare / commit / recovery 状态与 DB 外产物;纯新增,不改动既有表。
    • 0213 把 task_execution_intents 的活动索引拆成 pending 与 claimed 两条局部唯一索引,使「决定已提交并铸出新 continuation」与「上一任 owner 仍在交接」可以同时成立。
  • 权限目录不变:本版没有权限点增删或改名,也没有能力收缩。
  • 仍不能回退运行旧二进制(沿自 v0.18.14 的 RFC-328 能力影响 4):升级后的数据库不能原地跑旧 binary 的任务执行,旧 binary 不懂 epoch fence。需要降级时停机并恢复升级前备份(restore 会拒绝比当前二进制更新的备份,务必先换回旧二进制再 restore)。