Files
pikasTech-unidesk/.agents/skills/unidesk-code-queue/references/resources.md
T
2026-07-13 09:56:58 +02:00

110 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AgentRun 资源原语
新 Code Queue 工作统一使用 AgentRun 资源原语:
- `agentrun create|apply`:创建 task 或应用 AipodSpec manifest
- `agentrun get|describe`:有界读取列表和详情;
- `agentrun describe task/<taskId> --input -o json`:读取可重建 task 输入、AipodSpec identity、资源引用和脱敏 provenance
- `agentrun describe aipodspec/<name>`:读取同构、有界且 SecretRef-only 的 AipodSpec 摘要;
- `agentrun events|logs|result`:渐进披露运行证据;
- `agentrun get attempts --task <taskId>`:读取同一 task 的不可变 attempt 历史;
- `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。
- Target live 的默认 human、`-o json``-o yaml` 使用同一份有界投影:
- 保留 task、attempt、run、command、runner、session 的 identity 与 state
- 保留自动派单决策、Target/MDTODO 摘要、Aipod 与 SecretRef presence 摘要;
- `Next` 使用本次派单的具体 identity,并继承 Target 与 lane
- 不展开完整 task、prompt、payload 或 Aipod 对象;
- 需要完整服务端对象时显式使用 `--raw`
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`
- tool call 只展示 identity、seq/type/status、commandId、工具、命令首行、exit/duration、output bytes/hash、truncation 与 `outputOmitted`
- 默认不得展开 stdout、stderr、skill 正文或完整 payload,也不得通过提高全局 stdout 阈值掩盖 dump
- 单事件有界详情使用 `--detail-seq <seq>`
- human、JSON 和 YAML 使用同一 `EventDetail` 投影;
- 固定读取同一 run 的 durable event,并校验返回 seq 完全一致;
- 投影保留 identity、correlation、phase-specific evidence、count/bytes/hash/omitted
- durable `resolutionAuthority` 保持原事实或显式脱敏,基于其他字段的非权威判断只进入独立 inference 字段;
- 标准 Git URL 移除 userinfo、query 和 fragmentSCP-like 与未知 remote 只披露不可逆 fingerprint
- credential value 和 URL credential 固定脱敏,`valuesPrinted=false`
- `--detail-seq``--after-seq``--limit``--full``--raw` 互斥,并在请求 manager 前 fail closed
- 完整事件继续使用显式 `--full``--raw`,或按 `afterSeq=item.seq-1 --limit 1 --full` 下钻;
- 该 CLI 只渲染 AgentRun durable facts,不删除事件、不按正文去重,也不改变 Kafka/SSE 事件链。
AipodSpec describe 必须遵守以下边界:
- 默认 human、`-o json``-o yaml` 从同一摘要投影渲染;
- 摘要至少包含:
- identity/hash 与 lane/profile/provider
- workspaceRef 与主 resource bundle source identity
- bundle/required skill/credential 引用计数;
- 脱敏 provenance
- credential 只保留 SecretRef 名称、namespace、keys 和安全 projection 字段,固定 `valuesPrinted=false`
- 默认输出必须保留 `--full -o json``--raw` 语义化下钻,禁止读取临时 dump 再二次裁剪;
- 显式完整路径继续返回服务端完整对象,禁止提高全局 stdout 阈值掩盖默认输出缺陷。
task 输入下钻必须遵守以下边界:
- 默认 `describe task/<taskId>``Next` 必须给出 `--input -o json` 语义化命令;
- `--input` 只读取现有 task durable fact,不创建、复制、retry 或 dispatch task
- 输出固定为 task create 字段、AipodSpec identity、bundle/SecretRef 和脱敏 provenancecredential 只保留 SecretRef 并声明 `valuesPrinted=false`
- `--input``--full``--raw` 互斥,非法组合必须在请求服务端前返回带修正路径的 `validation-failed`
- 完整服务端资源继续使用显式 `--full -o json``--raw`,禁止提高全局 stdout 阈值来掩盖大输出。
retry 必须遵守以下边界:
- task identity 不变,每次执行使用新的 attempt、run、command 和 runner Job identity
- 同一幂等键返回同一 retry 结果,不重复创建 attempt
- 只允许 Queue 已处于 `failed``blocked`,其他终态与非终态 fail closed
- `--dry-run` 由服务端完成与真实 retry 相同的校验,但零写入;
- retry 不主动刷新 Core 终态。若 Queue 摘要仍是非终态,先通过正式 `get task``get attempts` 刷新权威状态,再重试;
- 禁止复制或重置 task,禁止在 UniDesk 增加 scheduler、backoff、judge、projector 或直接 runner 编排。
不要在 legacy `codex` 下增加新的 mutation 路径。