Files
pikasTech-unidesk/.agents/skills/unidesk-code-queue/SKILL.md
T
2026-06-11 00:41:20 +00:00

10 KiB
Raw Blame History

name, description
name description
unidesk-code-queue UniDesk AgentRun-backed Code Queue CLI — Skill(cli-spec)。legacy `codex` 子命令只保留历史只读/残留停止/prompt-lint;新任务提交、Aipod/Artificer 派单、steer、resume、queue mutation、session trace/output/read/cancel、run/command/runner 状态 drill-down 和 HWLAB Code Agent/CaseRun follow-up 必须使用 `agentrun queue|runs|commands|runner|sessions|aipod-specs`。用户提到 codex、Code Queue、submit、steer、resume、tasks、unread、code-queue、aipod、Artificer、HWLAB Code Agent 时使用。

UniDesk Code Queue / AgentRun CLI

旧 Code Queue 已冻结新任务和写入口。bun scripts/cli.ts codex ... 现在只作为历史归档、只读排障、残留任务停止和 prompt-lint 入口;新的指挥官派单、Aipod/Artificer 执行、trace/output、read/cancel、steer/reuse 必须走 AgentRun Queue/Runs/Commands/Runner/Sessions/AipodSpec,并按 cli-spec 渐进披露。

固定入口前缀: cd /root/unidesk && bun scripts/cli.ts agentrun ...


新任务入口

# 查看 AgentRun 指挥官队列
bun scripts/cli.ts agentrun queue commander --reader-id <id>
bun scripts/cli.ts agentrun queue commander --reader-id <id> --full

# 按已有 CLI 组合查看一个 Aipod/Queue run 生命周期;不要新增 queue lifecycle 命令
bun scripts/cli.ts agentrun queue show <taskId>
bun scripts/cli.ts agentrun queue show <taskId> --full
bun scripts/cli.ts agentrun runs show <runId>
bun scripts/cli.ts agentrun runs result <runId> --command-id <commandId>
bun scripts/cli.ts agentrun runs events <runId> --after-seq <lastSeq> --limit 100 --tail-summary
bun scripts/cli.ts agentrun commands show <commandId> --run-id <runId>
bun scripts/cli.ts agentrun commands result <commandId> --run-id <runId>
bun scripts/cli.ts agentrun runner jobs --run-id <runId> --command-id <commandId>
bun scripts/cli.ts agentrun runner job-status <runnerJobId> --run-id <runId>

# 查看 / 渲染 AipodSpecArtificer 是默认分布式开发 agent
bun scripts/cli.ts agentrun aipod-specs list
bun scripts/cli.ts agentrun aipod-specs show Artificer
bun scripts/cli.ts agentrun aipod-specs render Artificer --prompt-stdin

# 提交 AgentRun Queue payload
bun scripts/cli.ts agentrun queue submit --json-stdin <<'JSON'
{
  "tenantId": "unidesk",
  "projectId": "example",
  "queue": "commander",
  "title": "任务标题",
  "payload": {
    "prompt": "任务说明"
  }
}
JSON

# 用 AipodSpec 提交,优先用于新任务和 Artificer
bun scripts/cli.ts agentrun queue submit --aipod Artificer \
  --prompt-stdin --idempotency-key <key>

# 查看/控制 AgentRun session
bun scripts/cli.ts agentrun sessions trace <sessionId>
bun scripts/cli.ts agentrun sessions output <sessionId>
bun scripts/cli.ts agentrun sessions read <sessionId>
bun scripts/cli.ts agentrun sessions turn <sessionId> --aipod Artificer --prompt-stdin
bun scripts/cli.ts agentrun sessions steer <sessionId> --prompt-stdin
bun scripts/cli.ts agentrun sessions cancel <sessionId>

日常一次性 JSON、prompt 和 runner JSON 输入优先使用 quoted heredoc/stdin--json-stdin--prompt-stdin--runner-json-stdin--*-file -。UniDesk bridge 会把 stdin 直通 G14 /root/agentrun-v01 官方 ./scripts/agentrun --manager-url auto CLI,不先落 dump 文件;--json-file--prompt-file--runner-json-file 只用于已审阅且可复用的受控文件。它不是旧 Code Queue adapter,不双写,也不迁移旧历史。

AipodSpec 是 AgentRun v0.1 的声明式 agent 装配:模型 profile、gitbundle、skills/tools、SecretRef 和 tool credential 都从 YAML 规格渲染。Artificer 默认用于 UniDesk 分布式开发任务,使用 sub2api provider、gpt-5.5reasoningEffort=xhigh,并通过 SecretRef 注入 GitHub PR token、GitHub SSH 和 UniDesk SSH 透传能力。更新规格时使用 agentrun aipod-specs apply --yaml-stdin --dry-run 先看计划,确认后再去掉 --dry-run;不得把 API key、SSH key 或 token 写入 prompt、payload、YAML 或 issue。

AgentRun Queue payload 需要 runner 内使用 UniDesk SSH 透传时,只通过 executionPolicy.secretScope.toolCredentials[].tool=unidesk-ssh 请求 agentrun-v01-tool-unidesk-ssh/UNIDESK_SSH_CLIENT_TOKEN SecretRef;不要把 token 写入 prompt、payload 或 transientEnv。非敏感 endpoint 使用 UNIDESK_MAIN_SERVER_IPUNIDESK_MAIN_SERVER_HOSTUNIDESK_FRONTEND_URL,可由 runner-job transientEnv 显式提供;G14 agentrun-v01 manager 也会在缺省时按受控默认值自动补齐,并在 trace 中只显示 env name/count/hash 与 valuesPrinted=false

Queue 渐进披露

AgentRun queue 生命周期不是一个单独的 queue lifecycle 命令,而是一组现有 CLI 的渐进披露组合:

  1. 默认总览用 queue commander --reader-id <id>,只看 active/unread/terminal 摘要和少量任务行。
  2. 单任务用 queue show <taskId>,读取 latestAttempt.runIdcommandIdrunnerJobIdsessionId/sessionPath、Aipod metadata 和 pollCommands
  3. Run 级状态用 runs show <runId>runs result <runId> --command-id <commandId>,判断 claimed、lease、stale、terminalClassification、failureKind、provider interruption、timeoutBudget 和 recoveryActions。
  4. Command 级状态用 commands show <commandId> --run-id <runId>commands result <commandId> --run-id <runId>,确认 command state、ack、terminal status 和结果摘要。
  5. Runner job 只读状态用 runner jobs --run-id <runId> --command-id <commandId>runner job-status <runnerJobId> --run-id <runId>,确认 env image reuse、jobName、namespace、phase、exitCode、retention 和 valuesPrinted=false。不要为了这些字段手动调用 trans G14:k3s kubectl ...
  6. Session trace/output 只在 queue show 或 result 里有实际 sessionId 时使用 sessions trace|output|read|steer|cancelsessionRef=null 时不要猜 session 命令。

默认视图必须低噪声,--full 展开结构化详情,--raw 才保留原始响应;命令返回里的 drill-down 应优先是 bun scripts/cli.ts agentrun ...,不得把人工 k8s 查询作为日常下一步。

HWLAB Code Agent 入口整合

HWLAB Code Agent / CaseRun follow-up 的日常派单也归入 AgentRun Queue/Sessions:新任务用 queue submit --aipod Artificer 或包含 HWLAB gitbundle 的 queue submit --json-stdin;运行中纠偏用 sessions steersessions turn --aipod Artificer。需要验证 HWLAB Web/Cloud API 原入口时,仍按 $hwlab-code-agent 使用 G14 /root/hwlab-v02hwlab-cli client agent ... 拉取同一 trace/result/inspect;不要回到旧 codex submit/resume/steer


冻结的旧写入口

以下命令必须返回 ok=falsefrozen=truedegradedReason=legacy-code-queue-frozen,并提示 AgentRun 替代命令:

bun scripts/cli.ts codex submit ...
bun scripts/cli.ts codex enqueue ...
bun scripts/cli.ts codex steer <taskId> ...
bun scripts/cli.ts codex resume <taskId> ...
bun scripts/cli.ts codex queue create <queueId>
bun scripts/cli.ts codex queue merge <sourceQueueId> --into <targetQueueId>
bun scripts/cli.ts codex move <taskId> --queue <queueId>

不要用兼容开关、legacy mode、adapter、双写或 fallback 绕开冻结边界。


历史任务视图

Commander(低噪声轮询)

bun scripts/cli.ts codex tasks --view commander [--limit N]

返回旧 Code Queue 历史/残留任务的有界 action mapactive runners 计数、少量 active item、queued/retry_wait 计数、terminal-unread 总数、关键风险计数、分类计数和 drill-down 命令。新任务队列状态用 agentrun queue commander

Supervisor(分区视图)

bun scripts/cli.ts codex tasks --view supervisor \
  [--status succeeded|running|queued|failed|canceled|judging|retry_wait] \
  [--unread] [--limit N] [--before-id id]

返回 activeRunningrunningcompletedUnreadrecentCompletedqueued 分区。状态 aliascompleted|successful → succeededcancelled → canceledpending → queued

单任务

bun scripts/cli.ts codex task <taskId> [--detail|--full] [--trace]

未读积压

# 摘要
bun scripts/cli.ts codex unread [--queue id] [--repo owner/name] [--issue N]

# 详细列表
bun scripts/cli.ts codex unread list [--view full] [--limit N]

# 标记已读
bun scripts/cli.ts codex unread mark-read --confirm [--queue id]

mark-read 必须 --confirm,单任务审阅优先用 codex read <taskId>


Trace / Output 分页

# 逻辑 trace(分页)
bun scripts/cli.ts codex task <taskId> --trace \
  [--tail|--from-start|--after-seq N|--before-seq N] [--limit N] [--full]

# 原始 output(分页补取)
bun scripts/cli.ts codex output <taskId> \
  [--tail|--from-start|--after-seq N|--before-seq N] [--limit N] [--full-text]

标记已读

bun scripts/cli.ts codex read <taskId>

标记单个终态任务已读,同时返回任务身份、终态 attempt 摘要和最终 response。


Judge(复现评判)

bun scripts/cli.ts codex judge <taskId> --attempt N [--dry-run] [--include-prompt]

按指定 attempt 单步复现 judge,诊断入口。


中断/取消

bun scripts/cli.ts codex interrupt <taskId>
bun scripts/cli.ts codex cancel <taskId>

仅用于停止旧 Code Queue 残留任务;新 AgentRun session 使用 bun scripts/cli.ts agentrun sessions cancel <sessionId>


旧队列归档

bun scripts/cli.ts codex queues [--full|--all] [--limit N] [--page N]

只读查看旧队列摘要。旧 queue create/merge 和 move 已冻结。


Dev Ready / PR Preflight

bun scripts/cli.ts codex dev-ready
bun scripts/cli.ts codex pr-preflight [--remote] [--push-dry-run ...] [--pr-create-dry-run ...] [--issue N] [--full|--raw]

Prompt Lint

bun scripts/cli.ts codex prompt-lint [prompt|--prompt-file path|--prompt-stdin]

AgentRun 派单或 steer 前的本地 dry-run lint,返回分级(read-only|live-read|live-mutating)和缺失项。它只用于 AgentRun payload 入队前的 prompt 审查,不提交旧 Code Queue 任务。