Fabric 的 extract_wisdom_nometa Pattern 全解析:从任意文本中提取无元数据纯净智慧
【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric
导读
extract_wisdom_nometa是 Fabric 开源框架 data/patterns 目录下的一枚"智慧提取"类 Pattern,用于从播客、访谈、书籍、文章、对话等任意文本中,系统性地抽出想法、洞见、金句、习惯、事实、引用与建议。本文以该 Pattern 的 system.md 为骨架,逐段拆解其身份设定、八个提取步骤、十六词输出硬规则,并结合仓库源码说明它在 Fabric CLI 中的真实加载与调用链路;读完你可以直接把它接进自己的文本处理工作流,也能理解它与extract_wisdom、extract_wisdom_dm等近亲变体的本质差异。
Pattern 在 Fabric 生态中的定位
Fabric 的核心思想是"用众包的 AI 提示词(Pattern)模块化解决具体问题"。每枚 Pattern 通常由system.md(系统提示词)与可选的user.md、README.md组成,集中存放在 data/patterns 目录下。官方模式描述文件 pattern_descriptions.json 中,extract_wisdom_nometa的定位是:
- 描述:
Extract pure wisdom from content without metadata(从内容中提取纯净智慧,不附带元数据); - 标签:
EXTRACT、CR THINKING、WISDOM。
同一份描述文件同时给extract_wisdom家族的其他成员也打了WISDOM标签(如extract_wisdom、extract_wisdom_dm、extract_wisdom_short、extract_wisdom_with_attribution、extract_article_wisdom),而CR THINKING标签(suggest_pattern/system.md 中的标签索引)则把它与check_falsifiability、detect_mind_virus、extract_controversial_ideas等批判性思维类 Pattern 归入同一能力域——它的产出不止是摘要,而是经过筛选、浓缩、抽象后的高密度认知材料。pattern_explanations.md(data/patterns/pattern_explanations.md)对该 Pattern 的概括是:从内容中提取洞见、想法、金句、习惯、事实、引用与建议,聚焦人类繁荣、AI、技术及相关主题。
逐段拆解 system.md 的结构
完整阅读 system.md 后,可以看到它采用 Fabric Pattern 通用的四段式布局:
- IDENTITY and PURPOSE:定义模型在执行该任务时的身份与关注范围;
- STEPS:规定提取的先后动作与每个输出区块的内容定义;
- OUTPUT INSTRUCTIONS:规定输出格式、数量下限、措辞纪律;
- INPUT:作为用户输入的锚点,实际输入内容在运行时由 Fabric 注入。
IDENTITY and PURPOSE:把模型定位为"认知矿工"
开篇即声明:你要从文本内容中提取令人惊讶、富有洞见、有趣的信息,并给出明确的兴趣域清单:
- 生命的意义与目的(purpose and meaning of life);
- 人类的繁荣(human flourishing);
- 技术在未来人类中的角色;
- 人工智能及其对人类的影响;
- 迷因(memes)、学习、阅读、书籍、持续改进等。
这决定了后续所有提取动作的"价值取向":不是机械摘录,而是筛选出对读者有认知增量、能引发思考的内容。与extract_wisdom_dm/system.md(data/patterns/extract_wisdom_dm/system.md)那种"4,312 IQ 超级智能系统"的夸张身份设定不同,nometa 版的身份描述简洁克制,没有 GOAL 章节,也没有"将你的解决方案与专家参考答案对比评分"的元指令——这正呼应了它"无元数据"的定位。
STEPS:八个提取动作构成完整流水线
STEPS 部分定义了八个顺序执行的提取步骤,产出八个独立区块:
| 步骤 | 输出区块 | 内容定义 | 数量要求 |
|---|---|---|---|
| 1 | SUMMARY | 25 词以内的内容摘要,须包含"谁在讲述 + 讲了什么" | 1 条 |
| 2 | IDEAS: | 最令人惊讶、有洞见、有趣的想法 | 20~50 条,少于 50 则全收,至少 20 |
| 3 | INSIGHTS | 综合原始输入与 IDEAS 提炼出的更精炼、更抽象、更有洞见的结论 | 10~20 条 |
| 4 | QUOTES: | 使用输入中的原文引用 | 15~30 条 |
| 5 | HABITS | 讲述者本人或内容中提到的实用个人习惯(睡眠、阅读、做事方式等) | 15~30 条 |
| 6 | FACTS: | 内容中提到的关于外部世界的真实、令人惊讶的事实 | 15~30 条 |
| 7 | REFERENCES | 讲述者提到的写作、艺术、工具、项目及一切灵感来源 | 全部收录 |
| 8 | RECOMMENDATIONS | 从内容中收集到的最令人惊讶、有洞见、有趣的建议 | 15~30 条 |
值得注意的是第 5 步 HABITS 的示例清单在原文中被截断为 "things the"——这是原文档本身的状态,实际语义可从同族 Pattern(如 extract_wisdom/system.md 中的完整表述)推断为"他们总是做的事、总是避免的事、生产力技巧、饮食、锻炼等"。使用时如需完整示例,可直接参考extract_wisdom版本。
OUTPUT INSTRUCTIONS:把"提取"变成可复现的工业流程
OUTPUT INSTRUCTIONS 是这份 Pattern 最体现工程约束的部分,全部为硬性要求:
- 仅输出 Markdown;
- IDEAS / RECOMMENDATIONS / HABITS / FACTS / INSIGHTS 五类条目,每条恰好 16 个英文单词(exactly 16 words)——这是该家族最著名的输出纪律,迫使模型在保留信息密度的同时做到极致的凝练;
- 数量下限:至少提取 25 条 IDEAS、10 条 INSIGHTS,其余区块(QUOTES、HABITS、FACTS、RECOMMENDATIONS)每区至少 20 条;
- 禁止输出警告或注释,只输出要求的区块;
- 必须使用无序列表(bullet),不得使用编号列表;
- 不得重复任何想法、洞见、引用、习惯、事实或参考;
- 每条目不得以相同的开头词起头,避免输出沦为模板化排比;
- "确保你在创建输出时遵循以上所有指令"。
16 词约束与"不重复、不同开头"叠加,实质上构成了一种反作弊机制:模型无法用同义改写灌水,只能真正从输入中挖掘差异化的认知点。这与extract_wisdom_dm中"输出将被专家参考答案评分"的元指令形成有趣的对照——nometa 用格式纪律而非元评分来保证质量。
"nometa"到底去掉了什么:与同族变体的逐点对比
将 nometa 版与仓库中另外两枚最接近的 Pattern 逐行比对,可以精确还原其设计意图:
| 特性 | extract_wisdom_nometa | extract_wisdom | extract_wisdom_dm |
|---|---|---|---|
| "Take a step back and think step-by-step" 元认知指令 | 无 | 有 | 有 |
| QUOTES 条目末尾附加说话者姓名 | 无 | 有 | 无 |
| ONE-SENTENCE TAKEAWAY 区块 | 无 | 有 | 有 |
| IDENTITY 夸张人设(如 4,312 IQ) | 无 | 无 | 有 |
| GOAL 章节 | 无 | 无 | 有 |
| 输出评分/对比参考答案的元指令 | 无 | 无 | 有 |
注释风格(//引导)的分步说明 | 无 | 无 | 有 |
可以看到,nometa的精简是系统性的:它去掉了元认知指令(step-by-step 思考)、引文元数据(说话者归属,这正是extract_wisdom_with_attribution所强调的对立面)、总结元信息(ONE-SENTENCE TAKEAWAY)以及一切关于任务本身的自我指涉(人设、目标、评分)。保留的只有"从内容到八个区块"的纯提取骨架。因此,当你的下游流程不需要出处、不需要一句话总结、只需要高密度纯净素材时,nometa 是比extract_wisdom更"无杂质"的选择;反过来,若需要引用溯源则应选用extract_wisdom_with_attribution或extract_wisdom。
在 Fabric 中实战使用:CLI 调用与源码链路
命令行调用方式
Fabric CLI 中与 Pattern 相关的核心参数定义在 internal/cli/flags.go(Flags结构体):
-p, --pattern:从可用 Patterns 中选择一个(flags.go);-l, --listpatterns:列出全部 Patterns(flags.go);--readpattern:把指定 Pattern 的全文打印到终端,方便审阅提示词本身(flags.go);-U, --updatepatterns:更新 Patterns(flags.go);-v, --variable:为 Pattern 变量赋值,如-v=#role:expert -v=#points:30(flags.go);--no-variable-replacement:禁用变量替换(flags.go)。
基于这些参数,典型用法是:
# 将任意文本文件喂给该 Pattern 提取智慧 fabric --pattern extract_wisdom_nometa < input.txt # 从剪贴板或管道输入 cat interview_transcript.txt | fabric -p extract_wisdom_nometa # 先确认 Pattern 存在 / 查看其完整提示词 fabric -l fabric --readpattern extract_wisdom_nometa # 当上游仓库新增或更新 Pattern 后同步本地 fabric -UCLI 对--pattern参数的解析在 internal/cli/flags_test.go 中有测试覆盖(如--pattern=analyze的长/短参数解析),internal/cli/chat_test.go(chat_test.go)也以--pattern summarize形式验证了会话模式下 Pattern 的传入路径,可作为调用格式的佐证。
源码链路:Pattern 是如何被加载的
extract_wisdom_nometa本质是一个文件系统存储的提示词模板,其加载链路位于 internal/plugins/db/fsdb/patterns.go:
Pattern结构体由Name、Description、Pattern三字段组成(patterns.go);GetApplyVariables(source, variables, input)是获取 Pattern 的主入口,会先loadPattern再applyVariables(patterns.go);GetWithoutVariables(source, input)只处理{{input}}占位符、跳过模板变量替换(patterns.go);GetRaw(name)不经过任何变量处理直接返回原始模板(patterns.go);LooksLikePatternFilePath会拒绝以\、/、~、.开头的"Pattern 名",防止把文件路径当作 Pattern 名注入,保证安全性(patterns.go)。
也就是说,你在终端里写的-p extract_wisdom_nometa,最终会按名称在 Patterns 存储中查找到对应模板,并把你的输入内容与模板中的INPUT:锚点结合后交给模型执行。这套"模板名 → 加载 → 变量/输入注入"的链路对所有 Pattern 一视同仁,nometa 无需任何特殊处理即可工作。
Patterns 的来源与更新机制
本地 data/patterns 目录并非手工维护的静态文件,而是由 Pattern 加载器(internal/tools/patterns_loader.go)从上游 Git 仓库拉取并落盘的结果:PopulateDB会克隆仓库、迁移路径(如旧的patterns路径自动迁移到data/patterns)、复制 Pattern、保留用户自定义 Pattern,并生成已加载标记文件(patterns_loader.go)。因此fabric -U之后,extract_wisdom_nometa这类 Pattern 会随上游更新而同步演化——这也意味着本文描述的 STEPS 与 OUTPUT INSTRUCTIONS 细节以当前仓库快照为准。
实操建议与注意事项
- 输入预处理:该 Pattern 面向"内容型"文本(访谈、演讲、文章、书籍章节、播客转写),输出质量高度依赖输入质量。转写类文本建议先清理噪音,再进入提取。
- 理解 16 词约束的适用边界:
SUMMARY的约束是 25 词,QUOTES、REFERENCES不受 16 词限制(引用必须使用原文);16 词精确约束只作用于 IDEAS、INSIGHTS、HABITS、FACTS、RECOMMENDATIONS 五类。在中文场景使用时需注意,"exactly 16 words"以英文单词计数为准,若改用中文输入输出,应理解为等价的凝练要求。 - 输出体量预期:按数量下限估算,一份输入会产出约 25+ IDEAS、10+ INSIGHTS、每区 20+ 条的其他条目,属于高密度输出;若只想快速浏览,可改用
extract_wisdom_short或 summarize 一类轻量 Pattern。 - 与归属需求的取舍:若下游需要知道每句金句出自谁口、每个想法源自何处,请改用 extract_wisdom/system.md(QUOTES 附带说话者姓名)或带 attribution 的变体;nometa 的定位是纯素材,不携带任何出处元信息。
- 不重复、不同开头词这两条纪律会显著影响输出多样性,若你的下游聚合器对条目去重敏感,可以放心依赖这两条约束;若想弱化,可自行 fork 一份自定义 Pattern 修改(仓库只读,自定义 Pattern 应放入自己的配置目录,加载器在 patterns_loader.go 中会保留未被上游覆盖的自定义 Pattern)。
小结
extract_wisdom_nometa是 Fabric 智慧提取家族中"最纯粹"的一枚 Pattern:八个步骤、八个区块、五类 16 词精确输出、一整套反灌水纪律,构成了一个可复现、可质检的认知提取流水线。理解它与extract_wisdom、extract_wisdom_dm的差异,能让你在"追求归属溯源"与"追求纯净密度"之间做出正确的取舍;而掌握 flags.go 中的 Pattern 参数与 patterns.go 的加载链路,则能让你把该 Pattern 无缝接入日常的文本处理命令流。
【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考