Fabric 模式剖析:extract_article_wisdom 系统提示词如何从任意文章中系统化萃取观点、金句与事实
导读
extract_article_wisdom 是 Fabric 开源仓库中一套用于"内容深度萃取"的 AI 模式(pattern),它把一篇可转为文本的文章(博客、论文、访谈、播客转录稿等)交给 LLM,按一套固定、可复现的规则产出 SUMMARY、IDEAS、QUOTES、FACTS、REFERENCES、RECOMMENDATIONS 六类结构化结果。阅读本文后,你将掌握该模式系统提示词逐段的运行机制、与仓库内其他"智慧提取"类模式的差异,以及它在 Fabric 中从文件存储到 CLI 调用的完整链路。
一、模式定位:解决"内容太多、时间太少、遗忘太快"
Fabric 的核心理念是"用众包 AI 提示词增强人类",每条 pattern 都收敛到一类具体问题,由同一目录下的 system.md(定义 AI 的角色、步骤与输出规范)和 user.md(定义用户侧输入占位)共同构成。extract_article_wisdom 正是该体系下的典型一员。
在仓库中,该模式位于 data/patterns/extract_article_wisdom/,由三个文件组成:
| 文件 | 作用 |
|---|---|
system.md |
本文分析的核心:定义身份、执行步骤与输出约束 |
user.md |
用户侧输入,仅包含 CONTENT: 占位符 |
README.md |
描述模式背景、功能与输出示例的配套说明 |
其解决的实际痛点与配套 README.md 中的表述一致:输入内容太多而时间太少,且阅读、观看或收听过的内容太容易被遗忘。extract_article_wisdom 的产出可服务于两大用途——时间过滤(快速判断内容是否值得精读)与笔记替代(省去耗时的手动摘录)。
二、system.md 逐段拆解:身份与执行步骤
system.md 全文分四个区块:IDENTITY and PURPOSE、STEPS、OUTPUT INSTRUCTIONS、INPUT。
2.1 IDENTITY and PURPOSE
You extract surprising, insightful, and interesting information from text content.
角色定义只有一句话,却包含了全部价值判断标准:只从文本中提取"令人惊讶的、有洞见的、有趣的"信息。这意味着该模式不是做全文摘要,而是以"信息增量与启发度"为筛选主轴的萃取器。
文件紧接着要求模型退一步、逐步思考,以保证输出质量:
Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
2.2 STEPS:六个萃取章节的完整规范
STEPS 区块定义了模型必须顺序执行的六步,每一步对应输出中的一个固定章节:
| 步骤 | 输出章节 | 数量要求 | 内容标准 |
|---|---|---|---|
| 1 | SUMMARY |
25 词以内 | 概括全文,必须包含内容创作者是谁以及讨论的主题 |
| 2 | IDEAS |
20~50 条 | 最令人惊讶、有洞见或最有趣的观点;若输入少于 50 条则全部收集,且至少 20 条 |
| 3 | QUOTES |
15~30 条 | 最令人惊讶、有洞见或有趣的原句,必须使用输入中的原文 |
| 4 | FACTS |
15~30 条 | 内容中提到的、关于更大世界的真实且有趣的事实 |
| 5 | REFERENCES |
无上限 | 全部提及的写作、艺术、工具、项目及其他灵感来源引用 |
| 6 | RECOMMENDATIONS |
15~30 条 | 从内容中可提炼出的推荐事项 |
几个值得注意的设计细节:
- SUMMARY 强制带作者/来源归属:要求包含"who created it",让摘要具有可溯源上下文,而不是孤立的内容梗概。
- 数量采用区间+下限双约束:
IDEAS同时出现区间(20~50)与下限(at least 20),当输入信息密度不足 50 时取全部但不下探到 20 以下,保证输出密度始终有底线。 - REFERENCES 无上限:这是唯一要求"收集全部"(any and all)的章节,体现对该类模式一贯"绝不漏掉任何值得追踪的灵感源"的取向。
- QUOTES 强调原文精确:反复出现 "Use the exact quote text from the input",禁止改写与二次转述。
2.3 OUTPUT INSTRUCTIONS:输出格式约束清单
在步骤之外,system.md 对输出格式给出了硬性约束,这段也是提示词工程中"可解析性设计"的范例:
- Only output Markdown:输出必须是纯 Markdown,方便后续程序解析与消费;
- Extract at least 10 items for the other output sections:除上述区间外,其余输出章节每项至少 10 条(当输入较短时充当兜底下限);
- Do not give warnings or notes; only output the requested sections:禁止输出警告或说明文字,只允许出现要求的章节,保证输出结构纯净;
- You use bulleted lists for output, not numbered lists:使用无序列表而非有序列表;
- Do not repeat ideas, quotes, facts, or references:观点、金句、事实与引用之间禁止重复;
- Do not start items with the same opening words:每条目不得以相同措辞开头,强制模型在措辞层面多样化,避免机械化模板腔;
- Ensure you follow ALL these instructions when creating your output:结尾再次强调完整性遵循。
末尾以 INPUT: 作为占位,等待拼接用户内容——这与用户侧文件的 CONTENT: 占位符前后呼应。
三、user.md 与拼接机制:system + user 如何构成一次完整对话
与仓库内大多数模式一致,user.md 内容极简,全文为:
CONTENT:
在 Fabric 的实际运行链路中,system.md 与 user.md 会被分别装载并作为聊天请求的 system/user 两个组成部分。系统提示词末尾的 INPUT: 与用户提示词中的 CONTENT: 构成了一个约定:调用方把待萃取的文章/转录文本填充在 CONTENT: 之后,模型读取后即视为 INPUT: 输入。因此,同一套 system.md 可以服务任意来源的文本——播客转录稿、学术论文、博客文章,只要是能落成文字的载体都能作为输入。
四、与仓库内"智慧提取"模式家族的对比
在 data/patterns/ 下,存在一个高度同源的模式族。经对比可见 extract_article_wisdom 相对它们做了明显的"减法"设计:
| 模式 | system.md 特点 |
|---|---|
extract_article_wisdom |
精简版:6 大章节(含 FACTS),无 16 词限长约束,最贴近"文章笔记"场景 |
| extract_wisdom | 经典版:额外增加 INSIGHTS、HABITS、ONE-SENTENCE TAKEAWAY |
| extract_wisdom_with_attribution | 带出处版:每条 QUOTE 需附说话者,格式 "Quote" — Speaker Name |
| extract_wisdom_nometa | 精简元信息版:取消 SUMMARY 中带作者的要求 |
| extract_wisdom_dm | 长提示词版:包含虚构高 IQ 设定、GOAL 区块与完整注释风格 |
尤其值得注意的差异在输出约束:extract_wisdom 家族多数要求 IDEAS、RECOMMENDATIONS、HABITS、FACTS、INSIGHTS 的每条目恰好 16 词,并强制 IDEAS 至少 25 条、INSIGHTS 至少 10 条;而 extract_article_wisdom 删去了 16 词限长与 INSIGHTS/HABITS/ONE-SENTENCE TAKEAWAY 三个章节,换取更自然流畅的产出。如果你的诉求是"读文章做可读性笔记",本模式是更适合的起点;如果需要深度访谈类的习惯与洞察抽取,应改用 extract_wisdom 或 extract_wisdom_dm。
另需留意:本目录 README.md 中的输出示例沿用了整个 extractwisdom 家族的早期文档形态(其中出现了 HABITS 章节),与本目录 system.md 定义的权威章节集合(无 HABITS)并不完全一致。撰写或引用时应以 system.md 为唯一准绳,README 仅作为该家族产出的形态参考。
五、仓库源码视角:模式文件如何被装载与执行
Fabric 将模式加载、管理与聊天调用的逻辑集中在 internal/ 下,extract_article_wisdom 的 system/user 文件正是经由这一链路被消费。
5.1 模式的存储约定
模式目录即数据源。internal/tools/patterns_loader.go 定义了:
const DefaultPatternsGitRepoUrl = "https://github.com/danielmiessler/fabric.git"
const DefaultPatternsGitRepoFolder = "data/patterns"
即 data/patterns 是模式在仓库中的默认落盘目录,每个子目录对应一条 pattern。而文件名约定 system.md 由数据库层常量固化,见 internal/plugins/db/fsdb/db.go:
SystemPatternFile: "system.md",
装载器通过 BuildFilePath(见 internal/plugins/db/fsdb/storage.go)在模式目录内拼接出完整文件路径,系统提示词与用户提示词由此分别读入。
5.2 CLI 调用链路
在 internal/cli/chat.go 中可以看到模式与模型的联动逻辑:
if currentFlags.Pattern != "" && currentFlags.Model == "" {
envVar := "FABRIC_MODEL_" + strings.ToUpper(strings.ReplaceAll(currentFlags.Pattern, "-", "_"))
它证实了两个工程细节:其一,CLI 通过 --pattern(即 -p)指定模式名;其二,可为单条模式绑定专属模型——环境变量名由 FABRIC_MODEL_ 前缀与模式名大写化拼接而成。若你希望 extract_article_wisdom 固定走某个更强推理的模型,可设置 FABRIC_MODEL_EXTRACT_ARTICLE_WISDOM=<模型名>,其余模式不受影响。
5.3 模式的收录与检索
该模式也被收录进仓库维护的模式说明索引中。data/patterns/pattern_explanations.md 第 127 条给出了一段便于检索的简介:
extract_article_wisdom: Extracts surprising, insightful, and interesting information from content, categorizing it into sections like summary, ideas, quotes, facts, references, and recommendations.
同时 scripts/pattern_descriptions/pattern_descriptions.json 与 pattern_extracts.json 中也有对应条目,可作为模式自动发现与搜索的基础数据。这说明一条 pattern 的发布不仅是写好提示词,还包括将其注册到仓库的元数据体系。
六、实战用法:把它接入自己的阅读流
在 Fabric 下使用该模式遵循统一调用范式——选定模式、喂入文本、指定输出:
# 方式一:命令行读取文本文件
fabric --pattern extract_article_wisdom < article.txt
# 方式二:管道串联其他工具的输出(如网页正文、转录文本)
cat article.md | fabric -p extract_article_wisdom -o wisdom.md
参考该目录 README.md 对输出用途的说明,典型工作流是把模式产出的六章节结果落盘为 Markdown 笔记,之后:
- 做时间过滤:先读
SUMMARY与IDEAS,几十秒内判断原文是否值得精读; - 做深度笔记:用
QUOTES保留可引用的原句,REFERENCES保存值得追读的延伸作品,RECOMMENDATIONS汇总可行动建议; - 做知识追踪:按作者反复运行本模式,横向比较同一作者不同文章的
IDEAS/FACTS,即可建立自己的观点演变档案。
运行环境上,internal/cli/chat.go 表明模式调用完成后还会触发桌面通知机制(标题包含模式名),长文本处理时可放心等待。
七、如何验证一条输出是否合格
结合 system.md 的 OUTPUT INSTRUCTIONS,可用以下清单快速自检模型的产出质量:
- 结构纯净:只有 Markdown、只有六个章节,无警告、无解释性旁白;
- 列表形式:全部为无序列表(
-)而非有序列表; - 数量达标:
SUMMARY≤ 25 词且含创作者信息;IDEAS20~50 条且 ≥ 20;QUOTES/FACTS/RECOMMENDATIONS在 15~30 区间;REFERENCES尽量穷尽; - 内容合规:
QUOTES逐字使用原文;无跨章节重复项;相邻条目不以相同措辞开头。
这组约束正是该模式提示词工程的可贵之处——它把"高质量萃取"从玄学式的口头要求,转化为可量化、可校验、可解析的机器契约,这也是 Fabric 模式设计一以贯之的风格。
延伸阅读:可继续深入本仓库阅读同族模式的演进差异(extract_wisdom、extract_wisdom_dm、extract_wisdom_with_attribution),或从 internal/tools/patterns_loader.go 出发研究模式装载与更新的完整源码实现。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python07
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00