Skip to content

v0.18.16

Choose a tag to compare

@github-actions github-actions released this 28 Aug 06:05
· 2288 commits to main since this release

Agent Workflow v0.18.16

本版本主线是数字员工任务的创建与详情两端补齐:创建端补上协作者 / 工作分支 / 最大运行时长 / Token 总量上限四项高级选项(RFC-336),详情端改为「概览 / 详细信息 / 产物 / 执行记录 / 关注与协作」五页签并让 MR 一键直达(RFC-337)。同时 OIDC 的显示用户名与 Git 提交名分离(RFC-335):Provider 可分别指定两个字段,账户页分开编辑,新任务只冻结 Git name。后台目标架构完成 W2-C 一波(RFC-334 NodeExecutorRegistry,零产品行为变化),另修掉多写者任务自动提交推送时的 .git/index.lock 竞态。

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

主要更新

数字员工任务创建:高级选项补齐(RFC-336)

  • 数字员工的「任务内容」步现在与编排任务同形,提供协作者、工作分支、最大运行时长、Token 总量上限四项高级设置;确认步同步展示已选值。四项由同一个按 capability 渲染 / 校验的共享组件承载,不再各来源各写一套。
  • 明确不提供「自动提交并推送」开关:数字员工的验证 → commit → CAS push → 创建 / 更新 MR 是平台固定职责,不是可选项。
  • 协作者随 Case 原子创建:复用既有 Case 成员关系表,创建事务内直接种下成员行,不再有「创建成功但协作者丢失」的窗口。
  • 时长与 Token 是本 Case 的累计上限:跨多轮 Reaction 以 exact-once 的计量回执累计(新增 employee_case_metering_receipts 表),内部任务只接收本轮剩余额度,不反过来成为 Case 的配置真相。
  • 工作分支真的生效:由员工类型的 capability 声明、冻结进类型 Context,并成为发布链的 source branch。
  • 默认行为兼容:四项都不填时与升级前完全一致。

数字员工任务详情:信息架构与交付可见性(RFC-337)

  • 运行态只显示一个真实输入:职责图不再把创建任务时的三个入口(正文 / 文件、外部编号、issue 事件)当成运行中操作;只呈现本 Case 实际收到的那个输入(恒为绿色「已接收」),点击在当前页打开完整冻结输入检查器,不再跳去任务创建页或事件中心。
  • 五个 URL 页签:概览(输入 / 仓库 / 目标分支 / 当前 MR / 职责图)、详细信息(全部冻结参数与 Context 技术记录)、产物(修改候选 / MR / artifact refs)、执行记录(每轮时间轴、输入输出、Session)、关注与协作(Attention / 事件队列 / 委托)。
  • 补齐关键参数:首屏与详情现在显示仓库、目标分支 / 源分支、基线 SHA、执行选项与修改候选——这些事实此前已保存在工作区表与 Context 里,只是页面没读。
  • MR 一键直达:MR 创建成功后,页头、职责 2 以及「提交 MR / 关注 MR / 判断可合入」三个工作项和产物页都链接到同一个已保存的 MR webUrl。
  • 零迁移、零执行状态机变化;共享 route / panorama 不硬编码 development / MR 工作项,由类型自有的只读 detail presenter 投影。

OIDC 显示用户名与 Git name 分离(RFC-335)

  • Provider 设置:原「用户名字段(Git user.name)」改名为「显示用户名字段」(wire 仍是 usernameClaim,写入产品显示名),旁边新增「Git name 字段」(gitNameClaim,写入新的 users.git_name)。两项都支持 1–8 个 claim 按顺序拼接。
  • 账户页拆成显示用户名、Git name、Git email 三项分别展示与编辑;产品内列表 / 头像 / 成员选择器仍显示显示用户名,新任务冻结 gitName <email> 作为提交身份。
  • 每次 OIDC 登录都刷新:existing 登录、首次自动建号、邀请绑定、手工关联四条路径都在创建 session 前按本次 IdP 值对账两个名称;站内手工修改只保留到下一次 OIDC 登录(账户页有明确提示)。
  • 显式配置即严格合同:配置了任一 selector 后,若本次 userinfo 缺少全部配置字段或拼接结果为空,本次登录失败并指明是显示用户名还是 Git name 配置有误——不再静默保留旧值。
  • 已创建任务的 git_user_name / git_user_email、历史 commit、push 凭据与 RFC-321 publication credential 均不变;users.username 登录 handle 也不受 OIDC 刷新影响。

后台目标架构演进:NodeExecutorRegistry(RFC-334,W2-C)

  • 建立以 14 个 NodeKind 闭合驱动的 NodeExecutorRegistry:DAG 节点与工作组 host 都经 task-execution 的单一 node execution gateway 执行;legacy scheduler.runOneNode 的长 if 链与 runHostNode 复制体已删除,scheduler.ts 由 9.3k 行缩到 3.8k 行。新增 kind 若缺 executor 会在装配期被闭合表拒绝,不再等到运行时才以 unhandled-node-kind 失败。
  • RFC-313 的中性 retry cap 算术抽到 platform/contracts,TaskExecution 专属的 followup / restart 状态归回本域。
  • 零产品行为变化、零迁移、零新增权限或策略;W2-D WrapperRuntime 尚未启动。

其他修复

  • 多写者任务的自动提交推送竞态:本地 git commit 现在重新持有任务写锁,不再与同任务并发写者节点的 Git 生命周期争抢 .git/index.lock;LLM 生成提交信息与网络 push 仍在锁外执行,不阻塞其他节点。
  • CI 时序修正:daemon 就绪等待在高负载 macOS runner 上按既有 10 秒预算完整等待(产品行为与上限不变);工作流启动器 e2e 夹具改用唯一搜索结果选取。

升级说明

  • 数据库迁移:新增 2 个(0214_rfc335_oidc_git_name.sql、0215_rfc336_employee_case_advanced_options.sql),迁移端点由 0213 前进到 0215。升级前务必备份数据库。
    • 0214 给 users 增加 git_name 列并以当前 display_name 回填(存量用户 Git 提交名不变),给 oidc_providers 增加 git_name_claim(默认空 = 跟随显示用户名)。
    • 0215 给 employee_cases 增加 max_duration_ms / consumed_duration_ms / max_total_tokens / consumed_total_tokens 四列,并新增 employee_case_metering_receipts 表;纯新增,不改动既有行为。
  • 权限目录不变:本版没有权限点增删或改名,也没有能力收缩。
  • OIDC 管理员请注意:升级后若希望 Git 提交名与产品显示名取自 IdP 的不同字段,到 Settings → Authentication → OIDC Provider 配置「Git name 字段」;不配置则 Git name 继续跟随显示用户名。一旦显式配置 selector,缺少该 claim 的 IdP 用户会登录失败,请先确认 IdP 对所有用户都返回该字段。
  • 仍不能回退运行旧二进制(沿自 v0.18.14 的 RFC-328 能力影响 4):升级后的数据库不能原地跑旧 binary 的任务执行。需要降级时停机并恢复升级前备份(restore 会拒绝比当前二进制更新的备份,务必先换回旧二进制再 restore)。