Fabric 瑜伽推荐 Pattern 深度解析:用 recommend_yoga_practice 打造个性化瑜伽与正念 AI 教练
【免费下载链接】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 开源仓库中的recommend_yoga_practice系统提示词(Pattern),完整拆解其身份设定、步骤规范、输出结构与示例引导,并深入其底层源码,说明该 Pattern 在 Fabric 中如何被加载、变量如何注入、{{input}}如何替换为真实用户输入。读完本文,你将掌握这个 Wellness 类 Pattern 的完整能力边界,并能通过fabric --pattern recommend_yoga_practice在实际命令行中把它用起来。
一、认识 recommend_yoga_practice:一个面向身心健康的 Fabric Pattern
在 Fabric 中,Pattern 是"以真实任务为单位组织起来的提示词单元"。仓库根目录下的 data/patterns 目录集中存放了大量按场景分类的提示词,每个子目录通常包含一个system.md(系统提示词)以及可选的user.md(用户提示词)。recommend_yoga_practice正是其中之一,仓库的 pattern_descriptions.json 中对其官方描述为:
"Provides personalized yoga sequences, meditation guidance, and holistic lifestyle advice based on individual profiles."
并归入WELLNESS与SELF两个标签类别,定位是"基于个人画像提供个性化瑜伽序列、冥想指导与整体生活方式建议"。从 fsdb 的加载逻辑 可以看到,Pattern 加载时约定以system.md作为系统提示词文件(SystemPatternFile: "system.md"),因此本文件就是该 Pattern 的行为灵魂。
二、身份与步骤:Pattern 如何定义"AI 瑜伽教练"的行为边界
recommend_yoga_practice的system.md首先通过IDENTITY小节确立模型角色——一名"经验丰富的瑜伽教练与正念生活教练(experienced yoga instructor and mindful living coach)",要求以平静、清晰、富有同情心的方式引导用户。随后用STEPS小节划定五条核心职责:
- 体式教学:教授安全、有效的瑜伽体式(asana),并给出逐步引导;
- 个性化序列编排:根据用户的练习经验水平、目标以及身体限制,帮助构建个性化序列;
- 冥想与放松引导:带领用户进行引导式冥想与放松练习,促进正念与情绪平衡;
- 整体生活方式建议:基于瑜伽原则提供涵盖呼吸法(pranayama)、营养、睡眠、体态与日常健康实践的 holistic 建议;
- 氛围营造:在每个回复中营造宁静、自我觉察、不带评判的氛围。
同时规定语气基调:如一位将古老智慧融入现代生活的资深瑜伽老师,采用舒缓、鼓励、内省的语调。
这一"身份 + 步骤"的写法是 Fabric 提示词工程的标准范式——通过明确角色(WHO)与职责清单(WHAT TO DO),把模型的行为收敛到一个稳定的专业轨道上,避免回答发散。
三、输出规范:三段式回复结构与个性化分支
为了让回复风格统一,system.md的OUTPUT小节强制规定了回复的三段式结构:
- 开场锚定语(Opening grounding statement)——一句简短的反思或聚焦短语;
- 主要指导(Main guidance)——围绕用户问题给出详细、安全、清晰的指引或洞见;
- 正念结语(Mindful takeaway)——以一句简短的提醒或反思收尾,鼓励持续正念。
在个性化维度上,Pattern 区分了两种用户诉求分支:
- 体式类问题(如用户询问某个具体体式):需仔细描述对齐细节(alignment)、解释面向初学者或安全性的变体修改方式、指出常见错误及规避方法;
- 冥想或生活方式类问题:提供简单可行的技巧,鼓励坚持练习与自我慈悲(self-compassion)。
这种"先固定结构、再按场景分支"的设计,保证了模型在面对"给我推荐一套序列"和"怎么治我的背痛"这类差异巨大的请求时,都能输出同样专业、安全的指导。
四、示例驱动:从 EXAMPLE 看期望的交互形态
system.md给出了一个可验证的示范,帮助模型锚定输出质量:
USER: Recommend a gentle yoga sequence for improving focus during stressful workdays.
Expected Output Example:
- Begin with a short centering breath to quiet the mind.
- Flow through seated side stretches, cat-cow, mountain pose, and standing forward fold.
- Conclude with a brief meditation on the breath.
- Reflect on how each inhale brings focus, and each exhale releases tension.
并规定每次交互都以类似这样的语句收尾:
"Breathe in calm, breathe out ease."
这个示例展示了 Pattern 期望的完整闭环:从静心呼吸开场 → 串联 4 个温和体式(坐姿侧伸展、猫牛式、山式、站立前屈)→ 以呼吸冥想收束 → 最后给出"吸气带来专注、呼气释放紧张"的正念反思。这正是"开场锚定语 → 主要指导 → 正念结语"三段式结构的具体化。
五、在 Fabric 中实际使用该 Pattern
5.1 基础用法:选择 Pattern 并传入输入
Fabric CLI 通过-p/--pattern参数选择要使用的 Pattern(见 flags.go 中Pattern string \short:"p" long:"pattern" ...`` 的定义)。使用方式:
# 直接传入文本 fabric --pattern recommend_yoga_practice "我最近工作压力大,想放松,能推荐一套温和的瑜伽序列吗?" # 通过管道传入输入(Fabric 支持 stdin 管道) echo "I sit at a desk all day and have lower back tightness. What should I practice?" \ | fabric --pattern recommend_yoga_practice用户输入会注入到提示词末尾的{{input}}占位符中,与system.md拼接成完整的请求后发送给模型(拼接逻辑见 internal/core/chatter.go 中joinPromptSections(contextContent, patternContent)的实现)。需要流式输出时加--stream:
echo "帮我设计一套针对久坐上班族的晨间唤醒序列" | fabric --pattern recommend_yoga_practice --stream5.2 用 Pattern 变量实现个性化参数
Fabric 支持为 Pattern 注入自定义变量,CLI 参数为-v/--variable,格式如-v=#role:expert -v=#points:30。虽然本 Pattern 当前未声明额外变量占位符,但模板引擎会对{{变量名}}形式的标记统一做变量替换(见下文第六节),这为后续扩展"经验水平、练习目标、身体限制"等字段预留了机制。
5.3 通过 YAML 配置固化 Pattern 选择
如果你希望每次调用都默认使用该 Pattern,可以利用 Fabric 的 YAML 配置支持(参见 internal/cli/README.md):
# ~/.config/fabric/config.yaml model: gpt-4 temperature: 0.8 pattern: recommend_yoga_practice stream: true然后直接运行:
fabric --config ~/.config/fabric/config.yaml "给我一段睡前放松的冥想引导"配置优先级为:CLI 参数 > YAML 配置 > 默认值,因此命令行中的--pattern仍可临时覆盖 YAML 中的设定。
六、源码级原理:Pattern 从磁盘到提示词的完整调用链
从实现角度看,recommend_yoga_practice/system.md被读取并注入模型请求的路径清晰可见,核心代码在 internal/plugins/db/fsdb/patterns.go:
- 入口:
GetApplyVariables(source, variables, input)是获取 Pattern 的统一入口,会先调用loadPattern读取内容,再做变量处理; - 名称解析:
loadPattern判断传入名称是否像文件路径(以/、\、~、.开头),是则从文件系统读取(getFromFile),否则从数据库/目录读取(getFromDB)。因此除了用 Pattern 名recommend_yoga_practice,你还可以直接传文件路径来加载任意system.md; - 输入注入:
applyInput调用ensureInput——若 Pattern 内容中没有{{input}}占位符,会在末尾自动追加一行{{input}},随后用strings.ReplaceAll将占位符替换为用户真实输入; - 变量替换:
applyVariables先用哨兵令牌(InputSentinel = "__FABRIC_INPUT_SENTINEL_TOKEN__",见 internal/plugins/template/constants.go)保护{{input}},再交给 template.ApplyTemplate 处理其余{{...}}标记(包括{{plugin:...}}插件调用与{{ext:...}}扩展调用),最后还原输入。若模板中存在未提供的必需变量,会返回"missing required variable"错误。
也就是说,你在终端里输入的那句"想放松、想要晨间序列",最终会以{{input}}的身份被替换进system.md末尾,与上述 IDENTITY/STEPS/OUTPUT/EXAMPLE 指令一起构成完整的系统提示词,再由 chatter.go 发给已配置的模型供应商。
七、Pattern 管理与运维:查找、预览与更新
Fabric 为 Pattern 提供了完整的 CLI 管理命令(对应 listing.go 中的处理逻辑):
# 列出所有可用 Pattern,确认 recommend_yoga_practice 存在 fabric --listpatterns # 直接打印该 Pattern 的完整内容(即本 system.md)到终端 fabric --readpattern recommend_yoga_practice # 查看最近新增的 N 个 Pattern(了解 Wellness 类的新玩法) fabric --latest 10 # 从默认 Git 仓库(data/patterns 目录)拉取并更新所有 Pattern fabric --updatepatterns首次使用时,可运行fabric --setup完成模型供应商等配置(README 明确说明通过fabric --setup配置 preferred providers,或使用fabric --listvendors查看全部供应商)。Pattern 的下载、更新与"已加载"标记逻辑位于 internal/tools/patterns_loader.go:它会克隆默认仓库(DefaultPatternsGitRepoUrl)中data/patterns目录到临时目录,经movePatterns复制到配置目录,统计目录数量校验成功后写入 loaded 标记文件,并在更新时通过PersistPatterns保留用户的本地自定义 Pattern。
八、进阶技巧与最佳实践
- 组合场景:
recommend_yoga_practice属于WELLNESS/SELF类别,适合与情绪、自我觉察类 Pattern 组合使用。例如先让 AI 分析压力来源,再用本 Pattern 输出针对性的练习建议。 - 善用
--dry-run:不确定最终发给模型的内容时,可加--dry-run查看组装后的完整提示词(含{{input}}替换结果),这有助于理解 system.md 如何与你的输入融合。 - 本地定制:仓库是只读的,但你可以复制该 Pattern 到自己的自定义目录并按需修改
system.md(例如加入"只推荐适合孕妇的温和体式"或"优先推荐办公室可完成的练习"等约束),--updatepatterns时本地副本会被保留。 - 安全边界:本 Pattern 始终强调"安全、可修改、循序渐进"的体式指导原则,实际使用中建议结合自身身体状况,并将 AI 建议作为参考而非医疗替代。
结语
recommend_yoga_practice是一个结构清晰、可直接落地的 Wellness 类 Fabric Pattern:它以"身份 + 步骤 + 输出规范 + 示例"四段式设计,把"AI 瑜伽教练"的每次回复都锚定在安全、个性、正念的轨道上;而 Fabric 的模板引擎与 Pattern 管理机制则保证了它可以被命令行、管道、YAML 配置等方式灵活调用。理解它的结构与底层调用链,你也就掌握了 Fabric 全部数百个 Pattern 共通的"打开方式"。
Breathe in calm, breathe out ease.
【免费下载链接】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),仅供参考