| name | expand |
| version | 1.0.0 |
| description | 扩写师:把薄的地方写厚。补段落、补分析、补解释、补过渡。
触发词:"扩写"、"expand"、"写厚一点"、"太薄了"、"补充内容"、"展开说说"。
|
| allowed-tools | ["Read","Edit","Write","Bash","Grep","Glob","AskUserQuestion"] |
/expand — 扩写师
设计哲学
好的学术段落像一块砖:4-7 句话,自成一体,承上启下。
薄的段落像一张纸,读者一翻就过去了,什么都没留下。
扩写不是注水。每一句新增的内容都必须提供信息增量——
要么解释了一个"为什么",要么补充了一个证据,要么指出了一个边界条件。
如果找不到信息增量,就不该扩写,而是标记为"内容完整,无需展开"。
Step 0:加载配置
CONFIG=""
for candidate in ".thesis/config.json" "../.thesis/config.json" "../../.thesis/config.json"; do
if [ -f "$candidate" ]; then
CONFIG="$(cd "$(dirname "$candidate")" && pwd)/$(basename "$candidate")"
break
fi
done
if [ -z "$CONFIG" ]; then
echo "ERROR: 未找到 .thesis/config.json"
echo "请先运行 /thesis-init 初始化论文项目"
exit 1
fi
echo "CONFIG: $CONFIG"
THESIS_DIR=$(python3 -c "import json; print(json.load(open('$CONFIG'))['thesis_dir'])")
CHAPTERS_DIR=$(python3 -c "import json; print(json.load(open('$CONFIG'))['chapters_dir'])")
BUILD_CMD=$(python3 -c "import json; print(json.load(open('$CONFIG'))['build_command'])")
WORKSPACE=$(python3 -c "import json; print(json.load(open('$CONFIG'))['workspace_dir'])")
echo "THESIS_DIR: $THESIS_DIR"
echo "CHAPTERS_DIR: $CHAPTERS_DIR"
echo "WORKSPACE: $WORKSPACE"
如果 preamble 输出 ERROR,立即停止并提示用户运行 /thesis-init。
Step 1:确定扩写目标
使用 AskUserQuestion 确认:
- 目标章节(c1-c5,或指定行号范围)
- 扩写模式:
- Auto:自动扫描全章,找出所有需要扩写的薄弱点
- Targeted:用户指定具体段落或问题
默认推荐 Auto。
Step 2:薄弱点扫描
读取目标章节,按以下 5 类薄弱模式逐一检测:
模式 A:超短段落
检测:正文段落不足 3 句(排除 LaTeX 命令行、列表项、图表环境)。
扩写策略:根据段落所在位置选择扩写方向——
- 方法描述段:补设计动机("为什么这样做而不那样做")
- 公式解释段:补物理直觉("这个公式意味着什么")
- 实验结果段:补原因分析("为什么出现这个结果")
- 过渡段:补逻辑桥梁("上一节的结论如何引出下一节的问题")
模式 B:公式后缺解释
检测:\end{equation} / \end{align} 后的第一段不足 2 句,或只有"其中 $x$ 是…"的符号罗列。
扩写策略:每个关键公式后至少补两层解读:
- 形式层:这个公式在数学上做了什么操作(如"对损失取绝对值后做批内归一化")
- 直觉层:这对实际效果意味着什么(如"损失越大的状态获得越高的权重,训练资源向难点集中")
可选的第三层:
3. 边界层:什么情况下这个设计会失效或需要调整(如"当批内所有样本损失相近时,归一化后权重趋于均匀")
模式 C:实验分析浅
检测:实验结果段落中只有数字陈述("A 在任务 T 上得分 X,比 B 高 Y%")而缺少原因分析。
判定标准:一个完整的实验分析段应包含四步链:
- 报数字:A 在任务 T 上得分 X,比 B 高 Y%
- 解释原因:因为 A 的某个机制在 T 的某个特性下起了作用
- 给佐证:消融实验 / 其他任务的对比 / 可视化证据印证了这一点
- 说影响:这说明我们的设计假设是正确的 / 这个场景下还有局限
如果只有第 1 步 → 标记为"分析浅"。如果有 1+2 但缺 3+4 → 标记为"分析中等,可深化"。
扩写策略:
- 缺原因:根据方法设计原理推导为什么在该任务上有效
- 缺佐证:引用论文中的消融实验或其他任务的一致性结论
- 缺影响:说明结果对方法适用范围的启示
注意:如果确实没有数据支撑某个因果解释,不要编造。改为"我们推测…,这一假设有待进一步验证",或标记为 NEEDS_DATA 让作者补充。
模式 D:章节间缺过渡
检测:\xsection 或 \xsubsection 标题后的第一段直接进入技术描述,没有从上一节的结论过渡。
扩写策略:在新节开头补 1-2 句过渡,结构为:
- "上一节解决了 X 问题,但留下了 Y 问题" → "本节针对 Y 提出…"
- 或:"上述方法在 A 场景下有效,但面对 B 场景时…" → "本节将方法扩展到…"
注意:过渡句不能是"综上所述"式的AI套话。必须具体点明上下节之间的逻辑关系。
模式 E:方法描述缺动机
检测:方法小节开头直接描述"怎么做",没有先说"为什么要做"。
典型问题:
- "某方法模块包含一个独立的辅助网络…" → 直接说结构,没说为什么需要独立网络
- "我们引入方差正则化项…" → 直接说做了什么,没说为什么需要正则化
扩写策略:在技术描述前补 1-2 句动机:
- "如果不这样做会有什么问题?"
- "现有方法在这个点上的不足是什么?"
- "什么观察/实验现象驱动了这个设计?"
Step 3:生成扫描报告
输出格式:
扩写扫描报告 — cX.tex
══════════════════════════════════════
扫描到 N 处薄弱点:
A类(超短段落):X 处
B类(公式缺解释):X 处
C类(实验分析浅):X 处
D类(缺过渡):X 处
E类(方法缺动机):X 处
──────────────────────────────────────
[A] 行 XX: 段落仅 2 句(方法描述段)
→ 建议补充:设计动机 + 与替代方案的对比
[B] 行 YY: 公式 eq:xxx 后仅"其中$x$是…"一句符号解释
→ 建议补充:直觉层解读 + 边界条件
[C] 行 ZZ: 实验分析只有数字,缺原因
→ 建议补充:机制解释 + 消融佐证
[D] 行 WW: §4.3 开头无过渡,直接进技术描述
→ 建议补充:从 §4.2 结论引出 §4.3 的问题
──────────────────────────────────────
Step 4:用户确认
使用 AskUserQuestion 展示扫描结果,让作者选择:
- A) 全部扩写(推荐)
- B) 选择性扩写(排除某些项)
- C) 只看报告不改
Step 5:执行扩写
对作者确认的每一处:
- 读取原文上下文(前后各 10 行),理解当前段落在全章中的位置和角色
- 生成扩写内容,严格遵循以下原则:
扩写质量标准
必须做到:
- 每句新增内容都有信息增量(解释了"为什么"、补充了证据、指出了边界)
- 扩写后段落 4-7 句,聚焦一个论点
- 保持与上下文的语气和技术深度一致
- 所有技术陈述必须与论文已有内容自洽(不编造新实验数据)
绝不能做:
- 注水(用更长的句子说同样的事)
- 编造数据(如果没有实验支撑就标 NEEDS_DATA)
- 引入 AI 套话("值得注意的是"、"综上所述"等)
- 改变原文的技术含义
扩写模板
A 类(超短段落扩写):
原文:[2句话的技术陈述]
扩写:
[保留原文第1句]
+ [补充设计动机:为什么这样做]
+ [补充与替代方案的对比:不这样做会怎样]
[保留原文第2句]
+ [补充效果说明:这个设计带来什么具体好处]
B 类(公式后扩写):
原文:公式 + "其中$x$是…"
扩写:
[保留公式和符号解释]
+ [形式层:这个公式在做什么操作]
+ [直觉层:物理/工程直觉是什么]
+ [可选-边界层:什么条件下失效]
C 类(实验分析扩写):
原文:"A 比 B 高 X%"
扩写:
[保留数字陈述]
+ [原因:A 的哪个机制在这个任务特性下起了作用]
+ [佐证:消融实验/其他任务的一致表现]
+ [影响:这说明了什么/局限是什么]
D 类(过渡句补写):
新增 1-2 句在节首:
[上一节解决了什么/证明了什么]
+ [但留下了什么问题/引出了什么新需求]
E 类(动机补写):
在技术描述前新增 1-2 句:
[如果没有这个设计,会出现什么问题]
+ [现有方法在这个点上的不足]
Step 6:验证扩写质量
每处扩写完成后自检:
- 新增内容是否每句都有信息增量?(如果有一句可以删掉不影响理解 → 删掉)
- 是否引入了 AI 套话?(对照 /deai 的高频词表检查)
- 扩写后段落是否在 4-7 句范围内?(过长则拆分)
- 技术内容是否与论文其他部分自洽?
安全红线
- ❌ 不编造实验数据——没有数据支撑的分析标记 NEEDS_DATA
- ❌ 不改原有技术内容的含义
- ❌ 不引入 AI 套话(维度 1-9 的检测词表全部适用)
- ❌ 不改
\label{}、\ref{}、\cite{} 内部标识符
- ❌ 不一次性替换超过 30 行
- ✅ 每处扩写立即 Edit 写入
- ✅ 扩写基于上下文,不脱离原文语境
收尾协议(完成后必须执行)
每次 skill 执行完毕后,无论结果如何,必须执行以下四步:
0. 编译验证(修改 tex 文件后必须执行)
- 进入论文工程目录:
cd "$THESIS_DIR"
- 执行编译:
$BUILD_CMD
- 检查编译结果:0 errors = 通过,有 error = 立即定位修复
- 记录编译状态到进度文件
1. 更新问题清单 $WORKSPACE/issues.md
- 本次发现的新问题(如 NEEDS_DATA 标记):追加到"待处理"区
- 本次解决的问题:从"待处理"移到"已解决"
- 未变化的问题:不动
2. 更新进度文件 $WORKSPACE/progress.md
- 在"完成记录"区追加一行:
- YYYY-MM-DD HH:MM /expand — 执行摘要(N处扩写)
- 如果任务看板中有对应任务项,更新其状态
3. 保存报告(如有输出)
- 报告保存到
$WORKSPACE/reports/ 目录
- 文件名格式:
YYYYMMDD-expand-cX.md
Completion Status
- DONE — 所有薄弱点已扩写,质量自检通过,编译通过
- DONE_WITH_CONCERNS — 扩写完成但部分处标记 NEEDS_DATA(需作者补充实验数据)
- BLOCKED — 目标文件不存在或内容为空
- NEEDS_CONTEXT — 扩写需要参考其他章节的信息(如消融实验数据在另一章)