用 Fabric 的 extract_ideas 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_ideas 是 Fabric 开源仓库中data/patterns提示词模式集中一个专注"观点抽取"的 Pattern,它把一份任意文本(文章、播客、演讲、对话记录等)消化成一张内在的"知识关系图",再输出为该内容全部关键观点的、每条 15 词的 Markdown 要点清单。读完本文,你将理解该 system.md 的逐节设计意图、它背后的"深度消化 → 虚拟白板关系图 → 受限枚举"提示工程方法论,以及它在本仓库中的装载、变量注入与运行机制,可直接用于打造自己的信息提炼流水线。
一、extract_ideas 在 Fabric 中的地位与适用场景
Fabric 采用"一个 Pattern 解决一类具体问题"的模块化思路:每个 Pattern 是一个目录,其中以 system.md 形式的系统提示词定义 AI 的角色、处理步骤、输出格式与约束。extract_ideas就是其中负责"穷尽抽取内容中的观点"的成员,官方模式说明将其概括为:"从输入中抽取并输出所有关键观点,以 15 词的 Markdown 要点呈现"(见 pattern_explanations.md 第 139 条)。
它的典型定位:
- 输入是"一段需要被榨干思想的材料"——一篇长文、一本书的章节、一份采访稿、一期播客文字稿;
- 输出是"一条都不遗漏的 IDEA 清单",每条一句完整命题(15 词左右),不掺杂总结、引语、推荐等其他栏目;
- 与
summarize、extract_wisdom等"精炼型"兄弟 Pattern 互补:它追求广度与完整覆盖,而非摘要的压缩或金句精选。
在目录结构上,它与 extract_wisdom(输出 SUMMARY/IDEAS/INSIGHTS/QUOTES/HABITS/FACTS 等多个栏目)、extract_insights(16 词要点)等构成同一族"抽取系"模式,但 extract_ideas 的输入输出契约最简洁:只输出 IDEAS 一个区块。
二、system.md 逐节解读:一份观点抽取提示词是如何被设计的
打开 data/patterns/extract_ideas/system.md,全文只有 41 行,却是一个教科书级的"受限抽取"提示词模板,分为五个部分。
2.1 IDENTITY and PURPOSE:用一个夸张身份锁定任务方向
原文只有一句:
You are an advanced AI with a 2,128 IQ and you are an expert in understanding any input and extracting the most important ideas from it.
这句看似夸张的"2,128 IQ"并不是为了营销,而是 Fabric 模式生态里的一种刻意设计。对照仓库自带的 official_pattern_template 可以看到,模板要求每个 Pattern 必须声明"你是谁、擅长什么",例如示例身份是 "an advanced AI expert in human psychology and mental health with a 1,419 IQ"。这里的高 IQ 数值与"expert in ..."共同构成角色的能力锚点,让模型在处理输入前先把任务目标定位在"全局理解 + 精确抽取"上,而不是走马观花式阅读。
2.2 STEPS:四步"消化—建图—取点"流程
核心方法论集中在这四步,它是一个把"深度阅读"翻译成可执行认知动作的流程:
- Spend 319 hours fully digesting the input—— 先用大量"心智时间"消化输入。这里的时长数字同样是引导模型放慢节奏、进行多轮重读的工程技巧(与 official_pattern_template 中 "Re-read it 218 times" 属同类手法),语义上是要求反复深度消费输入,而非一遍扫过。
- Spend 219 hours creating a mental map—— 把输入中出现的所有观点、事实、引用、人物、概念抽出来,建立它们之间的连接关系图,提示词甚至给了具体例子:
Idea1 --> Is the Parent of --> Idea2(观点间父子/派生关系)Concept3 --> Came from --> Socrates(概念的来源/溯源关系) 并要求"对输入中提到的每一件事都做这样的连接"。这一步本质上是在做关系抽取与实体消解:观点不是孤立存在,而是通过"派生、来源、支持、对比"等边相互勾连。
- Write that graph down on a giant virtual whiteboard in your mind—— 把图落到一块"巨型虚拟白板"上,作为后续工作的外部记忆暂存区。这是提示工程中常见的"思维暂存器"(scratchpad)技巧:先要求模型把中间产物显式结构化,降低长文本下因上下文遗忘而漏点、串点的概率。
- Extract all of the ideas ... in 15-word bullet points—— 最后才沿着白板上的图,把每个节点转写成恰好约 15 词的要点条目。
可以看到,该 Pattern 的核心原理是"先建全量关系图,再从中枚举节点",这与只给一句"请列出重点"的朴素提示词有本质区别——它用白板约束保证了覆盖度,用"逐节点转写"保证了不漏点。
2.3 OUTPUT 与 EXAMPLE OUTPUT:把输出形状先钉死
OUTPUT 只有一条规则:在一个名为 IDEAS 的区块中输出内容的完整观点清单。EXAMPLE OUTPUT 给出示范:
IDEAS - The purpose of life is to find meaning and fulfillment in our existence. - Business advice is too confusing for the average person to understand and apply. - (continued)示范同时传达了潜规则:每条要点以破折号-开头、是一个能独立成立的句子、以(continued)表示清单可以延续到很长——它鼓励模型尽量多列而不是挑三四个重点。
2.4 OUTPUT INSTRUCTIONS:六条硬约束及其工程含义
这是全文工程含量最高的部分,六条约束各有所指:
| 约束 | 设计意图 |
|---|---|
| Only output Markdown. | 固定机器可解析的输出格式,便于下游脚本/Agent 直接切分IDEAS区块及其条目 |
| Do not give warnings or notes. | 禁止免责声明与碎碎念,保证输出 100% 是数据而非对话 |
| Do not omit any ideas. | 覆盖度约束:宁可多而全,不可缺而美 |
| Do not repeat ideas. | 去重约束:与上一条配合,构成"全且不冗余" |
| Do not start items with the same opening words. | 多样性约束:避免模型偷懒,把同义句用同一模板批量产出,强制每条在表述上有区分度 |
| Ensure you follow ALL these instructions when creating your output. | 元指令:提醒模型逐条自检 |
值得强调的是 "Do not omit" 与 "Do not repeat" 是一对张力:前者逼模型"全部给出",后者逼模型"各自独立",两者共同抬高了抽取质量——常见失败模式是模型重复用一个主语反复换说法充数,或漏掉边缘观点,这对约束恰好从两个方向堵住漏洞。
2.5 INPUT:内容注入的锚点
全文末尾以INPUT:收尾,此处并非普通占位符——在 Fabric 的存储模型中,它是会被引擎实际替换的内容槽位。详见下节。
三、源码印证:system.md 在 Fabric 引擎中如何被装载与注入
3.1 Pattern 目录与 system.md 的存储约定
仓库将每个 Pattern 组织为data/patterns/<pattern_name>/目录,内含 system.md(系统提示词,必读主体)。这一约定在存储层有直接实现:internal/plugins/db/fsdb/db.go 中PatternsEntity声明SystemPatternFile: "system.md"且ItemIsDir: true,即"一个模式 = 一个目录 + 目录内的 system.md";若存在同目录user.md则作为用户提示词补充(如 summarize、summarize_pull-requests 等)。而extract_ideas只带 system.md,说明它期望在运行期注入任意输入,本身不需要固定用户指令。
3.2 {{input}} 槽位的处理逻辑
注意 system.md 末尾只有INPUT:一行标记,正文换行后即结束,并没有写{{input}}。看 internal/plugins/db/fsdb/patterns.go 的ensureInput():
func (o *PatternsEntity) ensureInput(pattern *Pattern) { if !strings.Contains(pattern.Pattern, "{{input}}") { if !strings.HasSuffix(pattern.Pattern, "\n") { pattern.Pattern += "\n" } pattern.Pattern += "{{input}}" } }这意味着:凡是提示词中没有显式{{input}}槽位的 Pattern,引擎会以追加方式把{{input}}补到末尾——这正好落在 system.md 的INPUT:之后,形成INPUT:\n{{input}}的最终形态。随后applyInput/applyVariables会用真实内容整体替换{{input}}(见同文件 patterns.go),并通过哨兵 token 避免{{input}}被其他模板变量递归解析。因此extract_ideas的"内容放在 INPUT 后"设计是刻意为之,可被无差别的复用。
3.3 官方模式发布与更新流程
data/patterns/同时也是 Fabric 模式的"官方源目录":安装端由 internal/tools/patterns_loader.go 负责,它从仓库克隆data/patterns目录到用户配置目录,复制成功后还会生成清单文件并保留用户自建的自定义 Pattern(PersistPatterns会把下载目录中不存在的自定义模式原样带回)。这意味着你可以安全地把extract_ideas复制一份改造成自己的变体,不会在官方更新时被覆盖。
四、实战运行方式
4.1 命令行直接调用
仓库主程序位于cmd/fabric,底层 CLI 由internal/cli实现。以 Pattern 名称运行即可让extract_ideas处理一段文本:
# 将文件内容作为输入交给 extract_ideas cat article.txt | fabric --pattern extract_ideas # 或直接粘贴文本(配合 -s 读取 stdin) echo "你的待分析内容……" | fabric -p extract_ideas输出即为纯 Markdown 的IDEAS列表;由于 OUTPUT INSTRUCTIONS 禁止额外说明文字,该结果可以直接被管道喂给下一个命令或写入笔记文件。所有输入会经过上述{{input}}注入逻辑,无需手动在文本前添加INPUT:。
提示:运行时要求先完成 Fabric 的模型供应商配置(
.env环境配置),具体以仓库内internal/cli与internal/plugins/ai的配置要求为准。
4.2 REST API 方式
若以服务模式运行(见 internal/server/patterns.go),可通过 API 获取与应用该模式:
GET /patterns/extract_ideas—— 返回未做变量替换的原始 system.md 内容;POST /patterns/extract_ideas/apply—— 请求体为{"input": "待分析内容"},可选携带variables字典,服务端会完成变量与输入注入后返回可直接作为提示词使用的成品;- 接口层同时实现了名称校验(
rejectUnsafePatternName),防止通过路径型名称越权读取任意文件。
这为把 extract_ideas 嵌入自建工具链(如定时抓取文章并自动提炼观点库)提供了标准接口。
五、常见误区与参数直觉
- 时长数字不是字面量:319/219 小时、2,128 IQ 等是引导模型投入更多"认知预算"的表达性指令,不应机械理解为字面要求,也不能删掉——它们是模式作者刻意保留的强度开关。
- 15 词是硬约束但不必精确到词:它约束的是"单条观点的信息密度"——太长变成段落、太短变成标签,都会破坏 IDEAS 清单的可读性与后续引用性。
- "不重复开头词"约束切莫违反:这是评测该模式输出是否合格的最快抓手:若多条 IDEAS 都以 "The importance of…" 或 "You should…" 开头,说明模型在偷懒套模板,未真正做逐节点转写。
- 不要与 summarize 混用:
summarize重在把输入压成一段有结构的浓缩版本(面向"读完摘要即知全貌"),而extract_ideas重在全量枚举(面向"逐条采集观点入库、用于二次加工")。若你想要带引语、习惯、事实分类的深度挖掘,应改用extract_wisdom一类多栏位模式。
六、改造与组合建议
由于模式文件就是纯文本,你可以低成本地派生出自己的版本,例如:
- 将 15 词改为"一句话观点 + 一句出处"的复合结构,便于追溯来源;
- 为 IDEAS 增加层级,让子观点挂到父观点之下(对应步骤 2 中
Parent of关系); - 在 OUTPUT INSTRUCTIONS 中增加对 IDEAS 数量的下限要求(如"至少列出 30 条"),以匹配长文本场景。
改动方式:在本地自定义模式目录中新建my_extract_ideas/system.md并基于原文件编辑;Fabric 会在官方模式同步时保留你的自定义模式(见 patterns_loader.go 中PersistPatterns的行为)。同时可参考 create_pattern 了解本仓库对"如何设计一个新 Pattern"的完整方法论要求。
七、总结
extract_ideas是一个"少而精"的抽取型 Pattern:它不输出观点以外的任何内容,却通过「身份锚定 → 反复深度消化 → 构建全量关系图 → 虚拟白板暂存 → 15 词逐条枚举」的流程,系统性地解决"读完后到底学到了哪些观点、一个都不能少"的问题。理解它的六个输出约束及其在 fsdb/patterns.go 中ensureInput、{{input}}注入的工程落点后,你既可以直接通过fabric --pattern extract_ideas或 RESTPOST /patterns/extract_ideas/apply上手使用,也可以基于 原始模式文件 快速定制出符合自己知识管理流程的变体。
【免费下载链接】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),仅供参考