Skip to content

v0.18.12

Choose a tag to compare

@github-actions github-actions released this 24 Aug 00:54
· 2778 commits to main since this release

Agent Workflow v0.18.12

本版本交付三件大事:数字员工操作系统(RFC-310 后续批次)把「代码能力」从一条研发流水线升级成可程序化定制员工类型的操作系统,并新增统一事件中心与统一任务创建入口;公共内核架构边界加固(RFC-317)以 18-agent 并行审计的 131 条发现为输入,修掉 52 条 P1/P2(含三条越权 / 数据丢失级 P1)并给公共内核装上「第二实现长不出来」的机器棘轮;统一事件自动化规则权限合同(RFC-315)把 Webhook 私有权限名换成来源中性的事件自动化规则权限。另含 RFC-314 的 node_run_events 三处读写形状修复与 RFC-311 维护循环余项。

本版本含导航结构调整与权限点更名(webhook-triggers:* → event-automation-rules:*,/webhooks → /events,/code → /digital-employees),新增 15 个迁移,升级前请务必备份数据库并阅读文末「升级说明」。

主要更新

数字员工操作系统(RFC-310 后续批次)

  • 产品形态变更:上层不再是「一条研发 Mission 长工作流」,而是可程序化定制员工类型的数字员工操作系统。配置层级收敛为「数字员工 → 数字员工分类 → 工作项 → 工具」:分类工具箱直接复用固定的 20 节点全景职责图,点哪个工作项就展示并增加该节点的工具;员工只配置岗位模板、名称启停、范围与节点工具绑定,重试统一收到「设置 → 执行策略」。
  • 导航与页面:/code、/code/executors、/code/assignments 三项合并为单页 /digital-employees(含分类详情 /digital-employees/:typeRef 与个案详情 /employee-cases/:caseId);/outcomes 退出导航。
  • 统一事件中心(/events):Webhook / 轮询降为「观察方式」,公开事件目录只收「已经发生」的稳定业务事实。代码平台统一为 code-host.activity@1,11 类公开 code-host.* 事实可直接建立来源无关的响应规则;自定义来源按事件类型显式配置参数 namespace,机器键与界面显示名分离,完整路径实时显示为 trigger.<namespace>.<field>。迁移 0199 把早期持久化的 code-host.webhook@1 第二套目录保留为兼容历史但从新创作面隐藏。
  • 统一任务创建与任务目录:任务列表只保留一个「新建任务」入口,数字员工成为第四张执行方式卡;选择后继续走「执行方式 → 执行空间 → 任务内容 → 确认」四步 Stepper,最终确认时才调用 Case command。任务目录新增通用 public / internal 可见性并沿调用树继承,数字员工的执行宿主标记为 internal——任务列表不再被内部执行刷屏,审计记录一条不删。
  • 确定性职责编排:development@8 类型包(@1..@7 保持不可变)。检视、流水线、冲突、员工协同与外部审批全部改为可选泳道,未配置不阻断发布 / 执行且不订阅;分类工具注册带有序问题清单,岗位选择工具即自动派生并连接 P1..Pn,平台按有序问题种类确定性选择下一把修复工具。
  • 双来源入口与人工审核分支:界面输入 与 ISSUE 是同一来源列中上下并列、无前后顺序的两个入口节点,分别独立汇入「准备工作材料」;关闭审核走「分析并实现」,开启审核走「分析 → 人工审核修复计划 → 实现」,两条路径汇合后回到同一主行。
  • 工具契约对齐:分类工具主输入为流水线失败证据与流水线目录,输出显式展示 development.problem-set(逐条问题记录 + 去重后的待处理种类 + 当前头提交);修复工具主输入同步展示问题集、平台分派的问题种类、原始失败证据与流水线目录。中英文文案、示例 JSON、后端 WorkContract 与运行时语义逐项对齐。
  • 交互修复:岗位优先级拖拽由稳定泳道容器持有 pointer capture,按冻结槽位边界实时预览、其他泳道以可中断 FLIP 让位;扇出卡改为同一不透明 paint stack,不再与邻卡交错;Select 在焦点交接期间不再逃逸出弹窗。

公共内核架构边界加固(RFC-317)

  • 起于 RFC-294 四条判据里从未落地的第四条「存在防止第二实现再长出的棘轮」。18-agent 并行审计产出 131 条经复核发现与 95 条无人看守的违规类别;开工时 116 个架构守卫文件里只有 3 个自带能自证会红的负 fixture。
  • 三条 P1 全部修复:①五类数字员工配置资源(动作模板 / 验证档案 / 数字员工 / 自动化策略 / 适配器定义)的写门只校验「能看见」,而 user 预设本就持有这五类的 :update / :archive 点 ⇒ 任何登录用户都能改写、发布、归档他人的 public 资源;②归档沿两跳 FK 静默删除 review_comments;③employee_definitions 的 ACL 三列完全惰性。
  • 两条数据正确性修复:list<markdown> 端口值落库前被按行切碎(数据损坏),codec 下沉进 handler;前端五族 class 有调用无定义,直接渲染成裸文本。
  • 同批修 52 条 P1/P2、79 条 P3 入账锁死(其中 17 条顺带修掉)、19 条过期断言逐条改对并立成 6 条派生式不变量(判据的一端永远是活的源码:枚举长度 / schema 列 / 真实 import / RFC 索引状态)。
  • 机器账本:仓根新增 architecture/{commons-manifest,commons-debt,guard-manifest,ledger-baselines}.json,条目数与源码逐字相等且只降不升——要升须显式 allowGrowth 并点名 RFC,且在下一笔不涨的提交上被判过期、强制清理。守卫的守卫 manifest 143 条:凡扫语料的守卫必须声明语料下限并两向钉死,凡断言「不存在」的必须配自变异转红的负 fixture。

统一事件自动化规则权限合同(RFC-315)

  • 以来源中性的 event-automation-rules:{read,create,update,delete,override-owner} 取代 Webhook 私有权限名,同时把来源无关规则从 event-sources:update 中拆出:默认 user 只读,manager 仅管理本人规则,admin / 显式 override 可跨 owner;创建仍叠加 tasks:execute,数字员工目标仍叠加 development-missions:launch。
  • 迁移 0202 保留旧 grant provenance、映射并去重各状态 PAT scope,不映射 event-sources:*、不重写 audit。Webhook PAT 通道保持,来源无关规则全路由拒绝 PAT。

node_run_events 三处读写形状修复(RFC-314)

  • 起于生产对账:部署 v0.18.11(已含 RFC-311 字节水位)的 node_run_events 仍是 78.6 万行 / 1.72GB。三条形状问题与表总行数无关、与单个 run 的事件条数成正比,被归档水位掩着但没消失。
  • autoKill 的 max(ts) join 194.9ms → 最慢 0.4ms(改为逐 run「最后 200 行内 max(ts)」的有界窗口——用窗口而非最后一行,因为后果是杀真实进程,要吸收子代理回灌的 ts 乱序);会话树两段窗口的 ORDER BY ts 造成 TEMP B-TREE,461.5 + 122.0ms → 最慢 48.8ms(窗口按 id 取、取回后仍按 (ts,id) 排);事件落库由每行一条 autocommit INSERT 改为单次 chunk 内合并成多行 INSERT。
  • 零索引新增、零迁移、零 wire 变化:三条真慢语句全部走索引、没有一条 SCAN,慢在行量不在查找;实测加三个索引会让 5000 条 INSERT 的 WAL 页写 ×12.8 且对这三条一条都不起作用。

稳定性、权限与开发工装

  • RFC-311 余项:startEventsArchiver / startTaskArchiveSweeper 此前只挂 setInterval(1h)、没有 boot 首拍,于是在「重启比一小时更勤」的部署上一次都不执行,两个给库体积封顶的执行者形同虚设;checkpoint 循环读的是 boot 配置快照,改 walCheckpointIntervalMs 不重启永不生效。两条均已修复。
  • 普通用户的语言切换恢复:按 RFC-036 把语言偏好与管理员 daemon 配置权限解耦——无 settings:write 的账号只更新浏览器本地语言,不读写 /api/config,也不消费前序管理员留下的配置缓存。
  • 运行时能力门补齐:runtime 能力门此前只装在注册写路径上,现在在 spawn 前也校验。
  • 开发工装(非产品代码):bun run dev 会额外起一个开发用 mock OIDC 身份提供方(http://127.0.0.1:7460),并往当前服务的库里幂等种入 admin / manager / user / guest 四个角色账号,点一下按钮即可切角色验证权限行为。它整体位于 test-mock 包 packages/system-mocks/src/dev-auth/,产品代码零改动,AW_DEV_AUTH=0 可关。

升级说明

  • 数据库迁移:新增 15 个(0192_rfc310_digital_employee_os_authoring.sql → 0206_rfc310_employee_case_name.sql),迁移端点由 0191 前进到 0206。升级前务必备份数据库。
  • 权限目录 109 → 113 点:删除 webhook-triggers:{read,create,update,delete,override-owner},新增 event-automation-rules:{read,create,update,delete,override-owner} 与 event-sources:{read,create,update,archive}。存量 grant 与 PAT scope 由迁移 0202 同 verb 映射并去重;event-sources:* 不由迁移发放。
  • 导航与路由变更:/webhooks → /events(读面权限改为 event-sources:read);/code、/code/executors、/code/assignments 合并为 /digital-employees;/outcomes 退出导航。请更新收藏与外部深链。
  • 写权收紧(breaking):五类数字员工配置资源的 revise / publish / archive 由「可见即可写」收紧为「owner 才可写」。resource_grants 只进可见性判定、不进 owner 判定,因此被授权的非 owner 写会得到 403;出路是由 owner 操作、授 resource-acl:bypass、转移 owner,或自行复制一份。
  • 任务列表默认不再显示内部执行:数字员工的执行宿主标记为 internal 并沿调用树继承,存量执行树由迁移回填。审计记录未删除,按个案详情仍可追溯。
  • RFC-310 状态如实说明:RFC-310 仍为 In Progress——本版交付的 authoring / runtime / case-task 批次已全部落主干,但 RFC-294 的 wave exit 尚未满足(DA public/required SPI、route/bootstrap 与 WorkspaceRef 未全切,/api/tasks 仍未使用 public-only membership)。功能可用,内部架构收口继续。
  • 可直接替换对应平台二进制。

发布信息

  • 源码提交:d0aeb3861fff5590c0b95f09704b6d8484463ca0
  • 数据库迁移:新增 15 个(0192 → 0206)
  • 变更规模:696 个文件,+108233 / −5923
  • 完整变更:v0.18.11...v0.18.12