Repository navigation
v0.18.16
·
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 执行;legacyscheduler.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)。