- name
- session-summary
- description
- 总结当前会话的学习/开发内容,生成高质量的 md 文档。适用于服务器上的 Claude Code、
Codex CLI、Cursor 等 AI 工具会话结束时,将对话中的知识沉淀为可回顾、可分享的文档。
触发词:总结、summary、回顾、沉淀、记录下来、wrap up。
# session-summary - 会话学习总结器
> 在服务器上对话/开发结束时调用,将本次会话中学到的知识写成一篇**有深度、有温度、有干货**的文章。目标是:未来的自己能快速回忆起来,别人读了也能真正学到东西。
## 触发条件
- 用户说"总结一下"/"帮我总结"/"wrap up"/"记录下来" → **默认风格(个人笔记)**
- 用户说"写个专业版"/"正式版"/"给领导看的"/"汇报用" → **专业风格**
## 输出
在当前目录生成 md 文件:`summary-YYYYMMDD-主题slug.md`
---
## 风格选择
本 skill 支持两种写作风格,根据触发词自动判断,或在生成时询问用户:
| 风格 | 触发词 | 适用场景 | 核心特征 |
|------|--------|----------|----------|
| **个人笔记**(默认) | 总结、wrap up、记录 | 自己回顾、分享给同事 | 有人味、有故事感、保留思考过程 |
| **专业汇报** | 正式版、给领导看、汇报、专业 | 上传给领导/写入文档 | 逻辑严密、体系化、体现系统思维 |
---
## 风格一:个人笔记(默认)
### 写作哲学
**这不是填表,是写文章。**
生成的内容应该像一个技术功底深厚的人写给朋友看的学习笔记——有思考过程,有恍然大悟的瞬间,有踩坑的真实感受,偶尔也有调侃和吐槽。读起来不累,放下后有收获。
### 反面教材(不要这样写)
```markdown
### 关键要点
- ✅ 要点 1:xxx
- ✅ 要点 2:xxx
### 核心结论
xxx
| 维度 | A | B |
|------|---|---|
```
这种写法的问题:看起来信息密度高,实际上**读完记不住**。因为没有上下文、没有推导过程、没有情感连接,大脑不会对此产生深刻记忆。
### 正面示范(要这样写)
```markdown
之前一直有个困惑:为什么 vllm 的 DP 不像训练那样简单地各跑各的?今天终于想通了——
训练时每个 batch 是提前切好的,大家自然同步;但推理时请求是随时涌进来的,你不知道
下一秒哪个 rank 有活干、哪个在发呆。偏偏集合通信要求所有人同时参与,一个人不到场
就全卡死。所以 vllm 发明了 wave 的概念:想象成冲浪,所有人必须在同一波浪上,
没浪可冲的人也得假装在冲(dummy batch),否则浪就过不去。
这个设计代价不小——空闲的 rank 要做无意义计算来"陪跑",但好处是架构简单、不容易死锁。
比起让每个 rank 自由地异步跑(那样 all-reduce 怎么办?),这是一个务实的工程妥协。
```
## 写作规则
### 1. 段落优先,结构化为辅
- **默认用段落叙述**,像讲故事一样展开
- 只在确实需要对比、查阅时才用表格
- 只在步骤确实是线性顺序时才用列表
- 代码片段保留,但必须有前后文解释**为什么看这段代码**、**它在解决什么问题**
### 2. 保留思考过程
- 写出"我原来以为是 A,后来发现其实是 B"的转折
- 写出"最初不理解 X,后来通过 Y 的类比才想通"的恍然大悟
- 写出"这里有个坑,表面上看起来是 P,但实际原因是 Q"的踩坑体验
- 这些才是让文章**有人味、有记忆点**的东西
### 3. 干货要干到骨头里
- 不要"提到了 X",要"解释清楚 X 是什么、为什么需要它、它怎么工作"
- 不要浮于表面的概述,要深入到"读完这段就能跟别人讲明白"的程度
- 关键代码不仅要贴出来,还要逐行解释设计意图
- 如果某个概念有多种理解角度,选最直觉的那个展开
### 4. 为"一周后的自己"写作
想象你一周后再看这篇文章,那时你已经忘了大部分细节。问自己:
- 这篇文章能让我 3 分钟内回忆起当时学了什么核心东西吗?
- 如果我要给同事讲这个话题,这篇文章够用吗?
- 有没有哪些信息是"当时觉得显然、一周后就想不起来"的?(那些必须写下来)
### 5. 文章结构(灵活运用,不是死板模板)
一篇好的总结文章通常有这些元素(但顺序和形式可以根据内容灵活调整):
- **开头**:一两句话说清楚"今天搞的是什么、为什么要搞它"
- **核心理解**:用自己的话把学到的东西讲清楚,这是文章的主体。像跟朋友聊天一样自然展开,遇到复杂概念就用类比、用图、用代码辅助解释
- **关键细节/代码**:贴出最核心的代码片段,配合解释。不是所有代码都贴,只贴那些"不看代码说不清楚"的
- **踩坑/易错点**:以叙述方式写,不是列表。"我最初以为...,结果发现..."
- **还没搞懂的**:诚实地标出来,下次继续
### 6. 语言风格
- 中文为主,技术术语保留英文(如 all-reduce、dummy batch)
- 口语化但不随意——像技术博客,不是聊天记录
- 可以有个人感受("这个设计真的很巧妙"、"这里的命名太容易误导了")
- 避免空洞的形容词("非常重要"→ 说清楚为什么重要)
## Frontmatter
```yaml
---
title: "具体的标题,不要泛泛"
date: YYYY-MM-DDTHH:MM:SS+08:00
tags: [具体的技术标签]
type: note
status: draft
source: server
session_tool: claude-code|codex|cursor
description: "一句话说清楚这篇文章讲了什么"
---
```
## 文件命名
```
summary-YYYYMMDD-具体主题slug.md
# 好的命名
summary-20260505-vllm-dp-wave-and-dummy-batch.md
summary-20260505-deepseek-moe-expert-parallel.md
# 不好的命名
summary-20260505-learning.md (太泛)
summary-20260505-vllm.md (不具体)
```
## 处理流程
### 个人笔记风格
1. 回顾会话中的所有对话,识别核心知识点
2. 在脑中构建"如果跟朋友讲这个话题,我会怎么展开"的叙事线
3. 按照写作规则,用段落式写作把内容展开
4. 关键代码和图表作为辅助穿插其中
5. 生成文件,输出摘要提示
### 专业汇报风格
1. 回顾会话内容,提炼出**一条主线**(这次解决了什么问题 / 理解了什么系统)
2. 构建逻辑链:问题 → 约束 → 方案 → 实现 → 权衡 → 结论
3. 按逻辑链写作,确保每一段的存在都有前文铺垫
4. 精选代码和图表作为论据(不是装饰)
5. 结尾给出有判断力的结论和启发
6. 生成文件(文件名加 `-report` 后缀)
## 输出提示格式
```
✅ 已生成: ./summary-20260505-vllm-dp-wave-and-dummy-batch.md
这篇主要讲了:vllm 推理 DP 为什么需要 wave 同步机制——异步请求 vs 同步集合通信的矛盾,
以及 dummy batch、DP padding 这些工程妥协背后的设计思考。
💡 传到本地后用 server-digest 归档
```
## 与 server-digest 的配合
本 skill 在服务器端生成 md 文件 → 用户传到本地 → 本地用 server-digest skill 归档到 Obsidian 知识库 + 可选同步 iwiki。
---
## 风格二:专业汇报
当用户说"写个专业版"、"正式版"、"给领导看的"、"汇报用的"时,切换到此风格。
### 写作哲学
**这是写给上级和协作者看的技术文档——体现的是你的系统思维能力和工程判断力。**
读完这篇文档,领导应该能感受到:这个人不只是"学了个东西",而是**理解了为什么这么设计、它解决什么问题、它的权衡是什么、对我们的工作有什么启发**。
### 与个人笔记的区别
| 维度 | 个人笔记 | 专业汇报 |
|------|----------|----------|
| 读者 | 未来的自己、平级同事 | 领导、跨团队协作者 |
| 语气 | 口语化、有个人感受 | 正式但不刻板、克制而有力 |
| 结构 | 随叙事自然展开 | **严格的逻辑链:问题→分析→方案→权衡→结论** |
| 重点 | 学到了什么、怎么想通的 | **为什么重要、对我们意味着什么、建议怎么做** |
| 细节 | 保留踩坑和恍然大悟 | 只保留支撑结论的关键证据 |
| 代码 | 核心片段 + 个人注释 | 精选片段 + 设计意图分析 |
### 写作规则
#### 1. 逻辑链必须完整且显性
每一段话都要让读者知道"我为什么在这里讲这个"。段与段之间的衔接关系要明确——是因果、是递进、是转折、还是并列。绝不允许出现"知识点的堆砌",每个概念的引入都必须有前文铺垫。
好的衔接示例:
```
上面解释了 wave 机制如何解决"异步请求 vs 同步通信"的矛盾。但这引出了一个新问题:
如果某个 rank 没有请求要处理,它怎么参与集合通信?这就是 dummy batch 的设计动机。
```
差的写法:
```
## Wave 机制
(一段解释)
## Dummy Batch
(另一段解释,跟上面没有显性连接)
```
#### 2. 先讲"为什么",再讲"是什么"
领导不关心实现细节本身,他关心的是:**这个设计在解决什么工程问题?它做了什么取舍?有没有更好的方案?为什么选了这个?**
结构上要做到:
- 先给出问题场景(一两句话就能让人理解痛点)
- 再给出解决方案(核心思路,不是所有细节)
- 最后分析权衡(代价是什么、在什么条件下成立)
#### 3. 体现系统思维
不要孤立地描述单个组件,而要**展示组件之间的关系和互相约束**。让读者看到一个完整的系统是如何被一层层设计出来的,每一层为什么不能省略。
好的系统思维体现:
```
DP Coordinator 负责唤醒空闲 rank(异步安全),gloo all_reduce 负责判断 wave 结束
(同步屏障)。两者的分工不是任意的——Coordinator 只在没有 forward 运行时介入,
避免与 NCCL 通信冲突;而 wave 结束判断必须严格同步,因为判断之后的下一步就是
停止 forward,任何时序偏差都会导致集合通信死锁。
这种"异步唤醒 + 同步收尾"的组合模式,本质上是对"请求异步到达"和"forward 同步执行"
两种矛盾需求的分治处理。
```
#### 4. 结论要有洞察,不只是总结
不要写"综上所述,我们了解了 X、Y、Z"。要写出**你的判断**:
```
vLLM DP 的核心 trade-off 是用工程复杂度换硬件并发。这个方案在当前阶段是务实的
选择——wave 机制虽然引入了 dummy batch 的算力浪费和单点故障传播风险,但它保证了
实现简单性和死锁不可能性。如果未来要优化,方向可能是更细粒度的异步调度
(如 per-layer 同步而非 per-step),但代价是极大的代码复杂度和更难调试的死锁场景。
```
#### 5. 适度使用结构化元素
专业文档中,结构化是合理的——但要服务于逻辑,不是为了"看起来整齐":
- **架构图/流程图**:展示系统全貌时使用,配合文字说明
- **对比表**:展示设计权衡时使用(方案 A vs B,维度明确)
- **代码片段**:只在"不看代码说不清设计意图"时使用,必须有上下文
- **编号列表**:只在确实有先后顺序或层级关系时使用
#### 6. 语言风格
- 正式但不官僚——像技术评审会上的发言,不是公文
- 有判断、有立场——"我认为"、"关键区别在于"、"这意味着"
- 避免模糊表述——不说"比较复杂",说清楚"复杂在哪里、为什么不可避免"
- 可以有类比,但要精准——类比是为了让领导快速建立直觉,不是为了显得生动
### 文章结构(专业汇报)
```markdown
# 标题(明确主题 + 核心结论)
## 背景与问题
为什么要研究这个?它解决什么实际问题?跟我们的工作有什么关系?
(2-3 段,让领导在 30 秒内理解上下文)
## 核心设计 / 技术方案
系统是如何解决这个问题的?核心思路是什么?
(主体部分,按逻辑链展开,每引入一个概念都要交代"为什么需要它")
## 关键实现细节
支撑上述设计的代码级证据(精选,不贪多)
## 设计权衡与局限
这个方案付出了什么代价?在什么条件下成立?有没有替代方案?为什么没选?
## 结论与启发
对我们自己的项目/工作有什么参考价值?
(有判断、有建议、有前瞻)
```
### 正面示范(专业风格开头)
```markdown
# vLLM 数据并行的协调机制:如何在异步推理中实现同步通信
## 背景与问题
推理服务的数据并行(DP)面临一个训练阶段不存在的矛盾:请求异步到达,但模型内部的
集合通信(all-reduce、all-to-all)要求所有参与 rank 同步执行。训练时这不是问题——
每个 batch 提前切好,所有 rank 天然同步;但推理时请求流是完全异步的,任意时刻各 rank
的负载可能完全不同。
如果某个 rank 没有请求要处理,它无法参与集合通信,导致其他 rank 阻塞——这就是
推理 DP 必须解决的核心工程问题。vLLM v1 为此设计了一套完整的协调机制,本文分析
其设计思路和工程权衡。
```
### 文件命名(专业风格)
```
summary-YYYYMMDD-主题slug-report.md
# 示例
summary-20260506-vllm-dp-coordination-report.md
summary-20260506-moe-ep-communication-analysis-report.md
```
后缀加 `-report` 以区分个人笔记版本。
GitHubで見る