fix(agentrun): 简化 Artificer Target 派单

This commit is contained in:
Codex
2026-07-13 09:30:48 +02:00
parent 1fb29561fc
commit 43124d01e8
16 changed files with 1190 additions and 26 deletions
@@ -11,6 +11,50 @@
- `agentrun retry task/<taskId> --idempotency-key <key> --reason <text> [--dry-run]`:对终态失败 task 创建下一次 attempt
- `agentrun dispatch|ack|cancel`:控制生命周期。
## Artificer Target 单命令派单
标准入口:
```bash
bun scripts/cli.ts agentrun create task \
--aipod Artificer \
--target <Target> \
--target-workspace <absolute-task-worktree> \
--repo <owner/repo> \
--ref <branch> \
--mdtodo-id <R6.3> \
--prompt-stdin \
--dry-run
```
- 先用同一命令保留 `--dry-run` 查看完整计划;
- dry-run 与 live 都必须先经 owning YAML 选中的 Target `trans` 重入;
- preflight 必须验证:
- task worktree 是 Git 根目录且 clean
- origin 与 `--repo` 一致;
- current branch 与 `--ref` 一致;
- HEAD 与 origin 远端 ref commit 一致;
- preflight 输出必须披露:
- Target route、repo/ref、projectId、HEAD/remote 关系;
- 合法的 `workspaceRef.kind/path`
- 从 AipodSpec 继承的默认 resource bundle
- session identity
- provider/tool SecretRef 的对象、key 与 presence
- preflight 失败固定 `mutation=false`,不得创建 task
- live 在 submit 成功后自动 dispatch,不要求用户再运行第二条命令;
- 未显式传 `--idempotency-key` 时,由 Target/repo/ref/MDTODO/verified commit 派生稳定键;
- 幂等重试遇到已有 running 或 terminal task 时,返回既有 attempt/run/session,不重复 dispatch
- 最终输出必须包含 task、attempt、run、command、runner 和 session identity。
Artificer 内部执行边界:
- primary workspace 只承载默认 UniDesk bundle、`tools/trans` 和 required skills
- 任务源码操作全部使用 `trans <Target>:<targetWorkspace>`
- `targetWorkspace` 必须是任务专属 worktree
- runner 本地结果不得替代 Target 原入口证据;
- `unidesk-trans`、runner tools bundle、`unidesk-ssh` SecretRef 和 endpoint presence 必须同时存在;
- Secret 值不得进入 prompt、task、日志或报告。
`agentrun events` 是高频渐进披露入口:
- 默认 human、`-o json``-o yaml` 最多返回 20 条同构事件摘要,并用一条 lookahead 披露 `hasMore``nextAfterSeq`