Files
pikasTech-unidesk/docs/report/202605/20260520_Commander.md
T

18 KiB
Raw Blame History

2026-05-20 指挥简报

范围

本文是 Code Queue 指挥官针对 GitHub issue #9、#12、#13、#14、#15、#16 的过程恢复记录。目标是在上下文压缩或指挥交接后,能快速恢复当前态势。

当前生效的指挥规则:

  • 指挥官仓库固定使用 /root/unidesk 的最新 master,不得为指挥工作创建 worktree。
  • 仍有未完成任务时,约每 5 分钟轮询一次。
  • 每轮轮询后视情况追加简报;只有活跃/排队/完成未读、相关 commit、阻塞点或下一步发生变化时才追加。
  • 完成未读任务必须先审阅,再标记已读。
  • 不在 master server 上跑重型 check、全量 e2e 或 Playwright。
  • backend-core 和 D601 Code Queue 的生产变更默认只在 dev 验证,除非用户明确批准。
  • 简报和长期参考文档使用中文。

常驻观察与长期建议

本区只记录需要长期跟踪的指挥摩擦,不在每次轮询重复追加。

  • 运行中任务需要“引导优先于打断”。2026-05-20 现场发现 runtime 已有 /api/tasks/:id/steer 能力,但 bun scripts/cli.ts codex --help 未暴露正式 codex steer;指挥官临时通过 microservice proxy code-queue /api/tasks/<id>/steer --method POST 给 #16 任务注入纠偏信息,避免把 runner 内 CLI 视角误判为 D601 整体离线。长期建议:实现正式 bun scripts/cli.ts codex steer <taskId>,见 GitHub issue #17。
  • GitHub issue 是跨轮次需求、阻塞和决策的长期记录;PR 是审查型交付入口,不是默认出口。相关长期规则已写入 docs/reference/code-queue-supervision.md,后续指挥不在本报告重复展开。

快照 2026-05-20 04:16 UTC

仓库状态:

  • 指挥官 worktree/root/unidesk
  • origin/master3a5d60140044fix: read k3s artifact labels via root ctr
  • 写入本简报前,指挥官 worktree 除新简报文件外无其它变更。

队列状态:

  • 运行中:2
    • codex_1779247780398_1,队列 code-queue#12 后端/API trace 与 STEP 合同。
    • codex_1779247828759_1,队列 frontend#12 前端与 dev/prod 部署验证。
  • 排队中:4
    • codex_1779248021103_1#13 后端/API stats。
    • codex_1779248492207_1#15 PR 支持。
    • codex_1779248052767_1#13 前端 stats。
    • codex_1779248189933_1#14 split-brain UI。
  • 完成未读:1
    • codex_1779248781778_1,队列 infra#16 CLI 渐进式披露和 skill 注入。

诊断:

  • Code Queue 仍报告 live split-brainPostgreSQL 中存在 active task,但本地 scheduler active slot 为空;同时 scheduler heartbeat 新鲜。
  • 当前推荐动作仍是 continue-supervision,不是 stale recovery。

Issue 状态

  • #12:两条 lane 仍在执行。前端 lane 已经推送并部署过 dev frontend health commit,随后修复了通过 root ctr 读取 k3s artifact label 的问题。后端 lane 仍在收口 API/data contract 和类型验证。
  • #13:排在 #12 后面。
  • #14:排在 frontend lane 后面。
  • #15:排在 code-queue lane 后面。
  • #16Code Queue 终态为 succeeded,但指挥官审阅发现发布风险。

审阅记录

#16 的 Code Queue final response 声称提交了 commit ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6,提交信息为 feat: tighten code queue supervision cli

指挥官在 04:16 UTC 的验证结果:

  • origin/master 仍是 3a5d6014004412d08efe3b83f5b7c7201ec4633c
  • 在指挥官仓库中执行 git cat-file -t ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6 没有找到对象。
  • worker 路径 /workspace/unidesk/.worktrees/codequeue-16 在指挥官机器上不可见。

判断:

  • 暂不将 #16 标记已读。
  • #16 功能方向看起来有价值,但在 commit 能从 origin/master 获取,或 worker 解释 final response 中 commit 不可见的原因之前,不能验收。

下一步

  • 持续轮询 #12 后端和前端两条运行 lane。
  • 继续审阅 #16,必要时派一个 follow-up Code Queue 任务恢复/推送缺失 commit,或将发布失败写入 issue。
  • #12 lane 完成后先审阅,再决定是否接受 #13/#14/#15 后续任务结论。
  • 后续轮询如果态势变化,继续向本文追加简报。

更新 2026-05-20 04:20 UTC

已检查 #16 commit ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6 是否推到了其它分支,包括 release/v1

结果:

  • origin/master3a5d60140044
  • origin/release/v10cf73d817f14
  • git branch -r --contains ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6:无结果。
  • git tag --contains ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6:无结果。
  • git log --all --grep='tighten code queue supervision cli':无结果。

结论:

  • #16 仍不能验收/标记已读。final response 引用的 commit 当前不在已拉取的任何远端 ref 中。
  • 下一步继续使用 Code Queue 指挥机制,而不是指挥官本地接手实现:派 follow-up queue task 恢复/推送缺失 commit,或记录 #16 发布失败。

不符合预期的 Code Queue 行为:

  • 任务进入 succeeded 且 judge 为 complete,但其声明的 commit 不能从任何远端分支拉取。
  • 这是指挥官可见的验收缺陷:任务“完成”不能等同于“交付完成”,Git 远端 source-of-truth 缺失时不能接受。

长期化建议:

  • 为 Git-backed delivery task 增加 Code Queue 完成后验收门禁:
    • 从 worker final response 或结构化元数据解析目标分支和 commit;
    • origin/<target-branch> 执行 git ls-remote / fetch 校验;
    • commit 远端不可见时,任务应标记为 succeeded_unverified,或至少暴露明确验收告警;
    • 在指挥官接受或派出恢复任务之前,保持未读。
  • worker prompt 和 final response 必须包含目标分支、推送 commit、远端可见性证据。

指挥规则新增 2026-05-20 04:22 UTC

以后每个 Code Queue 派发任务都必须显式写明目标线:

  • master:用于主动开发和集成线。
  • release/v1:仅用于明确批准的稳定维护修复。

worker prompt 必须包含目标分支,final response 必须报告:

  • 实际推送的分支;
  • 远端 commit hash
  • 该 commit 是否可从 origin/<target-branch> 获取。

“push to master” 或 “push current branch” 这类含糊说法不再满足指挥官派单要求。

更新 2026-05-20 04:22 UTC

已将指挥简报和长期指挥规则中文化并推送:

  • commit7dd947a
  • 分支:master
  • 内容:
    • 新增 docs/report/202605/20260520_Commander.md
    • docs/reference/code-queue-supervision.md 整体改为中文;
    • 固化“目标分支必须显式写入 prompt 和 final response”的指挥规则。

同时派出 #16 恢复任务:

  • taskcodex_1779250940463_1
  • queueinfra
  • 目标分支:master
  • 任务目标:核实 codex_1779248781778_1 声称的 commit ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6 为什么远端不可见;如果 worker worktree 中存在该 commit,则 rebase/merge 到最新 origin/master 并推送;如果不存在,则报告原因或低风险恢复最小实现。

队列态势:

  • 运行中:2(#12 后端、#12 前端)
  • 排队中:5(新增 #16 恢复任务后,infra 队列也有待执行任务)
  • 完成未读:#16 原任务仍未读,等待恢复任务或人工审阅结论。

更新 2026-05-20 04:31 UTC

指挥官仓库已按单一 master worktree 规则快进到最新远端:

  • 当前 origin/masterf9b190945d5e7b53adeac29a37df22f92fc7843c
  • 提交信息:feat: tighten code queue supervision cli
  • 来源:#16 恢复任务 codex_1779250940463_1
  • git ls-remote origin refs/heads/master 已能看到同一个 hash。

#16 当前判断:

  • 原任务 codex_1779248781778_1 仍处于完成未读,不能直接批量标记已读。
  • 原任务声明的 ed6f8a0586c0423eca4f3763fe0cf4ebd25ab0f6 仍不是当前远端头,但恢复任务已经把等价后继实现推到 masterf9b1909
  • 恢复任务仍在运行,正在解释原任务为什么 succeeded 后远端不可见;等恢复任务终态后再审阅并决定是否接受原 #16。

新 CLI 的监督能力已经生效:

  • bun scripts/cli.ts codex tasks --unread --limit 10 现在只返回完成未读任务,不再退化为全量 overview。
  • bun scripts/cli.ts codex tasks --view supervisor --limit 10 能显示 running、completedUnread、queued 和每个任务的 drill-down 命令。
  • codex queues 仍显示 split-brain,但 splitBrainLive=trueeffectiveLiveness=live,heartbeat 新鲜,按长期规则继续监督。

队列态势:

  • 运行中:3
    • codex_1779247828759_1#12 frontend,报告实际部署已切到 6e86d36 且 service-proxy /health 确认新 commit;当前摩擦点是部署脚本定位 pod 的 selector 过旧,worker 正在修 fallback。
    • codex_1779247780398_1#12 backend/API,已完成设计 pass,正在做窄范围编辑。
    • codex_1779250940463_1#16 恢复,已推送 f9b1909master,仍在补原因分析。
  • 排队中:4
    • #13 backend/API statscodex_1779248021103_1
    • #13 frontend statscodex_1779248052767_1
    • #14 split-brain UIcodex_1779248189933_1
    • #15 PR 支持:codex_1779248492207_1

长期化建议:

  • 部署脚本的“部署失败”判定不能只依赖单一 pod selector;如果服务健康和 live commit 已符合预期,脚本应明确区分“部署成功但验证 selector 需要 fallback”和“服务实际未部署成功”。

更新 2026-05-20 04:38 UTC

指挥官仓库继续保持单一 master worktree,并已快进到:

  • 当前 origin/masterf3b7d1a183800cafffb52e0cac6e118fe1e082bd
  • 提交信息:fix: resolve k3s artifact image refs
  • 变更范围:scripts/src/artifact-registry.ts

队列态势仍为 3 运行、4 排队、1 完成未读:

  • 运行中:
    • codex_1779247828759_1#12 frontend):已把 dev frontend 健康探针切到 f3b7d1ahttp://74.48.78.17:18083/health 返回 deploy.commit/requestedCommit=f3b7d1a183800cafffb52e0cac6e118fe1e082bd。但定向 E2E 失败在 codex-execution-summary-current,说明 fixture 已进入页面但 TraceView 没显示当前 attempt 段;worker 正在判断是测试等待条件问题还是前端同步缺口。
    • codex_1779247780398_1#12 backend/API):heartbeat 新鲜,仍在 fixture-driven regression 设计和实现中。当前方向是不改大面积 UI,而是让 payload 带上类似 OA stats 的 source hint 和 sync metadata。
    • codex_1779250940463_1#16 恢复):attempt1 已完成 push/root-cause 解释,但 judge safety override 判定“源码已改但 live service 未验证”,进入 attempt2。worker 正在确认 D601 live code-queue-backend 的重建/重启路径,并计划验证 /health/api/judge/probe
  • 排队中:
    • codex_1779248021103_1#13 backend/API stats
    • codex_1779248052767_1#13 frontend stats
    • codex_1779248189933_1#14 split-brain UI
    • codex_1779248492207_1#15 PR 支持)
  • 完成未读:
    • codex_1779248781778_1(#16 原任务)继续保持未读,等待恢复任务 attempt2 终态和 live verification 结论后再审阅。

不符合预期或需要关注的行为:

  • #16 恢复任务的 attempt1 已满足“恢复缺失 commit 并解释远端不可见原因”的原始显式验收,但 judge 通过 safety override 扩展为“必须 live 部署/验证 Code Queue 运行服务”。这个方向可能是合理的,因为 #16 修改了 Code Queue CLI/API/runtime,但也说明 judge 对“恢复任务”和“上线任务”的边界识别还不够精确。
  • #16 attempt2 可能触碰 D601 live Code Queue 后端。由于 heartbeat 新鲜、worker 明确在检查真实服务和 probe contract,目前不打断;下一轮重点观察是否真的执行重建、是否影响正在运行的 #12 任务,以及 restart-recovery 是否正常。

长期化建议:

  • judge 对基础设施恢复任务应区分“source-of-truth 恢复验收”和“live runtime 上线验收”。如果任务 prompt 原本只要求恢复远端 commit,judge 可以提示后续上线任务,但不应无条件把它 retry 成部署任务;除非 prompt 明确要求 live service 必须消费该变更。
  • 对 Code Queue 自身的 live 重启/重建必须在 final response 中报告影响范围、是否触发 restart-recovery、恢复后哪些正在运行任务仍保持 heartbeat 新鲜。

更新 2026-05-20 04:44 UTC

指挥官仓库已快进到:

  • 当前 origin/master8df0663a925d31dffb4e39f50bbc744c06838ab8
  • 提交信息:test: select retry trace fixture task
  • 变更范围:scripts/src/e2e.ts

队列态势仍为 3 运行、4 排队、1 完成未读:

  • codex_1779247828759_1#12 frontend)已完成 frontend artifact 发布:
    • commit8df0663a925d31dffb4e39f50bbc744c06838ab8
    • pipelineuser-service-artifact-frontend-20260520044225-8whsf
    • digestsha256:1ff9190f3e2f024d00eedc8e0eea00ea8f5cfd7d5b9e5deecc8cc24b5058ee67
    • 已通过 artifact-registry deploy-service --env dev --service frontend --commit 8df0663... --provider-id D601 --run-now 部署到 dev。
    • 当前正在重新运行三项定向 DEV E2E:frontend:code-queue-retry-attempt-trace-currentfrontend:code-queue-step-missing-diagnosticfrontend:code-queue-judge-feedback-attempt-order
  • codex_1779247780398_1#12 backend/API)仍在运行,正在检查 summary 和 step payload 两条路径,防止只修 summary 后 TraceView 仍因旧 cached transcript 复发 stale-attempt 问题。
  • codex_1779250940463_1#16 恢复)仍在 attempt2 运行,尝试寻找 Code Queue live 部署路径时出现:
    • bun scripts/cli.ts ssh D601 hostname 返回 provider is not online: D601
    • server --help 显示 main-server server rebuild 只支持 code-queue-mgr,不支持 D601 Code Queue 执行面。
    • 当前判断:这是 #16 live verification 的潜在基础设施阻塞,但不是整个 Code Queue scheduler 死亡,因为三个 running task heartbeat 仍新鲜。

不符合预期或需要关注的行为:

  • D601 provider-gateway SSH 维护桥不可用,但 D601 上的 Code Queue scheduler/runner 仍能持续写 heartbeat。说明“D601 provider online”与“D601 Code Queue 执行面活着”是两个不同健康维度;指挥官不能简单把 provider offline 判为 D601 全面掉线。
  • #16 attempt2 如果必须依赖 provider SSH 重建 D601 Code Queue backend,当前可能卡住;下一轮重点观察 worker 是否找到 D601 本地/容器内可执行的受控部署路径。如果没有,可能需要拆出 provider-gateway/D601 维护桥恢复任务,或由指挥官做最小手动恢复后再继续。

长期化建议:

  • Code Queue 自身的 D601 执行面部署应有不依赖 provider SSH 在线状态的本地受控恢复路径,或者至少在 codex task 运行容器内暴露明确的“我在 D601,可以执行本地部署/重启”的安全命令。
  • 监督视图应把 provider-gateway 在线状态、scheduler heartbeat、runner heartbeat、service proxy 可达性拆成独立指标,避免“provider offline”误导为“执行面死亡”。

更新 2026-05-20 04:50 UTC

本轮 origin/master 没有新的远端提交,指挥官仓库仍在 c73e459

队列仍为 3 运行、4 排队、1 完成未读,heartbeat 新鲜,splitBrainLive=true,继续监督:

  • codex_1779247780398_1#12 backend/API):仍在运行。最新进展是补丁未按原上下文干净应用,worker 正在按当前文本拆成更小 hunk,属于正常实现摩擦,暂不干预。
  • codex_1779247828759_1#12 frontend):仍在运行。worker 确认本地 Playwright 可用,准备直接检查 live dev UI、route fixture API,并导出选中 Trace 面板附近的可见文本,用于判断 E2E 失败是测试选择器问题还是前端同步缺口。
  • codex_1779250940463_1#16 恢复):仍在 attempt2。provider bridge 仍离线,worker 正在确认本地 compose job 是失败还是仍在等待 build 输出;如果失败,应捕获状态并停止,避免盲目重启。

当前判断:

  • 还没有到指挥官接管手动恢复的阈值。三个 running task heartbeat 都新鲜,且 worker 均在具体问题上推进。
  • #16 的 live verification 阻塞如果下一轮仍不能绕过,需要考虑拆出独立基础设施任务:恢复 D601 provider-gateway SSH 维护桥,或补 Code Queue 执行面本地受控重启路径。

更新 2026-05-20 04:56 UTC

本轮 origin/master 没有新的远端提交,指挥官仓库仍在 7019d6d

队列仍为 3 运行、4 排队、1 完成未读,heartbeat 新鲜:

  • codex_1779247780398_1#12 backend/API):脚本 typecheck 已通过。worker 正在检查当前 repo/service 部署元数据,准备选择正确的 DEV live self-test 路径,并判断是否有安全部署动作需要执行。
  • codex_1779247828759_1#12 frontend):脚本 typecheck 仍通过。worker 准备做一次直接 Playwright fixture probe,确认渲染出的 current summary 以及 judge/prompt 元素顺序,然后再跑完整三项 E2E。
  • codex_1779250940463_1#16 恢复):provider bridge 仍未恢复。worker 当前在等待 reconnect window;如果恢复,会立即执行 D601 compose 命令并验证 live endpoint;如果未恢复,会报告基础设施阻塞。

当前判断:

  • 继续等待,不打断。#12 两条线都有明确下一步,#16 也已经把阻塞点收敛到 provider bridge。
  • 如果 #16 下轮仍停留在 provider bridge offline,应把“D601 provider-gateway SSH 维护桥恢复/Code Queue 执行面本地重启路径”拆成单独 infra task,而不是让 #16 恢复任务无限等待。