Files

162 lines
7.8 KiB
Markdown
Raw Permalink 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.
---
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. **课评发出前必须橙子人工过目**:汇报时明确提醒「发家长前请逐条核对」。