--- name: parallel-feedback description: 多班级并行写课评调度器。当用户要同时给2个及以上班级写课评,说「并行写课评」「多班课评」「开窗格同时写课评」「三个班一起写」时使用。通过 Herdr 分窗格启动多个 pi 助手,每个助手写一个班的课评;调度员(主会话)负责开窗格、派任务、转发提问、统一合并周汇总、验收汇报。要求 HERDR_ENV=1 环境。 type: skill --- # 🚦 多班课评并行调度技能 ## 用途 橙子手上有多份课评要写时,不再逐个班串行等待,而是: ``` ┌──────────┬──────────────┐ │ 🤖 调度员 │ 🤖 助手A:班1 │ │ (主会话) ├──────────────┤ │ │ 🤖 助手B:班2 │ │ ├──────────────┤ │ │ 🤖 助手C:班3 │ └──────────┴──────────────┘ ``` - 每个助手独立运行完整的「课评生成」技能流程(含质检、归档) - 中途助手提问时进入 `blocked` 状态,**调度员负责把问题带回来、把答案传过去**,橙子无需切窗口 - 共享文件(周汇总、汇总网页)由调度员最后统一处理,避免多助手写同一文件冲突 ## 第0步:环境检查(必须) ```bash test "${HERDR_ENV:-}" = 1 ``` - **通过** → 继续本技能流程。 - **失败**(不在 Herdr 中运行):告知橙子「当前不在 Herdr 环境里,没法开窗格并行」,退回**单班串行模式**:在当前会话里按「课评生成」技能逐个班顺序写。 ## 第1步:收集各班信息 向橙子收集每个班的一组信息(可一次性问完): | 项目 | 说明 | 示例 | |------|------|------| | 班级全名 | 课程编号+老师+星期时间 | `CSP04橙子周六0830` | | 授课日期 | 必须与校宝 teaching_date 一致 | `2026-10-25` | | 课次 | 第几课 | `05` | | 补充材料 | 录音转写 docx 位置 / AIAGENT 作品文件夹路径 / 其他特殊要求 | 可选 | > 出勤无需问——「课评生成」技能会自动调校宝 API。 > CSP 班按 v2 规则走 `class-feedback-report` 提交诊断流程,脚本自动读 `.env` 凭据。 ## 第2步:开窗格 布局规则:**宽屏**第 1 个窗格 `right`(向右分),后续依次对前一个新窗格 `down`(在右列向下堆叠);**窄屏**全部 `down`。避免切出过窄的列。 ```bash # 第1个窗格(从当前会话向右分) herdr pane split --current --direction right --cwd "$PWD" --no-focus # 从 .result.pane.pane_id 拿到新窗格ID,如 w5:p2 # 第2个窗格(对第1个新窗格向下分) herdr pane split <第1个新窗格ID> --direction down --cwd "$PWD" --no-focus # 第3个窗格(对第2个新窗格向下分) herdr pane split <第2个新窗格ID> --direction down --cwd "$PWD" --no-focus ``` ⚠️ 必须带 `--cwd "$PWD"`(保证助手在项目目录启动,能加载项目技能)和 `--no-focus`(不抢橙子的屏幕焦点)。 ## 第3步:启动 pi 助手 在每个新窗格里启动一个 pi 实例: ```bash herdr agent start <助手名> --kind pi --pane <窗格ID> ``` - **助手命名规则**:`[a-z][a-z0-9_-]{0,31}`,建议带上班级缩写便于记忆,如 `keping-csp04am`、`keping-csp04pm`、`keping-ai03sun` - 启动默认 30 秒超时;返回 `agent_not_ready` 时不要慌,用 `herdr agent get <助手名>` 轮询,等状态变为 `idle` 再派任务 - 新 pi 会自动加载本项目 `.pi/skills/` 下的技能(含课评生成) ## 第4步:派发任务 对每个助手发送任务(`--wait` 等到它进入 `idle`/`done`/`blocked`): ```bash herdr agent prompt <助手名> "<任务文本>" --wait --timeout 120000 ``` **任务文本模板**(必须完整包含以下要素): ``` 请使用「课评生成」技能,为【班级全名】写【日期】第【N】课的课评。 补充材料:【录音文件位置/作品文件夹/其他要求,没有就写"按技能默认流程获取"】 【并行模式特别约束——必须遵守】 1. 只写本班自己的文件:个人课评、请假/未到记录、班级总结、学生画像更新。 2. 【禁止】写任何共享文件:周课评汇总(output/课评汇总/ 或 E:/cc 下的汇总)、 课评汇总网页、E:/cc/3笔记 —— 这些由调度员统一处理,你跳过即可。 3. 全程自动执行(出勤API、质检、归档),不要中途停下来问我确认。 4. 遇到必须人类回答的问题时,直接清晰列出问题后停住等待。 5. 完成后输出「完成报告」:逐条列出本次保存的所有文件路径。 ``` - 提交成功≠开始干活,`--wait` 会等到第一个稳定状态 - 返回 `blocked` → 进入第 5 步问答转发 - 返回 `timeout`/`stalled` → **不要盲目重发**!先 `herdr agent get` + `herdr agent read` 检查实际状态 ## 第5步:问答转发(核心服务) 助手中途提问(`blocked`)时的标准动作: ```bash # 1. 看状态和问题内容 herdr agent get <助手名> herdr agent read <助手名> --source recent-unwrapped --lines 120 # 2. 把问题用人话转述给橙子(多个助手同时 blocked 就一起列出,编号区分) # 3. 橙子回答后,把答案传回对应助手 herdr agent prompt <助手名> "<橙子的回答>" --wait --timeout 120000 ``` 注意事项: - 橙子也可能**自己点进窗格手动回答**——如果发现状态已变 `working`/`idle`,说明他已亲自处理,跳过转发,别重复发送 - 一次只给一个助手发一条 prompt;发过就没必要再发同样的内容 ## 第6步:验收与统一汇总 所有助手都到 `done`/`idle` 后: 1. **读完成报告**:`herdr agent read <助手名> --source recent-unwrapped --lines 150`,核对每个班保存的文件清单 2. **抽查课评**:随机读 1-2 个刚保存的课评文件,确认格式正常(固定开头5知识点、署名等) 3. **统一写共享文件**(调度员亲自做,只有调度员写): - 更新周课评汇总:把本次所有新课评按「最新的放最前面」合并进当周汇总文件 - 课评汇总网页:按「课评生成」技能的网页规则判断是否需要生成/跳过 4. **向橙子汇报**:逐班列出「✅ 已保存文件 + 📋 质检结论 + ⚠️ 需人工复核点」 5. **询问是否关闭窗格**:这些窗格是本技能创建的,经橙子同意后逐个关闭: ```bash herdr pane close <窗格ID> ``` > 💡 也可以先不关,让橙子自己点进各窗格浏览课评原文,看完再说「关掉吧」。 ## 🚨 故障处理速查 | 现象 | 处理 | |------|------| | `agent_not_ready` | 用 `agent get` 轮询等 `idle`,别急着 prompt | | `agent_prompt_stalled` | 先 `agent read` 看实际状态,确认没收到再考虑重发 | | `timeout` | `agent get` 看状态;还在 `working` 就 `herdr agent wait <名> --timeout 180000` 继续等 | | `agent_blocked` | 走第 5 步问答转发;**看不懂它卡在什么 UI 时先问橙子,别替他乱按** | | 助手进程挂了 | 窗格里 shell 还在,重新 `agent start`(可复用原名)再派任务;已保存的文件不受影响 | | 两个助手写同一文件 | 不应发生(任务模板已禁止);若发生,以先保存者为准,让橙子核对 | ## 核心原则 1. **调度员不写课评,只做协调**:开窗格、传话、合并共享文件、汇报。 2. **共享文件只由调度员写**:周汇总、汇总网页、笔记文件,多助手一律跳过。 3. **不抢焦点**:所有 split 用 `--no-focus`,橙子想看哪个窗格自己点。 4. **转发提问要保真**:把助手的原问题完整带给橙子,把橙子的回答完整带回去,不自己编答案。 5. **课评发出前必须橙子人工过目**:汇报时明确提醒「发家长前请逐条核对」。