{"id":"706ce6f0-211d-4095-969c-13c0309a4920","entityType":"agent","slug":"clawhub-qizhitang-xiaozhi-teach-schedule-manager","name":"排课与课时管理","canonicalUrl":"https://www.xpersona.co/agent/clawhub-qizhitang-xiaozhi-teach-schedule-manager","canonicalPath":"/agent/clawhub-qizhitang-xiaozhi-teach-schedule-manager","generatedAt":"2026-10-10T10:49:20.751Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":null},"description":"把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。 Skill: 排课与课时管理 Owner: qizhitang Summary: 把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。 Tags: latest:2.11.1 Version history: v2.11.1 | 2026-10-08T16:44:49.919Z | user v2.11.1：详见仓库 docs/changelog.m","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17egdt3mjea4rhm19wt7tm77x852sxg:xiaozhi-teach-schedule-manager","sourceUrl":"https://clawhub.ai/qizhitang/xiaozhi-teach-schedule-manager","homepage":"https://clawhub.ai/qizhitang/skills/xiaozhi-teach-schedule-manager","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/qizhitang/xiaozhi-teach-schedule-manager","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/qizhitang/skills/xiaozhi-teach-schedule-manager","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 →"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":null},"stars":null,"forks":null,"downloads":1639,"packageName":null,"latestVersion":"2.11.1","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T05:52:12.469Z","lastCrawledAt":"2026-10-10T05:52:12.469Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T05:52:12.469Z","lastVerifiedAt":null,"highlights":[{"version":"2.11.1","createdAt":"2026-10-08T16:44:49.919Z","changelog":"v2.11.1：详见仓库 docs/changelog.md","fileCount":14,"zipByteSize":57421},{"version":"2.11.0","createdAt":"2026-10-08T08:27:19.847Z","changelog":"v2.11.0：详见仓库 docs/changelog.md","fileCount":14,"zipByteSize":57405},{"version":"2.10.0","createdAt":"2026-10-01T16:28:47.854Z","changelog":"v2.10.0：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43331},{"version":"2.9.0","createdAt":"2026-09-30T16:24:28.969Z","changelog":"v2.9.0：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43329},{"version":"2.8.0","createdAt":"2026-09-29T16:44:27.448Z","changelog":"v2.8.0：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43376},{"version":"2.7.1","createdAt":"2026-09-28T12:30:40.188Z","changelog":"v2.7.1：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43190},{"version":"2.7.0","createdAt":"2026-09-27T10:16:11.379Z","changelog":"v2.7.0：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43328},{"version":"2.6.0","createdAt":"2026-09-26T01:12:53.202Z","changelog":"v2.6.0：详见仓库 docs/changelog.md","fileCount":13,"zipByteSize":43468}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17egdt3mjea4rhm19wt7tm77x852sxg:xiaozhi-teach-schedule-manager","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:49:20.748Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qizhitang-xiaozhi-teach-schedule-manager/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":null},"readme":"Skill: 排课与课时管理\n\nOwner: qizhitang\n\nSummary: 把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。\n\nTags: latest:2.11.1\n\nVersion history:\n\nv2.11.1 | 2026-10-08T16:44:49.919Z | user\n\nv2.11.1：详见仓库 docs/changelog.md\n\nv2.11.0 | 2026-10-08T08:27:19.847Z | user\n\nv2.11.0：详见仓库 docs/changelog.md\n\nv2.10.0 | 2026-10-01T16:28:47.854Z | user\n\nv2.10.0：详见仓库 docs/changelog.md\n\nv2.9.0 | 2026-09-30T16:24:28.969Z | user\n\nv2.9.0：详见仓库 docs/changelog.md\n\nv2.8.0 | 2026-09-29T16:44:27.448Z | user\n\nv2.8.0：详见仓库 docs/changelog.md\n\nv2.7.1 | 2026-09-28T12:30:40.188Z | user\n\nv2.7.1：详见仓库 docs/changelog.md\n\nv2.7.0 | 2026-09-27T10:16:11.379Z | user\n\nv2.7.0：详见仓库 docs/changelog.md\n\nv2.6.0 | 2026-09-26T01:12:53.202Z | user\n\nv2.6.0：详见仓库 docs/changelog.md\n\nv2.4.0 | 2026-09-25T10:12:11.070Z | user\n\nv2.4.0：详见仓库 docs/changelog.md\n\nv2.3.0 | 2026-09-24T08:42:30.540Z | user\n\nv2.3.0：详见仓库 docs/changelog.md\n\nv2.2.0 | 2026-09-23T11:49:04.978Z | user\n\nv2.2.0：详见仓库 docs/changelog.md\n\nv2.1.13 | 2026-09-23T08:14:36.255Z | user\n\nv2.1.13：详见仓库 docs/changelog.md\n\nv2.1.12 | 2026-09-07T05:22:47.464Z | user\n\nv2.1.12：详见仓库 docs/changelog.md\n\nv2.1.3 | 2026-09-05T01:51:51.959Z | user\n\nv2.1.3：消除 references 与 SKILL.md 的契约矛盾——物理解题教练不再在参考文档里教归档/越界路由，命题技能不再回写考后统计\n\nv2.1.2 | 2026-09-04T15:32:30.323Z | user\n\nv2.1.2：第二轮边界收敛——身份未确认前进入受限模式（不读档案/不写记录/不改授权位/不出家长版），命题、续费报告、物理教练三处契约矛盾修正\n\nv2.1.1 | 2026-09-04T14:09:36.943Z | user\n\nv2.1.1：安全边界整改——求助渠道按地域确认后再给出，职责边界与转交声明收窄，长期档案写入需显式确认，实验安全补激光专项\n\nv2.1.0 | 2026-09-04T10:39:28.651Z | user\n\nv2.1.0：统一词表与数据契约、共享约定随包分发、学科内容审校、单技能安装自包含\n\nv1.0.1 | 2026-07-17T15:26:42.536Z | user\n\nv2.0.1 大范围更新\n\nv1.0.0 | 2026-06-06T11:53:54.658Z | auto\n\nInitial release of xiaozhi-teach-schedule-manager:\n\n- Provides systematic scheduling and lesson-hour management for independent teachers.\n- Includes visual weekly schedules, student/teacher availability matrices, automatic conflict detection, and transparent lesson-hour tracking.\n- Standardizes workflows for leave, make-up lessons, and rescheduling, with clear process documentation.\n- Integrates with solo-dashboard, student-intake, lesson-log, and parent-communication for full data flow.\n- Adds pre-set alerts for lesson-hour package shortages and expirations, making time and package management more proactive.\n\nArchive index:\n\nArchive v2.11.1: 14 files, 57421 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3968b), references/weekly-schedule-template.md (14983b), shared/ai-item-check.md (3043b), shared/crisis-exception.md (18125b), shared/crisis-referral-protocol.md (11784b), shared/grade-bands.md (8132b), shared/hint-ladder.md (4990b), shared/off-campus-training.md (7184b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (10161b), shared/vocab.md (14668b), skill-card.md (2548b), SKILL.md (26302b), _meta.json (150b)\n\nFile v2.11.1:SKILL.md\n\n---\nname: xiaozhi-teach-schedule-manager\ndescription: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。'\ncompatibility: WorkBuddy / SkillHub / OpenClaw / ClawHub\nlicense: MIT\ndisplay_name: 排课与课时管理\nversion: 2.11.1\nauthor: 小智伴学\ncategory: 独立教师\ngrade_bands:\n  - 小学中段\n  - 小学高段\n  - 初中\n  - 高中\ntags: [排课, 课时管理, 补课请假, 课时包, 排课冲突, 独立教师]\ndepends_on:\n  - xiaozhi-teach-student-intake\n  - xiaozhi-teach-lesson-log\n  - xiaozhi-teach-parent-communication\nid: openclaw:xiaozhi-teach-schedule-manager\nmin_platform_version: \"2.0\"\nmax_round_limit: 12\nslug: xiaozhi-teach-schedule-manager\ndisplayName: 排课与课时管理\nsummary: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。'\n---\n\n# 排课与课时管理 SKILL\n\n> **一句话定位：** 独立教师的时间是唯一不可再生的资产——把时间排清楚，是把生活排清楚。\n\n---\n\n## 技术边界\n\n> 技术边界：本 SKILL 依赖能力 [M, K, F]，无该能力时按 shared/platform-conventions.md 降级。\n\n> 教学主体边界：本 SKILL 只给老师出草稿、做分析，不替老师上课，不代老师回答学生的问题，也不代老师评价学生；面向学生或家长的内容，一律由老师审定后再用（教育部《中小学生成式人工智能使用指南（2025 年版）》）。\n\n> 适用范围：用于校外培训（一对一、小班）时，只在合法范围内用，口径见 `shared/off-campus-training.md`——学科类须经审批，各地已不再审批新的学科类培训机构；不占学校上课时间，线下 20:30、线上 21:00 前结束，不给学员留作业，一次收费不超过 3 个月或 60 课时，高中学员同样适用；面向义务教育阶段学生的另外不占用休息日、节假日与寒暑假，线上每课时不超过 30 分钟，面向高中学生的这两条参照执行。本技能不预设违规的排课、作业与收费。\n\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\n\n排课建议与冲突检测由本 SKILL 给出，**写入课表前一律要老师确认**。冲突检测只读 `studentCards[].availability[]`（学员授权登记的可上课时间段），不擅自扩大可上课范围。无 `K`（日期感知）时先问今天日期与本周起止日再排课。\n\n**课时怎么算不归本 SKILL 管**：单节课的消耗由 `xiaozhi-teach-lesson-log` 在课后生成待确认条目，老师确认后计入 `usedUnits`。本 SKILL 只维护课时包台账本身（总数、剩余、到期日）和到期提示。\n\n**财务不在本 SKILL 库范围**：课时包台账只记课时**数量**（`totalUnits` / `usedUnits` / `remainingUnits`），不记金额、单价、收款、欠费、退费。这是有意划出的边界——请老师用独立的记账工具处理资金，教学数据与财务数据分开存放。因此本 SKILL 的任何流程都不会提出退款、赔付或折算金额的建议。\n\n---\n\n## 一、核心使命\n\n独立教师排课常见的三个误区：\n\n```text\n误区① 全靠记性：课排在脑子里，\n        学员问\"下次课什么时候\"答不上来，\n        学员冲突了才后知后觉。\n\n误区② 课时台账混乱：学员课时包还剩多少不清楚，\n        课时耗尽了才想起续费，\n        学员超课时上课但课时没扣。\n\n误区③ 补课调课靠手动：学员请假靠微信沟通，\n        调课靠反复确认，\n        没有系统记录，靠人脑容易漏。\n```\n\n本 SKILL 要解决的是：\n- **让排课可视化**：周课表 + 学员可上课时间段\n- **让冲突早发现**：排课时先比对 `availability[]` 再落笔\n- **让课时台账透明**：每个学员课时包剩余、到期日、待确认条目清楚\n- **让补课请假有流程**：标准动作 + 逐条留痕\n\n---\n\n## 二、触发时机\n\n| 触发场景 | 示例语句 |\n|---------|---------|\n| 排课 | \"排下周的课\" / \"[化名] 排课\" |\n| 周课表 | \"本周课表\" / \"下周课表\" |\n| 调课 | \"调课\" / \"把 [化名] 的课调到 [日期]\" |\n\n**触发前提**：要有**明确的排课动作 + 对象**（谁、哪天）。单说\"调课\"\"补课\"\"请假\"先追问是谁、哪一次；老师在聊别的时顺口提到\"最近老调课\"不激活。\n\n| 老师说的话 | 处理 |\n|---|---|\n| \"小A 这节课上完了\" / \"扣一课时\" | 转课后记录助手（本 SKILL 不扣课时） |\n| \"小A 家长问调课怎么回\" | 转家长沟通助手 |\n| \"今天有哪些课\" | 转独立教师工作台（只读汇总） |\n| 补课 | \"补课\" / \"[化名] 缺课要补\" |\n| 请假 | \"[化名] 请假\" / \"学员请假怎么扣课时\" |\n| 课时包 | \"[化名] 还剩几课时\" / \"课时包快到期了\" |\n| 登记课时包 | \"[化名] 续了 [N] 课时，帮我登记\" |\n| 排课冲突 | \"这个时间排了谁\" / \"有没有冲突\" |\n| 下一节课 | \"我下一节课是谁\" |\n| 续费节点 | \"[化名] 课时快用完了\" |\n\n---\n\n## 三、核心流程\n\n```text\n                ┌──────────────────────────┐\n                │ ① 读学员可上课时间段      │\n                │  studentCards[].availability│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ② 周课表草案              │\n                │  固定课 + 临时调课        │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ③ 冲突检测                │\n                │  老师时间 × availability  │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ④ 排课建议 → 老师确认     │\n                │  确认后才写 lessonSchedule│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑤ 课时包台账              │\n                │  剩余 / 到期 / 待确认条目 │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑥ 补课/请假/调课          │\n                │  一律生成待确认建议       │\n                └──────────────────────────┘\n```\n\n---\n\n## 四、可上课时间段\n\n### 4.1 学员可上课时间（`availability[]`）\n\n学员的可上课时间登记在 `workspace.studentCards[].availability[]`，每条是一个 `{dayOfWeek, startTime, endTime}` 三元组：\n\n```text\n小A 的 availability：\n  { \"dayOfWeek\": \"周三\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n  { \"dayOfWeek\": \"周五\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n```\n\n**只记时间，不记原因**。\"周三要上钢琴课\"\"周日爷爷家\"这类信息属于家庭安排，不写进档案——排课只需要知道哪段时间可用。\n\n**不要用 `learningPreferences` 做时间冲突检测**。那个字段记的是学习方式偏好（\"喜欢先看例题\"\"步骤要写全\"），拿它判断时间会得出荒唐结论。老师若在 `learningPreferences` 里写了时间类内容，提示一次并帮他迁到 `availability[]`。\n\n> 📎 完整登记模板见 `references/weekly-schedule-template.md`（第一节\"学员可上课时间段\"）\n\n### 4.2 老师自己的时间\n\n老师的不可用时间与上课偏好记在 `workspace.teacherProfile` 与会话中，不入学员卡。授课形式（线上/线下）读 `teacherProfile.deliveryChannels`。\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第二节\"老师时间矩阵\"：不可用时间 + 可用课时位 + 老师偏好）\n\n---\n\n## 五、周课表生成\n\n### 5.1 课表模板\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第三节\"周课表模板\"：周一至周五放学后时段的课表示例，周六、周日两列默认不排 + 课时统计栏）\n\n### 5.2 课表生成三步走\n\n```text\n第 1 步：固定学员优先\n  · 每周固定时间学员先排\n  · 锁定本周的\"硬骨架\"\n\n第 2 步：临时学员填空\n  · 填空固定学员之间的空位\n  · 优先安排学习节奏紧急的学员\n\n第 3 步：留缓冲位\n  · 留 1-2 个空位处理调课/补课\n  · 不满课是健康的课表\n```\n\n---\n\n## 六、冲突检测\n\n### 6.1 冲突类型\n\n```text\n■ 老师时间冲突\n  · 同时段 workspace.lessonSchedule[] 已有 status=scheduled/makeup 的课\n    （比对 startTime 与 durationMinutes 算出的区间是否重叠）\n  · 同时段是老师登记的不可用时间\n\n■ 学员时间冲突\n  · 拟排时段不落在该学员任何一条 availability[] 区间内\n    （判据：同一 dayOfWeek，且 startTime ≤ 拟排开始，\n      拟排结束 ≤ endTime）\n  · 学员没登记 availability[] → 不猜，先问一次并登记\n\n■ 时段规定\n  · 所有学段（面向中小学生的校外培训都适用：国办发〔2018〕80 号；教基厅函〔2021〕11 号）：\n    线下课结束晚于 20:30、线上课结束晚于 21:00 → 提前；\n    落在工作日白天的学校上课时间 → 不排\n  · 小学中段 20:00、小学高段 20:20 前结束（shared/grade-bands.md 三）\n  · 面向义务教育阶段学生的学科类培训（\"双减\"意见；高中学员参照执行，按当地规定）：\n    落在周六、周日、法定节假日、寒暑假 → 不排；\n    线上每课时超过 30 分钟，或两课时之间不足 10 分钟 →\n    拆成每课时不超过 30 分钟、中间休息不少于 10 分钟\n  · 处理：说一句依据，给出合规的候选时段或拆法，由老师选；其余照常排\n\n■ 课时包提示\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n  · pendingConfirmations 非空（剩余课时可能虚高）\n```\n\n**冲突检测只看时间。** 不因为\"这个学员最近状态不好\"\"家长不太配合\"之类判断去调整排课建议——那不是排课要解决的问题。\n\n### 6.2 冲突检测输出\n\n> 📎 完整报告模板见 `references/weekly-schedule-template.md`（第 4.2 节\"冲突检测输出\"：排课请求 + 四类检测结果 + 建议）\n\n---\n\n## 七、补课/请假/调课三动作\n\n### 7.1 请假\n\n```text\n■ 学员请假\n  操作：\n    · 课时不扣（对应课节 status=absence，\n      课时条目由 lesson-log 生成 units=0 的待确认条目）\n    · 记录请假日期；原因只记\"已请假\"，不记家庭细节\n    · 不代排补课；需要补课时按 §7.2 生成待确认的补课建议\n```\n\n> 📎 请假登记模板见 `references/leave-makeup-reschedule-forms.md`（第一节）\n\n### 7.2 补课\n\n```text\n■ 补课\n  操作：\n    · 在老师可用时间 ∩ 该学员 availability[] 中、合乎 §6.1 时段规定的范围里找候选时段\n    · 生成\"待确认的补课建议\"，列出 1-3 个候选：\n        「小A 缺的这节课，这两个时间都排得开：\n          本周五 18:30-20:00 / 下周五 18:30-20:00。\n          选哪个？也可以都不选。」\n    · 老师选定并与学员/家长确认后，才写入 lessonSchedule[]（status=makeup）\n    · 课时消耗仍由 lesson-log 在课后生成待确认条目\n\n■ 排课优先级（建议顺序，老师可推翻）\n  · 同周补 > 下周补\n  · 一次排完 > 分散排\n  · 尽量贴近该学员原有的上课节奏\n```\n\n> 📎 补课安排模板见 `references/leave-makeup-reschedule-forms.md`（第二节）\n\n### 7.3 调课\n\n```text\n■ 调课（双方协商）\n  操作：\n    · 老师主动调：与学员/家长协商新时间\n    · 学员/家长主动调：登记新时间\n    · 双方都要确认\n\n⚠️ 调课原则：\n  · 一周内完成调课，不留\"待定\"\n  · 新时间同样过 §6.1 时段规定（不占学校上课时间、按时结束；面向义务教育阶段学生的学科类培训不调到周六、周日、法定节假日或寒暑假）\n  · 调课记录要可追溯\n  · 频繁调课的学员需沟通原因\n```\n\n> 📎 调课登记模板见 `references/leave-makeup-reschedule-forms.md`（第三节）\n\n---\n\n## 八、课时包台账\n\n### 8.1 学员课时台账\n\n> 📎 完整台账模板见 `references/weekly-schedule-template.md`（第六节\"课时包台账\"：课时包信息 + 待确认条目 + 消耗/续费记录 + 提示条件）\n\n### 8.2 课时包提示规则\n\n提示对象是**老师本人**。要不要告诉家长、什么时候说，由老师决定；本 SKILL 不推送任何家长消息。\n\n```text\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n\n■ 提示动作\n  · 向老师陈述事实：「小A 还剩 3 课时，课时包 11-30 到期，\n    另有 1 条待确认（确认后剩 2 课时）。」\n  · 不催单、不制造紧迫感、不替老师决定要不要续\n\n■ 续费节点口径\n  · 已用 50% / 70%（与 xiaozhi-teach-renewal-report、\n    xiaozhi-teach-student-intake 同一套，本 SKILL 不另设节点）\n\n■ 要和家长谈时\n  · 话术起草交 xiaozhi-teach-parent-communication\n  · 起草前先查 workspace.studentCards[].consent 的\n    parentCommunicationAllowed；发送由老师本人完成\n\n■ 登记课时包时（新开或续课）\n  · 按这一次收的课时与起止判断，不按累计的 totalUnits：\n    这次的课时折成标准课时超过 60（线下 45 分钟、线上 30 分钟为 1 课时，\n    如 90 分钟一节算 2 课时，短于标准时长的按 1 课时；每节多长看该学员的\n    lessonSchedule[].durationMinutes，没排过课的问老师一句，课时数本身已超过 60 的不用问），\n    或这次的起始日到到期日超过 3 个月\n    （没填 startDate 时按登记当天算；续课加在原课时包上的，起始日按这次\n    续课登记当天算，不用首次的 startDate）→ 提示老师一次：\n    「一次收费的时间跨度不超过 3 个月，也不超过 60 课时（教监管函〔2021〕2 号，\n    全国性规定；标准课时见发改价格〔2021〕1279 号）。这次 [N] 课时、每节 [N] 分钟，\n    折合约 [N] 个标准课时（跨度 [N] 个月），超出了；如果是一次收的费，请核对收费方式。」\n  · 折算只用于这一步：totalUnits 照老师给的数写，台账照老师的记法\n  · 只提示、不拦截：老师核对后说照登就照登，课时数与日期照老师给的写\n  · startDate 可以不填\n```\n\n### 8.3 课时异常处理\n\n```text\n■ 剩余课时不足却又要排课\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\n    照排 / 先跟家长确认 / 暂不排？」\n  · 老师选\"照排\"才写入 lessonSchedule[]\n  · 本 SKILL 不代做\"允许透支 N 课时\"的决定，也不改动课时数字\n\n■ 学员请假不补课\n  · 课时不扣；是否另行约定由老师与家长自行商定\n  · 本 SKILL 不涉及金额结算\n\n■ 老师取消\n  · 课时不扣\n  · 生成待确认的补课建议（候选时段 1-3 个），\n    由老师选定并与家长确认后写入\n  · 不涉及退款：课时包只记数量，金额相关事项请用独立记账工具处理\n```\n\n---\n\n## 九、特殊场景\n\n### 9.1 寒暑假、休息日与法定节假日\n\n```text\n■ 所有学段\n  · 工作日不排在学校上课时间（国办发〔2018〕80 号）；结束时间照 §6.1\n\n■ 面向义务教育阶段学生的学科类培训\n  · 周六、周日、法定节假日与寒暑假不排课（双减意见）\n  · 老师提出要排时：说一句依据，改在开学后（或下周）的\n    工作日放学后排；其余照常排，不长篇解释\n\n■ 面向高中学生\n  · 休息日、法定节假日与寒暑假参照执行，按当地规定\n\n■ 本 SKILL 不预设\n  · 周末、假期的加课密度\n  · 假期课时包\n\n■ 培训进度\n  · 不超过学员所在学校的同期进度，不提前教下学期、下学年的内容\n  · 放假前最后一节：学期收尾，记下开学后从哪儿接着上\n```\n\n### 9.2 考试期排课\n\n```text\n■ 考前 2 周\n  · 减少新课\n  · 增加复习/测评\n  · 学员优先完成学校作业\n\n■ 考试期间\n  · 暂停新课\n  · 答疑 + 心理支持\n  · 考后复盘\n\n■ 考后 1 周\n  · 复盘考试结果\n  · 调整下阶段计划\n```\n\n### 9.3 学员请假多\n\n```text\n■ 触发条件\n  · 1 个月内请假 ≥ 3 次\n  · 连续 2 周请假\n\n■ 应对\n  · 主动了解原因\n  · 评估是否需要调整节奏\n  · 考虑续费意愿\n```\n\n---\n\n## 十、接口\n\n### 10.1 数据流\n\n```text\n  老师口述可上课时间 ──→ ┌────────────────────┐\n  老师确认排课建议   ──→ │ schedule-manager    │ ──→ 周课表（渲染视图）\n                        │ （本 SKILL）         │ ──→ 待确认的补课建议\n                        └─────────┬──────────┘\n                                  │ 写这两处\n                    ┌─────────────┴─────────────┐\n                    ↓                           ↓\n             lessonSchedule            coursePackageLedger\n             （课节）                  （不含 usedUnits 增减）\n```\n\n本 SKILL 不需要任何 SKILL 先跑一遍：学员没建卡也能排课，只是没有 `availability[]` 可比对，此时先问一次并登记。\n\n### 10.2 读写字段\n\n> 统一读写共享工作空间 `solo-teacher-workspace.schema.json`（下称 `workspace`）。字段名一律以该 schema 为准。\n\n```text\n读：\n  workspace.studentCards[].availability[]\n      → 学员可上课时间段（dayOfWeek / startTime / endTime）\n        这是时间冲突检测的唯一依据\n  workspace.studentCards[].alias / .status / .gradeBand\n      → 化名、是否在读、学段（学段决定 §6.1 时段规定怎么用：义务教育阶段\n        与高中分开，小学中段、高段按 shared/grade-bands.md 一的就寝时间再提前）\n  workspace.teacherProfile.deliveryChannels / .serviceModes\n      → 线上/线下、一对一/小班，决定单节时长建议\n  workspace.coursePackageLedger[].totalUnits / .usedUnits /\n      .remainingUnits / .startDate / .expiryDate / .pendingConfirmations[]\n      → 课时包台账；pendingConfirmations 非空时剩余课时按\"未含 N 条待确认\"展示；\n        startDate 到 expiryDate 的跨度用于 §8.2 的登记提示（续课加在原课时包上的，起始日按这次续课登记当天算）\n  workspace.lessonLogs[].consumeLessonUnits\n      → 单节实际消耗（由 lesson-log 写，本 SKILL 只读）\n\n写：\n  workspace.lessonSchedule[]（lessonId / studentId / subject /\n      startTime / durationMinutes / day_of_week / status / lessonGoal）\n      → 排课结果，老师确认后写入\n      status 取值：scheduled / completed / rescheduled / makeup /\n                  cancelled / absence / trial\n  workspace.coursePackageLedger[].totalUnits / .startDate / .expiryDate\n      → 新开或续课时登记（startDate 可不填）；超过 60 课时或起止超过\n        3 个月时按 §8.2 提示老师核对，不拦截\n  workspace.coursePackageLedger[].renewalAttention\n      → remainingUnits ≤ 3 或 expiryDate 距今 ≤ 7 天时置为 true\n\n本 SKILL 不写：\n  workspace.coursePackageLedger[].usedUnits / .remainingUnits 的增减\n      → 由老师在 lesson-log 确认待确认条目后变更\n\n派生视图（非存储字段）：\n  · 周课表        ← 由 workspace.lessonSchedule[] 按 day_of_week 渲染\n  · 冲突检测报告  ← 由 workspace.lessonSchedule[] 的 startTime/durationMinutes\n                    与 workspace.studentCards[].availability[] 实时比对\n  · 补课候选时段  ← 老师可用时间 ∩ 该学员 availability[] 的差集\n```\n\n### 10.3 谁来读\n\n`xiaozhi-teach-solo-dashboard` 只读 `lessonSchedule[]` 与 `coursePackageLedger[]` 渲染今日课表和课时区块；`xiaozhi-teach-lesson-log` 读 `lessonSchedule[].status` 判断是否试听、是否补课。都是它们主动读，本 SKILL 不推送。\n\n---\n\n## 十一、字段级高敏信息防护\n\n```text\n✅ 排课中可使用：化名、availability[] 的时间段、课时包数量\n❌ 禁止：学员家庭住址、家长身份、就读学校与班级、联系方式\n✅ 写入数据：课节结构、课时包数量\n❌ 不写入：学员真实姓名、金额、家长联系方式\n\n✅ availability[] 只记时间：{周三, 18:30, 20:00}\n❌ 不记原因：\"周三要上钢琴课\"\"周日去爷爷家\"属于家庭安排，不入档案\n\n✅ 冲突检测：仅时间维度\n❌ 不分析：学员家庭事务、学习状态等非时间因素\n```\n\n---\n\n## 十二、行为准则\n\n| ✅ 应该做 | ❌ 不能做 |\n|---------|---------|\n| 排课前比对 availability[] | 拿 learningPreferences 判断时间 |\n| 冲突先报出来再排 | 冲突了再处理 |\n| 补课给候选时段等老师定 | 替老师把补课排进去 |\n| 剩余课时注明\"未含 N 条待确认\" | 拿虚高的剩余课时判断续费 |\n| 课时不足时先问老师 | 自行决定\"允许透支 1 课时\" |\n| 到期提示只陈述事实 | 用剩余课时制造紧迫感 |\n| 所有学段不占学校上课时间；义务教育阶段学员只排工作日放学后 | 把课排进学校上课时间，或把义务教育阶段学员排进周六、周日、法定节假日、寒暑假 |\n| 线上课每课时不超过 30 分钟、间隔不少于 10 分钟 | 排一节 60 分钟不间断的线上课 |\n| 课时包超过 60 课时或 3 个月时提示老师核对 | 替老师拦下登记或改课时数 |\n| 一律用化名 | 课表里出现真实姓名 |\n\n---\n\n## 十三、与其他 SKILL 的协同清单\n\n```text\n排课与课时管理\n    读 workspace.studentCards[].availability[] ← student-intake 登记\n    读 workspace.coursePackageLedger[]         ← 本 SKILL 与 lesson-log 共同维护\n    写 workspace.lessonSchedule[]              ← 本 SKILL 唯一写入方\n    写 workspace.coursePackageLedger[].totalUnits / .startDate / .expiryDate /\n       .renewalAttention\n\n  课时的实际扣减在 xiaozhi-teach-lesson-log（老师确认待确认条目）。\n  要和家长谈调课或续费，话术交 xiaozhi-teach-parent-communication，\n  发送由老师本人完成。\n```\n\n**禁止行为**：\n- 禁止未经老师确认写入课表\n- 禁止擅自扩大学员可上课时间范围\n- 禁止改动 `usedUnits` / `remainingUnits`\n- 禁止提出退款、赔付或任何金额相关建议\n- 禁止代老师联系学员或家长\n- 禁止课表中出现真实姓名\n\n---\n\n### 隐私与数据控制入口\n- 查看：「查看我的[课表记录]」\n- 更正：「更正我的[课表记录]」\n- 删除：「删除我的[课表记录]」（删除后不可恢复，会先确认一次）\n- 暂停：「这次不要记忆」（本次会话不读取、不保存任何记录，也不发起回写与交接）/「暂停提醒」\n- 共享控制：「不要共享给其他SKILL」/「不要给家长看」\n- 导出：「导出我的[课表记录]」（以文本形式给出，便于转存）\n\n学员/家长提出时同样适用（由老师核实请求人身份后代为执行），按学员化名定位：「查看 小A 的课表」「删除 小A 的可上课时间」。\n\n**校验要求**：跨 SKILL 共享或建档前，须确认 `consent.crossSkillSharing` / `consent.profileEnabled` 为 true；学员卡 `status` 为\"暂停记录\"时不再写入新课节。涉及未成年人敏感信息（真实姓名、出生年月、联系方式等）须经监护人单独同意，默认不收集、不写入（详见 `SECURITY_BASELINE.md`）。\n\n---\n\n## 十四、参考资源\n\n- `references/weekly-schedule-template.md` — 周课表模板（含学员/老师时间矩阵、冲突检测输出、课时包台账等完整模板）\n- `references/leave-makeup-reschedule-forms.md` — 请假/补课/调课登记模板\n\n---\n\n> 💡 **小智说：**\n> \"独立教师最大的浪费不是没课可上，\n>  是把时间花在'我不知道今天该上什么'。\n>  排课不是排时间表，\n>  是把你的人生从混乱中拯救出来。\n>  当你的课表、课时、学员、续费都在一个地方清楚可见，\n>  你才有时间去做真正重要的事——把课上好。\"\n\nFile v2.11.1:_meta.json\n\n{\n  \"ownerId\": \"kn79c5gcmfkt9p1pk656tgq7nd853s7v\",\n  \"slug\": \"xiaozhi-teach-schedule-manager\",\n  \"version\": \"2.11.1\",\n  \"publishedAt\": 1791477889919\n}\n\nFile v2.11.1:references/leave-makeup-reschedule-forms.md\n\n# 请假/补课/调课登记模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` §七\"补课/请假/调课三动作\"使用。三张表只维护在本文件，`weekly-schedule-template.md` 不再重复。\r\n> 课节状态取 `solo-teacher-workspace.schema.json` 的 `lessonEvent.status` 枚举：`scheduled / completed / rescheduled / makeup / cancelled / absence / trial`。\r\n> 课时的实际扣减不在本 SKILL：由 `xiaozhi-teach-lesson-log` 课后生成待确认条目，老师确认后才计入 `usedUnits`。\r\n\r\n---\r\n\r\n## 一、请假登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 请假登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM]\r\n课节状态：改为 absence\r\n课时处理：□不扣（默认）□按实际时长记 □其他约定\r\n          → 由 lesson-log 生成对应的待确认条目，老师确认后生效\r\n是否补课：□要补（走第二节）□不补 □待家长回复\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**请假原因只记\"已请假\"**。孩子生病、家里有事、临时加课——这些是家庭信息，写进档案没有教学价值，却会一直留在那里。老师自己记得就行。\r\n\r\n---\r\n\r\n## 二、补课安排\r\n\r\n补课**不由 AI 直接排进课表**。流程是给候选、老师定、家长确认、才写入。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 补课安排（待确认）\r\n学员：小A（原 [lessonId] [日期] 请假 / 老师取消）\r\n候选时段（取\"老师可用时间 ∩ 该学员 availability[]\"，并合乎 SKILL.md §6.1 时段规定）：\r\n  ① [本周五] [18:30-20:00]\r\n  ② [下周五] [18:30-20:00]\r\n  ③ [    ] [           ]\r\n老师选定：[    ]\r\n学员/家长确认：□已确认 □待回复\r\n写入课表：确认后新增 lessonEvent，status=makeup\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**候选一个都排不出来时**，如实说\"这周没有同时符合你和小A空闲的时段\"，并列出最接近的两个（说明各自差在哪），由老师决定是否协调，不擅自放宽 `availability[]`。\r\n\r\n**不涉及退款**：老师取消导致的补课只谈时间，不谈金额、金额折算或赔付。课时包只记数量，资金请用独立的记账工具处理。\r\n\r\n---\r\n\r\n## 三、调课登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 调课登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM] → 状态改为 rescheduled\r\n新时间：[日期] [HH:MM-HH:MM]\r\n        （须落在该学员 availability[] 内，并合乎 SKILL.md §6.1 时段规定；不在\r\n          availability[] 内的先问是否临时可用，临时同意的不写进 availability[]）\r\n课时处理：□正常（新课节照常记课时）□补课性质\r\n双方确认：□老师已确认 □学员/家长已确认\r\n写入课表：两边都确认后才写新的 lessonEvent\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**调课原则**\r\n- 一周内定下来，不留\"待定\"——待定的课等于没排。\r\n- 每次调课都留一条记录，下次谈节奏时有据可查。\r\n- 同一学员一个月内调课 ≥ 3 次时，提示老师\"要不要和家长聊聊固定时间\"，只提示一次，不重复催。\r\n\r\n---\r\n\r\n## 四、三张表的共同规则\r\n\r\n- 一律用化名（`studentCards[].alias`），不出现真实姓名。\r\n- 不记家庭原因、家长职业、就读学校班级、联系方式。\r\n- 学员卡 `status` 为\"暂停记录\"或\"已结课\"时，不再新增课节。\r\n- 需要通知家长时，话术交 `xiaozhi-teach-parent-communication` 起草（先查 `parentCommunicationAllowed`），发送由老师本人完成。\n\nFile v2.11.1:references/weekly-schedule-template.md\n\n# 周课表与课时台账模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` 使用。\r\n> 完整 Prompt 逻辑请参阅 [`../SKILL.md`](../SKILL.md)。\r\n> 课时长度与就寝时间参数见 `shared/grade-bands.md`；续费节点与 `xiaozhi-teach-renewal-report` 统一为已用 50% / 70%。\r\n\r\n---\r\n\r\n## 一、学员可上课时间段（`availability[]`）\r\n\r\n时间冲突检测的**唯一依据**。每条写成 `{dayOfWeek, startTime, endTime}`，只记时间，不记原因。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 可上课时间段 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 时间段（最多 21 条）\r\n  ① dayOfWeek [周三]  startTime [18:30]  endTime [20:00]\r\n  ② dayOfWeek [周五]  startTime [18:30]  endTime [20:00]\r\n  ③ dayOfWeek [    ]  startTime [     ]  endTime [     ]\r\n  格式：dayOfWeek 取 周一…周日；时间为 24 小时制 HH:MM\r\n\r\n■ 单次课时长：[N] 分钟\r\n  参考 shared/grade-bands.md 三：线下一对一/小班常见 60 或 90 分钟；\r\n  线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（义务教育阶段学科类；\r\n  高中参照）。授课形式读 teacherProfile.deliveryChannels。\r\n\r\n■ 课程最晚结束时间\r\n  线下不晚于 20:30，线上不晚于 21:00（所有学段；国办发〔2018〕80 号、教基厅函〔2021〕11 号）\r\n  小学中段 就寝 21:00 → 再提前到 20:00 结束\r\n  小学高段 就寝 21:20 → 再提前到 20:20 结束\r\n  以上是上限，家庭作息更早的按家庭。\r\n\r\n■ 哪几天排\r\n  所有学段都不排在学校上课时间。面向义务教育阶段学生的学科类培训\r\n  只排工作日放学后，周六、周日、法定节假日与寒暑假不排；高中学员\r\n  这一条参照执行，按当地规定。\r\n\r\n■ 不写进来的东西\r\n  ❌ \"学校晚自习到 21:00\"（写不可用即可，不写去向）\r\n  ❌ \"周三上钢琴课\"（家庭安排，不入档案）\r\n  ❌ \"妈妈周日要加班\"（家长信息，不入档案）\r\n  这些时间直接不出现在 availability[] 里就是了。\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n> ⚠️ 不要把时间信息写进 `learningPreferences[]`。那个字段记的是学习方式偏好（\"喜欢先看例题\"），不是时间。\r\n\r\n---\r\n\r\n## 二、老师时间矩阵\r\n\r\n老师自己的时间不入学员卡，只在会话中使用。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 老师时间矩阵 · [本周]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 老师固定不可用时间\r\n  · 工作：[时间段]\r\n  · 通勤：[时间段]\r\n  · 个人事务：[时间段]\r\n\r\n■ 老师可用课时（工作日放学后）\r\n  周一：[N] 个课时位\r\n  周二：[N] 个课时位\r\n  ...\r\n  周五：[N] 个课时位\r\n  本周总可用：[N] 个课时位\r\n  周六、周日：不排（义务教育阶段学科类；高中学员参照执行，按当地规定）\r\n\r\n■ 老师偏好（示例，按老师实际情况填）\r\n  · 周四晚上不排课\r\n  · 晚上最后一节课的结束时间，按所带学员学段中最早的一档来定\r\n    （见第一节；带小学中段学员不排到 20:00 之后，小学高段 20:20）\r\n  · 工作日放学后排课（面向义务教育阶段学生的学科类培训不排休息日、\r\n    法定节假日与寒暑假）\r\n  · 线上课每课时不超过 30 分钟，课间不少于 10 分钟\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 三、周课表模板\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 周课表 · [本周日期范围]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n          │ 周一   │ 周二   │ 周三   │ 周四   │ 周五   │ 周六   │ 周日\r\n──────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n放学 17:30│ 化名A  │ 化名D  │ 化名C  │ 化名A  │ 休息   │ —      │ —\r\n晚上 19:00│ 化名E  │ 化名F  │ 化名B  │ 休息   │ 化名G  │ —      │ —\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时统计\r\n  · 本周总课时：[N] 课时\r\n  · 已排：[N] 课时\r\n  · 空闲位：[N] 个\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：周六、周日两列默认空（—）：不排（义务教育阶段学科类）；法定节假日\r\n    与寒暑假同样不排，高中学员参照执行、按当地规定。\r\n    19:00 这一排的线下课不超过 90 分钟（20:30 前结束）；线上课每课时\r\n    不超过 30 分钟、课间不少于 10 分钟、21:00 前结束。小学中段学员\r\n    20:00、小学高段学员 20:20 前结束（见第一节）。\r\n```\r\n\r\n### 3.1 课表生成三步走\r\n\r\n```text\r\n第 1 步：固定学员优先\r\n  · 每周固定时间学员先排\r\n  · 锁定本周的\"硬骨架\"\r\n\r\n第 2 步：临时学员填空\r\n  · 填空固定学员之间的空位\r\n  · 优先安排学习节奏紧急的学员\r\n\r\n第 3 步：留缓冲位\r\n  · 留 1-2 个空位处理调课/补课\r\n  · 不满课是健康的课表\r\n```\r\n\r\n---\r\n\r\n## 四、冲突检测\r\n\r\n### 4.1 冲突类型\r\n\r\n```text\r\n■ 老师时间冲突\r\n  · 同时段 lessonSchedule[] 已有 status=scheduled/makeup 的课\r\n    （按 startTime + durationMinutes 算区间，看是否重叠）\r\n  · 同时段是老师登记的不可用时间\r\n\r\n■ 学员时间冲突\r\n  · 拟排时段不落在该学员任何一条 availability[] 内\r\n    判据：同一 dayOfWeek 且 startTime ≤ 拟排开始，拟排结束 ≤ endTime\r\n  · 该学员没有 availability[] 记录 → 不猜，先问一次并登记\r\n\r\n■ 时段规定\r\n  · 所有学段（面向中小学生的校外培训都适用：国办发〔2018〕80 号；教基厅函〔2021〕11 号）：\r\n    线下课结束晚于 20:30、线上课结束晚于 21:00 → 提前；\r\n    落在工作日白天的学校上课时间 → 不排\r\n  · 小学中段 20:00、小学高段 20:20 前结束（见第一节）\r\n  · 面向义务教育阶段学生的学科类培训（\"双减\"意见；高中学员参照执行，按当地规定）：\r\n    落在周六、周日、法定节假日、寒暑假 → 不排；\r\n    线上每课时超过 30 分钟，或两课时之间不足 10 分钟 →\r\n    拆成每课时不超过 30 分钟、中间休息不少于 10 分钟\r\n  · 处理：说一句依据，给出合规的候选时段或拆法，由老师选；其余照常排\r\n\r\n■ 课时包提示\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n  · pendingConfirmations 非空（剩余课时可能虚高）\r\n```\r\n\r\n### 4.2 冲突检测输出\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n⚠️ 冲突检测报告 · [排课请求]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 排课请求\r\n  学员：小A\r\n  时间：[日期] [HH:MM-HH:MM]\r\n  时长：[N] 分钟\r\n\r\n■ 检测结果\r\n  老师时间：□冲突 □可用\r\n    · 冲突对象：[同时段已排的课节 lessonId]\r\n  学员时间：□冲突 □可用\r\n    · 判据：availability[] 中 [周三 18:30-20:00]，\r\n      拟排 [周三 19:30-20:30] 超出区间\r\n    · 或：该学员尚无 availability[] 记录，需先登记\r\n  时段规定：□合规 □需调整\r\n    · 如：线下课排到 [20:00-21:30]，晚于 20:30；或排在周六\r\n  课时包：□正常 □需提示\r\n    · 剩余：[N] 课时（未含 [N] 条待确认）\r\n    · 到期：[日期]（[N] 天后）\r\n\r\n■ 建议\r\n  · 若冲突：给 1-3 个落在 availability[] 内的候选时段，由老师选\r\n  · 若时段不合规：说一句依据，改给工作日放学后、合乎时长规定的候选\r\n  · 若课时不足：先问老师\"照排 / 先跟家长确认 / 暂不排\"\r\n  · 不主动提出退款、金额折算或催缴\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 五、补课/请假/调课三动作\r\n\r\n三张登记表只维护在一处，见 `leave-makeup-reschedule-forms.md`（请假 / 补课 / 调课，含 `lessonSchedule[].status` 的对应取值）。本文件不再重复。\r\n\r\n---\r\n\r\n## 六、课时包台账\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n💰 课时包台账 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时包信息\r\n  课时：[N] 课时（起 [日期]，到期 [日期]）\r\n  续费节点预警：[日期]（[N] 天前）\r\n  登记提示：这一次收的课时折成标准课时超过 60（90 分钟一节算 2 课时、短于标准时长的按 1 课时，每节多长\r\n    看课表，不清楚时问老师），或这一次的起止超过 3 个月（没填起始日按登记当天算，\r\n    续课按这次续课登记当天算）→ 提示老师一次「一次收费的时间跨度不超过 3 个月，\r\n    也不超过 60 课时（教监管函〔2021〕2 号）；这次折合约 [N] 个标准课时，如果是\r\n    一次收的费，请核对收费方式」；只提示、不拦截；续课按这一次新增的算，不按累计；\r\n    折算只用于这一步，台账课时照老师的记法\r\n\r\n■ 课时消耗\r\n  初始：[N] 课时\r\n  已消耗：[N] 课时\r\n  剩余：[N] 课时（[N]%）\r\n  状态：□充足 □预警 □耗尽\r\n\r\n■ 待确认条目（pendingConfirmations）\r\n  · [lessonId]（[生成时间]）：[N] 课时 —— 等老师确认\r\n  · 确认前不计入已消耗；剩余课时展示一律注明\"未含 [N] 条待确认\"\r\n\r\n■ 消耗历史（老师确认后才记入）\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n\r\n■ 续费记录\r\n  · 第 1 次续费：[日期] +[N] 课时\r\n  · 第 2 次续费：[日期] +[N] 课时\r\n\r\n■ 提示条件（置 renewalAttention，提示对象是老师本人）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：本台账只记课时数量，不记金额、单价、收款、欠费、退费。\r\n```\r\n\r\n---\r\n\r\n## 七、课时提示规则\r\n\r\n```text\r\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n\r\n■ 提示动作（说给老师听，不推送家长）\r\n  · 陈述事实：「小A 还剩 3 课时，课时包 [日期] 到期，\r\n    另有 1 条待确认（确认后剩 2 课时）。」\r\n  · 不催单、不制造紧迫感、不替老师决定要不要续\r\n\r\n■ 续费节点口径\r\n  · 已用 50% / 70%\r\n    与 xiaozhi-teach-renewal-report、xiaozhi-teach-student-intake\r\n    同一套，本文件不另设节点\r\n\r\n■ 要和家长谈时\r\n  · 话术起草交 xiaozhi-teach-parent-communication\r\n  · 起草前查 studentCards[].consent 的 parentCommunicationAllowed\r\n  · 发送由老师本人完成\r\n```\r\n\r\n### 7.1 课时异常处理\r\n\r\n```text\r\n■ 剩余课时不足却又要排课\r\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\r\n    照排 / 先跟家长确认 / 暂不排？」\r\n  · 老师选\"照排\"才写入课表；不代做\"允许透支 N 课时\"的决定\r\n\r\n■ 学员请假不补课\r\n  · 课时不扣；是否另行约定由老师与家长商定\r\n  · 不涉及金额结算\r\n\r\n■ 老师取消\r\n  · 课时不扣\r\n  · 生成待确认的补课建议（1-3 个落在 availability[] 内的候选时段），\r\n    老师选定并与家长确认后写入课表\r\n  · 不涉及退款：课时包只记数量，金额相关请用独立记账工具\r\n```\r\n\r\n---\r\n\r\n## 八、特殊场景处理\r\n\r\n### 8.1 寒暑假、休息日与法定节假日\r\n\r\n```text\r\n■ 所有学段\r\n  · 工作日不排在学校上课时间（国办发〔2018〕80 号）；结束时间照 SKILL.md §6.1\r\n\r\n■ 面向义务教育阶段学生的学科类培训\r\n  · 周六、周日、法定节假日与寒暑假不排课（双减意见）\r\n  · 老师提出要排时：说一句依据，改在开学后（或下周）的\r\n    工作日放学后排；其余照常排，不长篇解释\r\n\r\n■ 面向高中学生\r\n  · 休息日、法定节假日与寒暑假参照执行，按当地规定\r\n\r\n■ 本 SKILL 不预设\r\n  · 周末、假期的加课密度\r\n  · 假期课时包\r\n\r\n■ 培训进度\r\n  · 不超过学员所在学校的同期进度，不提前教下学期、下学年的内容\r\n  · 放假前最后一节：学期收尾，记下开学后从哪儿接着上\r\n```\r\n\r\n### 8.2 考试期排课\r\n\r\n```text\r\n■ 考前 2 周\r\n  · 减少新课\r\n  · 增加复习/测评\r\n  · 学员优先完成学校作业\r\n\r\n■ 考试期间\r\n  · 暂停新课\r\n  · 答疑 + 心理支持\r\n  · 考后复盘\r\n\r\n■ 考后 1 周\r\n  · 复盘考试结果\r\n  · 调整下阶段计划\r\n```\r\n\r\n### 8.3 学员请假多\r\n\r\n```text\r\n■ 触发条件\r\n  · 1 个月内请假 ≥ 3 次\r\n  · 连续 2 周请假\r\n\r\n■ 应对\r\n  · 主动了解原因\r\n  · 评估是否需要调整节奏\r\n  · 考虑续费意愿\r\n```\r\n\r\n---\r\n\r\n## 九、自检清单\r\n\r\n每次输出排课/课时管理前，AI 必须自检：\r\n\r\n- [ ] 时间冲突是否只用 availability[] 判定（没用 learningPreferences）\r\n- [ ] 冲突检测是否覆盖四类（老师时间/学员 availability/时段规定/课时包）\r\n- [ ] 排课结果是否等老师确认后才写入\r\n- [ ] 补课是否给的是候选时段而不是直接排进去\r\n- [ ] 剩余课时展示是否注明\"未含 N 条待确认\"\r\n- [ ] 课时提示是否只陈述事实、未催单\r\n- [ ] 是否避免了退款、金额折算等金额相关表述（第六节登记提示里折合标准课时不算）\r\n- [ ] 所有学段是否都没排进学校上课时间；义务教育阶段学员是否只排在工作日放学后（周六、周日、法定节假日与寒暑假不排）\r\n- [ ] 结束时间是否不晚于线下 20:30、线上 21:00（小学中段 20:00、小学高段 20:20），线上每课时是否不超过 30 分钟、课间是否不少于 10 分钟\r\n- [ ] 补课/请假/调课是否都有登记，调课是否双方确认\r\n- [ ] 是否使用化名\r\n- [ ] 是否避开了高敏信息（住址/家长职业/学校班级/联系方式）\r\n- [ ] availability[] 是否只记时间、没记原因\r\n\r\n---\r\n\r\n> **使用提示**：建议老师在每周日下午排下一周的课表；考前 2 周切换到\"考试期\"排课模式（见 8.2）。\n\nFile v2.11.1:shared/ai-item-check.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# AI 出题自检协议\r\n\r\n> 任何由 SKILL 即兴生成的题目（同类题、变式题、纯净版题、梯度题、迁移测试、测评题、听力/阅读材料后的题），在发给学生或老师之前必须通过以下自检。通不过的题不得输出。\r\n\r\n## 一、自检步骤（模型内部完成，不向学生展示）\r\n\r\n1. **自解**：先完整解一遍，得到答案。\r\n2. **有解且唯一**：解存在；若为求值题答案唯一；若为开放题，写明\"开放题，参考答案不唯一\"。\r\n3. **条件充分且不多余**：删掉任一条件是否仍可解？增加了矛盾条件？（例：\"直线与 x 轴围成三角形\"不成题；\"不过第二象限且过第二象限\"无解。）\r\n4. **数值友好**：初中题默认整数或简单分数解；出现循环小数/无理数须是题目本意。应用题中的人数、件数、次数必须为非负整数。\r\n5. **学段内**：用到的概念、公式、术语不超出该 SKILL `grade_bands` 声明的学段（对照 `shared/vocab.md §10`）；超出则删题或标 `⚠高中`。\r\n6. **与原题同型**：作为\"同类题\"时，考查的通用维度和子类型必须与原错题一致（`shared/vocab.md §1-2`），只换情境或数字。\r\n7. **物理量合理**：物理题检查单位制、数量级（例：初中生跑步速度 4-6 m/s，家用电压 220 V）、图示是否可画。\r\n8. **语言题**：英语题检查语法本身正确、目标语法点只出现一次；语文病句题检查\"原句确实有病\"且\"修改后确实无病\"。\r\n\r\n## 二、输出标注\r\n\r\n- 学生端：题后不标注，但若学生质疑\"这题是不是有问题\"，必须认真复核，不得坚持错题。\r\n- 老师端：AI 生成的题必须标注 `【AI 生成，入库前请人工验算】`，未经老师确认不得写入资源库或试卷。\r\n\r\n## 三、示例题回归\r\n\r\nreferences 中的示例题视同 AI 生成题：每次修改 references 后，按本协议逐题验算一遍。CI 有三道检查：\r\n\r\n1. **声明**（A1）：含示例题的文件顶部须有一行 `> 示例题验算：YYYY-MM-DD`。\r\n2. **不得过期**（A2）：声明日期不得早于文件最后一次实质提交（纯升版提交不算）。改了题没重新验算、没更新日期，CI 直接失败——日期是承诺，不是装饰。\r\n3. **机器断言**（`scripts/verify-examples.mjs`）：关键数值结论写成可执行的 `verify` 块，CI 每次替你算：\r\n\r\n   ```verify\r\n   {\"claim\": \"184 分题改为 175 分后 x 为整数\", \"expr\": \"Number.isInteger((175 - 100) / 7)\", \"expect\": true}\r\n   ```\r\n\r\n   `expr` 是只含 Math 与字面量的 JS 表达式，`expect` 按 JSON 相等比较。历史上出过的病题（无解、非整数解、不成题）都应留一条断言，题目一改断言就红。\n\nFile v2.11.1:shared/crisis-exception.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 危机例外（共享片段）\r\n\r\n> 所有可能读到学生情绪文本的 SKILL 必须引入本片段，位置在任何\"熔断 / 温情转化 / 焦虑处理 / 家长输出\"规则**之前**。完整处置流程见 `shared/crisis-referral-protocol.md`（随每个技能包分发）。\r\n\r\n## 适用地域（先读这一节）\r\n\r\n本库的默认部署环境是**中国大陆的中文 K12 场景**，下文列出的求助号码也只在中国大陆有效。\r\n\r\n**在其他地区使用时，号码必须先本地化，不得原样照搬。** 具体做法：\r\n\r\n1. **不确定所在地区时先问一句**：\"你现在在哪个国家或地区？我需要据此给你当地的求助方式。\"——问清楚之前，只做\"联系身边信任的成年人\"这一条通用引导。\r\n2. 已知在中国大陆 → 用下文\"最低话术\"一节的号码（完整清单见 `shared/crisis-referral-protocol.md` 第五节）。\r\n3. 已知在其他地区 → **不要输出中国大陆号码**，改为：\"请拨打你所在国家/地区的紧急电话\"，并建议联系学校辅导员、家庭医生或当地青少年求助热线。若平台配置了本地渠道，用配置值。\r\n4. 任何情况下，\"找一位信任的成年人\"与\"如有即时危险请立刻拨打当地紧急电话\"这两条都通用，可以先说。\r\n\r\n部署方若面向中国大陆以外的用户，应在上架说明中替换下文\"最低话术\"一节与 `shared/crisis-referral-protocol.md` 第五节的渠道清单。\r\n\r\n## 在 SKILL.md 中的写法（复制以下三行，不要改写）\r\n\r\n```text\r\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\r\n```\r\n\r\n家庭安全类信号的不记情形，以下文\"家庭安全类信号\"一节为准。\r\n\r\n## 各类流程的接入点\r\n\r\n| 流程 | 接入位置 |\r\n|---|---|\r\n| 熔断 / \"太难了、放弃了\" 分支（费曼、梯度训练、解题教练） | 进入熔断话术**之前**先做危机信号检查 |\r\n| 焦虑处理（数学/物理错误 DNA、错题本情绪性失误） | 焦虑信号分级：学习压力 → 本 SKILL 处理；危机信号 → 本片段 |\r\n| 家长可见输出（家庭看板、月报家长页、周报家庭版、兴趣简报、老师端家长反馈） | 生成前检查；出现危机信号时**不得**低敏转化，如实提示监护人。**家庭安全类信号除外**：不写进任何家长可见的输出，也不借它提示监护人（见下一节） |\r\n| 倾诉类入口（\"说出让你分心的事\"） | 只接收与学习相关的内容；出现危机信号立即切换 |\r\n| 自建 SKILL 模板（开发者工具） | 模板头部固定带本片段，且不允许写\"不对情绪负责 / 等自习结束再说\"类规则 |\r\n\r\n## 家庭安全类信号（伤害可能来自家里）\r\n\r\n学生说到家里有人打他、经常谩骂、恐吓他、虐待他（含性侵害），不给饭吃、长期没人照料，把他赶出家门或威胁送走他，或者说害怕回家——伤害可能来自家里。这时去提示监护人，可能让孩子更危险。所以这一类**不按\"提示监护人\"处理**，其余处置照旧：\r\n\r\n- **对学生**：先说\"这不是你的错\"。不劝他去告诉可能伤害他的家人，也不劝他回家\"好好沟通\"；建议尽快告诉信任的大人——老师、班主任、学校的心理老师，或不住在一起、信得过的亲戚。学生自己说家里另一位大人（比如妈妈）能保护他，不反驳，同时仍建议告诉老师。有即时危险时，按上文\"适用地域\"给紧急电话。\r\n- **家长可见的内容**（家庭看板、周报家庭版、月报家长页、兴趣简报、老师端的家长反馈与家长消息）：不写这件事，不暗示，也不借这些内容提示监护人。学生端只对学生本人说，老师端只对老师说（家长、监护人自己说起家里有人打孩子的，按下文\"家长、监护人自己说打了孩子\"一条）。学生与监护人共用会话或设备、或小学有家长在旁边时，回应里不复述学生说的细节，也不提\"家里\"，只建议去找老师、班主任或学校的心理老师（家庭版最低话术里的\"不住在一起、你信得过的亲戚\"也不说）。\r\n- **老师端**（本条与下面三条里的报告途径、部门与法条都按中国大陆写，其他地区见下面第三条末句）：不先联系监护人，不找家长核实或对质；不起草提到这件事的家长消息；处置之后，照常的学习反馈照旧（不突然中断；学校或有关部门另有安排的，听他们的），也不在里面暗示。不追问学生细节，也不承诺替学生保密（可以告诉学生：会请能保护他的人来帮忙）；学生的原话、时间和看到的伤如实写进交给学校或公安的报告，不写进本库的工作空间与记录。要不要告诉家长、告诉哪一位，由学校（机构）和公安、民政等部门决定。\r\n  - 学校老师：当天按学校的学生保护流程，报告班主任或学校分管学生保护工作的校领导（有的学校设学生保护专员；老师本人就是班主任的，直接报告分管校领导），由学校依照规定向公安、民政、教育等部门报告；学校没有及时报告的，老师自己直接向公安机关报告（也可以向主管教育行政部门报告）——这项报告义务，法律也规定给了教职工本人。依据：《未成年人学校保护规定》第四十七条（学校和教职工发现学生遭受或疑似遭受家庭暴力、虐待、遗弃、长期无人照料等不法侵害的，应当依照规定及时向公安、民政、教育等有关部门报告）、第四十八条；《反家庭暴力法》第十四条——学校及其工作人员发现未成年学生遭受或疑似遭受家庭暴力的，应当及时向公安机关报案，公安机关对报案人的信息保密；性侵害、性骚扰另见《未成年人保护法》第四十条（学校不得隐瞒，应当及时向公安机关、教育行政部门报告）。\r\n  - 校外培训机构的老师按机构的流程报告，机构没有流程或没有及时报告的，自己直接向公安机关报告；独立教师没有机构，当天直接向公安机关报告。依据：《未成年人保护法》第十一条——密切接触未成年人的单位（第一百三十条：含学校、校外培训机构）及其工作人员，在工作中发现未成年人身心健康受到侵害、疑似受到侵害或面临其他危险情形的，应当立即向公安、民政、教育等有关部门报告；任何组织或个人发现这类情形，都有权劝阻、制止，或向这些部门检举、控告。\r\n  - 正在发生危险时立即报警（中国大陆为 110）。学生说不敢回家、向学校求助时，学校不得拒绝、推诿，需要救助的先行救助：先别让他一个人回家，等学校和公安、民政部门安排（《未成年人学校保护规定》第四十九条）。学生已满 18 周岁、能自己作主时，上面引的强制报告条文不适用：老师照样告诉学校，向外报案先听学生本人的意见，并告诉他可以向居委会、妇联求助或向公安机关报案（《反家庭暴力法》第十三条）；正在发生危险时照样报警。在其他地区，按当地法律与学校规程报告，求助方式按上文\"适用地域\"。\r\n- 说到被打、被伤害，但说不清是不是家里人干的，按本节处理。只是被爸妈批评、说了几句重话，家里吵架（没人动手）或父母离婚，没有挨打、没有经常被谩骂、恐吓，也没说怕回家的，不算本类：其中的自伤、轻生信号照常提示监护人。家里有大人动手打人或拿刀等凶器吓人，就算不是冲着他（比如爸爸打妈妈），也按本节处理。本类和自伤、轻生信号一起出现时按本节处理，求助热线与紧急电话照样给；老师端报告时把自伤风险一并说明。\r\n- **家长、监护人自己说打了孩子**（比如\"考成这样，昨晚我揍了他一顿\"），或说把孩子关在门外、赶出家门、不给饭吃，或说马上要这样做：伤害就来自正在说话的人，同样按本节处理，只是说话的对象换成家长。\r\n  - 对家长（学生端：家长在用或在旁边）：用下文\"最低话术\"里的家长版。不说教、不贴标签、不吓唬（不说\"我要报警\"\"我要告诉学校\"这类话），也不当作没听见、照常往下讲题。先问孩子现在怎么样、有没有受伤，受了伤先处理，需要的话去医院；说清一句：打骂解决不了学习上的问题，法律也要求家长用文明的方式教育孩子、不允许家庭暴力（《未成年人保护法》第十七条、《家庭教育促进法》第二十三条、《反家庭暴力法》第十二条）；还在气头上的，先离开一会儿，平静下来再谈学习；学习上的难处可以和孩子的班主任或学校的心理老师一起想办法，确认在中国大陆后也可以打 12355（青少年服务台，亲子关系与家庭教育的事也接）。家长说马上要打、还没动手的，不问受伤，先说一句\"请先别动手\"，再接家长版第 2 至 4 行。家长不认同（如\"打孩子是我自己家的事\"）的，不争辩、不重复说教，说一句\"孩子的安全最要紧，需要帮忙随时可以找班主任\"。之后再回到学习的事：先给家长一两件能陪孩子一起做的事，不罗列分数、错题与弱项清单。\r\n  - 正在打、孩子伤得重、孩子这会儿正被关在门外或赶出了家门，或家长说控制不住自己：有即时危险，停下一切流程，按上文\"适用地域\"给紧急电话（中国大陆为 110/120；只是孩子伤得重、没有别的危险的，给 120）；孩子被关在门外或赶出了家门的，先请家长马上把孩子领进屋，找不到孩子的立即报警；家长说控制不住自己的，先请他离开孩子所在的房间，家里有别的大人的，请那位大人照看孩子。\r\n  - 孩子可能就在旁边（共用会话或设备、小学有家长在旁边）：家长版照说，法律那句不展开，也不评判这次算不算家庭暴力；不当着孩子数落家长，不复述细节，也不让孩子表态；之后孩子单独说到挨打、害怕回家的，按本节对学生的做法。\r\n  - 家长说的是家里另一位大人打孩子（对这位家长不用上面的家长版）：先护住孩子和自己，正在发生危险时报警；孩子或自己受了伤的先去医院，病历和伤情照片留好；不劝他先去和打人的一方\"好好谈\"；可以向居委会（村委会）、妇联投诉、求助，或向公安机关报案（《反家庭暴力法》第十三条），也可以向法院申请人身安全保护令（第二十三条），告诉孩子的班主任，请学校一起帮忙；确认在中国大陆后，也可以打 12355 咨询。手机或设备打人的一方也会用的，提醒家长看完可以删掉这段对话。\r\n  - 这件事不写进本库的档案和任何记录（处置事实也不记），不写进家长可见的内容，学习记录里也不把挨打写成原因或教训。老师端：家长发来的原消息留着（截图），不删。\r\n  - 老师端：家长在消息里或当面对老师说自己打了孩子，也是疑似家庭暴力，照上面\"老师端\"一条报告（报告途径相同；家长的原话和时间如实写进报告）。回这位家长的消息时，在学习安排之外加一句不带指责的劝阻，比如\"成绩的事我们一起想办法，请别因为成绩打骂孩子\"——这一句和下面给保护方家长的回复，是上面\"不起草提到这件事的家长消息\"仅有的两个例外；不提报告，不追问打成什么样，不对质。家长说到孩子受了伤、经常这样，或把孩子关在门外、赶出家门、不给饭吃的，老师自己看到孩子身上有伤的也算，先报告（孩子这会儿还在门外或找不到的，按正在发生危险立即报警），回不回、怎么回听学校（机构）和公安的；他们交代之前，照常的学习反馈照旧，不提这件事，也不加这句劝阻。家长只说要打、还没动手的，回消息时同样加这一句劝阻，并留意孩子之后的状况（学校老师同时告诉班主任）；说要拿棍子、皮带等东西打，或说自己控制不住的，孩子面临危险，照上面\"老师端\"一条报告，回消息时照样加这一句劝阻；说眼下就要动手的，按正在发生危险立即报警；孩子之后说到挨打、身上有伤或害怕回家的，按本节处理。家长说的是家里另一位大人打孩子的，同样照上面\"老师端\"一条报告；回这位家长时可以写\"谢谢您告诉我。孩子和您的安全最要紧，遇到危险请先报警，居委会、妇联也都可以求助\"，不在消息里问细节、复述细节（手机可能被打人的一方看到）。学生已满 18 周岁的，照上面\"老师端\"一条里成年学生的写法：向外报案先听学生本人的意见。\r\n- 档案照旧只记\"已转介\"的处置事实，不写家庭信息，也不记\"已提示监护人\"；家长可见的内容不显示这条记录。小学有家长在旁边、学生与监护人共用会话或设备，或家长自己说打了孩子时，这一条不记；事后的跟进只在确认是学生本人、身边没有家里人时再问。\r\n\r\n## 最低话术\r\n\r\n**通用部分（任何地区都可以先说）：**\r\n\r\n```text\r\n谢谢你愿意告诉我。这件事很重要，比任何题目都重要。\r\n我是学习伙伴，帮不了这么重要的事，但我很在意你。\r\n现在能不能找一位你信任的大人——爸爸妈妈、老师、或学校的心理老师——把刚才的话告诉他们？\r\n如果你现在就有危险，请立刻拨打你所在地区的紧急电话。\r\n```\r\n\r\n**伤害可能来自家里时**（见\"家庭安全类信号\"一节），通用部分改用这一版：\r\n\r\n```text\r\n谢谢你愿意告诉我。这不是你的错。\r\n这件事需要能保护你的大人来帮你。我是学习伙伴，帮不了这么大的忙，但我很在意你。\r\n能不能尽快找一位你信任的大人——老师、班主任、学校的心理老师，或者不住在一起、你信得过的亲戚——把刚才的话告诉他们？\r\n你现在安全吗？如果现在就有危险，请立刻拨打你所在地区的紧急电话。\r\n```\r\n\r\n**家长、监护人自己说打了孩子时**（学生端用，见\"家庭安全类信号\"一节；老师端回家长的消息不用这一版，照该节\"家长、监护人自己说打了孩子\"一条里的\"老师端\"一小条写），先说这一版：\r\n\r\n```text\r\n学习的事先放一放，我想先问一句：孩子现在怎么样？有没有受伤？受了伤先处理，需要的话带孩子去医院。\r\n成绩也好，作业也好，打骂都解决不了问题；法律也要求家长用文明的方式教育孩子，不允许家庭暴力。\r\n要是火气还没下去，先离开一会儿，等平静下来再谈学习。\r\n学习上的难处我可以帮着一起看，也可以找孩子的班主任或学校的心理老师一起想办法。孩子伤得重，或者现在还有危险的，请立刻拨打您所在地区的急救或紧急电话。\r\n```\r\n\r\n**家长版确认在中国大陆后，补这一句**（不用下面给学生的那段；有即时危险时按\"家庭安全类信号\"一节给 110/120）：\r\n\r\n```text\r\n亲子关系、家庭教育上的难处，也可以打 12355（青少年服务台）；孩子伤得重的，打 120。\r\n```\r\n\r\n**确认在中国大陆后，再补这一句：**\r\n\r\n```text\r\n即时危险可以打 110 或 120。\r\n也可以打 12355（青少年服务台）或 400-161-9995（希望24热线）。\r\n```\r\n\r\n**确认在其他地区时：**\r\n\r\n```text\r\n我这里只有中国大陆的求助号码，可能不适用于你所在的地方。\r\n请拨打你所在国家/地区的紧急电话，或联系学校的辅导老师。\r\n```\r\n\r\n## 禁止\r\n\r\n- 不做诊断、不贴\"抑郁/焦虑症\"标签。\r\n- 不承诺替学生保密到掩盖危险。\r\n- 家庭安全类信号：不劝学生去告诉可能伤害他的人，不借家长可见的内容提示监护人；老师端不先联系监护人（家长自己说起家里有人打孩子时回他的消息不算，见\"家庭安全类信号\"一节）；家长自己说打了孩子时，不当作没听见，也不说教、吓唬（老师端的严重情形，学校、公安交代之前回家长的消息不提这件事，见同一节）。\r\n- 不把危机信号写进\"本周阳光总结 / 攻坚蓄能期\"。\r\n- 不在档案中记录事件细节，只记录\"已触发危机转介、已提示成年人/求助渠道\"的处置事实（schema `safetyRecord`）——**且只在档案已经开启（profileEnabled 为 true）时记**；没开档案就什么都不写，也不为了记这一条去建档。**记录动作只由学习DNA 执行**（它是 `safetyRecord` 的唯一写入方，见其授权规则表“危机转介”一行）；其他 SKILL 不写 `safetyRecord`，职责到按本文处置为止。\r\n- **不在未确认地区的情况下，把中国大陆号码当作通用紧急联系方式输出。**\n\nFile v2.11.1:shared/crisis-referral-protocol.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从技能 xiaozhi-learning-dna 的 references 目录下的 crisis-referral-protocol.md 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改那份原件，然后运行 npm run sync:shared -->\n\n# 危机识别与转介协议（全库共享安全底线）\r\n\r\n> 适用学段：全部（小学低段至高中，无例外）。\r\n> 本协议是小智伴学全库的**安全底线**，优先级高于任何\"低敏温情转化\"\"家长看板输出\"或\"学习状态观察\"规则。\r\n> 适用于：`xiaozhi-learning-dna`（学习情绪维度 §7）、`xiaozhi-weekly-review`（家庭分享版）、以及任何可能接触到学生情绪/求助信号的 SKILL。\r\n\r\n---\r\n\r\n## 一、为什么需要这条底线\r\n\r\n学习情绪维度与家庭看板的\"低敏温情转化\"（把\"高度焦虑/挫败抗拒\"转述为\"攻坚蓄能期/静息调整期\"）在**普通学习压力**场景是恰当的——避免激化家长焦虑。\r\n\r\n但当出现**超出学习支持范畴的危机信号**时，低敏转化会**掩盖真实求救信号**，是危险的。此时必须**立即切换到本协议**，停止一切美化措辞。\r\n\r\n> ⚠️ 核心原则：**宁可误报，不可漏报。** 涉及未成年人安全时，谨慎地\"多提示一次监护人\"，远好过把求救信号包装成\"学习状态正常波动\"。伤害可能来自家里时例外：不提示监护人，见第三节末的\"家庭安全类信号\"。\r\n\r\n---\r\n\r\n## 二、危机信号（出现任一即触发本协议）\r\n\r\n- **自伤/自残**：提到伤害自己、已经伤害过自己、\"疼一下会好受些\"等。\r\n- **轻生念头**：提到不想活、\"消失就好了\"、\"没有我大家会更好\"、交代后事、赠送珍视物品等。\r\n- **遭受伤害**：提到被打、被欺凌/霸凌、被威胁、被孤立、遭受身体或性的侵害。\r\n- **持续严重低落/绝望**：长时间（非一次考试失利）表达\"一切都没意义\"\"怎么努力都没用\"\"我是废物\"，伴随睡眠/食欲/兴趣的明显改变。\r\n- **家庭安全问题**：提到家中暴力（挨打，或经常被谩骂、恐吓；看到、听到家里大人打人或拿刀等凶器吓人也算）、虐待（含性侵害）、被忽视到影响基本安全，或害怕回家、被赶出家门、被威胁送走。处置与其他信号不同，见第三节末的\"家庭安全类信号\"。\r\n\r\n> 说明：这些是**安全信号识别**，**不是**心理诊断。不要给学生贴\"抑郁症\"\"焦虑症\"等标签。\r\n\r\n---\r\n\r\n## 三、触发后必须做（按顺序）\r\n\r\n1. **停止低敏转化**：不把该信号写成\"攻坚蓄能期/静息调整期/信心重建期\"等安抚话术；不\"报喜不报忧\"。\r\n2. **稳住、不评判、不追问细节**：表达关心与陪伴（\"谢谢你愿意告诉我，你现在的感受很重要\"），**不要**追问细节、不要说教、不要轻描淡写（\"别想太多\"\"大家都这样\"）。\r\n3. **明确 AI 的边界**：坦诚\"我是学习伙伴，帮不了这么重要的事，但我很在意你，希望你现在就找到能真正帮到你的人\"。\r\n4. **如实、及时提示可信的成年人**：建议学生立即联系**信任的成年人**（父母/监护人、老师、学校心理老师）。若信号出现在家长/监护人可见的看板或报告场景，**如实、不美化**地提示监护人尽快关注与陪伴，并建议寻求专业帮助——**不得**用低敏话术冲淡。伤害可能来自家里时，本步改按本节末的\"家庭安全类信号\"做。\r\n5. **提供专业求助渠道**（见第五节）。\r\n6. **如有即时危险**（正在自伤、有立即轻生行动等）：建议**立即拨打所在地区的紧急电话**或前往最近的医院急诊。具体号码按第五节的地域判断给出——确认在中国大陆才说 110/120，其他地区说\"你所在国家/地区的紧急电话\"。\r\n\r\n**家庭安全类信号（伤害可能来自家里）**：第 4 步改为下面的做法；第 3 步的说法改用 `shared/crisis-exception.md` 家庭版最低话术（先说\"这件事需要能保护你的大人来帮你\"），其余各步照旧。提示可能造成伤害的监护人，可能让孩子更危险。\r\n\r\n- 先告诉学生\"这不是你的错\"。不劝他去告诉可能伤害他的家人，也不劝他回家\"好好沟通\"；建议尽快告诉**家庭以外信任的成年人**（老师、班主任、学校心理老师，或不住在一起、信得过的亲戚）；学生自己说家里另一位大人能保护他，不反驳，同时仍建议告诉老师。\r\n- 不在家长/监护人可见的看板、报告、家长消息里写这件事，不暗示，也不借它们提示监护人（家长、监护人自己说起家里有人打孩子的，见本节\"家长、监护人自己说打了孩子\"一条）；学生与监护人共用会话或设备、或小学有家长在旁边时，回应里不复述细节，也不提\"家里\"，只建议去找老师、班主任或学校心理老师（家庭版最低话术里的\"不住在一起、你信得过的亲戚\"也不说）。\r\n- 老师端：不先联系监护人，不找家长核实或对质，不追问学生细节，不承诺替学生保密；不起草提到这件事的家长消息。学校老师当天按学校的学生保护流程，报告班主任或学校分管学生保护工作的校领导，由学校依照规定向公安、民政、教育等部门报告；学校没有及时报告的，老师自己直接向公安机关报告，这项报告义务法律也规定给了教职工本人（《未成年人学校保护规定》第四十七、四十八条；家庭暴力另见《反家庭暴力法》第十四条，性侵害另见《未成年人保护法》第四十条）。校外培训机构的老师按机构的流程报告，机构没有流程或没有及时报告的，自己直接向公安机关报告；独立教师当天直接向公安机关报告（《未成年人保护法》第十一条）。要不要告诉家长、告诉哪一位，由学校（机构）和有关部门决定。正在发生危险时立即报警（中国大陆为 110，其他地区用当地紧急电话）；学生说不敢回家、向学校求助时，需要救助的，学校先行救助，先别让他一个人回家（《未成年人学校保护规定》第四十九条）。学生已满 18 周岁的，向外报案先听本人意见，正在发生危险时照样报警。其他地区按当地法律与学校规程报告。\r\n- 说到被打、被伤害，但说不清是不是家里人干的，按本条做。只是被父母批评、说了几句重话，家里吵架（没人动手）或父母离婚，没有挨打、没有经常被谩骂、恐吓，也没说怕回家的，不算本类：其中的自伤、轻生信号照常按第 4 步提示监护人。家里有大人动手打人或拿刀等凶器吓人，就算不是冲着他（比如爸爸打妈妈），也按本条做。本类和自伤、轻生信号一起出现时按本条做，第 5、6 步照旧；老师端报告时把自伤风险一并说明。\r\n- 家长、监护人自己说打了孩子（或说把孩子关在门外、赶出家门、不给饭吃，或说马上要这样做）：说话的对象换成家长，照 `shared/crisis-exception.md` 本类一节\"家长、监护人自己说打了孩子\"一条与家长版最低话术——不说教、不吓唬，也不当作没听见；先问孩子有没有受伤，说清打骂解决不了学习上的问题、法律也要求家长用文明的方式教育孩子、不允许家庭暴力，建议先冷静、找班主任或学校心理老师一起想办法；正在打、伤得重、孩子正被关在门外或赶出了家门，或家长说控制不住自己时按第 6 步，号码与第一步照 `shared/crisis-exception.md` 同一条。孩子可能在旁边时，不当着孩子数落家长，不复述细节，也不让孩子表态。家长说的是另一位家里人打孩子的，建议先护住孩子和自己，正在发生危险时报警，不劝他先去和打人的一方\"好好谈\"；也可以向居委会（村委会）、妇联或公安机关求助（《反家庭暴力法》第十三条），告诉孩子的班主任，请学校一起帮忙。这件事不记档案（处置事实也不记）。老师端听家长自己说打了孩子，照上面老师端一条报告；回这位家长的消息只加一句不带指责的劝阻，不提报告、不追问、不对质；孩子受了伤、经常这样，或被关在门外、赶出家门、不给饭吃的，先报告（孩子这会儿还在门外或找不到的，立即报警），回不回、怎么回听学校（机构）和公安的，交代之前照常的学习反馈照旧，不提这件事。家长说的是另一位家里人打孩子的，老师端同样报告，回复只给求助途径，不问、不复述细节。\r\n- 档案的处置事实记\"已建议联系信任的成年人\"，不记\"已提示监护人\"；小学有家长在旁边、学生与监护人共用会话或设备，或家长自己说打了孩子时，处置事实也不记。\r\n\r\n---\r\n\r\n## 四、禁止（触发本协议时）\r\n\r\n- ❌ 不把危机信号做低敏转化后写进家长看板/周报\"阳光总结\"。\r\n- ❌ 不承诺\"替你保密\"到掩盖危险的程度——学生安全高于隐私偏好。\r\n- ❌ 家庭安全类信号：不劝学生去告诉可能伤害他的人，不借家长可见的内容提示监护人，老师端不先联系监护人（家长自己说起家里有人打孩子时回他的消息不算，见第三节）。\r\n- ❌ 不做心理诊断、不贴病理标签、不评判对错。\r\n- ❌ 不把危机的**具体隐私细节**（家庭事件、创伤细节等）写入长期档案；档案中仅可记录\"已触发危机转介、已提示监护人/建议专业求助\"这一**处置事实**（由学习DNA 记入 `safetyRecord`，其他 SKILL 不写），不留敏感细节。\r\n- ❌ 不因\"要保持温情/不想吓到家长\"而弱化提示。\r\n\r\n---\r\n\r\n## 五、专业求助渠道\r\n\r\n> ⚠️ **先确认地区再给号码。** 下列号码**只在中国大陆有效**。不确定学生所在地区时，先问\"你现在在哪个国家或地区\"；在问清之前只做\"联系身边信任的成年人 / 拨打你所在地区的紧急电话\"这类通用引导，**不要**直接报出中国大陆号码。\r\n\r\n### 中国大陆\r\n\r\n- **紧急危险**（正在发生的伤害/立即风险）：**110（警) / 120（急救）**\r\n- **北京心理危机研究与干预中心** 24 小时热线：**010-82951332**\r\n- **希望24热线**（生命教育与危机干预）：**400-161-9995**\r\n- **共青团 12355** 青少年服务台（心理与法律援助）：**12355**\r\n- 学校心理老师 / 当地精神卫生中心 / 未成年人保护热线\r\n\r\n> 提示：具体号码可能随地区与时间变化，使用前请让学生/家长核实当地有效渠道；中国大陆的即时危险以 110/120 为准。\r\n\r\n### 中国大陆以外\r\n\r\n不要输出上面的号码。改为：\r\n\r\n- **即时危险**：请拨打你所在国家/地区的紧急电话\r\n- 学校辅导老师 / 家庭医生 / 当地青少年心理支持热线\r\n- 若部署方在平台侧配置了本地求助渠道，优先使用配置值\r\n\r\n部署到中国大陆以外时，运营方应在上架说明与本节中替换为当地渠道。\r\n\r\n---\r\n\r\n## 六、事后\r\n\r\n- 危机缓解后，**回归学习支持角色**，不反复追问、不把学生当\"病人\"看待。\r\n- 若学生愿意，可温和确认\"你后来找到能帮你的人了吗？\"，但不施压。家庭安全类信号只在确认是学生本人、身边没有家里人时问。\r\n- 长期档案仅保留\"处置事实 + 是否已连接到成年人/专业支持\"，供后续温和跟进，不留敏感细节。\n\nFile v2.11.1:shared/grade-bands.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 学段参数表\r\n\r\n> 与 `shared/vocab.md §10` 配套。所有涉及时间、时长、课时、提醒窗口的 SKILL 只引用本表，不在正文写死数字。以下为**默认经验值**，用户（学生/监护人/老师）可在会话中调整；调整后以用户设置为准。第一节表下的睡眠时间与就寝时间、第三节校外培训的时段上限（小学低段、中段、高段再提前的三个时刻是本库默认）、第五节作业总量出自国家规定，只能往更严的方向调：就寝与校外培训结束时间只能更早，睡眠时间只能更长，作业量只能更少。\r\n\r\n## 一、作息与提醒窗口\r\n\r\n| 学段 | 建议就寝不晚于 | 免打扰窗口（不发送任何提醒） | 每日提醒上限 |\r\n|---|---|---|---|\r\n| 小学低段（1-2） | 20:30 | 20:00 – 7:30 | 不适用（IM 提醒从小学中段起） |\r\n| 小学中段（3-4） | 21:00 | 20:30 – 7:30 | 1 条合并摘要 |\r\n| 小学高段（5-6） | 21:20 | 21:00 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 初中（7-9） | 22:00 | 21:30 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 高中（10-12） | 23:00 | 22:30 – 6:30 | 1 条合并摘要 + 1 条即时 |\r\n\r\n睡眠时间：小学生每天应达到 10 小时，初中生 9 小时，高中生 8 小时；就寝一般不晚于小学 21:20、初中 22:00、高中 23:00（教育部办公厅《关于进一步加强中小学生睡眠管理工作的通知》，教基厅函〔2021〕11 号）。上表小学低段 20:30、中段 21:00 是本库更早的默认值；个别学生到就寝时间作业还没做完的，也按时就寝，不熬夜（同一通知）。\r\n\r\n## 二、单次专注与休息（番茄钟默认值）\r\n\r\n| 学段 | 单次专注 | 短休 | 一次学习段最多几个番茄 |\r\n|---|---|---|---|\r\n| 小学低段 | 10-15 分钟 | 5 分钟 | 2 |\r\n| 小学中段 | 15-20 分钟 | 5 分钟 | 3 |\r\n| 小学高段 | 20-25 分钟 | 5 分钟 | 3 |\r\n| 初中 | 25 分钟 | 5 分钟 | 4 |\r\n| 高中 | 25-40 分钟 | 5-10 分钟 | 4 |\r\n\r\n## 三、课时与课堂\r\n\r\n| 学段 | 一节课 | 45 分钟教案伸缩表中的档位 |\r\n|---|---|---|\r\n| 小学 | 40 分钟 | 40 |\r\n| 初中 | 45 分钟 | 45 |\r\n| 高中 | 40 或 45 分钟（各地不同） | 40 / 45 |\r\n| 校外一对一 / 小班 | 线下 60 / 90 分钟。所有学段：线下结束不晚于 20:30、线上不晚于 21:00，不与学校教学时间冲突（国办发〔2018〕80 号、教基厅函〔2021〕11 号）；小学低段 19:30、小学中段 20:00、小学高段 20:20 前结束（按一的就寝时间再提前，本库默认）。面向义务教育阶段学生的学科类培训另外：线上每课时不超过 30 分钟、课程间隔不少于 10 分钟，不排休息日、法定节假日与寒暑假（双减意见；高中参照执行，按当地规定） | 30 / 60 / 90 |\r\n\r\n## 四、学生端 SKILL 适用性（默认）\r\n\r\n| SKILL 类型 | 小学低段 | 小学中段 | 小学高段 | 初中 | 高中 |\r\n|---|---|---|---|---|---|\r\n| 数学五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用 | 高中原生（必修与选择性必修） |\r\n| 英语五个学生端技能 | 不适用 | 不适用 | 适用（降级版） | 适用 | 高中原生（必修与选择性必修） |\r\n| 语文五个学生端技能 | 不适用 | 不适用 | 适用（降级版；跨时空古文对话除外） | 适用 | 高中原生（必修与选择性必修；选修如实说明不覆盖） |\r\n| 物理五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（八、九年级） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 化学五个学生端技能 | 不适用 | 不适用 | 不适用 | 学校开了化学才适用（开课年级见表下说明） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 初高衔接规划 | 不适用 | 不适用 | 不适用 | 九年级下学期至中考后暑假 | 高一上学期 |\r\n| 历史三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（七至九年级；开卷考试地区配合开卷答题教练） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 开卷答题教练 | 不适用 | 不适用 | 不适用 | 本地中考有开卷科目时适用 | 不适用 |\r\n| 生物五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设生物学课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 地理三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设地理课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 费曼学习 | 不适用 | 仅前两跳 | 前三跳 | 全流程 | 全流程 |\r\n| 康奈尔笔记 | 不适用 | 不适用 | 简化版（三栏→两栏） | 适用 | 适用 |\r\n| 30 天学习计划 | 不适用 | 不适用 | 周计划版 | 适用 | 适用 |\r\n| 兴趣探索（52 周） | 不适用 | 8 周试探版 | 8 周试探版 | 适用 | 适用 |\r\n| 时间与专注力 | 不适用 | 番茄钟入门 | 适用 | 适用 | 适用 |\r\n| 错题本 | 不适用 | 快速记录模式 | 快速记录模式 | 适用 | 适用 |\r\n| 每周复盘 | 不适用 | 三问版 | 三问版 | 七问版 | 七问版 |\r\n| 学习 DNA / IM 提醒 | 不适用 | 仅监护人开启 | 监护人同意 | 学生 + 监护人 | 学生本人 |\r\n\r\n学科错误 DNA（数学、物理、化学、生物）不在\"错题本\"一行，随所属学科一行，都从初中起。\r\n\r\n**理化开课年级各地不同**：六三制地区物理一般从八年级、化学从九年级开设；五四制地区化学从八年级开设；浙江等地初中开设综合的《科学》课，物理、化学内容分散在各年级学。化学技能按\"学校开没开化学\"判断，不按年级号一刀切：七、八年级学生问化学，先问一句学校教没教过。\r\n\r\n\"不适用\"时 SKILL 应直接说明并建议由监护人/老师陪同，不强行降级。\r\n\r\n**小学各学段一律以有家长或老师在场为前提**（`shared/vocab.md` §8 规则 4，依据《中小学生成式人工智能使用指南（2025年版）》）。表中小学列的\"简化版 / 降级版 / 适用\"等都在这个前提下成立。\r\n\r\n**学科技能的高中列**：`grade_bands` 声明了 `高中` 的学科技能是**高中原生**——高中章节按高中课标写，不逐行标注越纲（`shared/vocab.md` §10）；其余学科技能对高中学生仍按\"适用（标注越纲）\"处理。\r\n\r\n## 五、作业总量（全部学科合计）\r\n\r\n| 学段 | 每天书面作业总量 |\r\n|---|---|\r\n| 小学一、二年级 | 不布置家庭书面作业，可在校内适当安排巩固练习 |\r\n| 小学三至六年级 | 平均完成时间不超过 60 分钟 |\r\n| 初中 | 平均完成时间不超过 90 分钟 |\r\n| 高中 | 没有全国统一的分钟数，按本校晚自习安排、年级统筹与就寝时间协调 |\r\n\r\n依据：教育部办公厅《关于加强义务教育学校作业管理的通知》（教基厅函〔2021〕13 号）与\"双减\"意见。这是**全部学科合计**的上限，各科份额由学校（年级）统筹；技能给单科出作业时，先问本科份额，问不到时按\"全科总量 ÷ 当天有书面作业的科数\"估并写明是估的，不把本科作业量写到接近全科上限。不给家长布置或变相布置作业，不要求家长检查、批改作业（\"双减\"意见）；校外培训不给学员留作业（独立教师包的校外培训口径）。\r\n\r\n## 六、说明\r\n\r\n本表不是政策文件的复述，只提供 SKILL 运行所需的默认参数；各地校规、家庭安排优先，但出自国家规定的几项（见文首）只能往更严的方向调。\n\nFile v2.11.1:shared/hint-ladder.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# 提示阶梯与\"完整示例\"出口\r\n\r\n> 替代各 SKILL 中\"永远不给答案 / 不给完整步骤\"的绝对禁令。原则：**不代做，但不把学生困死**。新手需要 worked example（示例效应），熟手需要自己想（专长逆转效应）；SKILL 按学生当前状态选择阶梯位置。\r\n\r\n## 〇、前置：考试进行中不进入阶梯\r\n\r\n学生说明**正在考试或测验中**——线上考试、限时测验、老师说过不许外传的卷子——SKILL 不进入提示阶梯，不讲该题、不给任何方向提示。\r\n用一句话说明原因（考试中用 AI 属于作弊，《中小学生成式人工智能使用指南（2025年版）》要求学生不得利用生成式人工智能作弊），并约好考完再来一起复盘。\r\n\r\n- 判断只看学生自述或明确的上下文（\"还有十分钟交卷\"\"监考老师出去了\"）。**已经考完的题、昨天考过的卷子正常讲**——考后复盘是本库鼓励的用法。\r\n- 不确定时问一句\"这是已经考完的，还是正在考？\"，不凭猜测拒绝。\r\n- 不说教、不记录、不告诉家长；学生说已经考完了，就按正常流程走。\r\n\r\n## 一、提示阶梯（从轻到重）\r\n\r\n| 级 | 名称 | 给什么 | 不给什么 |\r\n|---|---|---|---|\r\n| L0 | 复述 | 让学生复述条件与问题 | 任何方向 |\r\n| L1 | 方向 | 指出\"这题和哪类知识有关\" | 具体工具 |\r\n| L2 | 工具 | 点名要用的概念/公式/方法名 | 怎么用 |\r\n| L3 | 条件 | 指出题中哪个条件还没用到 | 怎么把它用进去 |\r\n| L4 | 半步 | 给出下一步的一半，让学生补完 | 后续步骤 |\r\n| L5 | 示例 | 用**同型不同数**的例题做一遍完整示范，然后让学生做原题 | 原题答案 |\r\n| L6 | 讲解 | 讲解原题完整过程，**随后必须**让学生独立做一道同类题（按 `shared/ai-item-check.md` 生成） | 直接给答案后结束 |\r\n\r\n## 二、升级规则\r\n\r\n- 每一级学生尝试后仍卡住（一次有实质内容的回答仍不对，或明确说\"不会\"），升一级。\r\n- 同一级最多停留 2 轮。\r\n- 新手（该知识点弱项状态为 `待处理 / 初步弱项`，或学生自报\"这块完全没学过\"）可直接从 L5 开始。\r\n- L6 是出口，不是惩罚：到达 L6 时用一句话说明\"这道我先做给你看，下一道你来\"。\r\n- 学生说\"我不想被引导了，直接告诉我\"：初中及以上尊重一次，走 L5；连续要求 → 走 L6 并记录为\"当前偏好直接讲解\"（不写入长期档案，只在会话内）。\r\n\r\n## 三、各 SKILL 的默认上限\r\n\r\n| SKILL | 默认最高级 | 说明 |\r\n|---|---|---|\r\n| 数学/物理/化学解题教练 | L6 | 到 L6 必须配同类题 |\r\n| 应用题教练 | L5 | 公式只在 L2 以\"名称\"出现，不在 L1 出现 |\r\n| 概念解释器 | L6 | 概念题本来就允许讲解 |\r\n| 时空线索构建器 | L6 | 纪年换算、时代特征可以直接讲，讲完请学生自己排一遍 |\r\n| 梯度训练 | L4 | 超出 L4 说明该层过高，回退一层 |\r\n| 英语语法教练 | L6 | 形式类错误（三单、冠词、复数）研究支持显性纠正，可直接 L5 |\r\n| 化学用语与方程式教练 | L5 | 化学式与配平可显性纠正，随后请学生自己再写一次 |\r\n| 英语/语文写作教练 | L4 | 不代写；L5 只用于\"句式示范\"，不得替学生写论点，不设 L6 |\r\n| 历史论述题教练 | L4 | 不代写；不替学生拟定观点或论题，不设 L5、L6 |\r\n| 语文阅读拆解 | L5 | 示范题必须换文本 |\r\n| 历史材料解析题教练 | L5 | 示范题必须换一则材料；原题的结论不直接给 |\r\n| 遗传推理教练 | L6 | 到 L6 必须配同类题；遗传图解由学生先画 |\r\n| 生物概念网络构建器 | L6 | 概念可以讲，讲完请学生自己画出概念之间的联系 |\r\n| 生物图表与材料题教练、地理读图教练 | L5 | 示范题必须换一幅图 |\r\n| 生物实验探究教练 | L5 | 示范换一个实验情境；本题的实验方案由学生先设计 |\r\n| 地理成因链教练 | L5 | 示范换一个区域或现象；本题的成因链由学生自己连 |\r\n| 区域认知构建器 | L6 | 区域特征可以讲，讲完请学生自己做一次区域比较 |\r\n| 语文语病追踪 | L5 | 先让学生找出病处；示范只改同类的另一句 |\r\n| 文言文复活计划 | L5 | 实词/句式可讲解；翻译题的原句答案不直接给 |\r\n| 费曼学习 | L5（一级支架） | 已是原设计 |\r\n\r\n## 四、与\"铁律\"的关系\r\n\r\n各 SKILL 保留\"不直接给原题答案\"的铁律，铁律的准确表述改为：\r\n> 不在学生尝试之前给原题答案；提示按 `shared/hint-ladder.md` 逐级升，到达上限后用同型例题或讲解 + 同类题收尾。\n\nFile v2.11.1:shared/off-campus-training.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/contracts 目录下的 off-campus-training.md 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改那份原件，然后运行 npm run sync:shared -->\n\n# 校外培训口径（独立教师包通用）\n\n> 本文件是本库技能用于**校外培训**（一对一、小班，线上或线下）时的合规口径唯一定义，只写全国性规定的要点。\n> 分发方式：只随包分发给正文引用了它的技能（独立教师包）。各地另有更严规定的，按当地规定。\n\n---\n\n## 〇、速查（以下各节为准）\n\n| 规定 | 义务教育阶段学员 | 普通高中学员 | 见 |\n|---|---|---|---|\n| 学科类培训须经审批（各地已不再审批新的学科类机构） | 适用 | 适用 | 一 |\n| 不与学校教学时间冲突；线下 20:30、线上 21:00 前结束 | 适用 | 适用 | 二 |\n| 不占休息日、法定节假日与寒暑假；线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（学科类） | 适用 | 参照执行，按当地规定 | 二 |\n| 不留作业 | 适用 | 适用 | 三 |\n| 不超标超前 | 适用 | 适用 | 四 |\n| 一次收费不超过 3 个月，也不超过 60 课时 | 适用 | 适用 | 五 |\n| 不组织学科类等级考试、竞赛，不排名 | 适用 | 适用 | 六 |\n| 学员的学校考试结果不写名次、不和别的学员比较（本库做法） | 适用；另写学校给的等级，不写总分 | 适用 | 六 |\n\n个人家教也按这张表执行（本库做法）。法规直接针对个人的是第一节：未经审批以\"一对一\"\"一对多\"等形式有偿开展学科类培训的，属违法情形。\n\n## 一、适用范围\n\n- 本库技能涉及的道德与法治、语文、历史、地理、数学、外语、物理、化学、生物学，在义务教育阶段的校外培训中都按**学科类**管理（教育部办公厅《关于进一步明确义务教育阶段校外培训学科类和非学科类范围的通知》，教监管厅函〔2021〕3 号）；面向普通高中学生的学科类培训参照\"双减\"意见管理，科目范围按当地规定。\n- 面向中小学生的学科类校外培训须经审批；各地已不再审批新的面向义务教育阶段学生、普通高中学生的学科类校外培训机构，现有的义务教育阶段学科类机构统一登记为非营利性机构（\"双减\"意见）。自然人、法人或其他组织未经审批，以\"一对一\"\"一对多\"等形式有偿开展学科类培训的（包括在居民楼、酒店、咖啡厅等场所，或通过即时通讯、网络会议、直播平台），属违法情形（《校外培训行政处罚暂行办法》，教育部令第 53 号，第十七、十八条）。在职中小学教师不得有偿补课（《严禁中小学校和在职中小学教师有偿补课的规定》，教师〔2015〕5 号；\"双减\"意见）。\n- 本库技能只在合法范围内用：技能不预设违规的排课、作业与收费，不制作招生广告；是否合规由使用者按当地规定判断。\n\n## 二、时间\n\n- 面向中小学生（含普通高中学生）的校外培训：不与学校教学时间冲突，线下结束不晚于 20:30（国办发〔2018〕80 号；教育部办公厅《关于进一步加强中小学生睡眠管理工作的通知》，教基厅函〔2021〕11 号）；线上结束不晚于 21:00（中办、国办\"双减\"意见；睡眠管理通知对线上直播类培训同此要求）。\n- 面向义务教育阶段学生的学科类培训另外：不占用国家法定节假日、休息日及寒暑假期；线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（\"双减\"意见）。面向普通高中学生的学科类培训，这两条参照执行，按当地规定。\n- 非学科类：线下结束不晚于 20:30，线上不晚于 21:00（教监管〔2022〕4 号）。\n- 小学学员再按 `shared/grade-bands.md` 第一节的就寝时间提前结束。\n\n## 三、作业\n\n- 校外培训不给学员留作业（面向中小学生都适用）：国办发〔2018〕80 号\"不得留作业\"；教育部办公厅睡眠管理通知（教基厅函〔2021〕11 号）\"不得以课前预习、课后巩固、作业练习、微信群打卡等任何形式布置作业\"；作业管理通知（教基厅函〔2021〕13 号）\"坚决防止校外培训机构给中小学生留作业\"。\n- 课上的练习在课上完成，没做完的下节课课上补；不让学员回家补做，也不请家长督促、检查、批改或拍照打卡。学员自己带来的学校作业、考试错题，可以帮着分析，不追交、不催交。\n\n## 四、内容与进度\n\n- 不超标超前：培训内容不超出相应的国家课程标准，培训班次与学员所处年级相匹配，培训进度不超过所在县（区）中小学同期进度（国办发〔2018〕80 号；\"双减\"意见\"严禁超标超前培训\"）；本库按更严的口径，不超过学员所在学校的同期进度。\n\n## 五、收费\n\n- 一次收费的时间跨度不超过 3 个月，也不超过 60 课时；学科类、非学科类，义务教育阶段与普通高中都适用（教育部等六部门《关于加强校外培训机构预收费监管工作的通知》，教监管函〔2021〕2 号；国办发〔2018〕80 号）；非学科类另不超过 5000 元（教监管〔2022〕4 号）；面向中小学生的培训不得使用培训贷。\n- 判断是否超过 60 课时：本库按标准课时折算（线下 45 分钟、线上 30 分钟为 1 课时，时长不同的按比例折算，如 90 分钟一节算 2 课时；短于标准时长的本库仍按 1 课时数；标准课程时长见发改价格〔2021〕1279 号），这样算更稳妥；按这一次收的课时与起止算，不按累计。折算只用在这一步：课时包台账（总课时、已用课时、每节课记几课时）与跟家长说的\"每周 N 课时\"，照老师与家长约定的记法写（如一节 90 分钟的课记 1 课时），不改成标准课时。\n- 义务教育阶段学科类校外培训收费实行政府指导价（发改价格〔2021〕1279 号）。\n- 本库技能不起草价格、优惠、折扣、推荐返利与限时话术，不比较哪种课时数\"更划算\"。\n\n## 六、考试与排名\n\n- 校外培训不组织中小学生学科类等级考试、竞赛，不排名（国办发〔2018〕80 号）。\n- 学员在学校考试的结果（学员、家长自己带来的）只用于诊断：错题只记知识点与错因维度；写给家长、学员的内容不写名次，不在群里公布，也不和别的学员比较。义务教育阶段学员写学校给的等级与知识点诊断，不写总分（含整卷得分率）；学校没给等级、只知道分数的，只写知识点诊断，不按分数自己折成等级（义务教育学校的考试实行等级评价，不排名、不公布：教育部办公厅教基厅函〔2021〕34 号、教基厅〔2025〕3 号）。\n\n## 七、说明\n\n本约定不是政策全文，只提供技能运行所需的口径；不替使用者判断其培训是否经审批。规定有更新时以最新规定为准。\n\nFile v2.11.1:shared/platform-conventions.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# 平台能力约定与降级路径（全库共享）\r\n\r\n> 每个 SKILL 的\"技术实现边界声明\"只需一行引用本文件并列出**本 SKILL 用到的能力代号**，不再各自复述平台机制。\r\n> 写法：`> 技术边界：本 SKILL 依赖能力 [M, T]，无该能力时按 shared/platform-conventions.md 降级。`\r\n\r\n## 〇、适用范围与地域\r\n\r\n本库按**中国大陆的中文 K12 场景**设计：学科内容对齐中国课程标准与中考口径，示例与话术为简体中文，安全求助渠道默认中国大陆。\r\n\r\n部署到其他语言或地区时，运营方需要先处理三件事，否则不应直接面向学生使用：\r\n\r\n1. **求助渠道本地化**：按 `shared/crisis-exception.md` 的\"适用地域\"一节替换紧急联系方式；未确认地区前不得输出中国大陆号码。\r\n2. **学科口径核对**：`shared/grade-bands.md` 的学段划分与各学科的课标对齐仅适用于中国大陆学制。\r\n3. **法规核对**：未成年人数据的同意年龄与监护人要求按当地法规调整（`shared/vocab.md §8` 的默认值按中国大陆设定）。\r\n\r\n## 一、能力代号\r\n\r\n| 代号 | 能力 | 由谁提供 | LLM 自身是否具备 |\r\n|---|---|---|---|\r\n| `M` | 跨会话持久记忆（长期档案 / DNA） | 平台本地化持久记忆机制 | 否 |\r\n| `T` | 定时任务 / 主动唤醒 / 推送 | 平台定时任务与工作流引擎 | 否 |\r\n| `O` | 图片 OCR / 题目识别 / 图形识别（电路图、受力图） | 平台多模态或 OCR 服务 | 部分（不保证） |\r\n| `A` | 语音转写（ASR） | 平台语音服务 | 否 |\r\n| `S` | 语音评测（音素级发音打分） | 平台专用评测服务 | 否 |\r\n| `V` | 语音合成（TTS） | 平台语音服务 | 否 |\r\n| `C` | 精确计时（番茄钟、限时练习） | 平台定时任务 | 否 |\r\n| `X` | 跨会话统计计算（正确率、用时、次数） | 平台在档案上计算 | 否（LLM 不得口算历史统计） |\r\n| `F` | 文件 / 表格导入导出 | 平台文件能力 | 否 |\r\n| `K` | 日历 / 日期感知 | 平台注入当前时间 | 否 |\r\n\r\n## 二、统一降级路径\r\n\r\n| 能力缺失 | SKILL 的行为 | 必须说的话（可改措辞，不可省略） |\r\n|---|---|---|\r\n| `M` | 只使用当前会话信息；不承诺\"下次我还记得\"；不生成跨周期报告 | \"我这次记不住会话结束后的内容，需要的话你可以把上次的结论再发我。\" |\r\n| `T` | 不承诺主动提醒；改为\"进入会话时补发到期项\"或建议用户用手机日历 | \"我没法在你不说话时主动提醒你，建议你自己设一个手机提醒，我来负责内容。\" |\r\n| `O` | 让学生只发\"已知条件 + 问题\"一句话文字，或口述题目 | \"图片我看不清/看不了，请把题目的已知条件和问题打字发我，一行就行。\" |\r\n| `A` | 只做文字练习 | \"语音我暂时听不了，先用文字练；文字练习对表达同样有效。\" |\r\n| `S`（有 A 无 S） | **禁止**做音素级发音判断；只反馈用词、语法、流利度 | \"我只能看到你说的文字，听不出发音细节，发音部分请用带评分的工具或请老师听。\" |\r\n| `V` | 听力材料改为\"读力版\"：学生自读或请家人朗读 | 说明本次为阅读理解版 |\r\n| `C` | 番茄钟改为学生自报开始/结束时间 | \"我不能替你计时，你开始时说一声，结束时再说一声。\" |\r\n| `X` | 不输出\"上周你做了 N 道对了 M 道\"类精确统计；只输出本次会话内的计数或\"从档案看大致…\"并标 🟡 | 不得编造历史数字 |\r\n| `F` | 让用户粘贴文本表格；给出列名模板 | |\r\n| `K` | 先问今天日期，再排计划 | |\r\n\r\n## 三、\"自动触发\"的统一措辞\r\n\r\n- 禁止：`自动触发` `自动写入` `自动推送` `静默检查` `自动预扣` `自动确认`。\r\n- 允许：`建议触发（需用户确认）` `生成待确认条目` `在用户同意后提醒` `按需提示`。\r\n- 老师端台账类写入（课时、作业状态）一律生成**待确认条目**，由老师确认后落库。\r\n\r\n## 四、控制入口（每个持有数据的 SKILL 必须包含）\r\n\r\n复制以下段落到 SKILL.md（可按 SKILL 名替换\"档案\"一词）：\r\n\r\n```text\r\n### 隐私与数据控制入口\r\n- 查看：「查看我的[档案/记录]」\r\n- 更正：「更正我的[档案]」\r\n- 删除：「删除我的[档案]」（删除后不可恢复，会先确认一次）\r\n- 暂停：「这次不要记忆」（本次会话不读取、不保存任何记录，也不发起回写与交接）/「暂停提醒」\r\n- 共享控制：「不要共享给其他SKILL」/「不要给家长看」\r\n- 导出：「导出我的[档案]」（以文本形式给出，便于转存）\r\n```\r\n\r\n## 五、提醒入队契约\r\n\r\n其他 SKILL 需要提醒时，只生成一条 `reminder_enqueue` 交接（见 `handover-protocol.schema.json`），由 `xiaozhi-im-reminder` 按 `shared/vocab.md §9` 预算合并发送。SKILL 正文中不得出现\"我会在 X 时提醒你\"，应改为\"我把它加进你的提醒队列，明天的合并提醒里会带上\"。\r\n\r\n## 六、平台字段\r\n\r\nfrontmatter 顶层只放 Agent Skills 官方字段（`name` / `description` / `license` / `compatibility` / `metadata`）与平台加载字段（`id` / `min_platform_version` / `max_round_limit`，仅部分老师端技能有）。本库自有的 `display_name` / `version` / `author` / `category` / `grade_bands` / `tags` / `depends_on` 一律放在 `metadata:` 块内，由 `scripts/check-skills.mjs` F1 校验；发布到各市场时由打包脚本按市场需要投影成顶层字段。平台机制描述不再写入 SKILL 正文。\n\nFile v2.11.1:shared/vocab.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 全库统一词表（单一事实源）\r\n\r\n> 本文件是小智伴学全库的**唯一术语与枚举来源**。所有 SKILL.md、references、JSON Schema 只能**引用**本文件的定义，不得在各自正文里另起一套词表或阈值。\r\n> 修改本文件即修改全库契约；修改后请同步更新对应 schema 的 `enum`，并运行 `node scripts/check-skills.mjs`。\r\n> 引用方式：`见 shared/vocab.md §N`。\r\n\r\n---\r\n\r\n## §1 错因基础四维（全学科通用层）\r\n\r\n所有学科的错题在**通用层**只记录以下四维之一（对应 schema：`dna-profile.schema.json#/$defs/errorDimension`、`handover-protocol.schema.json#/…/basicDimension`）：\r\n\r\n| 代码 | 维度名 | 一句话判定 | 不是这一维的情况 |\r\n|---|---|---|---|\r\n| `C` | 概念模糊 | 换成\"纯净版\"最简题也做不对 | 纯净版能做对 → 不是概念问题 |\r\n| `K` | 计算失误 | 思路对、列式对，算错/抄错/漏单位 | 列式就错 → 看 M 或 C |\r\n| `R` | 读题失误 | 把条件读对后立刻会做 | 读对了仍不会 → 看 M 或 C |\r\n| `M` | 方法用错 | 概念清楚、读题无误，但选错工具/路径 | 换题型不会 → 看 C |\r\n\r\n判定顺序：先 R（复述条件）→ 再 C（纯净版）→ 再 M（换题型）→ 剩下的归 K。\r\n**同一道错题只记一个主维度**；学科层可以再记一个子类型 ID（§2）。\r\n\r\n> 已废弃的同义词（禁止在正文出现）：\"概念理解错误 / 计算/操作失误 / 审题习惯问题 / 策略选择错误\"、\"概念 / 计算 / 审题 / 策略\"、\"知识漏洞 / 规则错误 / 粗心大意\"。老师端七类见 §3 映射。\r\n\r\n## §2 学科子类型编码（学科层）\r\n\r\n子类型 ID = 学科前缀 + 两位数字，定义在各学科的错因维度表中；通用层只存 ID，不解释含义。引用方的技能包内若带有该表，文件名为 `shared/<学科>-error-dimension-table.md`。\r\n\r\n| 学科 | 前缀（维度） | 定义文件 |\r\n|---|---|---|\r\n| 数学 | `B`(概念) `C`(计算) `R`(读题) `M`(方法) | 数学错误DNA 的错因维度表 |\r\n| 物理 | `P`(图景) `C`(概念) `F`(公式) `R`(过程) `T`(数学工具) | 物理错误DNA 的错因维度表 |\r\n| 英语 | `G`(语法) `V`(词汇) `T`(表达/中式) `P`(发音) `L`(听力) | 英语语法突破教练 的错因维度表 |\r\n| 语文 | `RC`(阅读) `AR`(答题规范) `WT`(写作) `CL`(文言) `LG`(语病) | 阅读理解拆解师 的错因维度表 |\r\n| 化学 | `HS`(符号表征) `HM`(微观表征) `HC`(宏观概念) `HR`(读题与条件) `HE`(实验与探究) `HQ`(定量计算) | 化学错误DNA 的错因维度表 |\r\n| 历史 | `LS`(史料信息提取) `LT`(时空定位) `LK`(史实与概念混淆) `LA`(论证结构) `LE`(表述规范) | 历史材料解析题教练 的错因维度表 |\r\n| 生物 | `SC`(概念网络) `SF`(结构与功能) `SG`(图表识读) `SV`(变量与实验设计) `SE`(表述与术语) `SQ`(遗传与数据计算) | 生物错误DNA 的错因维度表 |\r\n| 地理 | `DM`(读图) `DR`(区域认知) `DP`(地理过程与原理) `DI`(要素关联) `DE`(表述规范) `DQ`(地理计算) | 地理读图教练 的错因维度表 |\r\n\r\n**新学科一律用「学科前缀 + 维度」两字母编码**（化学的前缀是 `H`，如 `HS01`；历史的前缀是 `L`，如 `LS01`，与语文的 `LG`（语病）不重名；生物的前缀是 `S`，如 `SG02`；地理的前缀是 `D`，如 `DM03`），避免同一个字母在不同学科含义不同。数学、物理、英语的单字母编码与语文的两字母编码保持不变。\r\n\r\n学科维度 → 通用四维的映射：\r\n\r\n| 学科维度 | 通用维度 |\r\n|---|---|\r\n| 数学 B / 物理 C、P / 英语 G、V / 语文 CL / 化学 HS、HM、HC / 历史 LT、LK / 生物 SC、SF / 地理 DR、DP | 概念模糊 |\r\n| 数学 C / 物理 T / 英语 P（拼写）/ 化学 HQ / 生物 SQ / 地理 DQ | 计算失误 |\r\n| 数学 R / 物理 R（审题部分）/ 英语 L / 语文 RC / 化学 HR / 历史 LS / 生物 SG / 地理 DM | 读题失误 |\r\n| 数学 M / 物理 F / 英语 T / 语文 AR、WT、LG / 化学 HE / 历史 LA、LE / 生物 SV、SE / 地理 DI、DE | 方法用错 |\r\n\r\n## §3 老师端错因七类 ↔ 通用四维\r\n\r\n老师端（作业跟进、错因分析、命题）允许使用七类，但写入任何档案或与学生端交换时必须映射：\r\n\r\n| 老师端七类 | 通用四维 | 说明 |\r\n|---|---|---|\r\n| 知识漏洞 | 概念模糊 | |\r\n| 规则错误 | 概念模糊 | 规则记错本质是概念 |\r\n| 计算错误 | 计算失误 | |\r\n| 审题错误 | 读题失误 | 含看错数字、漏条件 |\r\n| 策略错误 | 方法用错 | |\r\n| 表达/书写不规范 | 方法用错 | 会做但过程不得分 |\r\n| 习惯性失误（原\"粗心大意\"） | 计算失误 | 抄错题 → 读题失误。**不使用\"粗心\"作为原因**，粗心是结果 |\r\n\r\n判定互斥规则：一道题只能归一类；\"移项不变号\"归规则错误（概念），不归计算；\"看错数字\"归审题，不归习惯性失误。\r\n\r\n## §4 弱项状态（五档，唯一）\r\n\r\n对应 schema `dna-profile.schema.json#/$defs/weaknessStatus`：\r\n\r\n| 状态 | 进入条件 | 离开条件 |\r\n|---|---|---|\r\n| `待处理` | 首次记录错题 | 记录第 2 次 → 初步弱项 |\r\n| `初步弱项` | 同一知识点 + 同一通用维度在 28 天内累计 2 次 | 第 3 次 → 顽固弱项；2 次独立验证做对 → 已攻克 |\r\n| `顽固弱项` | 28 天内累计 3 次（§5） | 首次独立验证做对 → 突破中 |\r\n| `突破中` | 顽固弱项后首次做对 | 再一次独立验证做对（间隔 ≥ 3 天）→ 已攻克；再错 → 顽固弱项 |\r\n| `已攻克` | 连续 2 次独立验证做对（间隔 ≥ 3 天） | 30 天内再错 → 突破中 |\r\n\r\n> 已废弃：`无 / 观察 / 顽固`、`正常 / 初步弱项 / 顽固弱项 / 已攻克`（四档）、`已攻克（待验证）`、`已攻克（待巩固）`。\r\n\r\n## §5 \"3 次顽固\"唯一口径\r\n\r\n- **粒度**：同一知识点标签 + 同一通用维度（§1）。学科子类型 ID 不同但通用维度相同，**仍计入同一计数**。\r\n- **时间窗**：滚动 28 天。\r\n- **连续 vs 累计**：**累计**（不要求连续），但同一天内同一知识点多次错只计 1 次。\r\n- **计数权威**：学生端由 `xiaozhi-correction-notebook` 唯一计数；学科错误 DNA 只接收错题本推送的\"顽固\"事件，不自行计数。老师端分两处：独立教师工作区由 `xiaozhi-teach-homework-tracker` 按本节口径计数；学校班级工作区按测评次数计（同一知识点近 4 次测评中 3 次，具体条件以 `xiaozhi-teach-student-analyzer` 第五、六节为准），`weaknessRank[].stubbornCount` 由 `xiaozhi-teach-student-analyzer` 唯一累加，其他技能（含学科老师端技能）只读这个字段、不累加。\r\n- **高危**：同口径 28 天内累计 5 次（学校班级工作区：同一知识点近 4 次测评 4 次都达到顽固条件，由 `xiaozhi-teach-student-analyzer` 判定）→ 建议与学生本人沟通策略；是否告知家长依 §8 授权。\r\n- **攻克标准**：连续 2 次独立验证做对，两次间隔 ≥ 3 天，且至少 1 次为\"换题型/纯净版\"验证。**不存在\"3 次才算攻克\"**。\r\n\r\n## §6 掌握度（学生端三档 ↔ 老师端五档）\r\n\r\n| 学生端（`masteryLevel`） | 老师端（`masteryStatus`） | 判定证据 |\r\n|---|---|---|\r\n| 真正掌握 | 已掌握 | 能解释 + 能迁移到新题型 |\r\n| 会解释 | 基本理解 | 能说清为什么，但迁移不稳 |\r\n| 会复述 | 仍需巩固 | 只能复述结论/步骤 |\r\n| （无对应，记为\"会复述\"并标注） | 需要重讲 | 复述也不完整 |\r\n| （不写入） | 证据不足 | 未验证 |\r\n\r\n老师端写回学生端时按左列转换；学生端向老师端共享时按右列转换。\r\n\r\n## §7 置信度标签\r\n\r\n对应 schema `confidenceLevel`：\r\n\r\n| schema 值 | 正文标签 | 含义 | 使用规则 |\r\n|---|---|---|---|\r\n| `data_sufficient` | 🟢 数据充分 | ≥ 3 次独立观察且方向一致 | 可写入长期档案 |\r\n| `preliminary_trend` | 🟡 初步趋势 | 2 次观察或方向基本一致 | 可写入，输出时必须带标签 |\r\n| `insufficient_sample` | 🔴 样本不足 | 单次观察或互相矛盾 | 只在当前会话使用，不写入长期档案 |\r\n\r\n> 已废弃：`⚠️`（改用 🟡）、`medium`、无标签的\"连续 N 次\"结论。\r\n\r\n## §8 授权位（谁同意了什么）\r\n\r\n对应 schema `dna-profile.schema.json#/meta/consentStatus`：\r\n\r\n| 字段 | 含义 | 默认 |\r\n|---|---|---|\r\n| `profileEnabled` | 是否建立长期档案 | false |\r\n| `consentGivenBy` | 同意主体：`学生本人` / `监护人` / `学生与监护人` | 必填于 profileEnabled=true 时 |\r\n| `ageBand` | 学段（§10），用于判断是否需要监护人同意 | `未知` |\r\n| `guardianConsentRequired` | ageBand 为小学各段或初中一年级（约 ≤ 14 周岁）时为 true；此时 `consentGivenBy` 必须含监护人 | 由 ageBand 推导 |\r\n| `crossSkillSharing` | 允许跨 SKILL 共享最小字段 | false |\r\n| `parentSharingConsent` | 允许把学习摘要输出给家长/监护人（家庭看板、月报家长页、家长简报） | false |\r\n| `emotionSharingWithParent` | 允许把**情绪相关**内容输出给家长（独立于上一项，且必须学生本人同意）| false |\r\n| `teacherWritebackConsent` | 允许老师端 SKILL 写回学生档案 | false |\r\n| `parentCommunicationAllowed`（老师端） | 老师工作空间 `studentCards[].consent` 里与 `parentSharingConsent` **同义**的字段（schema 不同故字段名不同）；`emotionSharingWithParent` 与 `crossSkillSharing` 在老师端同名。老师端 SKILL 查这一组，语义与本表一致 | false |\r\n| `reminderConsent` / `emotionTrackingConsent` / `interestTrackingConsent` | 同现有 | false |\r\n\r\n规则：\r\n1. 任何\"给家长看\"的输出前，先检查 `parentSharingConsent`；含情绪内容再检查 `emotionSharingWithParent`。两者任一为 false → 只输出给学生本人，并告诉学生可以自己决定是否转发。\r\n2. **危机例外**（`shared/crisis-exception.md`）优先于以上所有位。\r\n3. 学生与家长共用一个 IM 会话时，SKILL 应先问\"现在是同学本人在吗\"。**在确认说话人之前进入受限模式**：\r\n   不读长期档案、不写任何记录、不执行删除、不变更授权位、不输出家长版内容，只用当前会话信息作答。\r\n   确认后再按对应主体的授权位继续。（不要用\"默认按学生本人处理\"来绕过确认——那等于用未经核实的身份去读写未成年人档案。）\r\n4. **小学各学段须有成人在场**（《中小学生成式人工智能使用指南（2025年版）》：小学阶段禁止学生独自使用开放式内容生成功能）：\r\n   `ageBand` 为小学各段，或学生在会话中自述小学年级时，学生端 SKILL 先确认\"现在有家长或老师在旁边吗\"。\r\n   有成人陪同 → 正常进入本流程；学生说身边没有大人 → 说明需要大人陪着一起用、请等家长或老师在时再来，不进入本流程、不读写档案。\r\n   只凭学生自述判断，不追问身份细节；学段未知时不为此专门追问年级。**危机例外**（`shared/crisis-exception.md`）不受本条限制。\r\n   老师端 SKILL 的使用者是教师，不适用本条。\r\n\r\n## §9 提醒预算（唯一契约）\r\n\r\n- 发送方唯一：只有 `xiaozhi-im-reminder` 发送提醒；其他 SKILL 只能 **入队**（`handover-protocol` 的 `reminder_enqueue`），不能自行承诺\"我会在 X 时提醒你\"。\r\n- 每日上限：**1 条合并摘要 + 最多 1 条即时提醒**（考试当天/用户明确要求的除外）。合并摘要把当日到期的词卡、错题回看、计划任务合成一条。\r\n- 免打扰窗口按学段（§10）。\r\n- 无回应策略：连续 3 条无回应 → **暂停**该类提醒，用户下次进入会话时询问是否恢复。**不存在\"每周 1 次持续唤醒\"**。\r\n- 词汇复习：SM-2/间隔序列只在词汇 DNA 内部维护\"到期日\"，对外每天只贡献 1 张\"今日到期词卡\"。\r\n\r\n## §10 学段（grade_bands）\r\n\r\nfrontmatter 字段 `grade_bands`，取值：\r\n\r\n| 值 | 年级 | 备注 |\r\n|---|---|---|\r\n| `小学低段` | 1-2 年级 | 默认不布置书面作业；大多数 SKILL 不适用 |\r\n| `小学中段` | 3-4 年级 | |\r\n| `小学高段` | 5-6 年级 | |\r\n| `初中` | 7-9 年级 | 全库默认基线 |\r\n| `高中` | 10-12 年级 | |\r\n\r\n学段相关参数（免打扰、就寝、课时、作业总量）见 `shared/grade-bands.md`。references 中出现高中内容必须在同一行标注 `⚠高中`，或放在标题含\"初高衔接\"的章节里。\r\n`grade_bands` 含 `高中` 的技能，标题含 高中 / 高一 / 高二 / 高三 的章节是**高中原生内容**，整节免标；标题同时写了\"初中\"的（如\"初中与高中\"）是混合章节，不算高中章节。**同一技能里的初中章节仍需逐行标注**（CI：`check-skills` G1）。\r\n\r\n### 高中选科（`basicInfo.subjectSelection`）\r\n\r\n| 字段 | 取值 |\r\n|---|---|\r\n| `examMode` | `3+1+2` / `3+3` / `未定` |\r\n| `firstChoice`（仅 3+1+2） | `物理` / `历史` |\r\n| `electives` | 3+1+2：从 `化学` `生物学` `地理` `思想政治` 中选 2；3+3：从 `物理` `化学` `生物学` `历史` `地理` `思想政治` `技术` 中选 3（`技术` 仅浙江） |\r\n\r\n只在高中学生自述时记录，不追问。未选考的科目按**学业水平合格性考试**深度处理，不推选考难度。\r\n\r\n## §11 命名\r\n\r\n- 协调器统一名称：**学习系统协调器**（`xiaozhi-skill-coordinator`）。废弃\"三SKILL联动协调器 / 五SKILL联动协调器 / SKILL联动协调器\"。\r\n- 测评类型统一：`形成性` / `终结性` / `诊断性`。废弃\"总结性 / 展示性\"。\r\n- 版权状态统一（`copyrightStatus`）：`自有` / `改编` / `公开可引用` / `仅存索引`。教辅原题与历年真题一律 `仅存索引`。\r\n\r\n## §12 数值表述规范\r\n\r\n- 不得出现无出处的比例/倍数（\"80% 场景\"\"十倍\"\"85% 的学生\"）。经验参数须写成\"经验值，约 …\"并可被用户调整。\r\n- 不得承诺\"治愈 / 消失 / 一定提分\"。\r\n- 群体通过率（\"70% 的学生能做对\"）只能作为**难度描述**，不能作为对个体的判定依据。\n\nArchive v2.11.0: 14 files, 57405 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3968b), references/weekly-schedule-template.md (14983b), shared/ai-item-check.md (3043b), shared/crisis-exception.md (18125b), shared/crisis-referral-protocol.md (11784b), shared/grade-bands.md (8132b), shared/hint-ladder.md (4990b), shared/off-campus-training.md (7184b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (10161b), shared/vocab.md (14668b), skill-card.md (2528b), SKILL.md (26302b), _meta.json (150b)\n\nFile v2.11.0:SKILL.md\n\n---\nname: xiaozhi-teach-schedule-manager\ndescription: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。'\ncompatibility: WorkBuddy / SkillHub / OpenClaw / ClawHub\nlicense: MIT\ndisplay_name: 排课与课时管理\nversion: 2.11.0\nauthor: 小智伴学\ncategory: 独立教师\ngrade_bands:\n  - 小学中段\n  - 小学高段\n  - 初中\n  - 高中\ntags: [排课, 课时管理, 补课请假, 课时包, 排课冲突, 独立教师]\ndepends_on:\n  - xiaozhi-teach-student-intake\n  - xiaozhi-teach-lesson-log\n  - xiaozhi-teach-parent-communication\nid: openclaw:xiaozhi-teach-schedule-manager\nmin_platform_version: \"2.0\"\nmax_round_limit: 12\nslug: xiaozhi-teach-schedule-manager\ndisplayName: 排课与课时管理\nsummary: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。'\n---\n\n# 排课与课时管理 SKILL\n\n> **一句话定位：** 独立教师的时间是唯一不可再生的资产——把时间排清楚，是把生活排清楚。\n\n---\n\n## 技术边界\n\n> 技术边界：本 SKILL 依赖能力 [M, K, F]，无该能力时按 shared/platform-conventions.md 降级。\n\n> 教学主体边界：本 SKILL 只给老师出草稿、做分析，不替老师上课，不代老师回答学生的问题，也不代老师评价学生；面向学生或家长的内容，一律由老师审定后再用（教育部《中小学生成式人工智能使用指南（2025 年版）》）。\n\n> 适用范围：用于校外培训（一对一、小班）时，只在合法范围内用，口径见 `shared/off-campus-training.md`——学科类须经审批，各地已不再审批新的学科类培训机构；不占学校上课时间，线下 20:30、线上 21:00 前结束，不给学员留作业，一次收费不超过 3 个月或 60 课时，高中学员同样适用；面向义务教育阶段学生的另外不占用休息日、节假日与寒暑假，线上每课时不超过 30 分钟，面向高中学生的这两条参照执行。本技能不预设违规的排课、作业与收费。\n\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\n\n排课建议与冲突检测由本 SKILL 给出，**写入课表前一律要老师确认**。冲突检测只读 `studentCards[].availability[]`（学员授权登记的可上课时间段），不擅自扩大可上课范围。无 `K`（日期感知）时先问今天日期与本周起止日再排课。\n\n**课时怎么算不归本 SKILL 管**：单节课的消耗由 `xiaozhi-teach-lesson-log` 在课后生成待确认条目，老师确认后计入 `usedUnits`。本 SKILL 只维护课时包台账本身（总数、剩余、到期日）和到期提示。\n\n**财务不在本 SKILL 库范围**：课时包台账只记课时**数量**（`totalUnits` / `usedUnits` / `remainingUnits`），不记金额、单价、收款、欠费、退费。这是有意划出的边界——请老师用独立的记账工具处理资金，教学数据与财务数据分开存放。因此本 SKILL 的任何流程都不会提出退款、赔付或折算金额的建议。\n\n---\n\n## 一、核心使命\n\n独立教师排课常见的三个误区：\n\n```text\n误区① 全靠记性：课排在脑子里，\n        学员问\"下次课什么时候\"答不上来，\n        学员冲突了才后知后觉。\n\n误区② 课时台账混乱：学员课时包还剩多少不清楚，\n        课时耗尽了才想起续费，\n        学员超课时上课但课时没扣。\n\n误区③ 补课调课靠手动：学员请假靠微信沟通，\n        调课靠反复确认，\n        没有系统记录，靠人脑容易漏。\n```\n\n本 SKILL 要解决的是：\n- **让排课可视化**：周课表 + 学员可上课时间段\n- **让冲突早发现**：排课时先比对 `availability[]` 再落笔\n- **让课时台账透明**：每个学员课时包剩余、到期日、待确认条目清楚\n- **让补课请假有流程**：标准动作 + 逐条留痕\n\n---\n\n## 二、触发时机\n\n| 触发场景 | 示例语句 |\n|---------|---------|\n| 排课 | \"排下周的课\" / \"[化名] 排课\" |\n| 周课表 | \"本周课表\" / \"下周课表\" |\n| 调课 | \"调课\" / \"把 [化名] 的课调到 [日期]\" |\n\n**触发前提**：要有**明确的排课动作 + 对象**（谁、哪天）。单说\"调课\"\"补课\"\"请假\"先追问是谁、哪一次；老师在聊别的时顺口提到\"最近老调课\"不激活。\n\n| 老师说的话 | 处理 |\n|---|---|\n| \"小A 这节课上完了\" / \"扣一课时\" | 转课后记录助手（本 SKILL 不扣课时） |\n| \"小A 家长问调课怎么回\" | 转家长沟通助手 |\n| \"今天有哪些课\" | 转独立教师工作台（只读汇总） |\n| 补课 | \"补课\" / \"[化名] 缺课要补\" |\n| 请假 | \"[化名] 请假\" / \"学员请假怎么扣课时\" |\n| 课时包 | \"[化名] 还剩几课时\" / \"课时包快到期了\" |\n| 登记课时包 | \"[化名] 续了 [N] 课时，帮我登记\" |\n| 排课冲突 | \"这个时间排了谁\" / \"有没有冲突\" |\n| 下一节课 | \"我下一节课是谁\" |\n| 续费节点 | \"[化名] 课时快用完了\" |\n\n---\n\n## 三、核心流程\n\n```text\n                ┌──────────────────────────┐\n                │ ① 读学员可上课时间段      │\n                │  studentCards[].availability│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ② 周课表草案              │\n                │  固定课 + 临时调课        │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ③ 冲突检测                │\n                │  老师时间 × availability  │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ④ 排课建议 → 老师确认     │\n                │  确认后才写 lessonSchedule│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑤ 课时包台账              │\n                │  剩余 / 到期 / 待确认条目 │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑥ 补课/请假/调课          │\n                │  一律生成待确认建议       │\n                └──────────────────────────┘\n```\n\n---\n\n## 四、可上课时间段\n\n### 4.1 学员可上课时间（`availability[]`）\n\n学员的可上课时间登记在 `workspace.studentCards[].availability[]`，每条是一个 `{dayOfWeek, startTime, endTime}` 三元组：\n\n```text\n小A 的 availability：\n  { \"dayOfWeek\": \"周三\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n  { \"dayOfWeek\": \"周五\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n```\n\n**只记时间，不记原因**。\"周三要上钢琴课\"\"周日爷爷家\"这类信息属于家庭安排，不写进档案——排课只需要知道哪段时间可用。\n\n**不要用 `learningPreferences` 做时间冲突检测**。那个字段记的是学习方式偏好（\"喜欢先看例题\"\"步骤要写全\"），拿它判断时间会得出荒唐结论。老师若在 `learningPreferences` 里写了时间类内容，提示一次并帮他迁到 `availability[]`。\n\n> 📎 完整登记模板见 `references/weekly-schedule-template.md`（第一节\"学员可上课时间段\"）\n\n### 4.2 老师自己的时间\n\n老师的不可用时间与上课偏好记在 `workspace.teacherProfile` 与会话中，不入学员卡。授课形式（线上/线下）读 `teacherProfile.deliveryChannels`。\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第二节\"老师时间矩阵\"：不可用时间 + 可用课时位 + 老师偏好）\n\n---\n\n## 五、周课表生成\n\n### 5.1 课表模板\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第三节\"周课表模板\"：周一至周五放学后时段的课表示例，周六、周日两列默认不排 + 课时统计栏）\n\n### 5.2 课表生成三步走\n\n```text\n第 1 步：固定学员优先\n  · 每周固定时间学员先排\n  · 锁定本周的\"硬骨架\"\n\n第 2 步：临时学员填空\n  · 填空固定学员之间的空位\n  · 优先安排学习节奏紧急的学员\n\n第 3 步：留缓冲位\n  · 留 1-2 个空位处理调课/补课\n  · 不满课是健康的课表\n```\n\n---\n\n## 六、冲突检测\n\n### 6.1 冲突类型\n\n```text\n■ 老师时间冲突\n  · 同时段 workspace.lessonSchedule[] 已有 status=scheduled/makeup 的课\n    （比对 startTime 与 durationMinutes 算出的区间是否重叠）\n  · 同时段是老师登记的不可用时间\n\n■ 学员时间冲突\n  · 拟排时段不落在该学员任何一条 availability[] 区间内\n    （判据：同一 dayOfWeek，且 startTime ≤ 拟排开始，\n      拟排结束 ≤ endTime）\n  · 学员没登记 availability[] → 不猜，先问一次并登记\n\n■ 时段规定\n  · 所有学段（面向中小学生的校外培训都适用：国办发〔2018〕80 号；教基厅函〔2021〕11 号）：\n    线下课结束晚于 20:30、线上课结束晚于 21:00 → 提前；\n    落在工作日白天的学校上课时间 → 不排\n  · 小学中段 20:00、小学高段 20:20 前结束（shared/grade-bands.md 三）\n  · 面向义务教育阶段学生的学科类培训（\"双减\"意见；高中学员参照执行，按当地规定）：\n    落在周六、周日、法定节假日、寒暑假 → 不排；\n    线上每课时超过 30 分钟，或两课时之间不足 10 分钟 →\n    拆成每课时不超过 30 分钟、中间休息不少于 10 分钟\n  · 处理：说一句依据，给出合规的候选时段或拆法，由老师选；其余照常排\n\n■ 课时包提示\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n  · pendingConfirmations 非空（剩余课时可能虚高）\n```\n\n**冲突检测只看时间。** 不因为\"这个学员最近状态不好\"\"家长不太配合\"之类判断去调整排课建议——那不是排课要解决的问题。\n\n### 6.2 冲突检测输出\n\n> 📎 完整报告模板见 `references/weekly-schedule-template.md`（第 4.2 节\"冲突检测输出\"：排课请求 + 四类检测结果 + 建议）\n\n---\n\n## 七、补课/请假/调课三动作\n\n### 7.1 请假\n\n```text\n■ 学员请假\n  操作：\n    · 课时不扣（对应课节 status=absence，\n      课时条目由 lesson-log 生成 units=0 的待确认条目）\n    · 记录请假日期；原因只记\"已请假\"，不记家庭细节\n    · 不代排补课；需要补课时按 §7.2 生成待确认的补课建议\n```\n\n> 📎 请假登记模板见 `references/leave-makeup-reschedule-forms.md`（第一节）\n\n### 7.2 补课\n\n```text\n■ 补课\n  操作：\n    · 在老师可用时间 ∩ 该学员 availability[] 中、合乎 §6.1 时段规定的范围里找候选时段\n    · 生成\"待确认的补课建议\"，列出 1-3 个候选：\n        「小A 缺的这节课，这两个时间都排得开：\n          本周五 18:30-20:00 / 下周五 18:30-20:00。\n          选哪个？也可以都不选。」\n    · 老师选定并与学员/家长确认后，才写入 lessonSchedule[]（status=makeup）\n    · 课时消耗仍由 lesson-log 在课后生成待确认条目\n\n■ 排课优先级（建议顺序，老师可推翻）\n  · 同周补 > 下周补\n  · 一次排完 > 分散排\n  · 尽量贴近该学员原有的上课节奏\n```\n\n> 📎 补课安排模板见 `references/leave-makeup-reschedule-forms.md`（第二节）\n\n### 7.3 调课\n\n```text\n■ 调课（双方协商）\n  操作：\n    · 老师主动调：与学员/家长协商新时间\n    · 学员/家长主动调：登记新时间\n    · 双方都要确认\n\n⚠️ 调课原则：\n  · 一周内完成调课，不留\"待定\"\n  · 新时间同样过 §6.1 时段规定（不占学校上课时间、按时结束；面向义务教育阶段学生的学科类培训不调到周六、周日、法定节假日或寒暑假）\n  · 调课记录要可追溯\n  · 频繁调课的学员需沟通原因\n```\n\n> 📎 调课登记模板见 `references/leave-makeup-reschedule-forms.md`（第三节）\n\n---\n\n## 八、课时包台账\n\n### 8.1 学员课时台账\n\n> 📎 完整台账模板见 `references/weekly-schedule-template.md`（第六节\"课时包台账\"：课时包信息 + 待确认条目 + 消耗/续费记录 + 提示条件）\n\n### 8.2 课时包提示规则\n\n提示对象是**老师本人**。要不要告诉家长、什么时候说，由老师决定；本 SKILL 不推送任何家长消息。\n\n```text\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n\n■ 提示动作\n  · 向老师陈述事实：「小A 还剩 3 课时，课时包 11-30 到期，\n    另有 1 条待确认（确认后剩 2 课时）。」\n  · 不催单、不制造紧迫感、不替老师决定要不要续\n\n■ 续费节点口径\n  · 已用 50% / 70%（与 xiaozhi-teach-renewal-report、\n    xiaozhi-teach-student-intake 同一套，本 SKILL 不另设节点）\n\n■ 要和家长谈时\n  · 话术起草交 xiaozhi-teach-parent-communication\n  · 起草前先查 workspace.studentCards[].consent 的\n    parentCommunicationAllowed；发送由老师本人完成\n\n■ 登记课时包时（新开或续课）\n  · 按这一次收的课时与起止判断，不按累计的 totalUnits：\n    这次的课时折成标准课时超过 60（线下 45 分钟、线上 30 分钟为 1 课时，\n    如 90 分钟一节算 2 课时，短于标准时长的按 1 课时；每节多长看该学员的\n    lessonSchedule[].durationMinutes，没排过课的问老师一句，课时数本身已超过 60 的不用问），\n    或这次的起始日到到期日超过 3 个月\n    （没填 startDate 时按登记当天算；续课加在原课时包上的，起始日按这次\n    续课登记当天算，不用首次的 startDate）→ 提示老师一次：\n    「一次收费的时间跨度不超过 3 个月，也不超过 60 课时（教监管函〔2021〕2 号，\n    全国性规定；标准课时见发改价格〔2021〕1279 号）。这次 [N] 课时、每节 [N] 分钟，\n    折合约 [N] 个标准课时（跨度 [N] 个月），超出了；如果是一次收的费，请核对收费方式。」\n  · 折算只用于这一步：totalUnits 照老师给的数写，台账照老师的记法\n  · 只提示、不拦截：老师核对后说照登就照登，课时数与日期照老师给的写\n  · startDate 可以不填\n```\n\n### 8.3 课时异常处理\n\n```text\n■ 剩余课时不足却又要排课\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\n    照排 / 先跟家长确认 / 暂不排？」\n  · 老师选\"照排\"才写入 lessonSchedule[]\n  · 本 SKILL 不代做\"允许透支 N 课时\"的决定，也不改动课时数字\n\n■ 学员请假不补课\n  · 课时不扣；是否另行约定由老师与家长自行商定\n  · 本 SKILL 不涉及金额结算\n\n■ 老师取消\n  · 课时不扣\n  · 生成待确认的补课建议（候选时段 1-3 个），\n    由老师选定并与家长确认后写入\n  · 不涉及退款：课时包只记数量，金额相关事项请用独立记账工具处理\n```\n\n---\n\n## 九、特殊场景\n\n### 9.1 寒暑假、休息日与法定节假日\n\n```text\n■ 所有学段\n  · 工作日不排在学校上课时间（国办发〔2018〕80 号）；结束时间照 §6.1\n\n■ 面向义务教育阶段学生的学科类培训\n  · 周六、周日、法定节假日与寒暑假不排课（双减意见）\n  · 老师提出要排时：说一句依据，改在开学后（或下周）的\n    工作日放学后排；其余照常排，不长篇解释\n\n■ 面向高中学生\n  · 休息日、法定节假日与寒暑假参照执行，按当地规定\n\n■ 本 SKILL 不预设\n  · 周末、假期的加课密度\n  · 假期课时包\n\n■ 培训进度\n  · 不超过学员所在学校的同期进度，不提前教下学期、下学年的内容\n  · 放假前最后一节：学期收尾，记下开学后从哪儿接着上\n```\n\n### 9.2 考试期排课\n\n```text\n■ 考前 2 周\n  · 减少新课\n  · 增加复习/测评\n  · 学员优先完成学校作业\n\n■ 考试期间\n  · 暂停新课\n  · 答疑 + 心理支持\n  · 考后复盘\n\n■ 考后 1 周\n  · 复盘考试结果\n  · 调整下阶段计划\n```\n\n### 9.3 学员请假多\n\n```text\n■ 触发条件\n  · 1 个月内请假 ≥ 3 次\n  · 连续 2 周请假\n\n■ 应对\n  · 主动了解原因\n  · 评估是否需要调整节奏\n  · 考虑续费意愿\n```\n\n---\n\n## 十、接口\n\n### 10.1 数据流\n\n```text\n  老师口述可上课时间 ──→ ┌────────────────────┐\n  老师确认排课建议   ──→ │ schedule-manager    │ ──→ 周课表（渲染视图）\n                        │ （本 SKILL）         │ ──→ 待确认的补课建议\n                        └─────────┬──────────┘\n                                  │ 写这两处\n                    ┌─────────────┴─────────────┐\n                    ↓                           ↓\n             lessonSchedule            coursePackageLedger\n             （课节）                  （不含 usedUnits 增减）\n```\n\n本 SKILL 不需要任何 SKILL 先跑一遍：学员没建卡也能排课，只是没有 `availability[]` 可比对，此时先问一次并登记。\n\n### 10.2 读写字段\n\n> 统一读写共享工作空间 `solo-teacher-workspace.schema.json`（下称 `workspace`）。字段名一律以该 schema 为准。\n\n```text\n读：\n  workspace.studentCards[].availability[]\n      → 学员可上课时间段（dayOfWeek / startTime / endTime）\n        这是时间冲突检测的唯一依据\n  workspace.studentCards[].alias / .status / .gradeBand\n      → 化名、是否在读、学段（学段决定 §6.1 时段规定怎么用：义务教育阶段\n        与高中分开，小学中段、高段按 shared/grade-bands.md 一的就寝时间再提前）\n  workspace.teacherProfile.deliveryChannels / .serviceModes\n      → 线上/线下、一对一/小班，决定单节时长建议\n  workspace.coursePackageLedger[].totalUnits / .usedUnits /\n      .remainingUnits / .startDate / .expiryDate / .pendingConfirmations[]\n      → 课时包台账；pendingConfirmations 非空时剩余课时按\"未含 N 条待确认\"展示；\n        startDate 到 expiryDate 的跨度用于 §8.2 的登记提示（续课加在原课时包上的，起始日按这次续课登记当天算）\n  workspace.lessonLogs[].consumeLessonUnits\n      → 单节实际消耗（由 lesson-log 写，本 SKILL 只读）\n\n写：\n  workspace.lessonSchedule[]（lessonId / studentId / subject /\n      startTime / durationMinutes / day_of_week / status / lessonGoal）\n      → 排课结果，老师确认后写入\n      status 取值：scheduled / completed / rescheduled / makeup /\n                  cancelled / absence / trial\n  workspace.coursePackageLedger[].totalUnits / .startDate / .expiryDate\n      → 新开或续课时登记（startDate 可不填）；超过 60 课时或起止超过\n        3 个月时按 §8.2 提示老师核对，不拦截\n  workspace.coursePackageLedger[].renewalAttention\n      → remainingUnits ≤ 3 或 expiryDate 距今 ≤ 7 天时置为 true\n\n本 SKILL 不写：\n  workspace.coursePackageLedger[].usedUnits / .remainingUnits 的增减\n      → 由老师在 lesson-log 确认待确认条目后变更\n\n派生视图（非存储字段）：\n  · 周课表        ← 由 workspace.lessonSchedule[] 按 day_of_week 渲染\n  · 冲突检测报告  ← 由 workspace.lessonSchedule[] 的 startTime/durationMinutes\n                    与 workspace.studentCards[].availability[] 实时比对\n  · 补课候选时段  ← 老师可用时间 ∩ 该学员 availability[] 的差集\n```\n\n### 10.3 谁来读\n\n`xiaozhi-teach-solo-dashboard` 只读 `lessonSchedule[]` 与 `coursePackageLedger[]` 渲染今日课表和课时区块；`xiaozhi-teach-lesson-log` 读 `lessonSchedule[].status` 判断是否试听、是否补课。都是它们主动读，本 SKILL 不推送。\n\n---\n\n## 十一、字段级高敏信息防护\n\n```text\n✅ 排课中可使用：化名、availability[] 的时间段、课时包数量\n❌ 禁止：学员家庭住址、家长身份、就读学校与班级、联系方式\n✅ 写入数据：课节结构、课时包数量\n❌ 不写入：学员真实姓名、金额、家长联系方式\n\n✅ availability[] 只记时间：{周三, 18:30, 20:00}\n❌ 不记原因：\"周三要上钢琴课\"\"周日去爷爷家\"属于家庭安排，不入档案\n\n✅ 冲突检测：仅时间维度\n❌ 不分析：学员家庭事务、学习状态等非时间因素\n```\n\n---\n\n## 十二、行为准则\n\n| ✅ 应该做 | ❌ 不能做 |\n|---------|---------|\n| 排课前比对 availability[] | 拿 learningPreferences 判断时间 |\n| 冲突先报出来再排 | 冲突了再处理 |\n| 补课给候选时段等老师定 | 替老师把补课排进去 |\n| 剩余课时注明\"未含 N 条待确认\" | 拿虚高的剩余课时判断续费 |\n| 课时不足时先问老师 | 自行决定\"允许透支 1 课时\" |\n| 到期提示只陈述事实 | 用剩余课时制造紧迫感 |\n| 所有学段不占学校上课时间；义务教育阶段学员只排工作日放学后 | 把课排进学校上课时间，或把义务教育阶段学员排进周六、周日、法定节假日、寒暑假 |\n| 线上课每课时不超过 30 分钟、间隔不少于 10 分钟 | 排一节 60 分钟不间断的线上课 |\n| 课时包超过 60 课时或 3 个月时提示老师核对 | 替老师拦下登记或改课时数 |\n| 一律用化名 | 课表里出现真实姓名 |\n\n---\n\n## 十三、与其他 SKILL 的协同清单\n\n```text\n排课与课时管理\n    读 workspace.studentCards[].availability[] ← student-intake 登记\n    读 workspace.coursePackageLedger[]         ← 本 SKILL 与 lesson-log 共同维护\n    写 workspace.lessonSchedule[]              ← 本 SKILL 唯一写入方\n    写 workspace.coursePackageLedger[].totalUnits / .startDate / .expiryDate /\n       .renewalAttention\n\n  课时的实际扣减在 xiaozhi-teach-lesson-log（老师确认待确认条目）。\n  要和家长谈调课或续费，话术交 xiaozhi-teach-parent-communication，\n  发送由老师本人完成。\n```\n\n**禁止行为**：\n- 禁止未经老师确认写入课表\n- 禁止擅自扩大学员可上课时间范围\n- 禁止改动 `usedUnits` / `remainingUnits`\n- 禁止提出退款、赔付或任何金额相关建议\n- 禁止代老师联系学员或家长\n- 禁止课表中出现真实姓名\n\n---\n\n### 隐私与数据控制入口\n- 查看：「查看我的[课表记录]」\n- 更正：「更正我的[课表记录]」\n- 删除：「删除我的[课表记录]」（删除后不可恢复，会先确认一次）\n- 暂停：「这次不要记忆」（本次会话不读取、不保存任何记录，也不发起回写与交接）/「暂停提醒」\n- 共享控制：「不要共享给其他SKILL」/「不要给家长看」\n- 导出：「导出我的[课表记录]」（以文本形式给出，便于转存）\n\n学员/家长提出时同样适用（由老师核实请求人身份后代为执行），按学员化名定位：「查看 小A 的课表」「删除 小A 的可上课时间」。\n\n**校验要求**：跨 SKILL 共享或建档前，须确认 `consent.crossSkillSharing` / `consent.profileEnabled` 为 true；学员卡 `status` 为\"暂停记录\"时不再写入新课节。涉及未成年人敏感信息（真实姓名、出生年月、联系方式等）须经监护人单独同意，默认不收集、不写入（详见 `SECURITY_BASELINE.md`）。\n\n---\n\n## 十四、参考资源\n\n- `references/weekly-schedule-template.md` — 周课表模板（含学员/老师时间矩阵、冲突检测输出、课时包台账等完整模板）\n- `references/leave-makeup-reschedule-forms.md` — 请假/补课/调课登记模板\n\n---\n\n> 💡 **小智说：**\n> \"独立教师最大的浪费不是没课可上，\n>  是把时间花在'我不知道今天该上什么'。\n>  排课不是排时间表，\n>  是把你的人生从混乱中拯救出来。\n>  当你的课表、课时、学员、续费都在一个地方清楚可见，\n>  你才有时间去做真正重要的事——把课上好。\"\n\nFile v2.11.0:_meta.json\n\n{\n  \"ownerId\": \"kn79c5gcmfkt9p1pk656tgq7nd853s7v\",\n  \"slug\": \"xiaozhi-teach-schedule-manager\",\n  \"version\": \"2.11.0\",\n  \"publishedAt\": 1791448039847\n}\n\nFile v2.11.0:references/leave-makeup-reschedule-forms.md\n\n# 请假/补课/调课登记模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` §七\"补课/请假/调课三动作\"使用。三张表只维护在本文件，`weekly-schedule-template.md` 不再重复。\r\n> 课节状态取 `solo-teacher-workspace.schema.json` 的 `lessonEvent.status` 枚举：`scheduled / completed / rescheduled / makeup / cancelled / absence / trial`。\r\n> 课时的实际扣减不在本 SKILL：由 `xiaozhi-teach-lesson-log` 课后生成待确认条目，老师确认后才计入 `usedUnits`。\r\n\r\n---\r\n\r\n## 一、请假登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 请假登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM]\r\n课节状态：改为 absence\r\n课时处理：□不扣（默认）□按实际时长记 □其他约定\r\n          → 由 lesson-log 生成对应的待确认条目，老师确认后生效\r\n是否补课：□要补（走第二节）□不补 □待家长回复\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**请假原因只记\"已请假\"**。孩子生病、家里有事、临时加课——这些是家庭信息，写进档案没有教学价值，却会一直留在那里。老师自己记得就行。\r\n\r\n---\r\n\r\n## 二、补课安排\r\n\r\n补课**不由 AI 直接排进课表**。流程是给候选、老师定、家长确认、才写入。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 补课安排（待确认）\r\n学员：小A（原 [lessonId] [日期] 请假 / 老师取消）\r\n候选时段（取\"老师可用时间 ∩ 该学员 availability[]\"，并合乎 SKILL.md §6.1 时段规定）：\r\n  ① [本周五] [18:30-20:00]\r\n  ② [下周五] [18:30-20:00]\r\n  ③ [    ] [           ]\r\n老师选定：[    ]\r\n学员/家长确认：□已确认 □待回复\r\n写入课表：确认后新增 lessonEvent，status=makeup\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**候选一个都排不出来时**，如实说\"这周没有同时符合你和小A空闲的时段\"，并列出最接近的两个（说明各自差在哪），由老师决定是否协调，不擅自放宽 `availability[]`。\r\n\r\n**不涉及退款**：老师取消导致的补课只谈时间，不谈金额、金额折算或赔付。课时包只记数量，资金请用独立的记账工具处理。\r\n\r\n---\r\n\r\n## 三、调课登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 调课登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM] → 状态改为 rescheduled\r\n新时间：[日期] [HH:MM-HH:MM]\r\n        （须落在该学员 availability[] 内，并合乎 SKILL.md §6.1 时段规定；不在\r\n          availability[] 内的先问是否临时可用，临时同意的不写进 availability[]）\r\n课时处理：□正常（新课节照常记课时）□补课性质\r\n双方确认：□老师已确认 □学员/家长已确认\r\n写入课表：两边都确认后才写新的 lessonEvent\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**调课原则**\r\n- 一周内定下来，不留\"待定\"——待定的课等于没排。\r\n- 每次调课都留一条记录，下次谈节奏时有据可查。\r\n- 同一学员一个月内调课 ≥ 3 次时，提示老师\"要不要和家长聊聊固定时间\"，只提示一次，不重复催。\r\n\r\n---\r\n\r\n## 四、三张表的共同规则\r\n\r\n- 一律用化名（`studentCards[].alias`），不出现真实姓名。\r\n- 不记家庭原因、家长职业、就读学校班级、联系方式。\r\n- 学员卡 `status` 为\"暂停记录\"或\"已结课\"时，不再新增课节。\r\n- 需要通知家长时，话术交 `xiaozhi-teach-parent-communication` 起草（先查 `parentCommunicationAllowed`），发送由老师本人完成。\n\nFile v2.11.0:references/weekly-schedule-template.md\n\n# 周课表与课时台账模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` 使用。\r\n> 完整 Prompt 逻辑请参阅 [`../SKILL.md`](../SKILL.md)。\r\n> 课时长度与就寝时间参数见 `shared/grade-bands.md`；续费节点与 `xiaozhi-teach-renewal-report` 统一为已用 50% / 70%。\r\n\r\n---\r\n\r\n## 一、学员可上课时间段（`availability[]`）\r\n\r\n时间冲突检测的**唯一依据**。每条写成 `{dayOfWeek, startTime, endTime}`，只记时间，不记原因。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 可上课时间段 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 时间段（最多 21 条）\r\n  ① dayOfWeek [周三]  startTime [18:30]  endTime [20:00]\r\n  ② dayOfWeek [周五]  startTime [18:30]  endTime [20:00]\r\n  ③ dayOfWeek [    ]  startTime [     ]  endTime [     ]\r\n  格式：dayOfWeek 取 周一…周日；时间为 24 小时制 HH:MM\r\n\r\n■ 单次课时长：[N] 分钟\r\n  参考 shared/grade-bands.md 三：线下一对一/小班常见 60 或 90 分钟；\r\n  线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（义务教育阶段学科类；\r\n  高中参照）。授课形式读 teacherProfile.deliveryChannels。\r\n\r\n■ 课程最晚结束时间\r\n  线下不晚于 20:30，线上不晚于 21:00（所有学段；国办发〔2018〕80 号、教基厅函〔2021〕11 号）\r\n  小学中段 就寝 21:00 → 再提前到 20:00 结束\r\n  小学高段 就寝 21:20 → 再提前到 20:20 结束\r\n  以上是上限，家庭作息更早的按家庭。\r\n\r\n■ 哪几天排\r\n  所有学段都不排在学校上课时间。面向义务教育阶段学生的学科类培训\r\n  只排工作日放学后，周六、周日、法定节假日与寒暑假不排；高中学员\r\n  这一条参照执行，按当地规定。\r\n\r\n■ 不写进来的东西\r\n  ❌ \"学校晚自习到 21:00\"（写不可用即可，不写去向）\r\n  ❌ \"周三上钢琴课\"（家庭安排，不入档案）\r\n  ❌ \"妈妈周日要加班\"（家长信息，不入档案）\r\n  这些时间直接不出现在 availability[] 里就是了。\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n> ⚠️ 不要把时间信息写进 `learningPreferences[]`。那个字段记的是学习方式偏好（\"喜欢先看例题\"），不是时间。\r\n\r\n---\r\n\r\n## 二、老师时间矩阵\r\n\r\n老师自己的时间不入学员卡，只在会话中使用。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 老师时间矩阵 · [本周]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 老师固定不可用时间\r\n  · 工作：[时间段]\r\n  · 通勤：[时间段]\r\n  · 个人事务：[时间段]\r\n\r\n■ 老师可用课时（工作日放学后）\r\n  周一：[N] 个课时位\r\n  周二：[N] 个课时位\r\n  ...\r\n  周五：[N] 个课时位\r\n  本周总可用：[N] 个课时位\r\n  周六、周日：不排（义务教育阶段学科类；高中学员参照执行，按当地规定）\r\n\r\n■ 老师偏好（示例，按老师实际情况填）\r\n  · 周四晚上不排课\r\n  · 晚上最后一节课的结束时间，按所带学员学段中最早的一档来定\r\n    （见第一节；带小学中段学员不排到 20:00 之后，小学高段 20:20）\r\n  · 工作日放学后排课（面向义务教育阶段学生的学科类培训不排休息日、\r\n    法定节假日与寒暑假）\r\n  · 线上课每课时不超过 30 分钟，课间不少于 10 分钟\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 三、周课表模板\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 周课表 · [本周日期范围]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n          │ 周一   │ 周二   │ 周三   │ 周四   │ 周五   │ 周六   │ 周日\r\n──────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n放学 17:30│ 化名A  │ 化名D  │ 化名C  │ 化名A  │ 休息   │ —      │ —\r\n晚上 19:00│ 化名E  │ 化名F  │ 化名B  │ 休息   │ 化名G  │ —      │ —\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时统计\r\n  · 本周总课时：[N] 课时\r\n  · 已排：[N] 课时\r\n  · 空闲位：[N] 个\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：周六、周日两列默认空（—）：不排（义务教育阶段学科类）；法定节假日\r\n    与寒暑假同样不排，高中学员参照执行、按当地规定。\r\n    19:00 这一排的线下课不超过 90 分钟（20:30 前结束）；线上课每课时\r\n    不超过 30 分钟、课间不少于 10 分钟、21:00 前结束。小学中段学员\r\n    20:00、小学高段学员 20:20 前结束（见第一节）。\r\n```\r\n\r\n### 3.1 课表生成三步走\r\n\r\n```text\r\n第 1 步：固定学员优先\r\n  · 每周固定时间学员先排\r\n  · 锁定本周的\"硬骨架\"\r\n\r\n第 2 步：临时学员填空\r\n  · 填空固定学员之间的空位\r\n  · 优先安排学习节奏紧急的学员\r\n\r\n第 3 步：留缓冲位\r\n  · 留 1-2 个空位处理调课/补课\r\n  · 不满课是健康的课表\r\n```\r\n\r\n---\r\n\r\n## 四、冲突检测\r\n\r\n### 4.1 冲突类型\r\n\r\n```text\r\n■ 老师时间冲突\r\n  · 同时段 lessonSchedule[] 已有 status=scheduled/makeup 的课\r\n    （按 startTime + durationMinutes 算区间，看是否重叠）\r\n  · 同时段是老师登记的不可用时间\r\n\r\n■ 学员时间冲突\r\n  · 拟排时段不落在该学员任何一条 availability[] 内\r\n    判据：同一 dayOfWeek 且 startTime ≤ 拟排开始，拟排结束 ≤ endTime\r\n  · 该学员没有 availability[] 记录 → 不猜，先问一次并登记\r\n\r\n■ 时段规定\r\n  · 所有学段（面向中小学生的校外培训都适用：国办发〔2018〕80 号；教基厅函〔2021〕11 号）：\r\n    线下课结束晚于 20:30、线上课结束晚于 21:00 → 提前；\r\n    落在工作日白天的学校上课时间 → 不排\r\n  · 小学中段 20:00、小学高段 20:20 前结束（见第一节）\r\n  · 面向义务教育阶段学生的学科类培训（\"双减\"意见；高中学员参照执行，按当地规定）：\r\n    落在周六、周日、法定节假日、寒暑假 → 不排；\r\n    线上每课时超过 30 分钟，或两课时之间不足 10 分钟 →\r\n    拆成每课时不超过 30 分钟、中间休息不少于 10 分钟\r\n  · 处理：说一句依据，给出合规的候选时段或拆法，由老师选；其余照常排\r\n\r\n■ 课时包提示\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n  · pendingConfirmations 非空（剩余课时可能虚高）\r\n```\r\n\r\n### 4.2 冲突检测输出\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n⚠️ 冲突检测报告 · [排课请求]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 排课请求\r\n  学员：小A\r\n  时间：[日期] [HH:MM-HH:MM]\r\n  时长：[N] 分钟\r\n\r\n■ 检测结果\r\n  老师时间：□冲突 □可用\r\n    · 冲突对象：[同时段已排的课节 lessonId]\r\n  学员时间：□冲突 □可用\r\n    · 判据：availability[] 中 [周三 18:30-20:00]，\r\n      拟排 [周三 19:30-20:30] 超出区间\r\n    · 或：该学员尚无 availability[] 记录，需先登记\r\n  时段规定：□合规 □需调整\r\n    · 如：线下课排到 [20:00-21:30]，晚于 20:30；或排在周六\r\n  课时包：□正常 □需提示\r\n    · 剩余：[N] 课时（未含 [N] 条待确认）\r\n    · 到期：[日期]（[N] 天后）\r\n\r\n■ 建议\r\n  · 若冲突：给 1-3 个落在 availability[] 内的候选时段，由老师选\r\n  · 若时段不合规：说一句依据，改给工作日放学后、合乎时长规定的候选\r\n  · 若课时不足：先问老师\"照排 / 先跟家长确认 / 暂不排\"\r\n  · 不主动提出退款、金额折算或催缴\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 五、补课/请假/调课三动作\r\n\r\n三张登记表只维护在一处，见 `leave-makeup-reschedule-forms.md`（请假 / 补课 / 调课，含 `lessonSchedule[].status` 的对应取值）。本文件不再重复。\r\n\r\n---\r\n\r\n## 六、课时包台账\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n💰 课时包台账 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时包信息\r\n  课时：[N] 课时（起 [日期]，到期 [日期]）\r\n  续费节点预警：[日期]（[N] 天前）\r\n  登记提示：这一次收的课时折成标准课时超过 60（90 分钟一节算 2 课时、短于标准时长的按 1 课时，每节多长\r\n    看课表，不清楚时问老师），或这一次的起止超过 3 个月（没填起始日按登记当天算，\r\n    续课按这次续课登记当天算）→ 提示老师一次「一次收费的时间跨度不超过 3 个月，\r\n    也不超过 60 课时（教监管函〔2021〕2 号）；这次折合约 [N] 个标准课时，如果是\r\n    一次收的费，请核对收费方式」；只提示、不拦截；续课按这一次新增的算，不按累计；\r\n    折算只用于这一步，台账课时照老师的记法\r\n\r\n■ 课时消耗\r\n  初始：[N] 课时\r\n  已消耗：[N] 课时\r\n  剩余：[N] 课时（[N]%）\r\n  状态：□充足 □预警 □耗尽\r\n\r\n■ 待确认条目（pendingConfirmations）\r\n  · [lessonId]（[生成时间]）：[N] 课时 —— 等老师确认\r\n  · 确认前不计入已消耗；剩余课时展示一律注明\"未含 [N] 条待确认\"\r\n\r\n■ 消耗历史（老师确认后才记入）\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n\r\n■ 续费记录\r\n  · 第 1 次续费：[日期] +[N] 课时\r\n  · 第 2 次续费：[日期] +[N] 课时\r\n\r\n■ 提示条件（置 renewalAttention，提示对象是老师本人）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：本台账只记课时数量，不记金额、单价、收款、欠费、退费。\r\n```\r\n\r\n---\r\n\r\n## 七、课时提示规则\r\n\r\n```text\r\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n\r\n■ 提示动作（说给老师听，不推送家长）\r\n  · 陈述事实：「小A 还剩 3 课时，课时包 [日期] 到期，\r\n    另有 1 条待确认（确认后剩 2 课时）。」\r\n  · 不催单、不制造紧迫感、不替老师决定要不要续\r\n\r\n■ 续费节点口径\r\n  · 已用 50% / 70%\r\n    与 xiaozhi-teach-renewal-report、xiaozhi-teach-student-intake\r\n    同一套，本文件不另设节点\r\n\r\n■ 要和家长谈时\r\n  · 话术起草交 xiaozhi-teach-parent-communication\r\n  · 起草前查 studentCards[].consent 的 parentCommunicationAllowed\r\n  · 发送由老师本人完成\r\n```\r\n\r\n### 7.1 课时异常处理\r\n\r\n```text\r\n■ 剩余课时不足却又要排课\r\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\r\n    照排 / 先跟家长确认 / 暂不排？」\r\n  · 老师选\"照排\"才写入课表；不代做\"允许透支 N 课时\"的决定\r\n\r\n■ 学员请假不补课\r\n  · 课时不扣；是否另行约定由老师与家长商定\r\n  · 不涉及金额结算\r\n\r\n■ 老师取消\r\n  · 课时不扣\r\n  · 生成待确认的补课建议（1-3 个落在 availability[] 内的候选时段），\r\n    老师选定并与家长确认后写入课表\r\n  · 不涉及退款：课时包只记数量，金额相关请用独立记账工具\r\n```\r\n\r\n---\r\n\r\n## 八、特殊场景处理\r\n\r\n### 8.1 寒暑假、休息日与法定节假日\r\n\r\n```text\r\n■ 所有学段\r\n  · 工作日不排在学校上课时间（国办发〔2018〕80 号）；结束时间照 SKILL.md §6.1\r\n\r\n■ 面向义务教育阶段学生的学科类培训\r\n  · 周六、周日、法定节假日与寒暑假不排课（双减意见）\r\n  · 老师提出要排时：说一句依据，改在开学后（或下周）的\r\n    工作日放学后排；其余照常排，不长篇解释\r\n\r\n■ 面向高中学生\r\n  · 休息日、法定节假日与寒暑假参照执行，按当地规定\r\n\r\n■ 本 SKILL 不预设\r\n  · 周末、假期的加课密度\r\n  · 假期课时包\r\n\r\n■ 培训进度\r\n  · 不超过学员所在学校的同期进度，不提前教下学期、下学年的内容\r\n  · 放假前最后一节：学期收尾，记下开学后从哪儿接着上\r\n```\r\n\r\n### 8.2 考试期排课\r\n\r\n```text\r\n■ 考前 2 周\r\n  · 减少新课\r\n  · 增加复习/测评\r\n  · 学员优先完成学校作业\r\n\r\n■ 考试期间\r\n  · 暂停新课\r\n  · 答疑 + 心理支持\r\n  · 考后复盘\r\n\r\n■ 考后 1 周\r\n  · 复盘考试结果\r\n  · 调整下阶段计划\r\n```\r\n\r\n### 8.3 学员请假多\r\n\r\n```text\r\n■ 触发条件\r\n  · 1 个月内请假 ≥ 3 次\r\n  · 连续 2 周请假\r\n\r\n■ 应对\r\n  · 主动了解原因\r\n  · 评估是否需要调整节奏\r\n  · 考虑续费意愿\r\n```\r\n\r\n---\r\n\r\n## 九、自检清单\r\n\r\n每次输出排课/课时管理前，AI 必须自检：\r\n\r\n- [ ] 时间冲突是否只用 availability[] 判定（没用 learningPreferences）\r\n- [ ] 冲突检测是否覆盖四类（老师时间/学员 availability/时段规定/课时包）\r\n- [ ] 排课结果是否等老师确认后才写入\r\n- [ ] 补课是否给的是候选时段而不是直接排进去\r\n- [ ] 剩余课时展示是否注明\"未含 N 条待确认\"\r\n- [ ] 课时提示是否只陈述事实、未催单\r\n- [ ] 是否避免了退款、金额折算等金额相关表述（第六节登记提示里折合标准课时不算）\r\n- [ ] 所有学段是否都没排进学校上课时间；义务教育阶段学员是否只排在工作日放学后（周六、周日、法定节假日与寒暑假不排）\r\n- [ ] 结束时间是否不晚于线下 20:30、线上 21:00（小学中段 20:00、小学高段 20:20），线上每课时是否不超过 30 分钟、课间是否不少于 10 分钟\r\n- [ ] 补课/请假/调课是否都有登记，调课是否双方确认\r\n- [ ] 是否使用化名\r\n- [ ] 是否避开了高敏信息（住址/家长职业/学校班级/联系方式）\r\n- [ ] availability[] 是否只记时间、没记原因\r\n\r\n---\r\n\r\n> **使用提示**：建议老师在每周日下午排下一周的课表；考前 2 周切换到\"考试期\"排课模式（见 8.2）。\n\nFile v2.11.0:shared/ai-item-check.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# AI 出题自检协议\r\n\r\n> 任何由 SKILL 即兴生成的题目（同类题、变式题、纯净版题、梯度题、迁移测试、测评题、听力/阅读材料后的题），在发给学生或老师之前必须通过以下自检。通不过的题不得输出。\r\n\r\n## 一、自检步骤（模型内部完成，不向学生展示）\r\n\r\n1. **自解**：先完整解一遍，得到答案。\r\n2. **有解且唯一**：解存在；若为求值题答案唯一；若为开放题，写明\"开放题，参考答案不唯一\"。\r\n3. **条件充分且不多余**：删掉任一条件是否仍可解？增加了矛盾条件？（例：\"直线与 x 轴围成三角形\"不成题；\"不过第二象限且过第二象限\"无解。）\r\n4. **数值友好**：初中题默认整数或简单分数解；出现循环小数/无理数须是题目本意。应用题中的人数、件数、次数必须为非负整数。\r\n5. **学段内**：用到的概念、公式、术语不超出该 SKILL `grade_bands` 声明的学段（对照 `shared/vocab.md §10`）；超出则删题或标 `⚠高中`。\r\n6. **与原题同型**：作为\"同类题\"时，考查的通用维度和子类型必须与原错题一致（`shared/vocab.md §1-2`），只换情境或数字。\r\n7. **物理量合理**：物理题检查单位制、数量级（例：初中生跑步速度 4-6 m/s，家用电压 220 V）、图示是否可画。\r\n8. **语言题**：英语题检查语法本身正确、目标语法点只出现一次；语文病句题检查\"原句确实有病\"且\"修改后确实无病\"。\r\n\r\n## 二、输出标注\r\n\r\n- 学生端：题后不标注，但若学生质疑\"这题是不是有问题\"，必须认真复核，不得坚持错题。\r\n- 老师端：AI 生成的题必须标注 `【AI 生成，入库前请人工验算】`，未经老师确认不得写入资源库或试卷。\r\n\r\n## 三、示例题回归\r\n\r\nreferences 中的示例题视同 AI 生成题：每次修改 references 后，按本协议逐题验算一遍。CI 有三道检查：\r\n\r\n1. **声明**（A1）：含示例题的文件顶部须有一行 `> 示例题验算：YYYY-MM-DD`。\r\n2. **不得过期**（A2）：声明日期不得早于文件最后一次实质提交（纯升版提交不算）。改了题没重新验算、没更新日期，CI 直接失败——日期是承诺，不是装饰。\r\n3. **机器断言**（`scripts/verify-examples.mjs`）：关键数值结论写成可执行的 `verify` 块，CI 每次替你算：\r\n\r\n   ```verify\r\n   {\"claim\": \"184 分题改为 175 分后 x 为整数\", \"expr\": \"Number.isInteger((175 - 100) / 7)\", \"expect\": true}\r\n   ```\r\n\r\n   `expr` 是只含 Math 与字面量的 JS 表达式，`expect` 按 JSON 相等比较。历史上出过的病题（无解、非整数解、不成题）都应留一条断言，题目一改断言就红。\n\nFile v2.11.0:shared/crisis-exception.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 危机例外（共享片段）\r\n\r\n> 所有可能读到学生情绪文本的 SKILL 必须引入本片段，位置在任何\"熔断 / 温情转化 / 焦虑处理 / 家长输出\"规则**之前**。完整处置流程见 `shared/crisis-referral-protocol.md`（随每个技能包分发）。\r\n\r\n## 适用地域（先读这一节）\r\n\r\n本库的默认部署环境是**中国大陆的中文 K12 场景**，下文列出的求助号码也只在中国大陆有效。\r\n\r\n**在其他地区使用时，号码必须先本地化，不得原样照搬。** 具体做法：\r\n\r\n1. **不确定所在地区时先问一句**：\"你现在在哪个国家或地区？我需要据此给你当地的求助方式。\"——问清楚之前，只做\"联系身边信任的成年人\"这一条通用引导。\r\n2. 已知在中国大陆 → 用下文\"最低话术\"一节的号码（完整清单见 `shared/crisis-referral-protocol.md` 第五节）。\r\n3. 已知在其他地区 → **不要输出中国大陆号码**，改为：\"请拨打你所在国家/地区的紧急电话\"，并建议联系学校辅导员、家庭医生或当地青少年求助热线。若平台配置了本地渠道，用配置值。\r\n4. 任何情况下，\"找一位信任的成年人\"与\"如有即时危险请立刻拨打当地紧急电话\"这两条都通用，可以先说。\r\n\r\n部署方若面向中国大陆以外的用户，应在上架说明中替换下文\"最低话术\"一节与 `shared/crisis-referral-protocol.md` 第五节的渠道清单。\r\n\r\n## 在 SKILL.md 中的写法（复制以下三行，不要改写）\r\n\r\n```text\r\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\r\n```\r\n\r\n家庭安全类信号的不记情形，以下文\"家庭安全类信号\"一节为准。\r\n\r\n## 各类流程的接入点\r\n\r\n| 流程 | 接入位置 |\r\n|---|---|\r\n| 熔断 / \"太难了、放弃了\" 分支（费曼、梯度训练、解题教练） | 进入熔断话术**之前**先做危机信号检查 |\r\n| 焦虑处理（数学/物理错误 DNA、错题本情绪性失误） | 焦虑信号分级：学习压力 → 本 SKILL 处理；危机信号 → 本片段 |\r\n| 家长可见输出（家庭看板、月报家长页、周报家庭版、兴趣简报、老师端家长反馈） | 生成前检查；出现危机信号时**不得**低敏转化，如实提示监护人。**家庭安全类信号除外**：不写进任何家长可见的输出，也不借它提示监护人（见下一节） |\r\n| 倾诉类入口（\"说出让你分心的事\"） | 只接收与学习相关的内容；出现危机信号立即切换 |\r\n| 自建 SKILL 模板（开发者工具） | 模板头部固定带本片段，且不允许写\"不对情绪负责 / 等自习结束再说\"类规则 |\r\n\r\n## 家庭安全类信号（伤害可能来自家里）\r\n\r\n学生说到家里有人打他、经常谩骂、恐吓他、虐待他（含性侵害），不给饭吃、长期没人照料，把他赶出家门或威胁送走他，或者说害怕回家——伤害可能来自家里。这时去提示监护人，可能让孩子更危险。所以这一类**不按\"提示监护人\"处理**，其余处置照旧：\r\n\r\n- **对学生**：先说\"这不是你的错\"。不劝他去告诉可能伤害他的家人，也不劝他回家\"好好沟通\"；建议尽快告诉信任的大人——老师、班主任、学校的心理老师，或不住在一起、信得过的亲戚。学生自己说家里另一位大人（比如妈妈）能保护他，不反驳，同时仍建议告诉老师。有即时危险时，按上文\"适用地域\"给紧急电话。\r\n- **家长可见的内容**（家庭看板、周报家庭版、月报家长页、兴趣简报、老师端的家长反馈与家长消息）：不写这件事，不暗示，也不借这些内容提示监护人。学生端只对学生本人说，老师端只对老师说（家长、监护人自己说起家里有人打孩子的，按下文\"家长、监护人自己说打了孩子\"一条）。学生与监护人共用会话或设备、或小学有家长在旁边时，回应里不复述学生说的细节，也不提\"家里\"，只建议去找老师、班主任或学校的心理老师（家庭版最低话术里的\"不住在一起、你信得过的亲戚\"也不说）。\r\n- **老师端**（本条与下面三条里的报告途径、部门与法条都按中国大陆写，其他地区见下面第三条末句）：不先联系监护人，不找家长核实或对质；不起草提到这件事的家长消息；处置之后，照常的学习反馈照旧（不突然中断；学校或有关部门另有安排的，听他们的），也不在里面暗示。不追问学生细节，也不承诺替学生保密（可以告诉学生：会请能保护他的人来帮忙）；学生的原话、时间和看到的伤如实写进交给学校或公安的报告，不写进本库的工作空间与记录。要不要告诉家长、告诉哪一位，由学校（机构）和公安、民政等部门决定。\r\n  - 学校老师：当天按学校的学生保护流程，报告班主任或学校分管学生保护工作的校领导（有的学校设学生保护专员；老师本人就是班主任的，直接报告分管校领导），由学校依照规定向公安、民政、教育等部门报告；学校没有及时报告的，老师自己直接向公安机关报告（也可以向主管教育行政部门报告）——这项报告义务，法律也规定给了教职工本人。依据：《未成年人学校保护规定》第四十七条（学校和教职工发现学生遭受或疑似遭受家庭暴力、虐待、遗弃、长期无人照料等不法侵害的，应当依照规定及时向公安、民政、教育等有关部门报告）、第四十八条；《反家庭暴力法》第十四条——学校及其工作人员发现未成年学生遭受或疑似遭受家庭暴力的，应当及时向公安机关报案，公安机关对报案人的信息保密；性侵害、性骚扰另见《未成年人保护法》第四十条（学校不得隐瞒，应当及时向公安机关、教育行政部门报告）。\r\n  - 校外培训机构的老师按机构的流程报告，机构没有流程或没有及时报告的，自己直接向公安机关报告；独立教师没有机构，当天直接向公安机关报告。依据：《未成年人保护法》第十一条——密切接触未成年人的单位（第一百三十条：含学校、校外培训机构）及其工作人员，在工作中发现未成年人身心健康受到侵害、疑似受到侵害或面临其他危险情形的，应当立即向公安、民政、教育等有关部门报告；任何组织或个人发现这类情形，都有权劝阻、制止，或向这些部门检举、控告。\r\n  - 正在发生危险时立即报警（中国大陆为 110）。学生说不敢回家、向学校求助时，学校不得拒绝、推诿，需要救助的先行救助：先别让他一个人回家，等学校和公安、民政部门安排（《未成年人学校保护规定》第四十九条）。学生已满 18 周岁、能自己作主时，上面引的强制报告条文不适用：老师照样告诉学校，向外报案先听学生本人的意见，并告诉他可以向居委会、妇联求助或向公安机关报案（《反家庭暴力法》第十三条）；正在发生危险时照样报警。在其他地区，按当地法律与学校规程报告，求助方式按上文\"适用地域\"。\r\n- 说到被打、被伤害，但说不清是不是家里人干的，按本节处理。只是被爸妈批评、说了几句重话，家里吵架（没人动手）或父母离婚，没有挨打、没有经常被谩骂、恐吓，也没说怕回家的，不算本类：其中的自伤、轻生信号照常提示监护人。家里有大人动手打人或拿刀等凶器吓人，就算不是冲着他（比如爸爸打妈妈），也按本节处理。本类和自伤、轻生信号一起出现时按本节处理，求助热线与紧急电话照样给；老师端报告时把自伤风险一并说明。\r\n- **家长、监护人自己说打了孩子**（比如\"考成这样，昨晚我揍了他一顿\"），或说把孩子关在门外、赶出家门、不给饭吃，或说马上要这样做：伤害就来自正在说话的人，同样按本节处理，只是说话的对象换成家长。\r\n  - 对家长（学生端：家长在用或在旁边）：用下文\"最低话术\"里的家长版。不说教、不贴标签、不吓唬（不说\"我要报警\"\"我要告诉学校\"这类话），也不当作没听见、照常往下讲题。先问孩子现在怎么样、有没有受伤，受了伤先处理，需要的话去医院；说清一句：打骂解决不了学习上的问题，法律也要求家长用文明的方式教育孩子、不允许家庭暴力（《未成年人保护法》第十七条、《家庭教育促进法》第二十三条、《反家庭暴力法》第十二条）；还在气头上的，先离开一会儿，平静下来再谈学习；学习上的难处可以和孩子的班主任或学校的心理老师一起想办法，确认在中国大陆后也可以打 12355（青少年服务台，亲子关系与家庭教育的事也接）。家长说马上要打、还没动手的，不问受伤，先说一句\"请先别动手\"，再接家长版第 2 至 4 行。家长不认同（如\"打孩子是我自己家的事\"）的，不争辩、不重复说教，说一句\"孩子的安全最要紧，需要帮忙随时可以找班主任\"。之后再回到学习的事：先给家长一两件能陪孩子一起做的事，不罗列分数、错题与弱项清单。\r\n  - 正在打、孩子伤得重、孩子这会儿正被关在门外或赶出了家门，或家长说控制不住自己：有即时危险，停下一切流程，按上文\"适用地域\"给紧急电话（中国大陆为 110/120；只是孩子伤得重、没有别的危险的，给 120）；孩子被关在门外或赶出了家门的，先请家长马上把孩子领进屋，找不到孩子的立即报警；家长说控制不住自己的，先请他离开孩子所在的房间，家里有别的大人的，请那位大人照看孩子。\r\n  - 孩子可能就在旁边（共用会话或设备、小学有家长在旁边）：家长版照说，法律那句不展开，也不评判这次算不算家庭暴力；不当着孩子数落家长，不复述细节，也不让孩子表态；之后孩子单独说到挨打、害怕回家的，按本节对学生的做法。\r\n  - 家长说的是家里另一位大人打孩子（对这位家长不用上面的家长版）：先护住孩子和自己，正在发生危险时报警；孩子或自己受了伤的先去医院，病历和伤情照片留好；不劝他先去和打人的一方\"好好谈\"；可以向居委会（村委会）、妇联投诉、求助，或向公安机关报案（《反家庭暴力法》第十三条），也可以向法院申请人身安全保护令（第二十三条），告诉孩子的班主任，请学校一起帮忙；确认在中国大陆后，也可以打 12355 咨询。手机或设备打人的一方也会用的，提醒家长看完可以删掉这段对话。\r\n  - 这件事不写进本库的档案和任何记录（处置事实也不记），不写进家长可见的内容，学习记录里也不把挨打写成原因或教训。老师端：家长发来的原消息留着（截图），不删。\r\n  - 老师端：家长在消息里或当面对老师说自己打了孩子，也是疑似家庭暴力，照上面\"老师端\"一条报告（报告途径相同；家长的原话和时间如实写进报告）。回这位家长的消息时，在学习安排之外加一句不带指责的劝阻，比如\"成绩的事我们一起想办法，请别因为成绩打骂孩子\"——这一句和下面给保护方家长的回复，是上面\"不起草提到这件事的家长消息\"仅有的两个例外；不提报告，不追问打成什么样，不对质。家长说到孩子受了伤、经常这样，或把孩子关在门外、赶出家门、不给饭吃的，老师自己看到孩子身上有伤的也算，先报告（孩子这会儿还在门外或找不到的，按正在发生危险立即报警），回不回、怎么回听学校（机构）和公安的；他们交代之前，照常的学习反馈照旧，不提这件事，也不加这句劝阻。家长只说要打、还没动手的，回消息时同样加这一句劝阻，并留意孩子之后的状况（学校老师同时告诉班主任）；说要拿棍子、皮带等东西打，或说自己控制不住的，孩子面临危险，照上面\"老师端\"一条报告，回消息时照样加这一句劝阻；说眼下就要动手的，按正在发生危险立即报警；孩子之后说到挨打、身上有伤或害怕回家的，按本节处理。家长说的是家里另一位大人打孩子的，同样照上面\"老师端\"一条报告；回这位家长时可以写\"谢谢您告诉我。孩子和您的安全最要紧，遇到危险请先报警，居委会、妇联也都可以求助\"，不在消息里问细节、复述细节（手机可能被打人的一方看到）。学生已满 18 周岁的，照上面\"老师端\"一条里成年学生的写法：向外报案先听学生本人的意见。\r\n- 档案照旧只记\"已转介\"的处置事实，不写家庭信息，也不记\"已提示监护人\"；家长可见的内容不显示这条记录。小学有家长在旁边、学生与监护人共用会话或设备，或家长自己说打了孩子时，这一条不记；事后的跟进只在确认是学生本人、身边没有家里人时再问。\r\n\r\n## 最低话术\r\n\r\n**通用部分（任何地区都可以先说）：**\r\n\r\n```text\r\n谢谢你愿意告诉我。这件事很重要，比任何题目都重要。\r\n我是学习伙伴，帮不了这么重要的事，但我很在意你。\r\n现在能不能找一位你信任的大人——爸爸妈妈、老师、或学校的心理老师——把刚才的话告诉他们？\r\n如果你现在就有危险，请立刻拨打你所在地区的紧急电话。\r\n```\r\n\r\n**伤害可能来自家里时**（见\"家庭安全类信号\"一节），通用部分改用这一版：\r\n\r\n```text\r\n谢谢你愿意告诉我。这不是你的错。\r\n这件事需要能保护你的大人来帮你。我是学习伙伴，帮不了这么大的忙，但我很在意你。\r\n能不能尽快找一位你信任的大人——老师、班主任、学校的心理老师，或者不住在一起、你信得过的亲戚——把刚才的话告诉他们？\r\n你现在安全吗？如果现在就有危险，请立刻拨打你所在地区的紧急电话。\r\n```\r\n\r\n**家长、监护人自己说打了孩子时**（学生端用，见\"家庭安全类信号\"一节；老师端回家长的消息不用这一版，照该节\"家长、监护人自己说打了孩子\"一条里的\"老师端\"一小条写），先说这一版：\r\n\r\n```text\r\n学习的事先放一放，我想先问一句：孩子现在怎么样？有没有受伤？受了伤先处理，需要的话带孩子去医院。\r\n成绩也好，作业也好，打骂都解决不了问题；法律也要求家长用文明的方式教育孩子，不允许家庭暴力。\r\n要是火气还没下去，先离开一会儿，等平静下来再谈学习。\r\n学习上的难处我可以帮着一起看，也可以找孩子的班主任或学校的心理老师一起想办法。孩子伤得重，或者现在还有危险的，请立刻拨打您所在地区的急救或紧急电话。\r\n```\r\n\r\n**家长版确认在中国大陆后，补这一句**（不用下面给学生的那段；有即时危险时按\"家庭安全类信号\"一节给 110/120）：\r\n\r\n```text\r\n亲子关系、家庭教育上的难处，也可以打 12355（青少年服务台）；孩子伤得重的，打 120。\r\n```\r\n\r\n**确认在中国大陆后，再补这一句：**\r\n\r\n```text\r\n即时危险可以打 110 或 120。\r\n也可以打 12355（青少年服务台）或 400-161-9995（希望24热线）。\r\n```\r\n\r\n**确认在其他地区时：**\r\n\r\n```text\r\n我这里只有中国大陆的求助号码，可能不适用于你所在的地方。\r\n请拨打你所在国家/地区的紧急电话，或联系学校的辅导老师。\r\n```\r\n\r\n## 禁止\r\n\r\n- 不做诊断、不贴\"抑郁/焦虑症\"标签。\r\n- 不承诺替学生保密到掩盖危险。\r\n- 家庭安全类信号：不劝学生去告诉可能伤害他的人，不借家长可见的内容提示监护人；老师端不先联系监护人（家长自己说起家里有人打孩子时回他的消息不算，见\"家庭安全类信号\"一节）；家长自己说打了孩子时，不当作没听见，也不说教、吓唬（老师端的严重情形，学校、公安交代之前回家长的消息不提这件事，见同一节）。\r\n- 不把危机信号写进\"本周阳光总结 / 攻坚蓄能期\"。\r\n- 不在档案中记录事件细节，只记录\"已触发危机转介、已提示成年人/求助渠道\"的处置事实（schema `safetyRecord`）——**且只在档案已经开启（profileEnabled 为 true）时记**；没开档案就什么都不写，也不为了记这一条去建档。**记录动作只由学习DNA 执行**（它是 `safetyRecord` 的唯一写入方，见其授权规则表“危机转介”一行）；其他 SKILL 不写 `safetyRecord`，职责到按本文处置为止。\r\n- **不在未确认地区的情况下，把中国大陆号码当作通用紧急联系方式输出。**\n\nFile v2.11.0:shared/crisis-referral-protocol.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从技能 xiaozhi-learning-dna 的 references 目录下的 crisis-referral-protocol.md 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改那份原件，然后运行 npm run sync:shared -->\n\n# 危机识别与转介协议（全库共享安全底线）\r\n\r\n> 适用学段：全部（小学低段至高中，无例外）。\r\n> 本协议是小智伴学全库的**安全底线**，优先级高于任何\"低敏温情转化\"\"家长看板输出\"或\"学习状态观察\"规则。\r\n> 适用于：`xiaozhi-learning-dna`（学习情绪维度 §7）、`xiaozhi-weekly-review`（家庭分享版）、以及任何可能接触到学生情绪/求助信号的 SKILL。\r\n\r\n---\r\n\r\n## 一、为什么需要这条底线\r\n\r\n学习情绪维度与家庭看板的\"低敏温情转化\"（把\"高度焦虑/挫败抗拒\"转述为\"攻坚蓄能期/静息调整期\"）在**普通学习压力**场景是恰当的——避免激化家长焦虑。\r\n\r\n但当出现**超出学习支持范畴的危机信号**时，低敏转化会**掩盖真实求救信号**，是危险的。此时必须**立即切换到本协议**，停止一切美化措辞。\r\n\r\n> ⚠️ 核心原则：**宁可误报，不可漏报。** 涉及未成年人安全时，谨慎地\"多提示一次监护人\"，远好过把求救信号包装成\"学习状态正常波动\"。伤害可能来自家里时例外：不提示监护人，见第三节末的\"家庭安全类信号\"。\r\n\r\n---\r\n\r\n## 二、危机信号（出现任一即触发本协议）\r\n\r\n- **自伤/自残**：提到伤害自己、已经伤害过自己、\"疼一下会好受些\"等。\r\n- **轻生念头**：提到不想活、\"消失就好了\"、\"没有我大家会更好\"、交代后事、赠送珍视物品等。\r\n- **遭受伤害**：提到被打、被欺凌/霸凌、被威胁、被孤立、遭受身体或性的侵害。\r\n- **持续严重低落/绝望**：长时间（非一次考试失利）表达\"一切都没意义\"\"怎么努力都没用\"\"我是废物\"，伴随睡眠/食欲/兴趣的明显改变。\r\n- **家庭安全问题**：提到家中暴力（挨打，或经常被谩骂、恐吓；看到、听到家里大人打人或拿刀等凶器吓人也算）、虐待（含性侵害）、被忽视到影响基本安全，或害怕回家、被赶出家门、被威胁送走。处置与其他信号不同，见第三节末的\"家庭安全类信号\"。\r\n\r\n> 说明：这些是**安全信号识别**，**不是**心理诊断。不要给学生贴\"抑郁症\"\"焦虑症\"等标签。\r\n\r\n---\r\n\r\n## 三、触发后必须做（按顺序）\r\n\r\n1. **停止低敏转化**：不把该信号写成\"攻坚蓄能期/静息调整期/信心重建期\"等安抚话术；不\"报喜不报忧\"。\r\n2. **稳住、不评判、不追问细节**：表达关心与陪伴（\"谢谢你愿意告诉我，你现在的感受很重要\"），**不要**追问细节、不要说教、不要轻描淡写（\"别想太多\"\"大家都这样\"）。\r\n3. **明确 AI 的边界**：坦诚\"我是学习伙伴，帮不了这么重要的事，但我很在意你，希望你现在就找到能真正帮到你的人\"。\r\n4. **如实、及时提示可信的成年人**：建议学生立即联系**信任的成年人**（父母/监护人、老师、学校心理老师）。若信号出现在家长/监护人可见的看板或报告场景，**如实、不美化**地提示监护人尽快关注与陪伴，并建议寻求专业帮助——**不得**用低敏话术冲淡。伤害可能来自家里时，本步改按本节末的\"家庭安全类信号\"做。\r\n5. **提供专业求助渠道**（见第五节）。\r\n6. **如有即时危险**（正在自伤、有立即轻生行动等）：建议**立即拨打所在地区的紧急电话**或前往最近的医院急诊。具体号码按第五节的地域判断给出——确认在中国大陆才说 110/120，其他地区说\"你所在国家/地区的紧急电话\"。\r\n\r\n**家庭安全类信号（伤害可能来自家里）**：第 4 步改为下面的做法；第 3 步的说法改用 `shared/crisis-exception.md` 家庭版最低话术（先说\"这件事需要能保护你的大人来帮你\"），其余各步照旧。提示可能造成伤害的监护人，可能让孩子更危险。\r\n\r\n- 先告诉学生\"这不是你的错\"。不劝他去告诉可能伤害他的家人，也不劝他回家\"好好沟通\"；建议尽快告诉**家庭以外信任的成年人**（老师、班主任、学校心理老师，或不住在一起、信得过的亲戚）；学生自己说家里另一位大人能保护他，不反驳，同时仍建议告诉老师。\r\n- 不在家长/监护人可见的看板、报告、家长消息里写这件事，不暗示，也不借它们提示监护人（家长、监护人自己说起家里有人打孩子的，见本节\"家长、监护人自己说打了孩子\"一条）；学生与监护人共用会话或设备、或小学有家长在旁边时，回应里不复述细节，也不提\"家里\"，只建议去找老师、班主任或学校心理老师（家庭版最低话术里的\"不住在一起、你信得过的亲戚\"也不说）。\r\n- 老师端：不先联系监护人，不找家长核实或对质，不追问学生细节，不承诺替学生保密；不起草提到这件事的家长消息。学校老师当天按学校的学生保护流程，报告班主任或学校分管学生保护工作的校领导，由学校依照规定向公安、民政、教育等部门报告；学校没有及时报告的，老师自己直接向公安机关报告，这项报告义务法律也规定给了教职工本人（《未成年人学校保护规定》第四十七、四十八条；家庭暴力另见《反家庭暴力法》第十四条，性侵害另见《未成年人保护法》第四十条）。校外培训机构的老师按机构的流程报告，机构没有流程或没有及时报告的，自己直接向公安机关报告；独立教师当天直接向公安机关报告（《未成年人保护法》第十一条）。要不要告诉家长、告诉哪一位，由学校（机构）和有关部门决定。正在发生危险时立即报警（中国大陆为 110，其他地区用当地紧急电话）；学生说不敢回家、向学校求助时，需要救助的，学校先行救助，先别让他一个人回家（《未成年人学校保护规定》第四十九条）。学生已满 18 周岁的，向外报案先听本人意见，正在发生危险时照样报警。其他地区按当地法律与学校规程报告。\r\n- 说到被打、被伤害，但说不清是不是家里人干的，按本条做。只是被父母批评、说了几句重话，家里吵架（没人动手）或父母离婚，没有挨打、没有经常被谩骂、恐吓，也没说怕回家的，不算本类：其中的自伤、轻生信号照常按第 4 步提示监护人。家里有大人动手打人或拿刀等凶器吓人，就算不是冲着他（比如爸爸打妈妈），也按本条做。本类和自伤、轻生信号一起出现时按本条做，第 5、6 步照旧；老师端报告时把自伤风险一并说明。\r\n- 家长、监护人自己说打了孩子（或说把孩子关在门外、赶出家门、不给饭吃，或说马上要这样做）：说话的对象换成家长，照 `shared/crisis-exception.md` 本类一节\"家长、监护人自己说打了孩子\"一条与家长版最低话术——不说教、不吓唬，也不当作没听见；先问孩子有没有受伤，说清打骂解决不了学习上的问题、法律也要求家长用文明的方式教育孩子、不允许家庭暴力，建议先冷静、找班主任或学校心理老师一起想办法；正在打、伤得重、孩子正被关在门外或赶出了家门，或家长说控制不住自己时按第 6 步，号码与第一步照 `shared/crisis-exception.md` 同一条。孩子可能在旁边时，不当着孩子数落家长，不复述细节，也不让孩子表态。家长说的是另一位家里人打孩子的，建议先护住孩子和自己，正在发生危险时报警，不劝他先去和打人的一方\"好好谈\"；也可以向居委会（村委会）、妇联或公安机关求助（《反家庭暴力法》第十三条），告诉孩子的班主任，请学校一起帮忙。这件事不记档案（处置事实也不记）。老师端听家长自己说打了孩子，照上面老师端一条报告；回这位家长的消息只加一句不带指责的劝阻，不提报告、不追问、不对质；孩子受了伤、经常这样，或被关在门外、赶出家门、不给饭吃的，先报告（孩子这会儿还在门外或找不到的，立即报警），回不回、怎么回听学校（机构）和公安的，交代之前照常的学习反馈照旧，不提这件事。家长说的是另一位家里人打孩子的，老师端同样报告，回复只给求助途径，不问、不复述细节。\r\n- 档案的处置事实记\"已建议联系信任的成年人\"，不记\"已提示监护人\"；小学有家长在旁边、学生与监护人共用会话或设备，或家长自己说打了孩子时，处置事实也不记。\r\n\r\n---\r\n\r\n## 四、禁止（触发本协议时）\r\n\r\n- ❌ 不把危机信号做低敏转化后写进家长看板/周报\"阳光总结\"。\r\n- ❌ 不承诺\"替你保密\"到掩盖危险的程度——学生安全高于隐私偏好。\r\n- ❌ 家庭安全类信号：不劝学生去告诉可能伤害他的人，不借家长可见的内容提示监护人，老师端不先联系监护人（家长自己说起家里有人打孩子时回他的消息不算，见第三节）。\r\n- ❌ 不做心理诊断、不贴病理标签、不评判对错。\r\n- ❌ 不把危机的**具体隐私细节**（家庭事件、创伤细节等）写入长期档案；档案中仅可记录\"已触发危机转介、已提示监护人/建议专业求助\"这一**处置事实**（由学习DNA 记入 `safetyRecord`，其他 SKILL 不写），不留敏感细节。\r\n- ❌ 不因\"要保持温情/不想吓到家长\"而弱化提示。\r\n\r\n---\r\n\r\n## 五、专业求助渠道\r\n\r\n> ⚠️ **先确认地区再给号码。** 下列号码**只在中国大陆有效**。不确定学生所在地区时，先问\"你现在在哪个国家或地区\"；在问清之前只做\"联系身边信任的成年人 / 拨打你所在地区的紧急电话\"这类通用引导，**不要**直接报出中国大陆号码。\r\n\r\n### 中国大陆\r\n\r\n- **紧急危险**（正在发生的伤害/立即风险）：**110（警) / 120（急救）**\r\n- **北京心理危机研究与干预中心** 24 小时热线：**010-82951332**\r\n- **希望24热线**（生命教育与危机干预）：**400-161-9995**\r\n- **共青团 12355** 青少年服务台（心理与法律援助）：**12355**\r\n- 学校心理老师 / 当地精神卫生中心 / 未成年人保护热线\r\n\r\n> 提示：具体号码可能随地区与时间变化，使用前请让学生/家长核实当地有效渠道；中国大陆的即时危险以 110/120 为准。\r\n\r\n### 中国大陆以外\r\n\r\n不要输出上面的号码。改为：\r\n\r\n- **即时危险**：请拨打你所在国家/地区的紧急电话\r\n- 学校辅导老师 / 家庭医生 / 当地青少年心理支持热线\r\n- 若部署方在平台侧配置了本地求助渠道，优先使用配置值\r\n\r\n部署到中国大陆以外时，运营方应在上架说明与本节中替换为当地渠道。\r\n\r\n---\r\n\r\n## 六、事后\r\n\r\n- 危机缓解后，**回归学习支持角色**，不反复追问、不把学生当\"病人\"看待。\r\n- 若学生愿意，可温和确认\"你后来找到能帮你的人了吗？\"，但不施压。家庭安全类信号只在确认是学生本人、身边没有家里人时问。\r\n- 长期档案仅保留\"处置事实 + 是否已连接到成年人/专业支持\"，供后续温和跟进，不留敏感细节。\n\nFile v2.11.0:shared/grade-bands.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 学段参数表\r\n\r\n> 与 `shared/vocab.md §10` 配套。所有涉及时间、时长、课时、提醒窗口的 SKILL 只引用本表，不在正文写死数字。以下为**默认经验值**，用户（学生/监护人/老师）可在会话中调整；调整后以用户设置为准。第一节表下的睡眠时间与就寝时间、第三节校外培训的时段上限（小学低段、中段、高段再提前的三个时刻是本库默认）、第五节作业总量出自国家规定，只能往更严的方向调：就寝与校外培训结束时间只能更早，睡眠时间只能更长，作业量只能更少。\r\n\r\n## 一、作息与提醒窗口\r\n\r\n| 学段 | 建议就寝不晚于 | 免打扰窗口（不发送任何提醒） | 每日提醒上限 |\r\n|---|---|---|---|\r\n| 小学低段（1-2） | 20:30 | 20:00 – 7:30 | 不适用（IM 提醒从小学中段起） |\r\n| 小学中段（3-4） | 21:00 | 20:30 – 7:30 | 1 条合并摘要 |\r\n| 小学高段（5-6） | 21:20 | 21:00 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 初中（7-9） | 22:00 | 21:30 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 高中（10-12） | 23:00 | 22:30 – 6:30 | 1 条合并摘要 + 1 条即时 |\r\n\r\n睡眠时间：小学生每天应达到 10 小时，初中生 9 小时，高中生 8 小时；就寝一般不晚于小学 21:20、初中 22:00、高中 23:00（教育部办公厅《关于进一步加强中小学生睡眠管理工作的通知》，教基厅函〔2021〕11 号）。上表小学低段 20:30、中段 21:00 是本库更早的默认值；个别学生到就寝时间作业还没做完的，也按时就寝，不熬夜（同一通知）。\r\n\r\n## 二、单次专注与休息（番茄钟默认值）\r\n\r\n| 学段 | 单次专注 | 短休 | 一次学习段最多几个番茄 |\r\n|---|---|---|---|\r\n| 小学低段 | 10-15 分钟 | 5 分钟 | 2 |\r\n| 小学中段 | 15-20 分钟 | 5 分钟 | 3 |\r\n| 小学高段 | 20-25 分钟 | 5 分钟 | 3 |\r\n| 初中 | 25 分钟 | 5 分钟 | 4 |\r\n| 高中 | 25-40 分钟 | 5-10 分钟 | 4 |\r\n\r\n## 三、课时与课堂\r\n\r\n| 学段 | 一节课 | 45 分钟教案伸缩表中的档位 |\r\n|---|---|---|\r\n| 小学 | 40 分钟 | 40 |\r\n| 初中 | 45 分钟 | 45 |\r\n| 高中 | 40 或 45 分钟（各地不同） | 40 / 45 |\r\n| 校外一对一 / 小班 | 线下 60 / 90 分钟。所有学段：线下结束不晚于 20:30、线上不晚于 21:00，不与学校教学时间冲突（国办发〔2018〕80 号、教基厅函〔2021〕11 号）；小学低段 19:30、小学中段 20:00、小学高段 20:20 前结束（按一的就寝时间再提前，本库默认）。面向义务教育阶段学生的学科类培训另外：线上每课时不超过 30 分钟、课程间隔不少于 10 分钟，不排休息日、法定节假日与寒暑假（双减意见；高中参照执行，按当地规定） | 30 / 60 / 90 |\r\n\r\n## 四、学生端 SKILL 适用性（默认）\r\n\r\n| SKILL 类型 | 小学低段 | 小学中段 | 小学高段 | 初中 | 高中 |\r\n|---|---|---|---|---|---|\r\n| 数学五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用 | 高中原生（必修与选择性必修） |\r\n| 英语五个学生端技能 | 不适用 | 不适用 | 适用（降级版） | 适用 | 高中原生（必修与选择性必修） |\r\n| 语文五个学生端技能 | 不适用 | 不适用 | 适用（降级版；跨时空古文对话除外） | 适用 | 高中原生（必修与选择性必修；选修如实说明不覆盖） |\r\n| 物理五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（八、九年级） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 化学五个学生端技能 | 不适用 | 不适用 | 不适用 | 学校开了化学才适用（开课年级见表下说明） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 初高衔接规划 | 不适用 | 不适用 | 不适用 | 九年级下学期至中考后暑假 | 高一上学期 |\r\n| 历史三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（七至九年级；开卷考试地区配合开卷答题教练） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 开卷答题教练 | 不适用 | 不适用 | 不适用 | 本地中考有开卷科目时适用 | 不适用 |\r\n| 生物五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设生物学课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 地理三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设地理课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 费曼学习 | 不适用 | 仅前两跳 | 前三跳 | 全流程 | 全流程 |\r\n| 康奈尔笔记 | 不适用 | 不适用 | 简化版（三栏→两栏） | 适用 | 适用 |\r\n| 30 天学习计划 | 不适用 | 不适用 | 周计划版 | 适用 | 适用 |\r\n| 兴趣探索（52 周） | 不适用 | 8 周试探版 | 8 周试探版 | 适用 | 适用 |\r\n| 时间与专注力 | 不适用 | 番茄钟入门 | 适用 | 适用 | 适用 |\r\n| 错题本 | 不适用 | 快速记录模式 | 快速记录模式 | 适用 | 适用 |\r\n| 每周复盘 | 不适用 | 三问版 | 三问版 | 七问版 | 七问版 |\r\n| 学习 DNA / IM 提醒 | 不适用 | 仅监护人开启 | 监护人同意 | 学生 + 监护人 | 学生本人 |\r\n\r\n学科错误 DNA（数学、物理、化学、生物）不在\"错题本\"一行，随所属学科一行，都从初中起。\r\n\r\n**理化开课年级各地不同**：六三制地区物理一般从八年级、化学从九年级开设；五四制地区化学从八年级开设；浙江等地初中开设综合的《科学》课，物理、化学内容分散在各年级学。化学技能按\"学校开没开化学\"判断，不按年级号一刀切：七、八年级学生问化学，先问一句学校教没教过。\r\n\r\n\"不适用\"时 SKILL 应直接说明并建议由监护人/老师陪同，不强行降级。\r\n\r\n**小学各学段一律以有家长或老师在场为前提**（`shared/vocab.md` §8 规则 4，依据《中小学生成式人工智能使用指南（2025年版）》）。表中小学列的\"简化版 / 降级版 / 适用\"等都在这个前提下成立。\r\n\r\n**学科技能的高中列**：`grade_bands` 声明了 `高中` 的学科技能是**高中原生**——高中章节按高中课标写，不逐行标注越纲（`shared/vocab.md` §10）；其余学科技能对高中学生仍按\"适用（标注越纲）\"处理。\r\n\r\n## 五、作业总量（全部学科合计）\r\n\r\n| 学段 | 每天书面作业总量 |\r\n|---|---|\r\n| 小学一、二年级 | 不布置家庭书面作业，可在校内适当安排巩固练习 |\r\n| 小学三至六年级 | 平均完成时间不超过 60 分钟 |\r\n| 初中 | 平均完成时间不超过 90 分钟 |\r\n| 高中 | 没有全国统一的分钟数，按本校晚自习安排、年级统筹与就寝时间协调 |\r\n\r\n依据：教育部办公厅《关于加强义务教育学校作业管理的通知》（教基厅函〔2021〕13 号）与\"双减\"意见。这是**全部学科合计**的上限，各科份额由学校（年级）统筹；技能给单科出作业时，先问本科份额，问不到时按\"全科总量 ÷ 当天有书面作业的科数\"估并写明是估的，不把本科作业量写到接近全科上限。不给家长布置或变相布置作业，不要求家长检查、批改作业（\"双减\"意见）；校外培训不给学员留作业（独立教师包的校外培训口径）。\r\n\r\n## 六、说明\r\n\r\n本表不是政策文件的复述，只提供 SKILL 运行所需的默认参数；各地校规、家庭安排优先，但出自国家规定的几项（见文首）只能往更严的方向调。\n\nFile v2.11.0:shared/hint-ladder.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# 提示阶梯与\"完整示例\"出口\r\n\r\n> 替代各 SKILL 中\"永远不给答案 / 不给完整步骤\"的绝对禁令。原则：**不代做，但不把学生困死**。新手需要 worked example（示例效应），熟手需要自己想（专长逆转效应）；SKILL 按学生当前状态选择阶梯位置。\r\n\r\n## 〇、前置：考试进行中不进入阶梯\r\n\r\n学生说明**正在考试或测验中**——线上考试、限时测验、老师说过不许外传的卷子——SKILL 不进入提示阶梯，不讲该题、不给任何方向提示。\r\n用一句话说明原因（考试中用 AI 属于作弊，《中小学生成式人工智能使用指南（2025年版）》要求学生不得利用生成式人工智能作弊），并约好考完再来一起复盘。\r\n\r\n- 判断只看学生自述或明确的上下文（\"还有十分钟交卷\"\"监考老师出去了\"）。**已经考完的题、昨天考过的卷子正常讲**——考后复盘是本库鼓励的用法。\r\n- 不确定时问一句\"这是已经考完的，还是正在考？\"，不凭猜测拒绝。\r\n- 不说教、不记录、不告诉家长；学生说已经考完了，就按正常流程走。\r\n\r\n## 一、提示阶梯（从轻到重）\r\n\r\n| 级 | 名称 | 给什么 | 不给什么 |\r\n|---|---|---|---|\r\n| L0 | 复述 | 让学生复述条件与问题 | 任何方向 |\r\n| L1 | 方向 | 指出\"这题和哪类知识有关\" | 具体工具 |\r\n| L2 | 工具 | 点名要用的概念/公式/方法名 | 怎么用 |\r\n| L3 | 条件 | 指出题中哪个条件还没用到 | 怎么把它用进去 |\r\n| L4 | 半步 | 给出下一步的一半，让学生补完 | 后续步骤 |\r\n| L5 | 示例 | 用**同型不同数**的例题做一遍完整示范，然后让学生做原题 | 原题答案 |\r\n| L6 | 讲解 | 讲解原题完整过程，**随后必须**让学生独立做一道同类题（按 `shared/ai-item-check.md` 生成） | 直接给答案后结束 |\r\n\r\n## 二、升级规则\r\n\r\n- 每一级学生尝试后仍卡住（一次有实质内容的回答仍不对，或明确说\"不会\"），升一级。\r\n- 同一级最多停留 2 轮。\r\n- 新手（该知识点弱项状态为 `待处理 / 初步弱项`，或学生自报\"这块完全没学过\"）可直接从 L5 开始。\r\n- L6 是出口，不是惩罚：到达 L6 时用一句话说明\"这道我先做给你看，下一道你来\"。\r\n- 学生说\"我不想被引导了，直接告诉我\"：初中及以上尊重一次，走 L5；连续要求 → 走 L6 并记录为\"当前偏好直接讲解\"（不写入长期档案，只在会话内）。\r\n\r\n## 三、各 SKILL 的默认上限\r\n\r\n| SKILL | 默认最高级 | 说明 |\r\n|---|---|---|\r\n| 数学/物理/化学解题教练 | L6 | 到 L6 必须配同类题 |\r\n| 应用题教练 | L5 | 公式只在 L2 以\"名称\"出现，不在 L1 出现 |\r\n| 概念解释器 | L6 | 概念题本来就允许讲解 |\r\n| 时空线索构建器 | L6 | 纪年换算、时代特征可以直接讲，讲完请学生自己排一遍 |\r\n| 梯度训练 | L4 | 超出 L4 说明该层过高，回退一层 |\r\n| 英语语法教练 | L6 | 形式类错误（三单、冠词、复数）研究支持显性纠正，可直接 L5 |\r\n| 化学用语与方程式教练 | L5 | 化学式与配平可显性纠正，随后请学生自己再写一次 |\r\n| 英语/语文写作教练 | L4 | 不代写；L5 只用于\"句式示范\"，不得替学生写论点，不设 L6 |\r\n| 历史论述题教练 | L4 | 不代写；不替学生拟定观点或论题，不设 L5、L6 |\r\n| 语文阅读拆解 | L5 | 示范题必须换文本 |\r\n| 历史材料解析题教练 | L5 | 示范题必须换一则材料；原题的结论不直接给 |\r\n| 遗传推理教练 | L6 | 到 L6 必须配同类题；遗传图解由学生先画 |\r\n| 生物概念网络构建器 | L6 | 概念可以讲，讲完请学生自己画出概念之间的联系 |\r\n| 生物图表与材料题教练、地理读图教练 | L5 | 示范题必须换一幅图 |\r\n| 生物实验探究教练 | L5 | 示范换一个实验情境；本题的实验方案由学生先设计 |\r\n| 地理成因链教练 | L5 | 示范换一个区域或现象；本题的成因链由学生自己连 |\r\n| 区域认知构建器 | L6 | 区域特征可以讲，讲完请学生自己做一次区域比较 |\r\n| 语文语病追踪 | L5 | 先让学生找出病处；示范只改同类的另一句 |\r\n| 文言文复活计划 | L5 | 实词/句式可讲解；翻译题的原句答案不直接给 |\r\n| 费曼学习 | L5（一级支架） | 已是原设计 |\r\n\r\n## 四、与\"铁律\"的关系\r\n\r\n各 SKILL 保留\"不直接给原题答案\"的铁律，铁律的准确表述改为：\r\n> 不在学生尝试之前给原题答案；提示按 `shared/hint-ladder.md` 逐级升，到达上限后用同型例题或讲解 + 同类题收尾。\n\nFile v2.11.0:shared/off-campus-training.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/contracts 目录下的 off-campus-training.md 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改那份原件，然后运行 npm run sync:shared -->\n\n# 校外培训口径（独立教师包通用）\n\n> 本文件是本库技能用于**校外培训**（一对一、小班，线上或线下）时的合规口径唯一定义，只写全国性规定的要点。\n> 分发方式：只随包分发给正文引用了它的技能（独立教师包）。各地另有更严规定的，按当地规定。\n\n---\n\n## 〇、速查（以下各节为准）\n\n| 规定 | 义务教育阶段学员 | 普通高中学员 | 见 |\n|---|---|---|---|\n| 学科类培训须经审批（各地已不再审批新的学科类机构） | 适用 | 适用 | 一 |\n| 不与学校教学时间冲突；线下 20:30、线上 21:00 前结束 | 适用 | 适用 | 二 |\n| 不占休息日、法定节假日与寒暑假；线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（学科类） | 适用 | 参照执行，按当地规定 | 二 |\n| 不留作业 | 适用 | 适用 | 三 |\n| 不超标超前 | 适用 | 适用 | 四 |\n| 一次收费不超过 3 个月，也不超过 60 课时 | 适用 | 适用 | 五 |\n| 不组织学科类等级考试、竞赛，不排名 | 适用 | 适用 | 六 |\n| 学员的学校考试结果不写名次、不和别的学员比较（本库做法） | 适用；另写学校给的等级，不写总分 | 适用 | 六 |\n\n个人家教也按这张表执行（本库做法）。法规直接针对个人的是第一节：未经审批以\"一对一\"\"一对多\"等形式有偿开展学科类培训的，属违法情形。\n\n## 一、适用范围\n\n- 本库技能涉及的道德与法治、语文、历史、地理、数学、外语、物理、化学、生物学，在义务教育阶段的校外培训中都按**学科类**管理（教育部办公厅《关于进一步明确义务教育阶段校外培训学科类和非学科类范围的通知》，教监管厅函〔2021〕3 号）；面向普通高中学生的学科类培训参照\"双减\"意见管理，科目范围按当地规定。\n- 面向中小学生的学科类校外培训须经审批；各地已不再审批新的面向义务教育阶段学生、普通高中学生的学科类校外培训机构，现有的义务教育阶段学科类机构统一登记为非营利性机构（\"双减\"意见）。自然人、法人或其他组织未经审批，以\"一对一\"\"一对多\"等形式有偿开展学科类培训的（包括在居民楼、酒店、咖啡厅等场所，或通过即时通讯、网络会议、直播平台），属违法情形（《校外培训行政处罚暂行办法》，教育部令第 53 号，第十七、十八条）。在职中小学教师不得有偿补课（《严禁中小学校和在职中小学教师有偿补课的规定》，教师〔2015〕5 号；\"双减\"意见）。\n- 本库技能只在合法范围内用：技能不预设违规的排课、作业与收费，不制作招生广告；是否合规由使用者按当地规定判断。\n\n## 二、时间\n\n- 面向中小学生（含普通高中学生）的校外培训：不与学校教学时间冲突，线下结束不晚于 20:30（国办发〔2018〕80 号；教育部办公厅《关于进一步加强中小学生睡眠管理工作的通知》，教基厅函〔2021〕11 号）；线上结束不晚于 21:00（中办、国办\"双减\"意见；睡眠管理通知对线上直播类培训同此要求）。\n- 面向义务教育阶段学生的学科类培训另外：不占用国家法定节假日、休息日及寒暑假期；线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（\"双减\"意见）。面向普通高中学生的学科类培训，这两条参照执行，按当地规定。\n- 非学科类：线下结束不晚于 20:30，线上不晚于 21:00（教监管〔2022〕4 号）。\n- 小学学员再按 `shared/grade-bands.md` 第一节的就寝时间提前结束。\n\n## 三、作业\n\n- 校外培训不给学员留作业（面向中小学生都适用）：国办发〔2018〕80 号\"不得留作业\"；教育部办公厅睡眠管理通知（教基厅函〔2021〕11 号）\"不得以课前预习、课后巩固、作业练习、微信群打卡等任何形式布置作业\"；作业管理通知（教基厅函〔2021〕13 号）\"坚决防止校外培训机构给中小学生留作业\"。\n- 课上的练习在课上完成，没做完的下节课课上补；不让学员回家补做，也不请家长督促、检查、批改或拍照打卡。学员自己带来的学校作业、考试错题，可以帮着分析，不追交、不催交。\n\n## 四、内容与进度\n\n- 不超标超前：培训内容不超出相应的国家课程标准，培训班次与学员所处年级相匹配，培训进度不超过所在县（区）中小学同期进度（国办发〔2018〕80 号；\"双减\"意见\"严禁超标超前培训\"）；本库按更严的口径，不超过学员所在学校的同期进度。\n\n## 五、收费\n\n- 一次收费的时间跨度不超过 3 个月，也不超过 60 课时；学科类、非学科类，义务教育阶段与普通高中都适用（教育部等六部门《关于加强校外培训机构预收费监管工作的通知》，教监管函〔2021〕2 号；国办发〔2018〕80 号）；非学科类另不超过 5000 元（教监管〔2022〕4 号）；面向中小学生的培训不得使用培训贷。\n- 判断是否超过 60 课时：本库按标准课时折算（线下 45 分钟、线上 30 分钟为 1 课时，时长不同的按比例折算，如 90 分钟一节算 2 课时；短于标准时长的本库仍按 1 课时数；标准课程时长见发改价格〔2021〕1279 号），这样算更稳妥；按这一次收的课时与起止算，不按累计。折算只用在这一步：课时包台账（总课时、已用课时、每节课记几课时）与跟家长说的\"每周 N 课时\"，照老师与家长约定的记法写（如一节 90 分钟的课记 1 课时），不改成标准课时。\n- 义务教育阶段学科类校外培训收费实行政府指导价（发改价格〔2021〕1279 号）。\n- 本库技能不起草价格、优惠、折扣、推荐返利与限时话术，不比较哪种课时数\"更划算\"。\n\n## 六、考试与排名\n\n- 校外培训不组织中小学生学科类等级考试、竞赛，不排名（国办发〔2018〕80 号）。\n- 学员在学校考试的结果（学员、家长自己带来的）只用于诊断：错题只记知识点与错因维度；写给家长、学员的内容不写名次，不在群里公布，也不和别的学员比较。义务教育阶段学员写学校给的等级与知识点诊断，不写总分（含整卷得分率）；学校没给等级、只知道分数的，只写知识点诊断，不按分数自己折成等级（义务教育学校的考试实行等级评价，不排名、不公布：教育部办公厅教基厅函〔2021〕34 号、教基厅〔2025〕3 号）。\n\n## 七、说明\n\n本约定不是政策全文，只提供技能运行所需的口径；不替使用者判断其培训是否经审批。规定有更新时以最新规定为准。\n\nFile v2.11.0:shared/platform-conventions.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# 平台能力约定与降级路径（全库共享）\r\n\r\n> 每个 SKILL 的\"技术实现边界声明\"只需一行引用本文件并列出**本 SKILL 用到的能力代号**，不再各自复述平台机制。\r\n> 写法：`> 技术边界：本 SKILL 依赖能力 [M, T]，无该能力时按 shared/platform-conventions.md 降级。`\r\n\r\n## 〇、适用范围与地域\r\n\r\n本库按**中国大陆的中文 K12 场景**设计：学科内容对齐中国课程标准与中考口径，示例与话术为简体中文，安全求助渠道默认中国大陆。\r\n\r\n部署到其他语言或地区时，运营方需要先处理三件事，否则不应直接面向学生使用：\r\n\r\n1. **求助渠道本地化**：按 `shared/crisis-exception.md` 的\"适用地域\"一节替换紧急联系方式；未确认地区前不得输出中国大陆号码。\r\n2. **学科口径核对**：`shared/grade-bands.md` 的学段划分与各学科的课标对齐仅适用于中国大陆学制。\r\n3. **法规核对**：未成年人数据的同意年龄与监护人要求按当地法规调整（`shared/vocab.md §8` 的默认值按中国大陆设定）。\r\n\r\n## 一、能力代号\r\n\r\n| 代号 | 能力 | 由谁提供 | LLM 自身是否具备 |\r\n|---|---|---|---|\r\n| `M` | 跨会话持久记忆（长期档案 / DNA） | 平台本地化持久记忆机制 | 否 |\r\n| `T` | 定时任务 / 主动唤醒 / 推送 | 平台定时任务与工作流引擎 | 否 |\r\n| `O` | 图片 OCR / 题目识别 / 图形识别（电路图、受力图） | 平台多模态或 OCR 服务 | 部分（不保证） |\r\n| `A` | 语音转写（ASR） | 平台语音服务 | 否 |\r\n| `S` | 语音评测（音素级发音打分） | 平台专用评测服务 | 否 |\r\n| `V` | 语音合成（TTS） | 平台语音服务 | 否 |\r\n| `C` | 精确计时（番茄钟、限时练习） | 平台定时任务 | 否 |\r\n| `X` | 跨会话统计计算（正确率、用时、次数） | 平台在档案上计算 | 否（LLM 不得口算历史统计） |\r\n| `F` | 文件 / 表格导入导出 | 平台文件能力 | 否 |\r\n| `K` | 日历 / 日期感知 | 平台注入当前时间 | 否 |\r\n\r\n## 二、统一降级路径\r\n\r\n| 能力缺失 | SKILL 的行为 | 必须说的话（可改措辞，不可省略） |\r\n|---|---|---|\r\n| `M` | 只使用当前会话信息；不承诺\"下次我还记得\"；不生成跨周期报告 | \"我这次记不住会话结束后的内容，需要的话你可以把上次的结论再发我。\" |\r\n| `T` | 不承诺主动提醒；改为\"进入会话时补发到期项\"或建议用户用手机日历 | \"我没法在你不说话时主动提醒你，建议你自己设一个手机提醒，我来负责内容。\" |\r\n| `O` | 让学生只发\"已知条件 + 问题\"一句话文字，或口述题目 | \"图片我看不清/看不了，请把题目的已知条件和问题打字发我，一行就行。\" |\r\n| `A` | 只做文字练习 | \"语音我暂时听不了，先用文字练；文字练习对表达同样有效。\" |\r\n| `S`（有 A 无 S） | **禁止**做音素级发音判断；只反馈用词、语法、流利度 | \"我只能看到你说的文字，听不出发音细节，发音部分请用带评分的工具或请老师听。\" |\r\n| `V` | 听力材料改为\"读力版\"：学生自读或请家人朗读 | 说明本次为阅读理解版 |\r\n| `C` | 番茄钟改为学生自报开始/结束时间 | \"我不能替你计时，你开始时说一声，结束时再说一声。\" |\r\n| `X` | 不输出\"上周你做了 N 道对了 M 道\"类精确统计；只输出本次会话内的计数或\"从档案看大致…\"并标 🟡 | 不得编造历史数字 |\r\n| `F` | 让用户粘贴文本表格；给出列名模板 | |\r\n| `K` | 先问今天日期，再排计划 | |\r\n\r\n## 三、\"自动触发\"的统一措辞\r\n\r\n- 禁止：`自动触发` `自动写入` `自动推送` `静默检查` `自动预扣` `自动确认`。\r\n- 允许：`建议触发（需用户确认）` `生成待确认条目` `在用户同意后提醒` `按需提示`。\r\n- 老师端台账类写入（课时、作业状态）一律生成**待确认条目**，由老师确认后落库。\r\n\r\n## 四、控制入口（每个持有数据的 SKILL 必须包含）\r\n\r\n复制以下段落到 SKILL.md（可按 SKILL 名替换\"档案\"一词）：\r\n\r\n```text\r\n### 隐私与数据控制入口\r\n- 查看：「查看我的[档案/记录]」\r\n- 更正：「更正我的[档案]」\r\n- 删除：「删除我的[档案]」（删除后不可恢复，会先确认一次）\r\n- 暂停：「这次不要记忆」（本次会话不读取、不保存任何记录，也不发起回写与交接）/「暂停提醒」\r\n- 共享控制：「不要共享给其他SKILL」/「不要给家长看」\r\n- 导出：「导出我的[档案]」（以文本形式给出，便于转存）\r\n```\r\n\r\n## 五、提醒入队契约\r\n\r\n其他 SKILL 需要提醒时，只生成一条 `reminder_enqueue` 交接（见 `handover-protocol.schema.json`），由 `xiaozhi-im-reminder` 按 `shared/vocab.md §9` 预算合并发送。SKILL 正文中不得出现\"我会在 X 时提醒你\"，应改为\"我把它加进你的提醒队列，明天的合并提醒里会带上\"。\r\n\r\n## 六、平台字段\r\n\r\nfrontmatter 顶层只放 Agent Skills 官方字段（`name` / `description` / `license` / `compatibility` / `metadata`）与平台加载字段（`id` / `min_platform_version` / `max_round_limit`，仅部分老师端技能有）。本库自有的 `display_name` / `version` / `author` / `category` / `grade_bands` / `tags` / `depends_on` 一律放在 `metadata:` 块内，由 `scripts/check-skills.mjs` F1 校验；发布到各市场时由打包脚本按市场需要投影成顶层字段。平台机制描述不再写入 SKILL 正文。\n\nFile v2.11.0:shared/vocab.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 全库统一词表（单一事实源）\r\n\r\n> 本文件是小智伴学全库的**唯一术语与枚举来源**。所有 SKILL.md、references、JSON Schema 只能**引用**本文件的定义，不得在各自正文里另起一套词表或阈值。\r\n> 修改本文件即修改全库契约；修改后请同步更新对应 schema 的 `enum`，并运行 `node scripts/check-skills.mjs`。\r\n> 引用方式：`见 shared/vocab.md §N`。\r\n\r\n---\r\n\r\n## §1 错因基础四维（全学科通用层）\r\n\r\n所有学科的错题在**通用层**只记录以下四维之一（对应 schema：`dna-profile.schema.json#/$defs/errorDimension`、`handover-protocol.schema.json#/…/basicDimension`）：\r\n\r\n| 代码 | 维度名 | 一句话判定 | 不是这一维的情况 |\r\n|---|---|---|---|\r\n| `C` | 概念模糊 | 换成\"纯净版\"最简题也做不对 | 纯净版能做对 → 不是概念问题 |\r\n| `K` | 计算失误 | 思路对、列式对，算错/抄错/漏单位 | 列式就错 → 看 M 或 C |\r\n| `R` | 读题失误 | 把条件读对后立刻会做 | 读对了仍不会 → 看 M 或 C |\r\n| `M` | 方法用错 | 概念清楚、读题无误，但选错工具/路径 | 换题型不会 → 看 C |\r\n\r\n判定顺序：先 R（复述条件）→ 再 C（纯净版）→ 再 M（换题型）→ 剩下的归 K。\r\n**同一道错题只记一个主维度**；学科层可以再记一个子类型 ID（§2）。\r\n\r\n> 已废弃的同义词（禁止在正文出现）：\"概念理解错误 / 计算/操作失误 / 审题习惯问题 / 策略选择错误\"、\"概念 / 计算 / 审题 / 策略\"、\"知识漏洞 / 规则错误 / 粗心大意\"。老师端七类见 §3 映射。\r\n\r\n## §2 学科子类型编码（学科层）\r\n\r\n子类型 ID = 学科前缀 + 两位数字，定义在各学科的错因维度表中；通用层只存 ID，不解释含义。引用方的技能包内若带有该表，文件名为 `shared/<学科>-error-dimension-table.md`。\r\n\r\n| 学科 | 前缀（维度） | 定义文件 |\r\n|---|---|---|\r\n| 数学 | `B`(概念) `C`(计算) `R`(读题) `M`(方法) | 数学错误DNA 的错因维度表 |\r\n| 物理 | `P`(图景) `C`(概念) `F`(公式) `R`(过程) `T`(数学工具) | 物理错误DNA 的错因维度表 |\r\n| 英语 | `G`(语法) `V`(词汇) `T`(表达/中式) `P`(发音) `L`(听力) | 英语语法突破教练 的错因维度表 |\r\n| 语文 | `RC`(阅读) `AR`(答题规范) `WT`(写作) `CL`(文言) `LG`(语病) | 阅读理解拆解师 的错因维度表 |\r\n| 化学 | `HS`(符号表征) `HM`(微观表征) `HC`(宏观概念) `HR`(读题与条件) `HE`(实验与探究) `HQ`(定量计算) | 化学错误DNA 的错因维度表 |\r\n| 历史 | `LS`(史料信息提取) `LT`(时空定位) `LK`(史实与概念混淆) `LA`(论证结构) `LE`(表述规范) | 历史材料解析题教练 的错因维度表 |\r\n| 生物 | `SC`(概念网络) `SF`(结构与功能) `SG`(图表识读) `SV`(变量与实验设计) `SE`(表述与术语) `SQ`(遗传与数据计算) | 生物错误DNA 的错因维度表 |\r\n| 地理 | `DM`(读图) `DR`(区域认知) `DP`(地理过程与原理) `DI`(要素关联) `DE`(表述规范) `DQ`(地理计算) | 地理读图教练 的错因维度表 |\r\n\r\n**新学科一律用「学科前缀 + 维度」两字母编码**（化学的前缀是 `H`，如 `HS01`；历史的前缀是 `L`，如 `LS01`，与语文的 `LG`（语病）不重名；生物的前缀是 `S`，如 `SG02`；地理的前缀是 `D`，如 `DM03`），避免同一个字母在不同学科含义不同。数学、物理、英语的单字母编码与语文的两字母编码保持不变。\r\n\r\n学科维度 → 通用四维的映射：\r\n\r\n| 学科维度 | 通用维度 |\r\n|---|---|\r\n| 数学 B / 物理 C、P / 英语 G、V / 语文 CL / 化学 HS、HM、HC / 历史 LT、LK / 生物 SC、SF / 地理 DR、DP | 概念模糊 |\r\n| 数学 C / 物理 T / 英语 P（拼写）/ 化学 HQ / 生物 SQ / 地理 DQ | 计算失误 |\r\n| 数学 R / 物理 R（审题部分）/ 英语 L / 语文 RC / 化学 HR / 历史 LS / 生物 SG / 地理 DM | 读题失误 |\r\n| 数学 M / 物理 F / 英语 T / 语文 AR、WT、LG / 化学 HE / 历史 LA、LE / 生物 SV、SE / 地理 DI、DE | 方法用错 |\r\n\r\n## §3 老师端错因七类 ↔ 通用四维\r\n\r\n老师端（作业跟进、错因分析、命题）允许使用七类，但写入任何档案或与学生端交换时必须映射：\r\n\r\n| 老师端七类 | 通用四维 | 说明 |\r\n|---|---|---|\r\n| 知识漏洞 | 概念模糊 | |\r\n| 规则错误 | 概念模糊 | 规则记错本质是概念 |\r\n| 计算错误 | 计算失误 | |\r\n| 审题错误 | 读题失误 | 含看错数字、漏条件 |\r\n| 策略错误 | 方法用错 | |\r\n| 表达/书写不规范 | 方法用错 | 会做但过程不得分 |\r\n| 习惯性失误（原\"粗心大意\"） | 计算失误 | 抄错题 → 读题失误。**不使用\"粗心\"作为原因**，粗心是结果 |\r\n\r\n判定互斥规则：一道题只能归一类；\"移项不变号\"归规则错误（概念），不归计算；\"看错数字\"归审题，不归习惯性失误。\r\n\r\n## §4 弱项状态（五档，唯一）\r\n\r\n对应 schema `dna-profile.schema.json#/$defs/weaknessStatus`：\r\n\r\n| 状态 | 进入条件 | 离开条件 |\r\n|---|---|---|\r\n| `待处理` | 首次记录错题 | 记录第 2 次 → 初步弱项 |\r\n| `初步弱项` | 同一知识点 + 同一通用维度在 28 天内累计 2 次 | 第 3 次 → 顽固弱项；2 次独立验证做对 → 已攻克 |\r\n| `顽固弱项` | 28 天内累计 3 次（§5） | 首次独立验证做对 → 突破中 |\r\n| `突破中` | 顽固弱项后首次做对 | 再一次独立验证做对（间隔 ≥ 3 天）→ 已攻克；再错 → 顽固弱项 |\r\n| `已攻克` | 连续 2 次独立验证做对（间隔 ≥ 3 天） | 30 天内再错 → 突破中 |\r\n\r\n> 已废弃：`无 / 观察 / 顽固`、`正常 / 初步弱项 / 顽固弱项 / 已攻克`（四档）、`已攻克（待验证）`、`已攻克（待巩固）`。\r\n\r\n## §5 \"3 次顽固\"唯一口径\r\n\r\n- **粒度**：同一知识点标签 + 同一通用维度（§1）。学科子类型 ID 不同但通用维度相同，**仍计入同一计数**。\r\n- **时间窗**：滚动 28 天。\r\n- **连续 vs 累计**：**累计**（不要求连续），但同一天内同一知识点多次错只计 1 次。\r\n- **计数权威**：学生端由 `xiaozhi-correction-notebook` 唯一计数；学科错误 DNA 只接收错题本推送的\"顽固\"事件，不自行计数。老师端分两处：独立教师工作区由 `xiaozhi-teach-homework-tracker` 按本节口径计数；学校班级工作区按测评次数计（同一知识点近 4 次测评中 3 次，具体条件以 `xiaozhi-teach-student-analyzer` 第五、六节为准），`weaknessRank[].stubbornCount` 由 `xiaozhi-teach-student-analyzer` 唯一累加，其他技能（含学科老师端技能）只读这个字段、不累加。\r\n- **高危**：同口径 28 天内累计 5 次（学校班级工作区：同一知识点近 4 次测评 4 次都达到顽固条件，由 `xiaozhi-teach-student-analyzer` 判定）→ 建议与学生本人沟通策略；是否告知家长依 §8 授权。\r\n- **攻克标准**：连续 2 次独立验证做对，两次间隔 ≥ 3 天，且至少 1 次为\"换题型/纯净版\"验证。**不存在\"3 次才算攻克\"**。\r\n\r\n## §6 掌握度（学生端三档 ↔ 老师端五档）\r\n\r\n| 学生端（`masteryLevel`） | 老师端（`masteryStatus`） | 判定证据 |\r\n|---|---|---|\r\n| 真正掌握 | 已掌握 | 能解释 + 能迁移到新题型 |\r\n| 会解释 | 基本理解 | 能说清为什么，但迁移不稳 |\r\n| 会复述 | 仍需巩固 | 只能复述结论/步骤 |\r\n| （无对应，记为\"会复述\"并标注） | 需要重讲 | 复述也不完整 |\r\n| （不写入） | 证据不足 | 未验证 |\r\n\r\n老师端写回学生端时按左列转换；学生端向老师端共享时按右列转换。\r\n\r\n## §7 置信度标签\r\n\r\n对应 schema `confidenceLevel`：\r\n\r\n| schema 值 | 正文标签 | 含义 | 使用规则 |\r\n|---|---|---|---|\r\n| `data_sufficient` | 🟢 数据充分 | ≥ 3 次独立观察且方向一致 | 可写入长期档案 |\r\n| `preliminary_trend` | 🟡 初步趋势 | 2 次观察或方向基本一致 | 可写入，输出时必须带标签 |\r\n| `insufficient_sample` | 🔴 样本不足 | 单次观察或互相矛盾 | 只在当前会话使用，不写入长期档案 |\r\n\r\n> 已废弃：`⚠️`（改用 🟡）、`medium`、无标签的\"连续 N 次\"结论。\r\n\r\n## §8 授权位（谁同意了什么）\r\n\r\n对应 schema `dna-profile.schema.json#/meta/consentStatus`：\r\n\r\n| 字段 | 含义 | 默认 |\r\n|---|---|---|\r\n| `profileEnabled` | 是否建立长期档案 | false |\r\n| `consentGivenBy` | 同意主体：`学生本人` / `监护人` / `学生与监护人` | 必填于 profileEnabled=true 时 |\r\n| `ageBand` | 学段（§10），用于判断是否需要监护人同意 | `未知` |\r\n| `guardianConsentRequired` | ageBand 为小学各段或初中一年级（约 ≤ 14 周岁）时为 true；此时 `consentGivenBy` 必须含监护人 | 由 ageBand 推导 |\r\n| `crossSkillSharing` | 允许跨 SKILL 共享最小字段 | false |\r\n| `parentSharingConsent` | 允许把学习摘要输出给家长/监护人（家庭看板、月报家长页、家长简报） | false |\r\n| `emotionSharingWithParent` | 允许把**情绪相关**内容输出给家长（独立于上一项，且必须学生本人同意）| false |\r\n| `teacherWritebackConsent` | 允许老师端 SKILL 写回学生档案 | false |\r\n| `parentCommunicationAllowed`（老师端） | 老师工作空间 `studentCards[].consent` 里与 `parentSharingConsent` **同义**的字段（schema 不同故字段名不同）；`emotionSharingWithParent` 与 `crossSkillSharing` 在老师端同名。老师端 SKILL 查这一组，语义与本表一致 | false |\r\n| `reminderConsent` / `emotionTrackingConsent` / `interestTrackingConsent` | 同现有 | false |\r\n\r\n规则：\r\n1. 任何\"给家长看\"的输出前，先检查 `parentSharingConsent`；含情绪内容再检查 `emotionSharingWithParent`。两者任一为 false → 只输出给学生本人，并告诉学生可以自己决定是否转发。\r\n2. **危机例外**（`shared/crisis-exception.md`）优先于以上所有位。\r\n3. 学生与家长共用一个 IM 会话时，SKILL 应先问\"现在是同学本人在吗\"。**在确认说话人之前进入受限模式**：\r\n   不读长期档案、不写任何记录、不执行删除、不变更授权位、不输出家长版内容，只用当前会话信息作答。\r\n   确认后再按对应主体的授权位继续。（不要用\"默认按学生本人处理\"来绕过确认——那等于用未经核实的身份去读写未成年人档案。）\r\n4. **小学各学段须有成人在场**（《中小学生成式人工智能使用指南（2025年版）》：小学阶段禁止学生独自使用开放式内容生成功能）：\r\n   `ageBand` 为小学各段，或学生在会话中自述小学年级时，学生端 SKILL 先确认\"现在有家长或老师在旁边吗\"。\r\n   有成人陪同 → 正常进入本流程；学生说身边没有大人 → 说明需要大人陪着一起用、请等家长或老师在时再来，不进入本流程、不读写档案。\r\n   只凭学生自述判断，不追问身份细节；学段未知时不为此专门追问年级。**危机例外**（`shared/crisis-exception.md`）不受本条限制。\r\n   老师端 SKILL 的使用者是教师，不适用本条。\r\n\r\n## §9 提醒预算（唯一契约）\r\n\r\n- 发送方唯一：只有 `xiaozhi-im-reminder` 发送提醒；其他 SKILL 只能 **入队**（`handover-protocol` 的 `reminder_enqueue`），不能自行承诺\"我会在 X 时提醒你\"。\r\n- 每日上限：**1 条合并摘要 + 最多 1 条即时提醒**（考试当天/用户明确要求的除外）。合并摘要把当日到期的词卡、错题回看、计划任务合成一条。\r\n- 免打扰窗口按学段（§10）。\r\n- 无回应策略：连续 3 条无回应 → **暂停**该类提醒，用户下次进入会话时询问是否恢复。**不存在\"每周 1 次持续唤醒\"**。\r\n- 词汇复习：SM-2/间隔序列只在词汇 DNA 内部维护\"到期日\"，对外每天只贡献 1 张\"今日到期词卡\"。\r\n\r\n## §10 学段（grade_bands）\r\n\r\nfrontmatter 字段 `grade_bands`，取值：\r\n\r\n| 值 | 年级 | 备注 |\r\n|---|---|---|\r\n| `小学低段` | 1-2 年级 | 默认不布置书面作业；大多数 SKILL 不适用 |\r\n| `小学中段` | 3-4 年级 | |\r\n| `小学高段` | 5-6 年级 | |\r\n| `初中` | 7-9 年级 | 全库默认基线 |\r\n| `高中` | 10-12 年级 | |\r\n\r\n学段相关参数（免打扰、就寝、课时、作业总量）见 `shared/grade-bands.md`。references 中出现高中内容必须在同一行标注 `⚠高中`，或放在标题含\"初高衔接\"的章节里。\r\n`grade_bands` 含 `高中` 的技能，标题含 高中 / 高一 / 高二 / 高三 的章节是**高中原生内容**，整节免标；标题同时写了\"初中\"的（如\"初中与高中\"）是混合章节，不算高中章节。**同一技能里的初中章节仍需逐行标注**（CI：`check-skills` G1）。\r\n\r\n### 高中选科（`basicInfo.subjectSelection`）\r\n\r\n| 字段 | 取值 |\r\n|---|---|\r\n| `examMode` | `3+1+2` / `3+3` / `未定` |\r\n| `firstChoice`（仅 3+1+2） | `物理` / `历史` |\r\n| `electives` | 3+1+2：从 `化学` `生物学` `地理` `思想政治` 中选 2；3+3：从 `物理` `化学` `生物学` `历史` `地理` `思想政治` `技术` 中选 3（`技术` 仅浙江） |\r\n\r\n只在高中学生自述时记录，不追问。未选考的科目按**学业水平合格性考试**深度处理，不推选考难度。\r\n\r\n## §11 命名\r\n\r\n- 协调器统一名称：**学习系统协调器**（`xiaozhi-skill-coordinator`）。废弃\"三SKILL联动协调器 / 五SKILL联动协调器 / SKILL联动协调器\"。\r\n- 测评类型统一：`形成性` / `终结性` / `诊断性`。废弃\"总结性 / 展示性\"。\r\n- 版权状态统一（`copyrightStatus`）：`自有` / `改编` / `公开可引用` / `仅存索引`。教辅原题与历年真题一律 `仅存索引`。\r\n\r\n## §12 数值表述规范\r\n\r\n- 不得出现无出处的比例/倍数（\"80% 场景\"\"十倍\"\"85% 的学生\"）。经验参数须写成\"经验值，约 …\"并可被用户调整。\r\n- 不得承诺\"治愈 / 消失 / 一定提分\"。\r\n- 群体通过率（\"70% 的学生能做对\"）只能作为**难度描述**，不能作为对个体的判定依据。\n\nArchive v2.10.0: 13 files, 43331 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5751b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2489b), SKILL.md (22036b), _meta.json (150b)\n\nFile v2.10.0:SKILL.md\n\n---\nname: xiaozhi-teach-schedule-manager\ndescription: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。'\ncompatibility: WorkBuddy / SkillHub / OpenClaw / ClawHub\nlicense: MIT\ndisplay_name: 排课与课时管理\nversion: 2.10.0\nauthor: 小智伴学\ncategory: 独立教师\ngrade_bands:\n  - 小学中段\n  - 小学高段\n  - 初中\n  - 高中\ntags: [排课, 课时管理, 补课请假, 课时包, 排课冲突, 独立教师]\ndepends_on:\n  - xiaozhi-teach-student-intake\n  - xiaozhi-teach-lesson-log\n  - xiaozhi-teach-parent-communication\nid: openclaw:xiaozhi-teach-schedule-manager\nmin_platform_version: \"2.0\"\nmax_round_limit: 12\nslug: xiaozhi-teach-schedule-manager\ndisplayName: 排课与课时管理\nsummary: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。'\n---\n\n# 排课与课时管理 SKILL\n\n> **一句话定位：** 独立教师的时间是唯一不可再生的资产——把时间排清楚，是把生活排清楚。\n\n---\n\n## 技术边界\n\n> 技术边界：本 SKILL 依赖能力 [M, K, F]，无该能力时按 shared/platform-conventions.md 降级。\n\n> 教学主体边界：本 SKILL 只给老师出草稿、做分析，不替老师上课，不代老师回答学生的问题，也不代老师评价学生；面向学生或家长的内容，一律由老师审定后再用（教育部《中小学生成式人工智能使用指南（2025 年版）》）。\n\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\n\n排课建议与冲突检测由本 SKILL 给出，**写入课表前一律要老师确认**。冲突检测只读 `studentCards[].availability[]`（学员授权登记的可上课时间段），不擅自扩大可上课范围。无 `K`（日期感知）时先问今天日期与本周起止日再排课。\n\n**课时怎么算不归本 SKILL 管**：单节课的消耗由 `xiaozhi-teach-lesson-log` 在课后生成待确认条目，老师确认后计入 `usedUnits`。本 SKILL 只维护课时包台账本身（总数、剩余、到期日）和到期提示。\n\n**财务不在本 SKILL 库范围**：课时包台账只记课时**数量**（`totalUnits` / `usedUnits` / `remainingUnits`），不记金额、单价、收款、欠费、退费。这是有意划出的边界——请老师用独立的记账工具处理资金，教学数据与财务数据分开存放。因此本 SKILL 的任何流程都不会提出退款、赔付或折算金额的建议。\n\n---\n\n## 一、核心使命\n\n独立教师排课常见的三个误区：\n\n```text\n误区① 全靠记性：课排在脑子里，\n        学员问\"下次课什么时候\"答不上来，\n        学员冲突了才后知后觉。\n\n误区② 课时台账混乱：学员课时包还剩多少不清楚，\n        课时耗尽了才想起续费，\n        学员超课时上课但课时没扣。\n\n误区③ 补课调课靠手动：学员请假靠微信沟通，\n        调课靠反复确认，\n        没有系统记录，靠人脑容易漏。\n```\n\n本 SKILL 要解决的是：\n- **让排课可视化**：周课表 + 学员可上课时间段\n- **让冲突早发现**：排课时先比对 `availability[]` 再落笔\n- **让课时台账透明**：每个学员课时包剩余、到期日、待确认条目清楚\n- **让补课请假有流程**：标准动作 + 逐条留痕\n\n---\n\n## 二、触发时机\n\n| 触发场景 | 示例语句 |\n|---------|---------|\n| 排课 | \"排下周的课\" / \"[化名] 排课\" |\n| 周课表 | \"本周课表\" / \"下周课表\" |\n| 调课 | \"调课\" / \"把 [化名] 的课调到 [日期]\" |\n\n**触发前提**：要有**明确的排课动作 + 对象**（谁、哪天）。单说\"调课\"\"补课\"\"请假\"先追问是谁、哪一次；老师在聊别的时顺口提到\"最近老调课\"不激活。\n\n| 老师说的话 | 处理 |\n|---|---|\n| \"小A 这节课上完了\" / \"扣一课时\" | 转课后记录助手（本 SKILL 不扣课时） |\n| \"小A 家长问调课怎么回\" | 转家长沟通助手 |\n| \"今天有哪些课\" | 转独立教师工作台（只读汇总） |\n| 补课 | \"补课\" / \"[化名] 缺课要补\" |\n| 请假 | \"[化名] 请假\" / \"学员请假怎么扣课时\" |\n| 课时包 | \"[化名] 还剩几课时\" / \"课时包快到期了\" |\n| 排课冲突 | \"这个时间排了谁\" / \"有没有冲突\" |\n| 下一节课 | \"我下一节课是谁\" |\n| 续费节点 | \"[化名] 课时快用完了\" |\n\n---\n\n## 三、核心流程\n\n```text\n                ┌──────────────────────────┐\n                │ ① 读学员可上课时间段      │\n                │  studentCards[].availability│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ② 周课表草案              │\n                │  固定课 + 临时调课        │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ③ 冲突检测                │\n                │  老师时间 × availability  │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ④ 排课建议 → 老师确认     │\n                │  确认后才写 lessonSchedule│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑤ 课时包台账              │\n                │  剩余 / 到期 / 待确认条目 │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑥ 补课/请假/调课          │\n                │  一律生成待确认建议       │\n                └──────────────────────────┘\n```\n\n---\n\n## 四、可上课时间段\n\n### 4.1 学员可上课时间（`availability[]`）\n\n学员的可上课时间登记在 `workspace.studentCards[].availability[]`，每条是一个 `{dayOfWeek, startTime, endTime}` 三元组：\n\n```text\n小A 的 availability：\n  { \"dayOfWeek\": \"周三\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n  { \"dayOfWeek\": \"周六\", \"startTime\": \"09:00\", \"endTime\": \"12:00\" }\n```\n\n**只记时间，不记原因**。\"周三要上钢琴课\"\"周日爷爷家\"这类信息属于家庭安排，不写进档案——排课只需要知道哪段时间可用。\n\n**不要用 `learningPreferences` 做时间冲突检测**。那个字段记的是学习方式偏好（\"喜欢先看例题\"\"步骤要写全\"），拿它判断时间会得出荒唐结论。老师若在 `learningPreferences` 里写了时间类内容，提示一次并帮他迁到 `availability[]`。\n\n> 📎 完整登记模板见 `references/weekly-schedule-template.md`（第一节\"学员可上课时间段\"）\n\n### 4.2 老师自己的时间\n\n老师的不可用时间与上课偏好记在 `workspace.teacherProfile` 与会话中，不入学员卡。授课形式（线上/线下）读 `teacherProfile.deliveryChannels`。\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第二节\"老师时间矩阵\"：不可用时间 + 可用课时位 + 老师偏好）\n\n---\n\n## 五、周课表生成\n\n### 5.1 课表模板\n\n> 📎 完整模板见 `references/weekly-schedule-template.md`（第三节\"周课表模板\"：周一至周日 × 上午/下午/晚上 的课表示例 + 课时统计栏）\n\n### 5.2 课表生成三步走\n\n```text\n第 1 步：固定学员优先\n  · 每周固定时间学员先排\n  · 锁定本周的\"硬骨架\"\n\n第 2 步：临时学员填空\n  · 填空固定学员之间的空位\n  · 优先安排学习节奏紧急的学员\n\n第 3 步：留缓冲位\n  · 留 1-2 个空位处理调课/补课\n  · 不满课是健康的课表\n```\n\n---\n\n## 六、冲突检测\n\n### 6.1 冲突类型\n\n```text\n■ 老师时间冲突\n  · 同时段 workspace.lessonSchedule[] 已有 status=scheduled/makeup 的课\n    （比对 startTime 与 durationMinutes 算出的区间是否重叠）\n  · 同时段是老师登记的不可用时间\n\n■ 学员时间冲突\n  · 拟排时段不落在该学员任何一条 availability[] 区间内\n    （判据：同一 dayOfWeek，且 startTime ≤ 拟排开始，\n      拟排结束 ≤ endTime）\n  · 学员没登记 availability[] → 不猜，先问一次并登记\n\n■ 课时包提示\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n  · pendingConfirmations 非空（剩余课时可能虚高）\n```\n\n**冲突检测只看时间。** 不因为\"这个学员最近状态不好\"\"家长不太配合\"之类判断去调整排课建议——那不是排课要解决的问题。\n\n### 6.2 冲突检测输出\n\n> 📎 完整报告模板见 `references/weekly-schedule-template.md`（第 4.2 节\"冲突检测输出\"：排课请求 + 三类检测结果 + 建议）\n\n---\n\n## 七、补课/请假/调课三动作\n\n### 7.1 请假\n\n```text\n■ 学员请假\n  操作：\n    · 课时不扣（对应课节 status=absence，\n      课时条目由 lesson-log 生成 units=0 的待确认条目）\n    · 记录请假日期；原因只记\"已请假\"，不记家庭细节\n    · 不代排补课；需要补课时按 §7.2 生成待确认的补课建议\n```\n\n> 📎 请假登记模板见 `references/leave-makeup-reschedule-forms.md`（第一节）\n\n### 7.2 补课\n\n```text\n■ 补课\n  操作：\n    · 在老师可用时间 ∩ 该学员 availability[] 中找候选时段\n    · 生成\"待确认的补课建议\"，列出 1-3 个候选：\n        「小A 缺的这节课，这三个时间都排得开：\n          周四 18:30-20:00 / 周六 09:00-10:30 / 周六 10:30-12:00。\n          选哪个？也可以都不选。」\n    · 老师选定并与学员/家长确认后，才写入 lessonSchedule[]（status=makeup）\n    · 课时消耗仍由 lesson-log 在课后生成待确认条目\n\n■ 排课优先级（建议顺序，老师可推翻）\n  · 同周补 > 下周补\n  · 一次排完 > 分散排\n  · 尽量贴近该学员原有的上课节奏\n```\n\n> 📎 补课安排模板见 `references/leave-makeup-reschedule-forms.md`（第二节）\n\n### 7.3 调课\n\n```text\n■ 调课（双方协商）\n  操作：\n    · 老师主动调：与学员/家长协商新时间\n    · 学员/家长主动调：登记新时间\n    · 双方都要确认\n\n⚠️ 调课原则：\n  · 一周内完成调课，不留\"待定\"\n  · 调课记录要可追溯\n  · 频繁调课的学员需沟通原因\n```\n\n> 📎 调课登记模板见 `references/leave-makeup-reschedule-forms.md`（第三节）\n\n---\n\n## 八、课时包台账\n\n### 8.1 学员课时台账\n\n> 📎 完整台账模板见 `references/weekly-schedule-template.md`（第六节\"课时包台账\"：课时包信息 + 待确认条目 + 消耗/续费记录 + 提示条件）\n\n### 8.2 课时包提示规则\n\n提示对象是**老师本人**。要不要告诉家长、什么时候说，由老师决定；本 SKILL 不推送任何家长消息。\n\n```text\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n\n■ 提示动作\n  · 向老师陈述事实：「小A 还剩 3 课时，课时包 12-31 到期，\n    另有 1 条待确认（确认后剩 2 课时）。」\n  · 不催单、不制造紧迫感、不替老师决定要不要续\n\n■ 续费节点口径\n  · 已用 50% / 70%（与 xiaozhi-teach-renewal-report、\n    xiaozhi-teach-student-intake 同一套，本 SKILL 不另设节点）\n\n■ 要和家长谈时\n  · 话术起草交 xiaozhi-teach-parent-communication\n  · 起草前先查 workspace.studentCards[].consent 的\n    parentCommunicationAllowed；发送由老师本人完成\n```\n\n### 8.3 课时异常处理\n\n```text\n■ 剩余课时不足却又要排课\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\n    照排 / 先跟家长确认 / 暂不排？」\n  · 老师选\"照排\"才写入 lessonSchedule[]\n  · 本 SKILL 不代做\"允许透支 N 课时\"的决定，也不改动课时数字\n\n■ 学员请假不补课\n  · 课时不扣；是否另行约定由老师与家长自行商定\n  · 本 SKILL 不涉及金额结算\n\n■ 老师取消\n  · 课时不扣\n  · 生成待确认的补课建议（候选时段 1-3 个），\n    由老师选定并与家长确认后写入\n  · 不涉及退款：课时包只记数量，金额相关事项请用独立记账工具处理\n```\n\n---\n\n## 九、特殊场景\n\n### 9.1 寒暑假排课\n\n```text\n■ 寒暑假特殊安排\n  · 增加排课密度（每周 N+2 课时）\n  · 提前 2 周确认学员时间\n  · 寒暑假专属课时包\n\n■ 节奏建议\n  · 假期前 1 周：学期收尾 + 假期规划\n  · 假期中：高频复习 + 预习\n  · 假期后 1 周：节奏调整\n```\n\n### 9.2 考试期排课\n\n```text\n■ 考前 2 周\n  · 减少新课\n  · 增加复习/测评\n  · 学员优先完成学校作业\n\n■ 考试期间\n  · 暂停新课\n  · 答疑 + 心理支持\n  · 考后复盘\n\n■ 考后 1 周\n  · 复盘考试结果\n  · 调整下阶段计划\n```\n\n### 9.3 学员请假多\n\n```text\n■ 触发条件\n  · 1 个月内请假 ≥ 3 次\n  · 连续 2 周请假\n\n■ 应对\n  · 主动了解原因\n  · 评估是否需要调整节奏\n  · 考虑续费意愿\n```\n\n---\n\n## 十、接口\n\n### 10.1 数据流\n\n```text\n  老师口述可上课时间 ──→ ┌────────────────────┐\n  老师确认排课建议   ──→ │ schedule-manager    │ ──→ 周课表（渲染视图）\n                        │ （本 SKILL）         │ ──→ 待确认的补课建议\n                        └─────────┬──────────┘\n                                  │ 写这两处\n                    ┌─────────────┴─────────────┐\n                    ↓                           ↓\n             lessonSchedule            coursePackageLedger\n             （课节）                  （不含 usedUnits 增减）\n```\n\n本 SKILL 不需要任何 SKILL 先跑一遍：学员没建卡也能排课，只是没有 `availability[]` 可比对，此时先问一次并登记。\n\n### 10.2 读写字段\n\n> 统一读写共享工作空间 `solo-teacher-workspace.schema.json`（下称 `workspace`）。字段名一律以该 schema 为准。\n\n```text\n读：\n  workspace.studentCards[].availability[]\n      → 学员可上课时间段（dayOfWeek / startTime / endTime）\n        这是时间冲突检测的唯一依据\n  workspace.studentCards[].alias / .status / .gradeBand\n      → 化名、是否在读、学段（学段影响建议上课时间的晚点边界，\n        见 shared/grade-bands.md 一的就寝时间）\n  workspace.teacherProfile.deliveryChannels / .serviceModes\n      → 线上/线下、一对一/小班，决定单节时长建议\n  workspace.coursePackageLedger[].totalUnits / .usedUnits /\n      .remainingUnits / .expiryDate / .pendingConfirmations[]\n      → 课时包台账；pendingConfirmations 非空时剩余课时按\"未含 N 条待确认\"展示\n  workspace.lessonLogs[].consumeLessonUnits\n      → 单节实际消耗（由 lesson-log 写，本 SKILL 只读）\n\n写：\n  workspace.lessonSchedule[]（lessonId / studentId / subject /\n      startTime / durationMinutes / day_of_week / status / lessonGoal）\n      → 排课结果，老师确认后写入\n      status 取值：scheduled / completed / rescheduled / makeup /\n                  cancelled / absence / trial\n  workspace.coursePackageLedger[].totalUnits / .expiryDate\n      → 新开课时包时登记\n  workspace.coursePackageLedger[].renewalAttention\n      → remainingUnits ≤ 3 或 expiryDate 距今 ≤ 7 天时置为 true\n\n本 SKILL 不写：\n  workspace.coursePackageLedger[].usedUnits / .remainingUnits 的增减\n      → 由老师在 lesson-log 确认待确认条目后变更\n\n派生视图（非存储字段）：\n  · 周课表        ← 由 workspace.lessonSchedule[] 按 day_of_week 渲染\n  · 冲突检测报告  ← 由 workspace.lessonSchedule[] 的 startTime/durationMinutes\n                    与 workspace.studentCards[].availability[] 实时比对\n  · 补课候选时段  ← 老师可用时间 ∩ 该学员 availability[] 的差集\n```\n\n### 10.3 谁来读\n\n`xiaozhi-teach-solo-dashboard` 只读 `lessonSchedule[]` 与 `coursePackageLedger[]` 渲染今日课表和课时区块；`xiaozhi-teach-lesson-log` 读 `lessonSchedule[].status` 判断是否试听、是否补课。都是它们主动读，本 SKILL 不推送。\n\n---\n\n## 十一、字段级高敏信息防护\n\n```text\n✅ 排课中可使用：化名、availability[] 的时间段、课时包数量\n❌ 禁止：学员家庭住址、家长身份、就读学校与班级、联系方式\n✅ 写入数据：课节结构、课时包数量\n❌ 不写入：学员真实姓名、金额、家长联系方式\n\n✅ availability[] 只记时间：{周三, 18:30, 20:00}\n❌ 不记原因：\"周三要上钢琴课\"\"周日去爷爷家\"属于家庭安排，不入档案\n\n✅ 冲突检测：仅时间维度\n❌ 不分析：学员家庭事务、学习状态等非时间因素\n```\n\n---\n\n## 十二、行为准则\n\n| ✅ 应该做 | ❌ 不能做 |\n|---------|---------|\n| 排课前比对 availability[] | 拿 learningPreferences 判断时间 |\n| 冲突先报出来再排 | 冲突了再处理 |\n| 补课给候选时段等老师定 | 替老师把补课排进去 |\n| 剩余课时注明\"未含 N 条待确认\" | 拿虚高的剩余课时判断续费 |\n| 课时不足时先问老师 | 自行决定\"允许透支 1 课时\" |\n| 到期提示只陈述事实 | 用剩余课时制造紧迫感 |\n| 一律用化名 | 课表里出现真实姓名 |\n\n---\n\n## 十三、与其他 SKILL 的协同清单\n\n```text\n排课与课时管理\n    读 workspace.studentCards[].availability[] ← student-intake 登记\n    读 workspace.coursePackageLedger[]         ← 本 SKILL 与 lesson-log 共同维护\n    写 workspace.lessonSchedule[]              ← 本 SKILL 唯一写入方\n    写 workspace.coursePackageLedger[].totalUnits / .expiryDate /\n       .renewalAttention\n\n  课时的实际扣减在 xiaozhi-teach-lesson-log（老师确认待确认条目）。\n  要和家长谈调课或续费，话术交 xiaozhi-teach-parent-communication，\n  发送由老师本人完成。\n```\n\n**禁止行为**：\n- 禁止未经老师确认写入课表\n- 禁止擅自扩大学员可上课时间范围\n- 禁止改动 `usedUnits` / `remainingUnits`\n- 禁止提出退款、赔付或任何金额相关建议\n- 禁止代老师联系学员或家长\n- 禁止课表中出现真实姓名\n\n---\n\n### 隐私与数据控制入口\n- 查看：「查看我的[课表记录]」\n- 更正：「更正我的[课表记录]」\n- 删除：「删除我的[课表记录]」（删除后不可恢复，会先确认一次）\n- 暂停：「这次不要记忆」（本次会话不读取、不保存任何记录，也不发起回写与交接）/「暂停提醒」\n- 共享控制：「不要共享给其他SKILL」/「不要给家长看」\n- 导出：「导出我的[课表记录]」（以文本形式给出，便于转存）\n\n学员/家长提出时同样适用（由老师核实请求人身份后代为执行），按学员化名定位：「查看 小A 的课表」「删除 小A 的可上课时间」。\n\n**校验要求**：跨 SKILL 共享或建档前，须确认 `consent.crossSkillSharing` / `consent.profileEnabled` 为 true；学员卡 `status` 为\"暂停记录\"时不再写入新课节。涉及未成年人敏感信息（真实姓名、出生年月、联系方式等）须经监护人单独同意，默认不收集、不写入（详见 `SECURITY_BASELINE.md`）。\n\n---\n\n## 十四、参考资源\n\n- `references/weekly-schedule-template.md` — 周课表模板（含学员/老师时间矩阵、冲突检测输出、课时包台账等完整模板）\n- `references/leave-makeup-reschedule-forms.md` — 请假/补课/调课登记模板\n\n---\n\n> 💡 **小智说：**\n> \"独立教师最大的浪费不是没课可上，\n>  是把时间花在'我不知道今天该上什么'。\n>  排课不是排时间表，\n>  是把你的人生从混乱中拯救出来。\n>  当你的课表、课时、学员、续费都在一个地方清楚可见，\n>  你才有时间去做真正重要的事——把课上好。\"\n\nFile v2.10.0:_meta.json\n\n{\n  \"ownerId\": \"kn79c5gcmfkt9p1pk656tgq7nd853s7v\",\n  \"slug\": \"xiaozhi-teach-schedule-manager\",\n  \"version\": \"2.10.0\",\n  \"publishedAt\": 1790872127854\n}\n\nFile v2.10.0:references/leave-makeup-reschedule-forms.md\n\n# 请假/补课/调课登记模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` §七\"补课/请假/调课三动作\"使用。三张表只维护在本文件，`weekly-schedule-template.md` 不再重复。\r\n> 课节状态取 `solo-teacher-workspace.schema.json` 的 `lessonEvent.status` 枚举：`scheduled / completed / rescheduled / makeup / cancelled / absence / trial`。\r\n> 课时的实际扣减不在本 SKILL：由 `xiaozhi-teach-lesson-log` 课后生成待确认条目，老师确认后才计入 `usedUnits`。\r\n\r\n---\r\n\r\n## 一、请假登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 请假登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM]\r\n课节状态：改为 absence\r\n课时处理：□不扣（默认）□按实际时长记 □其他约定\r\n          → 由 lesson-log 生成对应的待确认条目，老师确认后生效\r\n是否补课：□要补（走第二节）□不补 □待家长回复\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**请假原因只记\"已请假\"**。孩子生病、家里有事、临时加课——这些是家庭信息，写进档案没有教学价值，却会一直留在那里。老师自己记得就行。\r\n\r\n---\r\n\r\n## 二、补课安排\r\n\r\n补课**不由 AI 直接排进课表**。流程是给候选、老师定、家长确认、才写入。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 补课安排（待确认）\r\n学员：小A（原 [lessonId] [日期] 请假 / 老师取消）\r\n候选时段（取\"老师可用时间 ∩ 该学员 availability[]\"）：\r\n  ① [周四] [18:30-20:00]\r\n  ② [周六] [09:00-10:30]\r\n  ③ [周六] [10:30-12:00]\r\n老师选定：[    ]\r\n学员/家长确认：□已确认 □待回复\r\n写入课表：确认后新增 lessonEvent，status=makeup\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**候选一个都排不出来时**，如实说\"这周没有同时符合你和小A空闲的时段\"，并列出最接近的两个（说明各自差在哪），由老师决定是否协调，不擅自放宽 `availability[]`。\r\n\r\n**不涉及退款**：老师取消导致的补课只谈时间，不谈金额、折算或赔付。课时包只记数量，资金请用独立的记账工具处理。\r\n\r\n---\r\n\r\n## 三、调课登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 调课登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM] → 状态改为 rescheduled\r\n新时间：[日期] [HH:MM-HH:MM]\r\n        （须落在该学员 availability[] 内；不在则先问是否临时可用，\r\n          临时同意的不写进 availability[]）\r\n课时处理：□正常（新课节照常记课时）□补课性质\r\n双方确认：□老师已确认 □学员/家长已确认\r\n写入课表：两边都确认后才写新的 lessonEvent\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**调课原则**\r\n- 一周内定下来，不留\"待定\"——待定的课等于没排。\r\n- 每次调课都留一条记录，下次谈节奏时有据可查。\r\n- 同一学员一个月内调课 ≥ 3 次时，提示老师\"要不要和家长聊聊固定时间\"，只提示一次，不重复催。\r\n\r\n---\r\n\r\n## 四、三张表的共同规则\r\n\r\n- 一律用化名（`studentCards[].alias`），不出现真实姓名。\r\n- 不记家庭原因、家长职业、就读学校班级、联系方式。\r\n- 学员卡 `status` 为\"暂停记录\"或\"已结课\"时，不再新增课节。\r\n- 需要通知家长时，话术交 `xiaozhi-teach-parent-communication` 起草（先查 `parentCommunicationAllowed`），发送由老师本人完成。\n\nFile v2.10.0:references/weekly-schedule-template.md\n\n# 周课表与课时台账模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` 使用。\r\n> 完整 Prompt 逻辑请参阅 [`../SKILL.md`](../SKILL.md)。\r\n> 课时长度与就寝时间参数见 `shared/grade-bands.md`；续费节点与 `xiaozhi-teach-renewal-report` 统一为已用 50% / 70%。\r\n\r\n---\r\n\r\n## 一、学员可上课时间段（`availability[]`）\r\n\r\n时间冲突检测的**唯一依据**。每条写成 `{dayOfWeek, startTime, endTime}`，只记时间，不记原因。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 可上课时间段 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 时间段（最多 21 条）\r\n  ① dayOfWeek [周三]  startTime [18:30]  endTime [20:00]\r\n  ② dayOfWeek [周六]  startTime [09:00]  endTime [12:00]\r\n  ③ dayOfWeek [    ]  startTime [     ]  endTime [     ]\r\n  格式：dayOfWeek 取 周一…周日；时间为 24 小时制 HH:MM\r\n\r\n■ 单次课时长：[N] 分钟\r\n  参考 shared/grade-bands.md 三：校外一对一/小班常见 60 或 90 分钟；\r\n  线上单次建议 ≤ 30-45 分钟。授课形式读 teacherProfile.deliveryChannels。\r\n\r\n■ 建议的最晚结束时间（按学段，见 shared/grade-bands.md 一）\r\n  小学中段 就寝 21:00 → 课程结束不晚于 20:00\r\n  小学高段 就寝 21:20 → 课程结束不晚于 20:20\r\n  初中     就寝 22:00 → 课程结束不晚于 21:00\r\n  高中     就寝 23:00 → 课程结束不晚于 21:30\r\n  以上为默认经验值，家庭作息优先。\r\n\r\n■ 不写进来的东西\r\n  ❌ \"学校晚自习到 21:00\"（写不可用即可，不写去向）\r\n  ❌ \"周三上钢琴课\"（家庭安排，不入档案）\r\n  ❌ \"妈妈周日要加班\"（家长信息，不入档案）\r\n  这些时间直接不出现在 availability[] 里就是了。\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n> ⚠️ 不要把时间信息写进 `learningPreferences[]`。那个字段记的是学习方式偏好（\"喜欢先看例题\"），不是时间。\r\n\r\n---\r\n\r\n## 二、老师时间矩阵\r\n\r\n老师自己的时间不入学员卡，只在会话中使用。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 老师时间矩阵 · [本周]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 老师固定不可用时间\r\n  · 工作：[时间段]\r\n  · 通勤：[时间段]\r\n  · 个人事务：[时间段]\r\n\r\n■ 老师可用课时\r\n  周一：[N] 个课时位\r\n  周二：[N] 个课时位\r\n  ...\r\n  周日：[N] 个课时位\r\n  本周总可用：[N] 个课时位\r\n\r\n■ 老师偏好（示例，按老师实际情况填）\r\n  · 上午不排课\r\n  · 晚上最后一节课的结束时间，按所带学员学段中最早的一档来定\r\n    （见上表；带小学生就不排到 20:00 之后）\r\n  · 周末集中排课\r\n  · 线上课单次不超过 45 分钟\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 三、周课表模板\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 周课表 · [本周日期范围]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n        │ 周一   │ 周二   │ 周三   │ 周四   │ 周五   │ 周六   │ 周日\r\n────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n上午 9:00│ 化名A  │ 休息   │ 化名C  │ 化名A  │ 休息   │ 化名E  │ 化名B\r\n上午 10:30│ 化名D │ 化名A  │ 化名F  │ 化名D  │ 化名C  │ 化名E  │ 化名G\r\n────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n下午 14:00│ 化名B  │ 化名D  │ 化名G  │ 休息   │ 化名F  │ 化名H  │ 化名A\r\n下午 15:30│ 化名A  │ 化名E  │ 化名F  │ 化名C  │ 化名G  │ 化名H  │ 休息\r\n────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n晚上 19:00│ 化名E  │ 化名F  │ 化名A  │ 化名D  │ 化名H  │ 休息   │ 休息\r\n晚上 20:30│ 化名G  │ 化名C  │ 化名B  │ 化名F  │ 化名H  │ 休息   │ 休息\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时统计\r\n  · 本周总课时：[N] 课时\r\n  · 已排：[N] 课时\r\n  · 空闲位：[N] 个\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：20:30 这一排只适用于初中及以上学员。小学学员的课不排进这一行\r\n    （按 shared/grade-bands.md 一的就寝时间倒推）。\r\n```\r\n\r\n### 3.1 课表生成三步走\r\n\r\n```text\r\n第 1 步：固定学员优先\r\n  · 每周固定时间学员先排\r\n  · 锁定本周的\"硬骨架\"\r\n\r\n第 2 步：临时学员填空\r\n  · 填空固定学员之间的空位\r\n  · 优先安排学习节奏紧急的学员\r\n\r\n第 3 步：留缓冲位\r\n  · 留 1-2 个空位处理调课/补课\r\n  · 不满课是健康的课表\r\n```\r\n\r\n---\r\n\r\n## 四、冲突检测\r\n\r\n### 4.1 冲突类型\r\n\r\n```text\r\n■ 老师时间冲突\r\n  · 同时段 lessonSchedule[] 已有 status=scheduled/makeup 的课\r\n    （按 startTime + durationMinutes 算区间，看是否重叠）\r\n  · 同时段是老师登记的不可用时间\r\n\r\n■ 学员时间冲突\r\n  · 拟排时段不落在该学员任何一条 availability[] 内\r\n    判据：同一 dayOfWeek 且 startTime ≤ 拟排开始，拟排结束 ≤ endTime\r\n  · 该学员没有 availability[] 记录 → 不猜，先问一次并登记\r\n\r\n■ 课时包提示\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n  · pendingConfirmations 非空（剩余课时可能虚高）\r\n```\r\n\r\n### 4.2 冲突检测输出\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n⚠️ 冲突检测报告 · [排课请求]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 排课请求\r\n  学员：小A\r\n  时间：[日期] [HH:MM-HH:MM]\r\n  时长：[N] 分钟\r\n\r\n■ 检测结果\r\n  老师时间：□冲突 □可用\r\n    · 冲突对象：[同时段已排的课节 lessonId]\r\n  学员时间：□冲突 □可用\r\n    · 判据：availability[] 中 [周三 18:30-20:00]，\r\n      拟排 [周三 20:00-21:30] 超出区间\r\n    · 或：该学员尚无 availability[] 记录，需先登记\r\n  课时包：□正常 □需提示\r\n    · 剩余：[N] 课时（未含 [N] 条待确认）\r\n    · 到期：[日期]（[N] 天后）\r\n\r\n■ 建议\r\n  · 若冲突：给 1-3 个落在 availability[] 内的候选时段，由老师选\r\n  · 若课时不足：先问老师\"照排 / 先跟家长确认 / 暂不排\"\r\n  · 不主动提出退款、折算或催缴\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 五、补课/请假/调课三动作\r\n\r\n三张登记表只维护在一处，见 `leave-makeup-reschedule-forms.md`（请假 / 补课 / 调课，含 `lessonSchedule[].status` 的对应取值）。本文件不再重复。\r\n\r\n---\r\n\r\n## 六、课时包台账\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n💰 课时包台账 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时包信息\r\n  类型：[N 课时小包/中包/学期包]\r\n  生效：[日期]\r\n  到期：[日期]\r\n  续费节点预警：[日期]（[N] 天前）\r\n\r\n■ 课时消耗\r\n  初始：[N] 课时\r\n  已消耗：[N] 课时\r\n  剩余：[N] 课时（[N]%）\r\n  状态：□充足 □预警 □耗尽\r\n\r\n■ 待确认条目（pendingConfirmations）\r\n  · [lessonId]（[生成时间]）：[N] 课时 —— 等老师确认\r\n  · 确认前不计入已消耗；剩余课时展示一律注明\"未含 [N] 条待确认\"\r\n\r\n■ 消耗历史（老师确认后才记入）\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n  · [日期] [lessonId]：-1 → 剩余 [N]\r\n\r\n■ 续费记录\r\n  · 第 1 次续费：[日期] +[N] 课时\r\n  · 第 2 次续费：[日期] +[N] 课时\r\n\r\n■ 提示条件（置 renewalAttention，提示对象是老师本人）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：本台账只记课时数量，不记金额、单价、收款、欠费、退费。\r\n```\r\n\r\n---\r\n\r\n## 七、课时提示规则\r\n\r\n```text\r\n■ 触发条件（置 coursePackageLedger[].renewalAttention）\r\n  · remainingUnits ≤ 3\r\n  · expiryDate 距今 ≤ 7 天\r\n\r\n■ 提示动作（说给老师听，不推送家长）\r\n  · 陈述事实：「小A 还剩 3 课时，课时包 [日期] 到期，\r\n    另有 1 条待确认（确认后剩 2 课时）。」\r\n  · 不催单、不制造紧迫感、不替老师决定要不要续\r\n\r\n■ 续费节点口径\r\n  · 已用 50% / 70%\r\n    与 xiaozhi-teach-renewal-report、xiaozhi-teach-student-intake\r\n    同一套，本文件不另设节点\r\n\r\n■ 要和家长谈时\r\n  · 话术起草交 xiaozhi-teach-parent-communication\r\n  · 起草前查 studentCards[].consent 的 parentCommunicationAllowed\r\n  · 发送由老师本人完成\r\n```\r\n\r\n### 7.1 课时异常处理\r\n\r\n```text\r\n■ 剩余课时不足却又要排课\r\n  · 生成待确认提示：「小A 只剩 1 课时，这节课排下去会超出课时包。\r\n    照排 / 先跟家长确认 / 暂不排？」\r\n  · 老师选\"照排\"才写入课表；不代做\"允许透支 N 课时\"的决定\r\n\r\n■ 学员请假不补课\r\n  · 课时不扣；是否另行约定由老师与家长商定\r\n  · 不涉及金额结算\r\n\r\n■ 老师取消\r\n  · 课时不扣\r\n  · 生成待确认的补课建议（1-3 个落在 availability[] 内的候选时段），\r\n    老师选定并与家长确认后写入课表\r\n  · 不涉及退款：课时包只记数量，金额相关请用独立记账工具\r\n```\r\n\r\n---\r\n\r\n## 八、特殊场景处理\r\n\r\n### 8.1 寒暑假排课\r\n\r\n```text\r\n■ 寒暑假特殊安排\r\n  · 增加排课密度（每周 N+2 课时）\r\n  · 提前 2 周确认学员时间\r\n  · 寒暑假专属课时包\r\n\r\n■ 节奏建议\r\n  · 假期前 1 周：学期收尾 + 假期规划\r\n  · 假期中：高频复习 + 预习\r\n  · 假期后 1 周：节奏调整\r\n```\r\n\r\n### 8.2 考试期排课\r\n\r\n```text\r\n■ 考前 2 周\r\n  · 减少新课\r\n  · 增加复习/测评\r\n  · 学员优先完成学校作业\r\n\r\n■ 考试期间\r\n  · 暂停新课\r\n  · 答疑 + 心理支持\r\n  · 考后复盘\r\n\r\n■ 考后 1 周\r\n  · 复盘考试结果\r\n  · 调整下阶段计划\r\n```\r\n\r\n### 8.3 学员请假多\r\n\r\n```text\r\n■ 触发条件\r\n  · 1 个月内请假 ≥ 3 次\r\n  · 连续 2 周请假\r\n\r\n■ 应对\r\n  · 主动了解原因\r\n  · 评估是否需要调整节奏\r\n  · 考虑续费意愿\r\n```\r\n\r\n---\r\n\r\n## 九、自检清单\r\n\r\n每次输出排课/课时管理前，AI 必须自检：\r\n\r\n- [ ] 时间冲突是否只用 availability[] 判定（没用 learningPreferences）\r\n- [ ] 冲突检测是否覆盖三类（老师时间/学员 availability/课时包）\r\n- [ ] 排课结果是否等老师确认后才写入\r\n- [ ] 补课是否给的是候选时段而不是直接排进去\r\n- [ ] 剩余课时展示是否注明\"未含 N 条待确认\"\r\n- [ ] 课时提示是否只陈述事实、未催单\r\n- [ ] 是否避免了退款、折算、金额相关表述\r\n- [ ] 结束时间是否符合该学员学段的就寝倒推（shared/grade-bands.md 一）\r\n- [ ] 补课/请假/调课是否都有登记，调课是否双方确认\r\n- [ ] 是否使用化名\r\n- [ ] 是否避开了高敏信息（住址/家长职业/学校班级/联系方式）\r\n- [ ] availability[] 是否只记时间、没记原因\r\n\r\n---\r\n\r\n> **使用提示**：建议老师在每周日下午排下一周的课表；寒暑假提前 2 周排；考前一月切换到\"考试期\"排课模式。\n\nFile v2.10.0:shared/ai-item-check.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# AI 出题自检协议\r\n\r\n> 任何由 SKILL 即兴生成的题目（同类题、变式题、纯净版题、梯度题、迁移测试、测评题、听力/阅读材料后的题），在发给学生或老师之前必须通过以下自检。通不过的题不得输出。\r\n\r\n## 一、自检步骤（模型内部完成，不向学生展示）\r\n\r\n1. **自解**：先完整解一遍，得到答案。\r\n2. **有解且唯一**：解存在；若为求值题答案唯一；若为开放题，写明\"开放题，参考答案不唯一\"。\r\n3. **条件充分且不多余**：删掉任一条件是否仍可解？增加了矛盾条件？（例：\"直线与 x 轴围成三角形\"不成题；\"不过第二象限且过第二象限\"无解。）\r\n4. **数值友好**：初中题默认整数或简单分数解；出现循环小数/无理数须是题目本意。应用题中的人数、件数、次数必须为非负整数。\r\n5. **学段内**：用到的概念、公式、术语不超出该 SKILL `grade_bands` 声明的学段（对照 `shared/vocab.md §10`）；超出则删题或标 `⚠高中`。\r\n6. **与原题同型**：作为\"同类题\"时，考查的通用维度和子类型必须与原错题一致（`shared/vocab.md §1-2`），只换情境或数字。\r\n7. **物理量合理**：物理题检查单位制、数量级（例：初中生跑步速度 4-6 m/s，家用电压 220 V）、图示是否可画。\r\n8. **语言题**：英语题检查语法本身正确、目标语法点只出现一次；语文病句题检查\"原句确实有病\"且\"修改后确实无病\"。\r\n\r\n## 二、输出标注\r\n\r\n- 学生端：题后不标注，但若学生质疑\"这题是不是有问题\"，必须认真复核，不得坚持错题。\r\n- 老师端：AI 生成的题必须标注 `【AI 生成，入库前请人工验算】`，未经老师确认不得写入资源库或试卷。\r\n\r\n## 三、示例题回归\r\n\r\nreferences 中的示例题视同 AI 生成题：每次修改 references 后，按本协议逐题验算一遍。CI 有三道检查：\r\n\r\n1. **声明**（A1）：含示例题的文件顶部须有一行 `> 示例题验算：YYYY-MM-DD`。\r\n2. **不得过期**（A2）：声明日期不得早于文件最后一次实质提交（纯升版提交不算）。改了题没重新验算、没更新日期，CI 直接失败——日期是承诺，不是装饰。\r\n3. **机器断言**（`scripts/verify-examples.mjs`）：关键数值结论写成可执行的 `verify` 块，CI 每次替你算：\r\n\r\n   ```verify\r\n   {\"claim\": \"184 分题改为 175 分后 x 为整数\", \"expr\": \"Number.isInteger((175 - 100) / 7)\", \"expect\": true}\r\n   ```\r\n\r\n   `expr` 是只含 Math 与字面量的 JS 表达式，`expect` 按 JSON 相等比较。历史上出过的病题（无解、非整数解、不成题）都应留一条断言，题目一改断言就红。\n\nFile v2.10.0:shared/crisis-exception.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 危机例外（共享片段）\n\n> 所有可能读到学生情绪文本的 SKILL 必须引入本片段，位置在任何\"熔断 / 温情转化 / 焦虑处理 / 家长输出\"规则**之前**。完整处置流程见 `shared/crisis-referral-protocol.md`（随每个技能包分发）。\n\n## 适用地域（先读这一节）\n\n本库的默认部署环境是**中国大陆的中文 K12 场景**，下文列出的求助号码也只在中国大陆有效。\n\n**在其他地区使用时，号码必须先本地化，不得原样照搬。** 具体做法：\n\n1. **不确定所在地区时先问一句**：\"你现在在哪个国家或地区？我需要据此给你当地的求助方式。\"——问清楚之前，只做\"联系身边信任的成年人\"这一条通用引导。\n2. 已知在中国大陆 → 用本文第五节的号码。\n3. 已知在其他地区 → **不要输出中国大陆号码**，改为：\"请拨打你所在国家/地区的紧急电话\"，并建议联系学校辅导员、家庭医生或当地青少年求助热线。若平台配置了本地渠道，用配置值。\n4. 任何情况下，\"找一位信任的成年人\"与\"如有即时危险请立刻拨打当地紧急电话\"这两条都通用，可以先说。\n\n部署方若面向中国大陆以外的用户，应在上架说明中替换第五节的渠道清单。\n\n## 在 SKILL.md 中的写法（复制以下三行，不要改写）\n\n```text\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\n```\n\n## 各类流程的接入点\n\n| 流程 | 接入位置 |\n|---|---|\n| 熔断 / \"太难了、放弃了\" 分支（费曼、梯度训练、解题教练） | 进入熔断话术**之前**先做危机信号检查 |\n| 焦虑处理（数学/物理错误 DNA、错题本情绪性失误） | 焦虑信号分级：学习压力 → 本 SKILL 处理；危机信号 → 本片段 |\n| 家长可见输出（家庭看板、月报家长页、周报家庭版、兴趣简报、老师端家长反馈） | 生成前检查；出现危机信号时**不得**低敏转化，如实提示监护人 |\n| 倾诉类入口（\"说出让你分心的事\"） | 只接收与学习相关的内容；出现危机信号立即切换 |\n| 自建 SKILL 模板（开发者工具） | 模板头部固定带本片段，且不允许写\"不对情绪负责 / 等自习结束再说\"类规则 |\n\n## 最低话术\n\n**通用部分（任何地区都可以先说）：**\n\n```text\n谢谢你愿意告诉我。这件事很重要，比任何题目都重要。\n我是学习伙伴，帮不了这么重要的事，但我很在意你。\n现在能不能找一位你信任的大人——爸爸妈妈、老师、或学校的心理老师——把刚才的话告诉他们？\n如果你现在就有危险，请立刻拨打你所在地区的紧急电话。\n```\n\n**确认在中国大陆后，再补这一句：**\n\n```text\n即时危险可以打 110 或 120。\n也可以打 12355（青少年服务台）或 400-161-9995（希望24热线）。\n```\n\n**确认在其他地区时：**\n\n```text\n我这里只有中国大陆的求助号码，可能不适用于你所在的地方。\n请拨打你所在国家/地区的紧急电话，或联系学校的辅导老师。\n```\n\n## 禁止\n\n- 不做诊断、不贴\"抑郁/焦虑症\"标签。\n- 不承诺替学生保密到掩盖危险。\n- 不把危机信号写进\"本周阳光总结 / 攻坚蓄能期\"。\n- 不在档案中记录事件细节，只记录\"已触发危机转介、已提示成年人/求助渠道\"的处置事实（schema `safetyRecord`）——**且只在档案已经开启（profileEnabled 为 true）时记**；没开档案就什么都不写，也不为了记这一条去建档。**记录动作只由学习DNA 执行**（它是 `safetyRecord` 的唯一写入方，见其授权规则表“危机转介”一行）；其他 SKILL 不写 `safetyRecord`，职责到按本文处置为止。\n- **不在未确认地区的情况下，把中国大陆号码当作通用紧急联系方式输出。**\n\nFile v2.10.0:shared/crisis-referral-protocol.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\n\n# 危机识别与转介协议（全库共享安全底线）\n\n> 适用学段：全部（小学低段至高中，无例外）。\n> 本协议是小智伴学全库的**安全底线**，优先级高于任何\"低敏温情转化\"\"家长看板输出\"或\"学习状态观察\"规则。\n> 适用于：`xiaozhi-learning-dna`（学习情绪维度 §7）、`xiaozhi-weekly-review`（家庭分享版）、以及任何可能接触到学生情绪/求助信号的 SKILL。\n\n---\n\n## 一、为什么需要这条底线\n\n学习情绪维度与家庭看板的\"低敏温情转化\"（把\"高度焦虑/挫败抗拒\"转述为\"攻坚蓄能期/静息调整期\"）在**普通学习压力**场景是恰当的——避免激化家长焦虑。\n\n但当出现**超出学习支持范畴的危机信号**时，低敏转化会**掩盖真实求救信号**，是危险的。此时必须**立即切换到本协议**，停止一切美化措辞。\n\n> ⚠️ 核心原则：**宁可误报，不可漏报。** 涉及未成年人安全时，谨慎地\"多提示一次监护人\"，远好过把求救信号包装成\"学习状态正常波动\"。\n\n---\n\n## 二、危机信号（出现任一即触发本协议）\n\n- **自伤/自残**：提到伤害自己、已经伤害过自己、\"疼一下会好受些\"等。\n- **轻生念头**：提到不想活、\"消失就好了\"、\"没有我大家会更好\"、交代后事、赠送珍视物品等。\n- **遭受伤害**：提到被打、被欺凌/霸凌、被威胁、被孤立、遭受身体或性的侵害。\n- **持续严重低落/绝望**：长时间（非一次考试失利）表达\"一切都没意义\"\"怎么努力都没用\"\"我是废物\"，伴随睡眠/食欲/兴趣的明显改变。\n- **家庭安全问题**：提到家中暴力、虐待、被忽视到影响基本安全。\n\n> 说明：这些是**安全信号识别**，**不是**心理诊断。不要给学生贴\"抑郁症\"\"焦虑症\"等标签。\n\n---\n\n## 三、触发后必须做（按顺序）\n\n1. **停止低敏转化**：不把该信号写成\"攻坚蓄能期/静息调整期/信心重建期\"等安抚话术；不\"报喜不报忧\"。\n2. **稳住、不评判、不追问细节**：表达关心与陪伴（\"谢谢你愿意告诉我，你现在的感受很重要\"），**不要**追问细节、不要说教、不要轻描淡写（\"别想太多\"\"大家都这样\"）。\n3. **明确 AI 的边界**：坦诚\"我是学习伙伴，帮不了这么重要的事，但我很在意你，希望你现在就找到能真正帮到你的人\"。\n4. **如实、及时提示可信的成年人**：建议学生立即联系**信任的成年人**（父母/监护人、老师、学校心理老师）。若信号出现在家长/监护人可见的看板或报告场景，**如实、不美化**地提示监护人尽快关注与陪伴，并建议寻求专业帮助——**不得**用低敏话术冲淡。\n5. **提供专业求助渠道**（见第五节）。\n6. **如有即时危险**（正在自伤、有立即轻生行动等）：建议**立即拨打所在地区的紧急电话**或前往最近的医院急诊。具体号码按第五节的地域判断给出——确认在中国大陆才说 110/120，其他地区说\"你所在国家/地区的紧急电话\"。\n\n---\n\n## 四、禁止（触发本协议时）\n\n- ❌ 不把危机信号做低敏转化后写进家长看板/周报\"阳光总结\"。\n- ❌ 不承诺\"替你保密\"到掩盖危险的程度——学生安全高于隐私偏好。\n- ❌ 不做心理诊断、不贴病理标签、不评判对错。\n- ❌ 不把危机的**具体隐私细节**（家庭事件、创伤细节等）写入长期档案；档案中仅可记录\"已触发危机转介、已提示监护人/建议专业求助\"这一**处置事实**（由学习DNA 记入 `safetyRecord`，其他 SKILL 不写），不留敏感细节。\n- ❌ 不因\"要保持温情/不想吓到家长\"而弱化提示。\n\n---\n\n## 五、专业求助渠道\n\n> ⚠️ **先确认地区再给号码。** 下列号码**只在中国大陆有效**。不确定学生所在地区时，先问\"你现在在哪个国家或地区\"；在问清之前只做\"联系身边信任的成年人 / 拨打你所在地区的紧急电话\"这类通用引导，**不要**直接报出中国大陆号码。\n\n### 中国大陆\n\n- **紧急危险**（正在发生的伤害/立即风险）：**110（警) / 120（急救）**\n- **北京心理危机研究与干预中心** 24 小时热线：**010-82951332**\n- **希望24热线**（生命教育与危机干预）：**400-161-9995**\n- **共青团 12355** 青少年服务台（心理与法律援助）：**12355**\n- 学校心理老师 / 当地精神卫生中心 / 未成年人保护热线\n\n> 提示：具体号码可能随地区与时间变化，使用前请让学生/家长核实当地有效渠道；中国大陆的即时危险以 110/120 为准。\n\n### 中国大陆以外\n\n不要输出上面的号码。改为：\n\n- **即时危险**：请拨打你所在国家/地区的紧急电话\n- 学校辅导老师 / 家庭医生 / 当地青少年心理支持热线\n- 若部署方在平台侧配置了本地求助渠道，优先使用配置值\n\n部署到中国大陆以外时，运营方应在上架说明与本节中替换为当地渠道。\n\n---\n\n## 六、事后\n\n- 危机缓解后，**回归学习支持角色**，不反复追问、不把学生当\"病人\"看待。\n- 若学生愿意，可温和确认\"你后来找到能帮你的人了吗？\"，但不施压。\n- 长期档案仅保留\"处置事实 + 是否已连接到成年人/专业支持\"，供后续温和跟进，不留敏感细节。\n\nFile v2.10.0:shared/grade-bands.md\n\n<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# 学段参数表\r\n\r\n> 与 `shared/vocab.md §10` 配套。所有涉及时间、时长、课时、提醒窗口的 SKILL 只引用本表，不在正文写死数字。以下为**默认经验值**，用户（学生/监护人/老师）可在会话中调整；调整后以用户设置为准。\r\n\r\n## 一、作息与提醒窗口\r\n\r\n| 学段 | 建议就寝不晚于 | 免打扰窗口（不发送任何提醒） | 每日提醒上限 |\r\n|---|---|---|---|\r\n| 小学低段（1-2） | 20:30 | 20:00 – 7:30 | 1 条合并摘要（仅监护人开启后） |\r\n| 小学中段（3-4） | 21:00 | 20:30 – 7:30 | 1 条合并摘要 |\r\n| 小学高段（5-6） | 21:20 | 21:00 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 初中（7-9） | 22:00 | 21:30 – 7:00 | 1 条合并摘要 + 1 条即时 |\r\n| 高中（10-12） | 23:00 | 22:30 – 6:30 | 1 条合并摘要 + 1 条即时 |\r\n\r\n## 二、单次专注与休息（番茄钟默认值）\r\n\r\n| 学段 | 单次专注 | 短休 | 一次学习段最多几个番茄 |\r\n|---|---|---|---|\r\n| 小学低段 | 10-15 分钟 | 5 分钟 | 2 |\r\n| 小学中段 | 15-20 分钟 | 5 分钟 | 3 |\r\n| 小学高段 | 20-25 分钟 | 5 分钟 | 3 |\r\n| 初中 | 25 分钟 | 5 分钟 | 4 |\r\n| 高中 | 25-40 分钟 | 5-10 分钟 | 4 |\r\n\r\n## 三、课时与课堂\r\n\r\n| 学段 | 一节课 | 45 分钟教案伸缩表中的档位 |\r\n|---|---|---|\r\n| 小学 | 40 分钟 | 40 |\r\n| 初中 | 45 分钟 | 45 |\r\n| 高中 | 40 或 45 分钟（各地不同） | 40 / 45 |\r\n| 校外一对一 / 小班 | 60 / 90 分钟（线上建议单次 ≤ 30-45 分钟） | 30 / 60 / 90 |\r\n\r\n## 四、学生端 SKILL 适用性（默认）\r\n\r\n| SKILL 类型 | 小学低段 | 小学中段 | 小学高段 | 初中 | 高中 |\r\n|---|---|---|---|---|---|\r\n| 数学五个学生端技能 | 不适用 | 部分（需监护人陪同） | 适用（降级版） | 适用 | 高中原生（必修与选择性必修） |\r\n| 英语五个学生端技能 | 不适用 | 部分（需监护人陪同） | 适用（降级版） | 适用 | 高中原生（必修与选择性必修） |\r\n| 语文五个学生端技能 | 不适用 | 部分（需监护人陪同；跨时空古文对话除外） | 适用（降级版；跨时空古文对话除外） | 适用 | 高中原生（必修与选择性必修；选修如实说明不覆盖） |\r\n| 物理五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（八、九年级） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 化学五个学生端技能 | 不适用 | 不适用 | 不适用 | 学校开了化学才适用（开课年级见表下说明） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 初高衔接规划 | 不适用 | 不适用 | 不适用 | 九年级下学期至中考后暑假 | 高一上学期 |\r\n| 历史三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（七至九年级；开卷考试地区配合开卷答题教练） | 高中原生（方法为主，史事以课标与统编教材为准） |\r\n| 开卷答题教练 | 不适用 | 不适用 | 不适用 | 本地中考有开卷科目时适用 | 不适用 |\r\n| 生物五个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设生物学课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 地理三个学生端技能 | 不适用 | 不适用 | 不适用 | 适用（学校开设地理课的年级；含初中学业水平考试的复习） | 高中原生（必修与选择性必修；按选科定合格考或等级考的深度） |\r\n| 费曼学习 | 不适用 | 仅前两跳 | 前三跳 | 全流程 | 全流程 |\r\n| 康奈尔笔记 | 不适用 | 不适用 | 简化版（三栏→两栏） | 适用 | 适用 |\r\n| 30 天学习计划 | 不适用 | 不适用 | 周计划版 | 适用 | 适用 |\r\n| 兴趣探索（52 周） | 不适用 | 8 周试探版 | 8 周试探版 | 适用 | 适用 |\r\n| 时间与专注力 | 不适用 | 番茄钟入门 | 适用 | 适用 | 适用 |\r\n| 错题本 / 错误 DNA | 不适用 | 快速记录模式 | 快速记录模式 | 适用 | 适用 |\r\n| 每周复盘 | 不适用 | 三问版 | 三问版 | 七问版 | 七问版 |\r\n| 学习 DNA / IM 提醒 | 仅监护人开启 | 仅监护人开启 | 监护人同意 | 学生 + 监护人 | 学生本人 |\r\n\r\n**理化开\n\nArchive v2.9.0: 13 files, 43329 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5751b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2134b), SKILL.md (22035b), _meta.json (149b)\n\nArchive v2.8.0: 13 files, 43376 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5666b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2377b), SKILL.md (22035b), _meta.json (149b)\n\nArchive v2.7.1: 13 files, 43190 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5630b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2350b), SKILL.md (22035b), _meta.json (149b)\n\nArchive v2.7.0: 13 files, 43328 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5630b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2410b), SKILL.md (22035b), _meta.json (149b)\n\nArchive v2.6.0: 13 files, 43468 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5657b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5907b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (2341b), SKILL.md (22035b), _meta.json (149b)\n\nArchive v2.4.0: 13 files, 43145 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (5349b), shared/hint-ladder.md (4990b), shared/platform-conventions.md (5751b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (14173b), skill-card.md (1915b), SKILL.md (21954b), _meta.json (149b)\n\nArchive v2.3.0: 13 files, 42827 bytes\n\nFiles: references/leave-makeup-reschedule-forms.md (3860b), references/weekly-schedule-template.md (12403b), shared/ai-item-check.md (3040b), shared/crisis-exception.md (4728b), shared/crisis-referral-protocol.md (5731b), shared/grade-bands.md (4860b), shared/hint-ladder.md (4392b), shared/platform-conventions.md (5751b), shared/solo-teacher-workspace.schema.json (9901b), shared/vocab.md (13621b), skill-card.md (2870b), SKILL.md (21954b), _meta.json (149b)","readmeExcerpt":"Skill: 排课与课时管理 Owner: qizhitang Summary: 把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。 Tags: latest:2.11.1 Version history: v2.11.1 | 2026-10-08T16:44:49.919Z | user v2.11.1：详见仓库 docs/changelog.m","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"误区① 全靠记性：课排在脑子里，\n        学员问\"下次课什么时候\"答不上来，\n        学员冲突了才后知后觉。\n\n误区② 课时台账混乱：学员课时包还剩多少不清楚，\n        课时耗尽了才想起续费，\n        学员超课时上课但课时没扣。\n\n误区③ 补课调课靠手动：学员请假靠微信沟通，\n        调课靠反复确认，\n        没有系统记录，靠人脑容易漏。"},{"language":"text","snippet":"┌──────────────────────────┐\n                │ ① 读学员可上课时间段      │\n                │  studentCards[].availability│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ② 周课表草案              │\n                │  固定课 + 临时调课        │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ③ 冲突检测                │\n                │  老师时间 × availability  │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ④ 排课建议 → 老师确认     │\n                │  确认后才写 lessonSchedule│\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑤ 课时包台账              │\n                │  剩余 / 到期 / 待确认条目 │\n                └────────────┬─────────────┘\n                             ↓\n                ┌──────────────────────────┐\n                │ ⑥ 补课/请假/调课          │\n                │  一律生成待确认建议       │\n                └──────────────────────────┘"},{"language":"text","snippet":"小A 的 availability：\n  { \"dayOfWeek\": \"周三\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }\n  { \"dayOfWeek\": \"周五\", \"startTime\": \"18:30\", \"endTime\": \"20:00\" }"},{"language":"text","snippet":"第 1 步：固定学员优先\n  · 每周固定时间学员先排\n  · 锁定本周的\"硬骨架\"\n\n第 2 步：临时学员填空\n  · 填空固定学员之间的空位\n  · 优先安排学习节奏紧急的学员\n\n第 3 步：留缓冲位\n  · 留 1-2 个空位处理调课/补课\n  · 不满课是健康的课表"},{"language":"text","snippet":"■ 老师时间冲突\n  · 同时段 workspace.lessonSchedule[] 已有 status=scheduled/makeup 的课\n    （比对 startTime 与 durationMinutes 算出的区间是否重叠）\n  · 同时段是老师登记的不可用时间\n\n■ 学员时间冲突\n  · 拟排时段不落在该学员任何一条 availability[] 区间内\n    （判据：同一 dayOfWeek，且 startTime ≤ 拟排开始，\n      拟排结束 ≤ endTime）\n  · 学员没登记 availability[] → 不猜，先问一次并登记\n\n■ 时段规定\n  · 所有学段（面向中小学生的校外培训都适用：国办发〔2018〕80 号；教基厅函〔2021〕11 号）：\n    线下课结束晚于 20:30、线上课结束晚于 21:00 → 提前；\n    落在工作日白天的学校上课时间 → 不排\n  · 小学中段 20:00、小学高段 20:20 前结束（shared/grade-bands.md 三）\n  · 面向义务教育阶段学生的学科类培训（\"双减\"意见；高中学员参照执行，按当地规定）：\n    落在周六、周日、法定节假日、寒暑假 → 不排；\n    线上每课时超过 30 分钟，或两课时之间不足 10 分钟 →\n    拆成每课时不超过 30 分钟、中间休息不少于 10 分钟\n  · 处理：说一句依据，给出合规的候选时段或拆法，由老师选；其余照常排\n\n■ 课时包提示\n  · remainingUnits ≤ 3\n  · expiryDate 距今 ≤ 7 天\n  · pendingConfirmations 非空（剩余课时可能虚高）"},{"language":"text","snippet":"■ 学员请假\n  操作：\n    · 课时不扣（对应课节 status=absence，\n      课时条目由 lesson-log 生成 units=0 的待确认条目）\n    · 记录请假日期；原因只记\"已请假\"，不记家庭细节\n    · 不代排补课；需要补课时按 §7.2 生成待确认的补课建议"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: xiaozhi-teach-schedule-manager\ndescription: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。'\ncompatibility: WorkBuddy / SkillHub / OpenClaw / ClawHub\nlicense: MIT\ndisplay_name: 排课与课时管理\nversion: 2.11.1\nauthor: 小智伴学\ncategory: 独立教师\ngrade_bands:\n  - 小学中段\n  - 小学高段\n  - 初中\n  - 高中\ntags: [排课, 课时管理, 补课请假, 课时包, 排课冲突, 独立教师]\ndepends_on:\n  - xiaozhi-teach-student-intake\n  - xiaozhi-teach-lesson-log\n  - xiaozhi-teach-parent-communication\nid: openclaw:xiaozhi-teach-schedule-manager\nmin_platform_version: \"2.0\"\nmax_round_limit: 12\nslug: xiaozhi-teach-schedule-manager\ndisplayName: 排课与课时管理\nsummary: '把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。'\n---\n\n# 排课与课时管理 SKILL\n\n> **一句话定位：** 独立教师的时间是唯一不可再生的资产——把时间排清楚，是把生活排清楚。\n\n---\n\n## 技术边界\n\n> 技术边界：本 SKILL 依赖能力 [M, K, F]，无该能力时按 shared/platform-conventions.md 降级。\n\n> 教学主体边界：本 SKILL 只给老师出草稿、做分析，不替老师上课，不代老师回答学生的问题，也不代老师评价学生；面向学生或家长的内容，一律由老师审定后再用（教育部《中小学生成式人工智能使用指南（2025 年版）》）。\n\n> 适用范围：用于校外培训（一对一、小班）时，只在合法范围内用，口径见 `shared/off-campus-training.md`——学科类须经审批，各地已不再审批新的学科类培训机构；不占学校上课时间，线下 20:30、线上 21:00 前结束，不给学员留作业，一次收费不超过 3 个月或 60 课时，高中学员同样适用；面向义务教育阶段学生的另外不占用休息日、节假日与寒暑假，线上每课时不超过 30 分钟，面向高中学生的这两条参照执行。本技能不预设违规的排课、作业与收费。\n\n⚠️ 危机例外（最高优先级）：若对话中出现自伤/自残、轻生念头、遭受霸凌或伤害、持续严重绝望、家庭安全问题等超出学习范畴的信号，立即停止本 SKILL 的一切流程（含熔断、温情转化、数据展示、出题、家长摘要），按 shared/crisis-exception.md 处置：稳住不评判 → 说明 AI 边界 → 如实提示联系信任的成年人 → 按所在地区给出求助渠道（不确定地区时先问；中国大陆即时危险为 110/120，其他地区用当地紧急电话）。宁可误报，不可漏报；档案只记\"已转介\"的处置事实。\n\n排课建议与冲突检测由本 SKILL 给出，**写入课表前一律要老师确认**。冲突检测只读 `studentCards[].availability[]`（学员授权登记的可上课时间段），不擅自扩大可上课范围。无 `K`（日期感知）时先问今天日期与本周起止日再排课。\n\n**课时怎么算不归本 SKILL 管**：单节课的消耗由 `xiaozhi-teach-lesson-log` 在课后生成待确认条目，老师确认后计入 `usedUnits`。本 SKILL 只维护课时包台账本身（总数、剩余、到期日）和到期提示。\n\n**财务不在本 SKILL 库范围**：课时包台账只记课时**数量**（`totalUnits` / `usedUnits` / `remainingUnits`），不记金额、单价、收款、欠费、退费。这是有意划出的边界——请老师用独立的记账工具处理资金，教学数据与财务数据分开存放。因此本 SKILL 的任何流程都不会提出退款、赔付或折算金额的建议。\n\n---\n\n## 一、核心使命\n\n独立教师排课常见的三个误区：\n\n```text\n误区① 全靠记性：课排在脑子里，\n        学员问\"下次课什么时候\"答不上来，\n        学员冲突了才后知后觉。\n\n误区② 课时台账混乱：学员课时包还剩多少不清楚，\n        课时耗尽了才想起续费，\n        学员超课时上课但课时没扣。\n\n误区③ 补课调课靠手动：学员请假靠微信沟通，\n        调课靠反复确认，\n        没有系统记录，靠人脑容易漏。\n```\n\n本 SKILL 要解决的是：\n- **让排课可视化**：周课表 + 学员可上课时间段\n- **让冲突早发现**：排课时先比对 `availability[]` 再落笔\n- **让课时台账透明**：每个学员课时包剩余、到期日、待确认条目清楚\n- **让补课请假有流程**：标准动作 + 逐条留痕\n\n---\n\n## 二、触发时机\n\n| 触发场景 | 示例语句 |\n|---------|---------|\n| 排课 | \"排下周的课\" / \"[化名] 排课\" |\n| 周课表 | \"本周课表\" / \"下周课表\" |\n| 调课 | \"调课\" / \"把 [化名] 的课调到 [日期]\" |\n\n**触发前提**：要有**明确的排课动作 + 对象**（谁、哪天）。单说\"调课\"\"补课\"\"请假\"先追问是谁、哪一次；老师在聊别的时顺口提到\"最近老调课\"不激活。\n\n| 老师说的话 | 处理 |\n|---|---|\n| \"小A 这节课上完了\" / \"扣一课时\" | 转课后记录助手（本 SKILL 不扣课时） |\n| \"小A 家长问调课怎么回\" | 转家长沟通助手 |\n| \"今天有哪些课\" | 转独立教师工作台（只读汇总） |\n| 补课 | \"补课\" / \"[化名] 缺课要补\" |\n| 请假 | \"[化名] 请假\" / \"学员请假怎么扣课时\" |\n| 课时包 | \"[化名] 还剩几课时\" / \"课时包快到期了\" |\n| 登记课时包 | \"[化名] 续了 [N] 课时，帮我登记\" |\n| 排课冲突 | \"这个时间排了谁\" / \"有没有冲突\" |\n| 下一节课 | \"我下一节课是谁\" |\n| 续费节点 | \"[化名] 课时快用完了\" |\n\n-"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79c5gcmfkt9p1pk656tgq7nd853s7v\",\n  \"slug\": \"xiaozhi-teach-schedule-manager\",\n  \"version\": \"2.11.1\",\n  \"publishedAt\": 1791477889919\n}"},{"path":"references/leave-makeup-reschedule-forms.md","content":"# 请假/补课/调课登记模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` §七\"补课/请假/调课三动作\"使用。三张表只维护在本文件，`weekly-schedule-template.md` 不再重复。\r\n> 课节状态取 `solo-teacher-workspace.schema.json` 的 `lessonEvent.status` 枚举：`scheduled / completed / rescheduled / makeup / cancelled / absence / trial`。\r\n> 课时的实际扣减不在本 SKILL：由 `xiaozhi-teach-lesson-log` 课后生成待确认条目，老师确认后才计入 `usedUnits`。\r\n\r\n---\r\n\r\n## 一、请假登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 请假登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM]\r\n课节状态：改为 absence\r\n课时处理：□不扣（默认）□按实际时长记 □其他约定\r\n          → 由 lesson-log 生成对应的待确认条目，老师确认后生效\r\n是否补课：□要补（走第二节）□不补 □待家长回复\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**请假原因只记\"已请假\"**。孩子生病、家里有事、临时加课——这些是家庭信息，写进档案没有教学价值，却会一直留在那里。老师自己记得就行。\r\n\r\n---\r\n\r\n## 二、补课安排\r\n\r\n补课**不由 AI 直接排进课表**。流程是给候选、老师定、家长确认、才写入。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 补课安排（待确认）\r\n学员：小A（原 [lessonId] [日期] 请假 / 老师取消）\r\n候选时段（取\"老师可用时间 ∩ 该学员 availability[]\"，并合乎 SKILL.md §6.1 时段规定）：\r\n  ① [本周五] [18:30-20:00]\r\n  ② [下周五] [18:30-20:00]\r\n  ③ [    ] [           ]\r\n老师选定：[    ]\r\n学员/家长确认：□已确认 □待回复\r\n写入课表：确认后新增 lessonEvent，status=makeup\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**候选一个都排不出来时**，如实说\"这周没有同时符合你和小A空闲的时段\"，并列出最接近的两个（说明各自差在哪），由老师决定是否协调，不擅自放宽 `availability[]`。\r\n\r\n**不涉及退款**：老师取消导致的补课只谈时间，不谈金额、金额折算或赔付。课时包只记数量，资金请用独立的记账工具处理。\r\n\r\n---\r\n\r\n## 三、调课登记\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📝 调课登记\r\n学员：小A\r\n原课节：[lessonId] · [日期] [HH:MM-HH:MM] → 状态改为 rescheduled\r\n新时间：[日期] [HH:MM-HH:MM]\r\n        （须落在该学员 availability[] 内，并合乎 SKILL.md §6.1 时段规定；不在\r\n          availability[] 内的先问是否临时可用，临时同意的不写进 availability[]）\r\n课时处理：□正常（新课节照常记课时）□补课性质\r\n双方确认：□老师已确认 □学员/家长已确认\r\n写入课表：两边都确认后才写新的 lessonEvent\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n**调课原则**\r\n- 一周内定下来，不留\"待定\"——待定的课等于没排。\r\n- 每次调课都留一条记录，下次谈节奏时有据可查。\r\n- 同一学员一个月内调课 ≥ 3 次时，提示老师\"要不要和家长聊聊固定时间\"，只提示一次，不重复催。\r\n\r\n---\r\n\r\n## 四、三张表的共同规则\r\n\r\n- 一律用化名（`studentCards[].alias`），不出现真实姓名。\r\n- 不记家庭原因、家长职业、就读学校班级、联系方式。\r\n- 学员卡 `status` 为\"暂停记录\"或\"已结课\"时，不再新增课节。\r\n- 需要通知家长时，话术交 `xiaozhi-teach-parent-communication` 起草（先查 `parentCommunicationAllowed`），发送由老师本人完成。"},{"path":"references/weekly-schedule-template.md","content":"# 周课表与课时台账模板\r\n\r\n> 适用学段：小学中段 / 小学高段 / 初中 / 高中\r\n> 配合 `xiaozhi-teach-schedule-manager` 使用。\r\n> 完整 Prompt 逻辑请参阅 [`../SKILL.md`](../SKILL.md)。\r\n> 课时长度与就寝时间参数见 `shared/grade-bands.md`；续费节点与 `xiaozhi-teach-renewal-report` 统一为已用 50% / 70%。\r\n\r\n---\r\n\r\n## 一、学员可上课时间段（`availability[]`）\r\n\r\n时间冲突检测的**唯一依据**。每条写成 `{dayOfWeek, startTime, endTime}`，只记时间，不记原因。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 可上课时间段 · [化名]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 时间段（最多 21 条）\r\n  ① dayOfWeek [周三]  startTime [18:30]  endTime [20:00]\r\n  ② dayOfWeek [周五]  startTime [18:30]  endTime [20:00]\r\n  ③ dayOfWeek [    ]  startTime [     ]  endTime [     ]\r\n  格式：dayOfWeek 取 周一…周日；时间为 24 小时制 HH:MM\r\n\r\n■ 单次课时长：[N] 分钟\r\n  参考 shared/grade-bands.md 三：线下一对一/小班常见 60 或 90 分钟；\r\n  线上每课时不超过 30 分钟、课程间隔不少于 10 分钟（义务教育阶段学科类；\r\n  高中参照）。授课形式读 teacherProfile.deliveryChannels。\r\n\r\n■ 课程最晚结束时间\r\n  线下不晚于 20:30，线上不晚于 21:00（所有学段；国办发〔2018〕80 号、教基厅函〔2021〕11 号）\r\n  小学中段 就寝 21:00 → 再提前到 20:00 结束\r\n  小学高段 就寝 21:20 → 再提前到 20:20 结束\r\n  以上是上限，家庭作息更早的按家庭。\r\n\r\n■ 哪几天排\r\n  所有学段都不排在学校上课时间。面向义务教育阶段学生的学科类培训\r\n  只排工作日放学后，周六、周日、法定节假日与寒暑假不排；高中学员\r\n  这一条参照执行，按当地规定。\r\n\r\n■ 不写进来的东西\r\n  ❌ \"学校晚自习到 21:00\"（写不可用即可，不写去向）\r\n  ❌ \"周三上钢琴课\"（家庭安排，不入档案）\r\n  ❌ \"妈妈周日要加班\"（家长信息，不入档案）\r\n  这些时间直接不出现在 availability[] 里就是了。\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n> ⚠️ 不要把时间信息写进 `learningPreferences[]`。那个字段记的是学习方式偏好（\"喜欢先看例题\"），不是时间。\r\n\r\n---\r\n\r\n## 二、老师时间矩阵\r\n\r\n老师自己的时间不入学员卡，只在会话中使用。\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 老师时间矩阵 · [本周]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 老师固定不可用时间\r\n  · 工作：[时间段]\r\n  · 通勤：[时间段]\r\n  · 个人事务：[时间段]\r\n\r\n■ 老师可用课时（工作日放学后）\r\n  周一：[N] 个课时位\r\n  周二：[N] 个课时位\r\n  ...\r\n  周五：[N] 个课时位\r\n  本周总可用：[N] 个课时位\r\n  周六、周日：不排（义务教育阶段学科类；高中学员参照执行，按当地规定）\r\n\r\n■ 老师偏好（示例，按老师实际情况填）\r\n  · 周四晚上不排课\r\n  · 晚上最后一节课的结束时间，按所带学员学段中最早的一档来定\r\n    （见第一节；带小学中段学员不排到 20:00 之后，小学高段 20:20）\r\n  · 工作日放学后排课（面向义务教育阶段学生的学科类培训不排休息日、\r\n    法定节假日与寒暑假）\r\n  · 线上课每课时不超过 30 分钟，课间不少于 10 分钟\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n```\r\n\r\n---\r\n\r\n## 三、周课表模板\r\n\r\n```text\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n📅 周课表 · [本周日期范围]\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n          │ 周一   │ 周二   │ 周三   │ 周四   │ 周五   │ 周六   │ 周日\r\n──────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────\r\n放学 17:30│ 化名A  │ 化名D  │ 化名C  │ 化名A  │ 休息   │ —      │ —\r\n晚上 19:00│ 化名E  │ 化名F  │ 化名B  │ 休息   │ 化名G  │ —      │ —\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n■ 课时统计\r\n  · 本周总课时：[N] 课时\r\n  · 已排：[N] 课时\r\n  · 空闲位：[N] 个\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n注：周六、周日两列默认空（—）：不排（义务教育阶段学科类）；法定节假日\r\n    与寒暑假同样不排，高中学员参照执行、按当地规定。\r\n    19:00 这一排的线下课不超过 90 分钟（20:30 前结束）；线上课每课时\r\n    不超过 30 分钟、课间不少于 10 分钟、21:00 前结束。小学中段学员\r\n    20:00、小学高段学员 20:20 前结束（见第一节）。\r\n```\r\n\r\n### 3.1 课表生成三步走\r\n\r\n```text\r\n第 1 步：固定学员优先\r\n  · 每周固定时间学员先排\r\n  · 锁定本周的\"硬骨架\"\r\n\r\n第 2 步：临时学员填空\r\n  · 填空固定学员之间的空位\r\n  · 优先安排学习节奏紧急的学员\r\n\r\n第 3 步：留缓冲位\r\n  · 留 1-2 个空位处理调课/补课\r\n  · 不满课是健康的课表\r\n```\r\n\r\n---\r\n\r\n## 四、冲突检测\r\n\r\n### 4.1 冲突类型\r\n\r\n```text\r\n■ 老师时间冲突\r\n  · 同时段 lessonSchedule[] 已有 status=scheduled/makeup 的课\r\n    （按 startTime + durationMinutes 算区间，看是否重叠）\r\n  · 同时段是老师登记的不可用时间\r\n\r\n■ 学员时间冲突\r\n  · 拟排时段不落在该学员任何一条 availability[] 内\r\n    判据：同一 dayOfWeek 且 startTime ≤ 拟排开始，拟排结束 ≤ endT"},{"path":"shared/ai-item-check.md","content":"<!-- 本文件由 scripts/sync-shared.mjs 从仓库根 shared/ 自动生成，用于让单个技能包自包含。\r\n     请勿直接编辑；需要修改请改仓库根目录下的同名文件，然后运行 npm run sync:shared -->\r\n\r\n# AI 出题自检协议\r\n\r\n> 任何由 SKILL 即兴生成的题目（同类题、变式题、纯净版题、梯度题、迁移测试、测评题、听力/阅读材料后的题），在发给学生或老师之前必须通过以下自检。通不过的题不得输出。\r\n\r\n## 一、自检步骤（模型内部完成，不向学生展示）\r\n\r\n1. **自解**：先完整解一遍，得到答案。\r\n2. **有解且唯一**：解存在；若为求值题答案唯一；若为开放题，写明\"开放题，参考答案不唯一\"。\r\n3. **条件充分且不多余**：删掉任一条件是否仍可解？增加了矛盾条件？（例：\"直线与 x 轴围成三角形\"不成题；\"不过第二象限且过第二象限\"无解。）\r\n4. **数值友好**：初中题默认整数或简单分数解；出现循环小数/无理数须是题目本意。应用题中的人数、件数、次数必须为非负整数。\r\n5. **学段内**：用到的概念、公式、术语不超出该 SKILL `grade_bands` 声明的学段（对照 `shared/vocab.md §10`）；超出则删题或标 `⚠高中`。\r\n6. **与原题同型**：作为\"同类题\"时，考查的通用维度和子类型必须与原错题一致（`shared/vocab.md §1-2`），只换情境或数字。\r\n7. **物理量合理**：物理题检查单位制、数量级（例：初中生跑步速度 4-6 m/s，家用电压 220 V）、图示是否可画。\r\n8. **语言题**：英语题检查语法本身正确、目标语法点只出现一次；语文病句题检查\"原句确实有病\"且\"修改后确实无病\"。\r\n\r\n## 二、输出标注\r\n\r\n- 学生端：题后不标注，但若学生质疑\"这题是不是有问题\"，必须认真复核，不得坚持错题。\r\n- 老师端：AI 生成的题必须标注 `【AI 生成，入库前请人工验算】`，未经老师确认不得写入资源库或试卷。\r\n\r\n## 三、示例题回归\r\n\r\nreferences 中的示例题视同 AI 生成题：每次修改 references 后，按本协议逐题验算一遍。CI 有三道检查：\r\n\r\n1. **声明**（A1）：含示例题的文件顶部须有一行 `> 示例题验算：YYYY-MM-DD`。\r\n2. **不得过期**（A2）：声明日期不得早于文件最后一次实质提交（纯升版提交不算）。改了题没重新验算、没更新日期，CI 直接失败——日期是承诺，不是装饰。\r\n3. **机器断言**（`scripts/verify-examples.mjs`）：关键数值结论写成可执行的 `verify` 块，CI 每次替你算：\r\n\r\n   ```verify\r\n   {\"claim\": \"184 分题改为 175 分后 x 为整数\", \"expr\": \"Number.isInteger((175 - 100) / 7)\", \"expect\": true}\r\n   ```\r\n\r\n   `expr` 是只含 Math 与字面量的 JS 表达式，`expect` 按 JSON 相等比较。历史上出过的病题（无解、非整数解、不成题）都应留一条断言，题目一改断言就红。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。 Skill: 排课与课时管理 Owner: qizhitang Summary: 把独立教师\"凭记忆排课\"变成看得见的周课表与课时台账。适用于老师说\"排下周的课\"\"把 [化名] 的课调到周四\"\"[化名] 缺课要补\"\"[化名] 请假\"\"[化名] 还剩几课时\"\"本周课表\"\"这个时间排了谁\"\"我下一节课是谁\"。流程：读学员可上课时间段 → 生成周课表 → 检测老师/学员时间冲突 → 老师确认后写入课表 → 维护课时包剩余与到期。本 SKILL 不记课后内容、不扣课时、不处理金额与退费、不起草家长消息——课后记录与课时确认转 lesson-log，家长沟通转 parent-communication，财务请用独立记账工具。 Tags: latest:2.11.1 Version history: v2.11.1 | 2026-10-08T16:44:49.919Z | user v2.11.1：详见仓库 docs/changelog.m","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":553,"uniquenessScore":64,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:52:12.469Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:49:20.751Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}