fix(agentrun): 简化 Artificer Target 派单
This commit is contained in:
@@ -21,9 +21,24 @@ bun scripts/cli.ts agentrun result run/<runId> --command <commandId>
|
||||
bun scripts/cli.ts agentrun get attempts --task <taskId>
|
||||
bun scripts/cli.ts agentrun retry task/<taskId> --idempotency-key <key> --reason <text> --dry-run
|
||||
bun scripts/cli.ts agentrun send <session> --prompt-stdin
|
||||
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
|
||||
```
|
||||
|
||||
资源命令未传 `--node/--lane` 时固定使用 `config/agentrun.yaml#controlPlane.default`,当前为 `NC01/nc01-v02`;只有查询非默认 lane 时才显式传目标参数。主机 direct HTTP auth 只保留独立诊断,固定 Secret 文件路径为 `/root/.unidesk/.env/agentrun.env`,不得回退到 worktree 或旧 `/root/.config/hwlab-*` 路径。
|
||||
资源命令的 Target 规则:
|
||||
|
||||
- 未传 `--target`、`--node` 或 `--lane` 时,使用 `config/agentrun.yaml#controlPlane.default`;
|
||||
- `client.targetExecution` 决定外层 `trans` 重入的 marker、CLI 路径和目标 UniDesk 工作区;
|
||||
- 代码不得补 Target 路径默认值;
|
||||
- 主机 direct HTTP auth 只保留独立诊断;
|
||||
- Secret 固定读取 `/root/.unidesk/.env/agentrun.env`,不得回退到 worktree 或旧 `/root/.config/hwlab-*` 路径。
|
||||
|
||||
AipodSpec/Artificer、task manifest 和 queue 渐进披露见 [references/resources.md](references/resources.md);session 控制、HWLAB Code Agent 整合、trace/output 分页、judge、中断/取消见 [references/sessions.md](references/sessions.md);旧队列归档见 [references/legacy.md](references/legacy.md)。
|
||||
|
||||
@@ -31,12 +46,13 @@ AipodSpec/Artificer、task manifest 和 queue 渐进披露见 [references/resour
|
||||
|
||||
- AgentRun 与调用方之间的契约版本、源码/镜像版本和 `commitId` 对齐只能产生非阻塞 warning;可安全归一化的请求继续 admission/dispatch,不得因版本或契约漂移阻止用户任务、session、run、command 或 runner。
|
||||
- 新写入口不要用 `codex submit/steer/resume`;这些 legacy mutation 已冻结。
|
||||
- Artificer 的 primary source workspace 与远端 tool target 必须分开判定:
|
||||
- task prompt 引用待修改源码时,默认写 primary workspace `.`,需要子目录时写相对路径;
|
||||
- 禁止把宿主 `/root/unidesk`、主代理 worktree 或其他 task 外部绝对路径当成 source workspace;
|
||||
- 用户明确授权的 `trans <route> ...` 远端范围属于 `unidesk-ssh` tool target,不是旁路 source workspace;
|
||||
- 访问远端 tool target 必须使用已投影的受控 `trans`,并继续遵守 route allowlist、SecretRef、脱敏和短连接边界;
|
||||
- primary source 路径不可见时,先用 `agentrun events run/<runId> --detail-seq <seq>` 核对 durable workspace 物化事实,不让 Artificer 搜索或切换到旁路仓库。
|
||||
- Artificer 的 runner primary workspace 与任务 Target 必须分开判定:
|
||||
- runner primary workspace 只装配默认 UniDesk resource bundle、`tools/trans`、skill 和轻量准备;
|
||||
- 待修改源码只来自派单上下文中的 `targetWorkspace`,且该路径必须是任务专属 worktree;
|
||||
- 现场探测、Git、编辑、验证和运行面观察必须使用 `trans <Target>:<targetWorkspace>`;
|
||||
- 不得把 runner 本地结果、默认 bundle 的 Git 状态或容器内同名路径当作 Target 验收;
|
||||
- `unidesk-trans` required skill、runner tools bundle、`unidesk-ssh` SecretRef 和 endpoint presence 缺一项即归为装配失败;
|
||||
- Secret 输出只显示对象、key、presence/fingerprint 与 `valuesPrinted=false`。
|
||||
- 默认输出保持低噪声表格/摘要;机器消费显式 `-o json|yaml` 或 `--raw`。
|
||||
- 读取 task 的可重建输入:
|
||||
- 使用 `agentrun describe task/<taskId> --input -o json`;
|
||||
|
||||
@@ -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`;
|
||||
|
||||
Reference in New Issue
Block a user