Fabric Pattern 实战:用 create_newsletter_entry 把技术文章压缩成 70 词以内的周刊体条目
【免费下载链接】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
本篇技术指南聚焦 Fabric 仓库中的create_newsletter_entry模式(Pattern):它把用户粘贴进来的一篇完整技术文章,压缩成一条70 词以内、以客观第三人称口吻叙述、带加粗标题的周刊式新闻条目。读完本文,你将掌握该 Pattern 的完整指令语义、写作风格约束、输出格式,以及它在 Fabric 中如何被加载、套用输入并驱动模型生成结果的底层机制,从而能直接用命令行将其接入自己的阅读与内容分发流程。
一、这个 Pattern 是什么、放在哪里
create_newsletter_entry是 Fabric 内置模式之一,位于 data/patterns/create_newsletter_entry/system.md。仓库对它的定位可从脚本侧的描述索引看出:
- 描述(description):Write concise newsletter content focusing on key insights.
- 标签(tags):
WRITING、SUMMARIZE、BUSINESS
上述信息来自 scripts/pattern_descriptions/pattern_descriptions.json。也就是说,这个 Pattern 是一类"摘要-写作"型工具:它并不是单纯的全文摘要,而是以《Frontend Weekly》(前端周刊)的栏目文风为参照,把单篇文章压缩成可直接投递给周刊读者的独立条目。
从文件本身看,它的完整内容是一段纯文本系统提示词(system prompt),自上而下由Identity and Purpose(身份与目的)、Step-by-Step Process(分步流程)、Tone and Style Guidelines(语气与风格)、Output Instructions(输出说明)、Output Example(输出示例)和结尾的INPUT:输入标记组成。原文档完整信息都会在下文逐节保留并展开。
二、Fabric 如何加载并执行一个 Pattern
2.1 目录约定:一个 Pattern 一个目录
Fabric 中每个 Pattern 都对应data/patterns/<name>/下的一个目录,目录内至少包含一个system.md(系统提示词),可选地还有user.md(用户提示词)。仓库将默认 Pattern 根目录定义为data/patterns,见 internal/tools/patterns_loader.go 中常量DefaultPatternsGitRepoFolder = "data/patterns"。Patterns Loader 通过克隆上游仓库并复制到配置目录的方式同步模式库(PopulateDB,见同一文件的 internal/tools/patterns_loader.go)。
2.2 按名称读取 system.md
当运行fabric -p create_newsletter_entry时,代码会按名称去模式的目录下读取system.md文件。相关实现集中在 internal/plugins/db/fsdb/patterns.go:
getFromDB负责拼接{PatternsDir}/{name}/system.md路径并读取内容(patterns.go),目录结构由SystemPatternFile: "system.md"配置约定(见 internal/plugins/db/fsdb/db.go);- 支持自定义模式目录:若用户在自定义目录中存在同名 Pattern,则以自定义版本优先覆盖官方版本(patterns.go)。这意味着如果你想微调本 Pattern 的措辞,复制目录后修改是可行的定制方式。
2.3 自动补全{{input}}占位符
细读 system.md 会发现,原文件结尾只有INPUT:标记,并没有{{input}}占位符。此时 Fabric 的ensureInput逻辑会自动在 Pattern 文本末尾追加{{input}}(patterns.go),随后applyInput/applyVariables会把{{input}}替换为真实输入内容(patterns.go)。因此实际操作中,你的文章文本会被拼接在INPUT:之后作为待处理素材喂给模型。
2.4 Pattern 如何进入会话
在会话构建层面,Pattern 的 system.md 内容会与用户输入组合成一个会话请求。仓库中的测试 internal/core/chatter_test.go(TestChatter_BuildSession_SeparatesSystemSections)就验证了:在临时目录中写入<patterns-dir>/test-pattern/system.md后,通过Chatter.BuildSession可以正确把 Pattern 文本构建进发给模型的消息序列。这为"Pattern 内容确实会被用作系统提示"提供了测试级证据。
三、指令逐段拆解:Pattern 到底要求模型做什么
以下按原文档顺序逐段解析,并补充实现层面的解读,帮助你把每条约束转化为可执行的写作检查项。
3.1 Identity and Purpose:先确立"角色"
You are a custom GPT designed to create newsletter sections in the style of Frontend Weekly.
这条约束让模型在生成前先进入一个稳定角色:一名以《Frontend Weekly》栏目风格写作的"定制 GPT"。在 Fabric 中,"custom GPT"这一身份并不绑定具体平台,Pattern 只是把角色描述写成通用系统提示词,可接入任何兼容模型使用。角色设定的价值在于:后续所有步骤都会围绕"周刊条目"这一产物形态展开,而不是输出一篇普通摘要或博客评论。
3.2 Step-by-Step Process:明确的分步流程
- The user will provide article text.
- Condense the article into one summarizing newsletter entry less than 70 words in the style of Frontend Weekly.
- Generate a concise title for the entry, focus on the most important fact of the article, avoid subjective and promotional words.
拆解如下:
| 步骤 | 指令 | 执行要点 |
|---|---|---|
| 1 | 接收文章文本 | 由用户通过标准输入或文件传入,对应上文{{input}}的自动注入;原文档末尾INPUT:标记即为该步骤的落点 |
| 2 | 压缩为一条摘要条目 | 要求少于 70 词,且文风对齐 Frontend Weekly——即高信息密度、可独立阅读的新闻体 |
| 3 | 为条目生成简洁标题 | 标题需聚焦文章"最重要的事实",并明确避免主观化与营销化措辞(avoid subjective and promotional words) |
值得注意的量化约束是"less than 70 words":这是全文唯一出现的硬性字数红线。写作时应先保证事实完整,再把表达冗余压到 70 词以内,而非先凑满篇幅。标题环节则强调"事实优先"——用标题承载文章的核心信息增量,而不是用惊叹词制造情绪。
3.3 Tone and Style Guidelines:两条基调约束
原文档给出两条写作风格准则,缺一不可:
- 第三人称叙述(Third-Party Narration):条目要像一位既了解行业又保持中立的外部观察者在转述——"someone who is both knowledgeable, unbiased and calm"。只陈述原文中的事实或主要观点,以此营造客观感并增加专业层次。
- 简洁(Concise):保持简短与清晰,第三方叙述者应高效传递信息,聚焦关键事实与洞见。
两条合起来的实际效果是:不评价、不煽情、不卖关子,把文章里最值得知道的一件事讲清楚。这是"周刊体摘要"与一般摘要最本质的区别。
3.4 Output Instructions:产出格式
Your final output should be a polished, newsletter-ready paragraph with a title line in bold followed by the summary paragraph.
输出结构只有两层:
- 加粗标题行:一句话标题,直接以加粗文本呈现;
- 正文段落:精修后、可直接用于周刊的单段摘要。
也就是说,输出不需要 Markdown 列表、不需要分节、不需要"这里是标题/这里是摘要"之类的元注释,成品应该是"开箱即用"的发布稿。
3.5 Output Example:官方示例的形态参考
原文档内置了一个示范产物,此处完整保留并作为质量基线:
Claude Launched Skills: Transforming LLMs into Expert Agents
Anthropic has launched Claude Skills, a user-friendly system designed to enhance large language models by enabling them to adapt to specific tasks via organized folders and scripts. This approach supports dynamic loading of task-related skills while maintaining efficiency through gradual information disclosure. While promising, concerns linger over security risks associated with executing external code. Anthropic aims to enable self-creating agents, paving the way for a robust ecosystem of skills.
对照检查该示例是否符合全部约束:标题(加粗)"Claude Launched Skills: Transforming LLMs into Expert Agents"直接陈述发布事实并点明其技术意义,无主观推销词;正文全程第三人称("Anthropic has launched…"),客观陈述功能、运作方式、存在的安全疑虑与厂商愿景,既报好消息也点风险,体例均衡——这正是"客观、知情、冷静"的具象化。按英文单词计数该示例正文落在 70 词限制内,可作为自测参照。
3.6 INPUT 标记与框架注入
INPUT:
INPUT:
原文档末尾以INPUT:收尾,前文 2.3 节已说明:Fabric 检测到 Pattern 中没有{{input}}时,会在末尾自动补占位符并将用户文章注入到该位置,使"角色设定 → 处理流程 → 输出格式"三段式提示词与实际输入物理分离。这保证了同一份系统提示可被反复复用于不同文章。
四、实操:三条可验证的接入路径
4.1 最简用法:管道输入
把文章文本经标准输入喂给 Pattern(命令语法与 README 中fabric --pattern summarize的用法一致,可参见 README.md):
cat article.md | fabric --pattern create_newsletter_entry也可简写-p:
pandoc article.html -t markdown | fabric -p create_newsletter_entry4.2 携带常用参数
Fabric 的命令行参数支持在 README.md 中查到,与本场景强相关的几个:
# 结果直接复制到剪贴板 cat article.md | fabric -p create_newsletter_entry -c # 结果写入文件 cat article.md | fabric -p create_newsletter_entry -o entry.md # 流式输出(边生成边展示) cat article.md | fabric -p create_newsletter_entry --stream由于本 Pattern 的目标产物是"一条可直接粘贴进周刊/通讯稿的文本块",配合-c(复制到剪贴板)或-o(落盘)是最贴合工作流的组合。
4.3 批量处理与别名
- 若积累了多篇待处理文章,可逐个管道调用并把每次输出追加到素材文件,后续统一排版。
- 仓库在 README.md 提供了"为每个 Pattern 生成 shell 别名"的做法,即
alias create_newsletter_entry="fabric --pattern create_newsletter_entry",之后直接cat article.md | create_newsletter_entry即可调用;补全脚本位于 completions 目录。
4.4 关于模型与运行前提
Pattern 本身不包含模型选择逻辑,实际问答效果取决于你为 Fabric 配置的模型后端与 temperature 等参数(属 Fabric 全局配置范畴,不在本 Pattern 文件内)。它只负责把"提示词 + 输入"装配好后交给上游模型,因此在无说明模型的环境下仍能完整加载与拼接,这一点可以从 2.2/2.3 节引用的加载代码得到印证。
五、写作自检清单:如何写出符合预期的条目
综合原文档全部约束,可沉淀为如下六条可执行自检:
- 字数红线:正文严格少于 70 个英文单词;过长先砍修饰性从句,保留主谓事实链。
- 标题即核心事实:标题能独立概括文章最重要的增量信息;删除 "Amazing""Revolutionary" 等主观或推广性词汇。
- 全程第三人称:以"发布方/研究者 + 动作 + 结果"句式叙述,避免出现"我"或对读者的直接对话。
- 报点也报面:参照官方示例——不仅陈述亮点,也如实给出风险、争议或不确定因素,体现中立。
- 独立可读:不依赖原文上下文也能让读者理解发生了什么;术语首次出现时给出最小解释。
- 格式即成品:输出只有"加粗标题 + 一个段落",无需额外包装或 Markdown 杂项。
六、与同族 Pattern 的配合:让周刊内容形成闭环
值得对比的是同目录下的反向 Pattern data/patterns/summarize_newsletter/system.md:它负责"把一期 Newsletter 全文解析成结构化摘要(含 SUMMARY / CONTENT / OPINIONS & IDEAS / TOOLS / FOLLOW-UP 等分节)",而本 Pattern 负责"把单篇文章改写成一条可入刊的条目"。二者方向互补,构成两条可拼接的内容流:
- 输入侧:用
summarize_newsletter把收到的整份周刊压缩成要点与待跟进清单; - 输出侧:用
create_newsletter_entry把单篇值得转述的文章做成标准条目,供你自建周刊或团队通讯复用。
仓库中另有大量同族的摘要型 Pattern(如summarize、extract_wisdom等,均位于 data/patterns),可按同一套机制自由组合成管道。
七、小结
create_newsletter_entry是一个小而精的写作型 Pattern:它的全部技术含量在于把"周刊条目"这种文体约束显式化——70 词以内、第三人称中立叙述、标题聚焦事实、输出为加粗标题加单段正文。从仓库源码可以确认,它在 Fabric 中与其余 Pattern 走完全相同的加载路径(data/patterns/<name>/system.md+{{input}}注入 + 会话构建),因此你可以零成本复用、定制,并与summarize_newsletter等模式拼装出从"收文章"到"发周刊"的完整链路。若想深入其实现细节,可从 internal/plugins/db/fsdb/patterns.go、internal/tools/patterns_loader.go 与 internal/core/chatter_test.go 继续研读。
【免费下载链接】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),仅供参考