# Session

> 管理学习会话的开始和结束。开始时指定项目并读取任务进度；结束时分析成果、确认任务完成状态、更新任务清单、自动整理笔记。当用户说"开始学习""继续学习""开始工作""今天做""收工""结束学习""今天做完了""先这样"时触发。

- Skill: `rainzzzyyy/session` (Agent Skill)
- Install (CLI): `npx skillmds@latest add rainzzzyyy/session`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rainzzzyyy/session/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: RainZZZYYY (https://skillmd.com/u/rainzzzyyy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rainzzzyyy/session

---


# 会话管理助手

在会话开始和结束时运行，串联任务清单读取 → 进度追踪 → 成果分析 → 任务更新 → 笔记整理，形成一次完整的学习闭环。

## 两个入口

| 入口 | 触发词 | 做什么 |
|------|-------|--------|
| **开始会话** | 开始学习、继续学习、开始工作、今天做、开始项目 | 读取进度、展示当前状态 |
| **结束会话** | 收工、结束学习、今天做完了、先这样、结束会话 | 分析成果、确认完成、更新清单、整理笔记 |

会话中用户也可能同时使用 `/obsidian-note` 和 `/add-task`，互不冲突。

---

## 入口一：开始会话

### 第 1 步：确定工作项目

如果用户在触发语句中指定了项目（如"继续做视觉工程学习"），直接定位。

如果没指定：
1. 读取 `10_项目/任务总控.md`，列出进行中的项目
2. 如果有**上次未结束的会话标记**（见第 5 步），优先提示"是否继续上次的工作？"
3. 只有一个项目时自动选定；多个项目时让用户选择

### 第 2 步：读取并展示任务进度

读取选定项目的 `任务清单.md`，展示当前状态：

```
📊 视觉工程学习 进度总览

第一阶段：基础环境与 Python 工程  ████░░░░░░ 4/9
  ✅ 1 ｜环境｜搭建 WSL2 + VS Code 开发环境
  ⬜ 2 ｜Git｜创建 GitHub 学习仓库
  ⬜ 3~9 — 7 个任务未开始

第二阶段：OpenCV 图像处理基础     ░░░░░░░░░░ 0/12

...后续阶段折叠...

🎯 建议：从任务 2「Git｜创建 GitHub 学习仓库」开始
```

建议逻辑：
- 优先推荐**上一个已完成任务的下一个**（按序号顺序）
- 如果用户说了想做的方向（如"我想做 OpenCV"），推荐对应阶段的第一个未完成任务
- 缩写展示：已完成和进行中的展开，未开始的大量任务折叠统计

### 第 3 步：展示本次建议任务详情

展开推荐任务（或用户指定的任务）的完整内容：

```
🎯 本次任务

2｜Git｜创建 GitHub 学习仓库
  学习内容：安装 Git，配置用户名邮箱，创建 GitHub 仓库并完成第一次提交
  理论点：Git 和 GitHub 的区别、工作区-暂存区-本地仓库-远程仓库、commit 的意义
  产出：GitHub 仓库、本地仓库关联、README.md 初版、第一次 commit
  完成标准：能使用 git status、能 git add/commit/push、GitHub 页面能看到代码
```

如果用户同时指定了多个任务（如"今天做任务 2 和 3"），逐一展开。

### 第 4 步：写入会话标记

在 `40_中间产物/` 下创建或更新 `当前会话.md`：

```markdown
---
project: 视觉工程学习
started: 2026-05-10
planned_tasks:
  - "2"
---

# 当前会话

正在处理：[[视觉工程学习/任务清单]]
本次计划完成任务：2
```

这个文件有两个作用：
- 下次"继续学习"时作为恢复点
- 会话结束时作为成果对比的参照

### 第 5 步：切换到工作模式

展示完状态后，不再干预，让用户自由工作。

---

## 入口二：结束会话

### 第 1 步：扫描对话，提取成果

回顾本轮对话，自动识别：

| 信号 | 说明 |
|------|------|
| 用户明确说"做完了""搞定了" | 对应的任务可能已完成 |
| 运行了命令、创建了文件 | 有实操产出 |
| 讨论了某个概念 | 有知识收获 |
| 踩了坑并解决 | 有经验积累 |
| 提到了某个任务的理论点/产出/完成标准 | 和具体任务高度相关 |

对照 `当前会话.md` 中记录的计划任务，以及对话中实际涉及到的任务。

### 第 2 步：逐任务确认完成状态

对每个可能涉及到的任务，逐一询问用户：

```
🔍 成果分析

本次计划：任务 2「Git｜创建 GitHub 学习仓库」
涉及产出：✅ GitHub 仓库已创建 ✅ 完成第一次 commit
匹配完成标准：3/4 — 尚未验证 GitHub 页面是否能看到 README

是否将此任务标记为已完成？
  [1] 是，已完成  [2] 部分完成，记录进度  [3] 否，未完成
```

**部分完成**的处理：
- 任务不打勾 `[x]`，但追加进度备注
- 示例：`（已完成 3/4：GitHub 页面待验证）`

**对话中涉及了计划外的任务**（比如本来说做任务 2，结果顺便把任务 3 的 Python 环境也配了）：
- 同样询问"任务 3 是否也完成了？"
- 不给用户遗漏成果的机会

### 第 3 步：写入任务清单

根据用户确认，更新 `任务清单.md`：
- 打勾 `[x]` 已完成的任务
- 补上产出链接
- 部分完成的追加备注

同步更新 `任务总控.md` 中的进度数字。

### 第 4 步：更新学习画像

读取 `40_中间产物/学习画像.md`，根据本次会话确认完成的任务，更新技能矩阵：

- 已完成任务涉及的领域 → 根据完成质量和数量判断是否升级（⬜ → 🟡，🟡 → 🔴）
- 阶段内任务全部完成 → 该领域至少升为 🔴 掌握
- 阶段内任务部分完成 → 该领域标注为 🟡 熟悉
- 更新 `updated` 日期

升级判断标准：
- 该领域第一次有任务完成 → ⬜ → 🟡 熟悉
- 该领域完成了一半以上任务 → 🟡 → 🔴 掌握
- 用户确认了"部分完成" → 保持当前等级

```
📊 学习画像已更新：
  Python：🟡 熟悉 → 🟡 熟悉（未变化，任务 3 进行中）
  WSL/Linux：保持在 🟡 熟悉
```

### 第 5 步：删除会话标记

删除 `40_中间产物/当前会话.md`，表示本次会话正常结束。

### 第 6 步：调用笔记整理

**自动触发** `/obsidian-note` 技能，将本次会话的操作过程和理解收获整理成笔记。

展示一句话提醒：
```
📝 接下来为你整理本次会话的笔记...
```
然后直接执行 obsidian-note 的技能流程（扫描对话 → 拆内容 → 先搜再建 → 确认 → 写入）。

---

## 附加建议（供用户考虑是否加入）

| 建议 | 说明 |
|------|------|
| **中途切换任务** | 会话中用户说"换个任务"，复用开始入口重新读取状态，不结束当前会话 |
| **会话中断恢复** | `当前会话.md` 的存在即表示上次未正常结束。下次"开始学习"时检测到该文件，提示恢复 |
| **今日用时统计** | 结束会话时根据对话历史粗略估算每个任务耗时，追加到日记中（如 `用时：约 45 分钟`） |
| **周复盘入口** | 每周结束时统计本周完成任务数、产出的笔记数、总用时，生成周复盘摘要 |
| **阻塞标记** | 如果任务因外部原因阻塞（如"等数据集到位"），支持标记 `[b]` blocked，不计入未完成 |
| **最小进度记录** | 即使任务完全没动，也记录"今日未推进"，避免连续多天空白 |

---

## 原则

- **会话是学习和笔记之间的桥梁** — 开始时有目标，结束时有成果，笔记是成果的沉淀
- **不替用户决定完成** — 任务是否完成由用户确认，大模型只做分析建议
- **宁可多问一个也不漏一个** — 计划外的任务成果也要抓出来
- **状态文件轻量** — `当前会话.md` 只是一个恢复标记，不是复杂的状态机
- **与 obsidian-note 无缝衔接** — 结束会话时自动进入笔记整理流程，用户不需要分开操作

