忠于原文的中文摘要 Skill v1.0.0
把长文本压缩成可用的要点,且不撒谎。
设计取舍:本 Skill 的第一优先级是忠实度,不是流畅度,也不是"读起来很爽"。摘要可以笨拙、可以有"原文未提及",但不能有原文里不存在的信息。
一、两种输出模式
| 模式 | 触发方式 | 产出 |
|---|---|---|
| M1 简短 TLDR | 用户说"简短""几句话""太长不看""TLDR" | 3-5 句话总览,不超过 150 字,不列点 |
| M2 结构化(默认) | 未指定时默认 | 见下方分类型模板 |
> 用户未指定长度 → 走 M2。用户说"详细""完整""全一点" → 走 M2 且展开【关键细节】。
二、类型自动识别(路由)
读完全文后,按信号强度判定类型,不靠用户声明:
| 类型 | 判定信号(命中 ≥2 条即判定) | 加载范式 |
|---|---|---|
| F 小说/网文 | 有具名人物并发生对话;有场景/动作描写;有情节推进或悬念;第一/第三人称叙事 | references/fiction.md |
| N 新闻/案件 | 有明确时间点或时间线;有机构/地点/当事人;有事件起因经过结果;有信源表述 | references/news.md |
| G 通用 | 说明文、教程、会议记录、会话历史、报告、网页正文等 | references/general.md |
混合素材(如"案件改编的小说"):以用户意图为准做主类型,在【关键细节】里补另一类型的字段。不确定时直接问一句,不要猜。
三、执行流程
Step 1 · 输入识别与长度判断
- 判断来源:粘贴文本 / 文件路径 / URL(先取正文再摘要)/ 会话历史。
- 字数估算:
< 1500 字→ 一次成稿。1500–8000 字→ 分段读完全文,再统一成稿(禁止读一半就写)。> 8000 字→ 走分段-合并:按自然章节/语义块切分(每块 ≤3000 字)→ 每块产出 3-5 条要点 → 合并去重写总览。禁止只抽开头结尾。- 确认模式(M1 / M2)。用户没说就用 M2。
Step 2 · 原文锚定(最关键的一步)
动笔前,先把"硬信息"从原文里摘出来作为锚点清单:
- 具体数字、金额、比例、时间、日期、时长
- 人名、地名、机构名、作品名等专有名词
- 明确的因果句("因为…所以…""由于…导致…")
- 原文明确写出的结论与判断
锚点清单之外的东西,一律不许写进摘要。
Step 3 · 生成摘要
按类型加载对应范式文件,套用模板输出。
Step 4 · 忠实度自检
写完立刻过一遍 references/anti-hallucination.md 红线清单。
若原文与摘要都在本地文件里,跑脚本量化校验:
python scripts/faithful_check.py --source 原文.txt --summary 摘要.md
python scripts/faithful_check.py --source 原文.txt --summary 摘要.md --json
脚本会抽出摘要里的硬信息(数字、日期、专名、书名号、引文),逐项回原文比对,输出未命中项与覆盖率。出现未命中项 → 逐条核实:确属脑补的删掉,宁可留"原文未提及"。
四、忠于原文:六条红线
- 不新增实体 — 原文没出现的人名、地名、机构、作品,不许写。
- 不新增数字与时间 — 任何数量、金额、比例、日期必须是原文原值,不许估算、不许四舍五入成"约"。
- 不新增因果 — 原文只说 A 和 B 先后发生,就不能写"A 导致 B"。
- 不推测动机与心理 — 除非原文明确写出"他想…""因为…",否则不写人物心理。
- 不补结局、不补背景 — 素材截断就写"原文到此为止",禁止续写。
- 信息不足就明说 — 用「原文未提及」「原文此处模糊」占位,不用常识填空。
> 例外:用户明确要求"基于原文合理推测""帮我脑补后续"时,红线解除,但输出必须分区,推测部分单独放在【推测(非原文)】标题下,与事实区物理隔离。
五、输出格式
统一 Markdown,统一用中文全角标点。M2 通用骨架:
【TLDR总览】
3-5 句,覆盖最核心的信息。
【核心要点】
- 要点1
- 要点2
- 要点3
【关键细节】
- 原文中的具体数字、时间、原话
- F 小说:替换为
【情节主线】【人物关系】【冲突】【伏笔/悬念】,详见references/fiction.md。 - N 新闻/案件:替换为
【事件概览】【时间线】【关键人物】【起因-经过-结果】【争议点/待确认】,详见references/news.md。 - G 通用:替换为
【核心结论】【要点】【行动项】(有则加),详见references/general.md。
M1 时只输出【TLDR总览】一段,其余一律省略。
六、几条实操约定
- 引用优先:关键判断尽量用原文原句,加引号。原句比转述安全。
- 保留原文用词:专业术语、人名译名、作品名,照抄原文,不要"优化"。
- 不评价:除非用户要"点评",否则摘要里不出现"这体现了""值得注意的是""意义重大"这类升华句。
- 长度克制:M2 总长控制在原文的 10%–20%。超了说明你在复述,不是摘要。
- 一次只做一件事:用户给的是"总结",就别顺手改写、润色、提建议。
七、文件结构
text-summarize/
├── SKILL.md # 本文件
├── references/
│ ├── fiction.md # 小说/网文摘要范式
│ ├── news.md # 新闻/案件摘要范式
│ ├── general.md # 通用/会话/会议摘要范式
│ └── anti-hallucination.md # 幻觉红线清单与自查表
├── scripts/
│ └── faithful_check.py # 忠实度校验(零依赖,标准库)
└── examples/
├── 原文.txt # 测试素材(186 字新闻)
├── 摘要_含脑补.md # 反例:改写时间 + 升华词 → 退出码 1
└── 摘要_干净.md # 正例:全部命中 → 退出码 0
立刻验证脚本可用:
cd ~/.workbuddy/skills/text-summarize
python scripts/faithful_check.py --source examples/原文.txt --summary examples/摘要_含脑补.md
# → 覆盖率 90%,抓出 [数字] 2点(原文为"14时")+ 2 处升华词,退出码 1
python scripts/faithful_check.py --source examples/原文.txt --summary examples/摘要_干净.md
# → 覆盖率 100%,退出码 0
八、与其他 Skill 的协作
- 摘要完成后要去 AI 味、改写成文 → 交给
ai-free-writing。 - 摘要对象是小说素材、后续要扩写 → 摘要里的【伏笔】【冲突】可直接喂给
novel-golden-outline。 - 摘要对象是社会热点、要写成头条文 → 先本 Skill 提取事实,再走
news-to-toutiao-writer。
> 边界:本 Skill 只做"压缩+保真",不做改写、不创作、不加观点。