context-infra 检查与复盘infra.guiming.net · 全内容自包含呈现 · 生成于 2026-07-21 16:28 UTC

多竞赛 Orchestrator

Z2 条目↑ Z1 版块 ↓ Z3 全文

方法论道层 · Career/竞赛方法论

← 返回方法论区 · Career/竞赛方法论 →

多竞赛 Orchestrator

viewtype=状态机 · 答:多竞赛 Orchestrator 怎么并发调度与不空等 · 不答:具体 session 实现

主循环for 竞赛 in 启动序(D3 定)角色硬边界Orchestrator=浏览器/协调 · 子 session=实现 · 用户=拍板阻塞三判据用户拍板 / 浏览器登录态 / 外部等待不空等切换记 DECISIONS.md → 切下一 lane战果回写验收 + MILESTONE + RUN_STATE · 一次性交用户清账决策收敛单一入口:DECISIONS.md 三档(🔴挡路 / 🟡可先动 / 🟢顺手);子 session 不直接找用户viewtype=状态机 · 答:多竞赛 Orchestrator 怎么并发调度与不空等 · 不答:具体 session 实现输出运行态
真源:career/competitions/_infra/ORCHESTRATOR.md §2

并发调度与不空等原则

真源路径:career/competitions/_infra/ORCHESTRATOR.md · 图型:状态机 · 域:Career/竞赛方法论


真源正文

竞赛 Orchestrator 手册

一个主 session 当 Orchestrator,通过 tmux 启动多个子 session 并行/串行处理各竞赛。

本文件定义:谁做什么、怎么调度、卡住怎么办、怎么把决策收敛到一处、怎么交接。

落地资产:启动器 launch_fable_session.sh、决策台 ../DECISIONS.md、各竞赛 TASK_CARD.mdMILESTONE_*.md

1. 角色分工(硬边界)

角色是谁负责不碰
Orchestrator主 session(当前这个)浏览器操作(提交/查分/建 key/报名)、协调、把待决策收敛进 DECISIONS.md、向用户汇报、给子 session 派活不亲写竞赛实现代码(交子 session)
子 sessiontmux 里的 clean Fable/Codex,每竞赛一个该竞赛的实现(搭管线/跑实验/改代码/本地验证),做完写 handoff 交回不做浏览器提交(登录态+最终确认在 Orchestrator/用户)、不跨竞赛
用户对所有竞赛的关键点拍板(看 DECISIONS.md 一次决定)不用逐 session 盯

分工依据:浏览器登录态与最终提交确认集中在主 session(避免子 session 各自处理凭据、避开无人值守权限死锁);实现代码是纯文件+bash 工作,子 session 用 acceptEdits 自主跑。呼应用户既定纪律「网页/实现交 clean session,报名/收集/排期归主 agent」。

2. 并发调度策略(用户明确要求)

核心:不空等。 任一竞赛卡在「等用户决策」或「等外部」,Orchestrator 立即让下一个竞赛的实现先动。

Orchestrator 主循环:
  for 竞赛 in 启动序(DECISIONS.md D3 定):
    读该竞赛 TASK_CARD + MILESTONE
    若有挡路决策未决 → 记入 DECISIONS.md → 跳过,去下一个竞赛(不空等)
    否则 → 启动子 session 跑实现(launch_fable_session.sh)
  子 session 报「需决策」→ Orchestrator 收进 DECISIONS.md,切下一个竞赛
  子 session 报「阶段完成」→ Orchestrator 验收 + 更新 MILESTONE + 汇报用户
  所有竞赛都卡在决策 → Orchestrator 把 DECISIONS.md 整理好,一次性交给用户

阻塞→切换判据:子 session 触及以下任一即「阻塞」,Orchestrator 记决策点并切下一个——

用户不及时回复时:不停。按 D3 序让下一个竞赛实现跑起来;用户回来看 DECISIONS.md 一次性清账。

3. 决策收敛(单一入口)

所有待决策只进 ../DECISIONS.md,分三档(🔴挡路/🟡可先动/🟢顺手)。用户只看这一个文件,回复形如「D1:A D4:A」,Orchestrator 据此分发。已决的移到文末存档。子 session 不直接找用户要决策,一律回报 Orchestrator 汇总。

4. 启动子 session

bash competitions/_infra/launch_fable_session.sh <name> <workdir> <task_card>
# 例(讯飞):
bash competitions/_infra/launch_fable_session.sh xfyun_exec ~/code/comp_xfyun \
  career/competitions/xfyun_nl2workflow/TASK_CARD.md

5. 子 session 的 TASK_CARD 必含

自包含,让子 session 零上下文也能开工(参考 AFAC 的 afac2026_task4_memory_qa/TASK_CARD.md):
① 前置检查(不满足就停下报告,别瞎跑)② 够用的背景(评分/约束/数据位置)③ 工作循环 ④ 硬边界(只在本竞赛目录、不碰浏览器、不 git、context 紧写 handoff 交回)⑤ 优化 roadmap(若有)。

6. Handoff(context 压力/换 session 时交接)

任一 session(含 Orchestrator)context 吃紧 → 写 handoff 到该竞赛 MILESTONE_<date>.md~/code/comp_<slug>/logs/session_progress.md,含:当前状态一句话、真源指针、下一步单一动作、断点续跑方式。新 Orchestrator 冷启动读 PROGRAM_HANDOFF.md(程序级)+ 各竞赛 MILESTONE 即可接手。

7. 当前实例状态(2026-07-17)


← 返回方法论区 · Career/竞赛方法论 →

provenance:career/competitions/_infra/ORCHESTRATOR.md data/methodology_dao.mjs