---
description: 课程大纲创作 - 自动分章生成
scripts:
  sh: ../../scripts/bash/outline.sh
  ps1: ../../scripts/powershell/outline.ps1
---

# /outline - 课程大纲创作系统 📋

> **核心功能**: 自动逐章生成课程大纲
> **新特性**: 分章保存,断点续传,防止生成中断

---

## 第一步: 运行脚本获取状态 ⚠️ 必须执行

```bash
# AI 操作: 运行脚本
bash scripts/bash/outline.sh
```

### 解析返回结果

脚本返回:
- `outlines_dir`: 大纲目录路径 (`outlines/`)
- `total_chapters`: 总章节数
- `completed_chapters`: 已完成的章节列表
- `current_chapter`: 当前要生成的章节
- `failed_chapters`: 生成失败的章节列表
- `spec`, `objective`, `structure`: 课程配置
- `progress_file`: 进度文件路径

---

## 第二步: 检测生成进度 ⚠️ 必须执行

### 如果 completed_chapters 不为空 (有未完成的生成)

**展示断点恢复界面**:

```
╔══════════════════════════════════════════════════════════╗
║           检测到未完成的大纲生成                             ║
╚══════════════════════════════════════════════════════════╝

📊 生成进度: [completed 数量] / [total_chapters] 章

✅ 已完成:
  • 第[N]章: [标题]
  • ...

🔄 当前章节: 第[current_chapter]章

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

请选择:
  1. ✅ 继续生成 (从第[current_chapter]章开始)
  2. 🔄 重新生成第[current_chapter]章
  3. 📋 查看已生成的大纲
  4. 🎯 从其他章节开始

请输入 (1-4):
```

**⚠️ 等待用户选择**

**处理用户选择**:
- **选择 1**: 继续执行第三步
- **选择 2**: 删除该章文件,继续执行第三步
- **选择 3**: 读取并显示已完成的章节文件内容,然后询问是否继续
- **选择 4**: 询问从哪章开始,然后继续执行第三步

### 如果 completed_chapters 为空 (首次生成)

**展示开始界面**:

```
╔══════════════════════════════════════════════════════════╗
║              开始生成课程大纲                                ║
╚══════════════════════════════════════════════════════════╝

📋 课程: [course_name]
📚 总章节: [total_chapters] 章

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💡 生成策略:
  • 逐章生成,每章保存到独立文件
  • 自动保存进度,支持断点续传
  • 生成失败可单独重试

开始生成? (y/n):
```

**⚠️ 等待用户确认**

---

## 第三步: 逐章生成大纲 ⚠️ 必须执行

### 自动化生成循环

从 `current_chapter` 开始,循环生成每一章:

#### 单章生成流程

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【生成第[N]章 / 共[total]章】

进度: [████░░░░░░] [N]/[total]

参考信息:
  • 章节标题: [从 structure 读取]
  • 预计时长: [从 structure 读取]
  • 课时数: [从 structure 读取] 个
  • 学习目标: [从 objective 读取相关内容]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🤖 AI 正在生成第[N]章大纲...
```

#### AI 生成大纲内容

**生成要求**:

根据以下信息生成该章的详细大纲:

1. **章节标题**: [从 structure.chapters[N].title 获取]
2. **预计时长**: [从 structure.chapters[N].duration 获取]
3. **课时信息**: [从 structure.chapters[N].lessons 获取]

**大纲格式**:

```markdown
# 第[N]章: [标题]

> 预计时长: [duration]

## 章节概述

[简要说明本章的学习目标和重点内容,2-3句话]

## 学习目标

学完本章,你将能够:
- [目标1]
- [目标2]
- [目标3]

## 详细内容

### [N].1 [课时1标题] - [时长]

**内容要点**:
- [要点1]
- [要点2]
- [要点3]

**教学重点**:
- [重点1]
- [重点2]

**实践环节**:
- [练习/案例/demo]

---

### [N].2 [课时2标题] - [时长]

**内容要点**:
...

---

## 章节总结

- [总结要点1]
- [总结要点2]

## 思考题

1. [问题1]
2. [问题2]

## 延伸阅读

- [资源1]
- [资源2]
```

#### 保存章节大纲

**AI 操作**: 使用 Write 工具保存生成的内容

```
Write: outlines/chapter-[N,补零].md
Content: [上面生成的大纲内容]
```

例如: `outlines/chapter-01.md`, `outlines/chapter-02.md`

#### 更新进度文件

**AI 操作**: 更新 `outline-progress.json`

```json
{
  "total_chapters": [total],
  "completed": [[N], [已完成章节列表]],
  "current": [N+1],
  "failed": [],
  "updated_at": "[当前时间]"
}
```

**显示进度**:

```
✅ 第[N]章已保存到: outlines/chapter-[N].md

[如果还有未完成章节]
继续生成第[N+1]章...

[如果已完成所有章节]
跳转到第四步
```

#### 循环直到所有章节完成

重复上述流程,直到 `current_chapter` > `total_chapters`

---

## 第四步: 生成完成总结 ⚠️ 必须执行

所有章节生成完成后,展示总结界面:

```
╔══════════════════════════════════════════════════════════╗
║              ✅ 课程大纲生成完成!                             ║
╚══════════════════════════════════════════════════════════╝

📊 生成统计:
  • 总章节: [total_chapters] 章
  • 成功生成: [completed 数量] 章
  • 失败: [failed 数量] 章

📁 文件位置:
  • outlines/
    ├── chapter-01.md
    ├── chapter-02.md
    └── ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💡 下一步建议:

  1. /content - 开始创作详细内容
  2. /review - 评估大纲质量
  3. 手动查看和编辑大纲文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

**任务完成** ✅

---

## 错误处理

### 如果某章生成失败

1. **标记失败**: 更新 `progress_file`,将该章加入 `failed` 列表
2. **显示错误**:
   ```
   ❌ 第[N]章生成失败: [错误信息]

   已保存进度,可稍后使用 /outline --retry [N] 重新生成该章

   是否继续生成下一章? (y/n):
   ```
3. **等待用户选择**:
   - `y`: 继续生成下一章
   - `n`: 退出,保存当前进度

---

## 高级用法

### 生成特定章节

用户可以直接指定章节:

```bash
/outline --chapter 5        # 只生成第5章
/outline --from 3          # 从第3章开始生成
/outline --retry 2         # 重新生成第2章
/outline --continue        # 从上次断点继续
```

**AI 处理**: 脚本已经处理了参数,AI 只需根据返回的 `current_chapter` 开始生成

---

## 重要提醒 ⚠️

### AI 的职责

1. **自动化生成**: AI 应该自动循环生成,不需要每章都询问用户
2. **保存文件**: 每章生成后立即使用 Write 工具保存
3. **更新进度**: 每章完成后立即更新进度文件
4. **错误恢复**: 生成失败时保存进度,方便用户重试
5. **清晰显示**: 实时显示进度,让用户了解当前状态

### 文件命名规范

- 章节文件: `chapter-01.md`, `chapter-02.md` (数字补零,两位)
- 进度文件: `.courseify/outline-progress.json`

---

**开始执行第一步** ⬇️
