Fabric 中 create_art_prompt 模式解析:把任意概念转译为高质量 AI 绘画提示词
导读
本文围绕 Fabric 仓库内置的 create_art_prompt 模式(data/patterns/create_art_prompt/system.md)展开,它是 Fabric 社区模式库中用于"概念 → 视觉表达"的专业提示词模式:给定任意文字概念,模型将先深度思考该概念最有力的视觉化方式,再输出一份既描述画面效果、又包含风格暗示(style nudging)的完整 AI 绘画指令。读完本文,你将掌握该模式的完整指令结构、底层加载与模板替换机制,并能直接通过 fabric --pattern create_art_prompt 或自定义变体把它接入现有工作流,把任何一段想法稳定地翻译成可喂给 Midjourney、Stable Diffusion、DALL·E 等图像模型的高质量提示词。
一、模式是什么:Fabric 社区模式库中的"概念→画面"转换器
在 Fabric 中,一个"模式(Pattern)"就是一个用于解决特定问题的 AI 提示词封装:目录通常包含 system.md(系统指令)与可选的 user.md(用户输入模板),存放在仓库的 data/patterns 目录下。每个模式文件夹的说明位于 data/patterns/pattern_explanations.md 第 56 项:
create_art_prompt: Generates a detailed, compelling visual description of a concept, including stylistic references and direct AI instructions for creating art.
create_art_prompt 的特殊之处在于:它是 AI 提示词目录分类中的核心成员,目录内只有一份 system.md,没有配套 user.md,因为它的"输入"是高度开放的——任何概念、想法、文字片段都可以作为被转译的对象。在 data/patterns/suggest_pattern/user.md 的推荐描述中被概括为"Transform concepts into detailed AI art prompts with style references"(将概念转换为带风格参照的详细 AI 绘画提示词)。同时在 scripts/pattern_descriptions/pattern_descriptions.json 的模式清单中,它也以同名描述被收录,说明其定位在官方模式索引中属于"Art prompts / AI 辅助创作"类别。
从源码结构可以进一步确认它的用法约定:Fabric 的文件系统数据库插件将 data/patterns 下每个子目录视为一个模式,并固定以其中的 system.md 作为该模式的系统提示词(internal/plugins/db/fsdb/db.go#L21-L26),该文件名为 SystemPatternFile。因此 create_art_prompt 的全部"人格"与指令逻辑都封装在这一份 system.md 中,它是文章接下来逐段拆解的对象。
二、指令结构全景:四段式模式骨架
create_art_prompt/system.md 采用 Fabric 提示词模式最典型的"分节式"排版,从上到下依次为 IDENTITY AND GOALS、STEPS、OUTPUT、INPUT。这四个部分各司其职,共同约束模型把"输入的抽象概念"变成"可执行的艺术生成指令":
| 段落 | 职责 | 关键词 |
|---|---|---|
| IDENTITY AND GOALS | 定义模型扮演的角色与最终目标 | expert artist, AI whisperer |
| STEPS | 规定产出前的思考流程 | 先理解概念,再设计视觉表达 |
| OUTPUT | 规定产出的形式与内容 | 100 词描述、直接指令、风格暗示 |
| INPUT | 标注用户输入将注入的位置 | INPUT 占位区 |
这种结构遵循 Fabric 模式设计的一贯传统:先给模型一个强身份锚点(IDENTITY),再用可执行步骤约束推理过程(STEPS),最后用可校验的产出规范约束输出格式(OUTPUT),把自由度收敛到"可复现的质量下限"。
2.1 IDENTITY AND GOALS:双身份锚点约束输出取向
该模式的系统提示词把模型设定为两种身份叠加:
- expert artist(专家级艺术家):保证输出在构图、色彩、光影、媒介质感等维度具备专业水准;
- AI whisperer(AI 低语者 / 与 AI 对话的专家):保证输出者真正懂得"如何对图像生成模型下达指令",而不是只会描述画面。
这两个身份的组合在提示词工程上非常关键:仅懂艺术的人写出的提示词可能过于主观抒情,缺乏可执行参数;仅懂模型的人写出的提示词可能缺乏审美判断。双重身份使系统在后续每一步都同时做"审美决策"与"指令转译"。同时该段明确要求模型"Take a step back and think step by step"(退后一步、逐步思考),在正式输出前先完成一段内部推演——这正对应 Fabric 对复杂生成任务的一贯提示策略:先推理、再产出,以避免一上来就给出平庸的第一直觉。
2.2 STEPS:两步前置推演,先"想清楚"再"写出来"
STEPS
- Think deeply about the concepts in the input.
- Think about the best possible way to capture that concept visually
in a compelling and interesting way.
步骤一要求对输入中的"概念"进行深度解析,而非停留在字面复述。例如输入是"时间",模型需要先抽取出时间的人类情感维度(流逝、怀旧、紧迫)与文化意象(沙漏、年轮、极简表盘),再决定选取哪一侧面。
步骤二要求找到"有吸引力且有趣"的视觉化载体。这里的重点不是画什么,而是"用什么视觉隐喻、什么构图语言去承载这个概念"——比如抽象概念用氛围而非叙事呈现,具体叙事用关键瞬间呈现。两步共同保证:输出不是"概念的插图",而是"概念的视觉诠释"。
2.3 OUTPUT:三段式产出,定义可交付的提示词格式
OUTPUT
- Output a 100-word description of the concept and the visual representation
of the concept.
- Write the direct instruction to the AI for how to create the art,
i.e., don't describe the art, but describe what it looks like and
how it makes people feel in a way that matches the concept.
- Include nudging clues that give the piece the proper style,
e.g., "Like you might see in the New York Times", or "Like you would
see in a Sci-Fi book cover from the 1980's.", etc. In other words,
give multiple examples of the style of the art in addition to the
description of the art itself.
这是整个模式最核心、信息密度最高的部分,规定了模型最终输出的三块内容:
-
约 100 词的"概念 + 视觉表达"描述(concept description):用于交代设计意图,既说明原始概念,也说明选择了怎样的视觉表达。这段是给"人"看的,用于理解和评审设计方向。
-
给图像模型的直接指令(direct instruction):这里有一个极易被违反的纪律——"don't describe the art, but describe what it looks like and how it makes people feel"。不要用评判性、文学性的第三人称去描述一张画(如"这是一幅优美的画,象征…"),而是直接、可感地陈述画面"看起来是什么样、让人产生什么感觉"。
-
风格暗示(nudging clues):给出多个风格锚点式参照,把作品的视觉气质钉死在某个方向上。原文举了两个可迁移的例子:
- "Like you might see in the New York Times"——指向报纸信息插画 / 社论漫画风:克制、线条感、编辑感、米白纸面、有限色板;
- "Like you would see in a Sci-Fi book cover from the 1980's"——指向 80 年代科幻小说封面:赛博感、渐变天空、喷笔质感、复古字体情绪。
关键在于原文强调要"give multiple examples of the style"——给多个、而非单一风格参照。多风格锚点叠加(如"某艺术家的笔触 × 某时代的色调 × 某出版物的排版气质")远比一个形容词("beautiful")更能让扩散模型收敛到目标审美区间。这是与当前主流文生图模型(对明确参照极度敏感)工作方式高度一致的设计。
2.4 INPUT:用户输入注入点
INPUT
INPUT:
文件末尾预留的 INPUT: 标记,表示用户的原始文本在此之后注入。从 Fabric 的模板替换机制看(详见第四节),用户的 stdin 输入会被注入到该位置,使前面三节(人格 + 步骤 + 输出规范)与具体概念文本拼接成一条完整的系统指令。
三、输出解读:一份合格"艺术生成指令"应有的样子
把 OUTPUT 三段规范翻译成实际可用格式,一次调用的大致产出轮廓如下(以下为基于指令规范的格式示意,并非仓库记录的固定输出模板):
[概念与视觉表达描述 · 约 100 词]
时间在凌晨的城市中具象为流动的光轨…(解释选择了什么隐喻与构图)
[给图像模型的直接指令]
画面是一幅宽幅数字插画:凌晨雨后的街道,车灯被拉成红白两色的长
光带,光带渐渐溶解成细小的沙粒从画面顶部漏下;前景中一盏路灯的
暖光晕染在湿沥青上,观者感到一种安静的、不可逆的流逝感。
[风格暗示]
- 编辑感:像你会在《纽约时报》观点版看到的插画;
- 媒介感:像 1980 年代科幻小说封面的喷笔渐变天空;
- 色板与光影:整体压暗、仅在光带处饱和,接近新黑色电影的霓虹
色调,但更克制。
需要强调两点:
- "直接指令"是给"生成器"看的,不是给"评审"看的:应当全部使用可渲染的视觉语言(元素、构图、光线、质感、氛围、情绪),避免出现"象征着""寓意着""致敬了"这类模型无法转译为像素的抽象修辞。
- "风格暗示"是模型与真人协作的甜点:使用者拿到输出后,通常只需把第 2、3 段直接粘贴到图像工具中即可出图,第 1 段则用于判断"这是不是我要的方向",在团队协作中它还充当可评审的设计说明。
四、源码视角:这份 system.md 在 Fabric 里如何被加载与注入
理解了这个模式的文本后,再看它在 Fabric 运行时中的执行路径,能更清楚其行为边界。
4.1 模式的读取:固定目录 + 固定文件名
当执行 fabric --pattern create_art_prompt 时,Fabric 会通过 PatternsEntity.getFromDB 读取模式内容(internal/plugins/db/fsdb/patterns.go#L124-L170):
- 若设置了自定义模式目录环境变量
CUSTOM_PATTERNS_DIRECTORY,优先读取$CUSTOM_PATTERNS_DIRECTORY/create_art_prompt/system.md(即允许用户覆盖内置模式); - 否则回退到仓库默认目录
data/patterns/create_art_prompt/system.md; - 若目录不存在或为空,会返回带引导性质的错误提示。
该目录结构与文件名的绑定关系在 internal/plugins/db/fsdb/db.go#L21-L26 中定义:模式按"子目录即模式名、目录内 system.md 即系统提示词"的约定组织。
4.2 用户输入的注入:{{input}} 哨兵保护与替换
在 internal/plugins/db/fsdb/patterns.go#L102-L122 的 applyVariables 中可以看到输入注入的实现细节:
- 先把模式文本中出现的
{{input}}占位符替换成内部哨兵 token,防止它被后续的通用模板变量解析递归改写; - 再对其他
{{变量}}做模板替换(这意味着模式正文也可以携带自定义变量); - 最后把哨兵替换回真正的用户输入。
虽然 create_art_prompt/system.md 本身没有显式书写 {{input}},而是采用文件末尾的 INPUT: 空标记,结合 ensureInput 与上述模板逻辑可以推断:传入的用户文本会被整理后接到 INPUT: 之后,形成"人格 + 流程 + 输出规范 + 具体概念"的完整提示词。
4.3 消息组装:模式作为 System 消息,输入不重复注入
最终的消息组装发生在 internal/core/chatter.go#L218-L346 的 BuildSession 中:
- 模式内容(patternContent)与上下文(contextContent,若启用
-c/--context)通过joinPromptSections拼接成 system 消息; - 由于模式名被指定时
inputUsed = true,用户输入已经通过模板机制嵌入 pattern 内容,不会再作为独立的 user 消息二次拼接,避免了大模型对话中"同样的输入出现两次"的稀释问题; - 若同时指定了策略(strategy)或非英文输出语言(
--language),它们会分别被包裹或前置到 system 消息上——这意味着create_art_prompt可以叠加策略(如tot、cot)使用,也可以要求输出指定语言。
从源码结构看,create_art_prompt 与代码生成类模式不同:Send 中针对 create_coding_feature 有专门的"解析文件变更并落盘"分支(internal/core/chatter.go#L189-L208),而 create_art_prompt 走的是最普通的"纯文本进、纯文本出"路径,输出需要用户自行复制到图像工具使用。
五、实战运行:从安装到第一条提示词
5.1 运行前提
- 已安装并配置好 Fabric CLI 及其模型后端(OpenAI、Anthropic 或兼容网关等),可用
fabric --version验证; - 本仓库的 data/patterns 是官方模式库来源,模式随仓库分发,也可将其配置为 Fabric 的模式目录。
5.2 基本用法:管道输入
create_art_prompt 是标准"读入即转译"模式,最自然的用法是把任意概念文本通过管道喂给它:
# 概念直接作为输入
echo "孤独的赛博空间中,一朵永不凋谢的机械玫瑰" \
| fabric --pattern create_art_prompt
# 也可以把一个文件/一篇文章作为概念来源
cat ideas.md | fabric --pattern create_art_prompt
--pattern(简写 -p)用于选择模式(README.md 处的 CLI 参数表中定义为"Choose a pattern from the available patterns"),此处指定 create_art_prompt。
5.3 查看模式原文与列表
# 列出所有可用模式(确认 create_art_prompt 已就绪)
fabric --list patterns
# 直接打印该模式 system.md 原文,便于评审或自行改写
fabric --pattern create_art_prompt --print-prompt
5.4 结合会话、流式与语言参数
# 流式输出,边生成边显示(适合长输出)
echo "关于'熵增'这一物理概念的视觉表达" \
| fabric --stream --pattern create_art_prompt
# 持久化到命名会话,便于后续追问"换个 80 年代港片色调再出一版"
echo "夏夜暴雨前的城市压抑感" \
| fabric --pattern create_art_prompt --session art-session-01
# 要求输出中文(在非英文输出语言控制下翻译整段回复)
echo "时间在量子层面是不连续的" \
| fabric --language zh --pattern create_art_prompt
上述参数中 --stream 与 --session 都是 Fabric CLI 的通用能力;非英语输出由 internal/core/chatter.go 中 chatter_prompt_enforce_response_language 指令实现。
5.5 工作流接入与别名
如果你希望把它变成像 art 一样随手可用的命令,可以在 .bashrc/.zshrc 中为所有模式批量注册别名,或单独创建:
alias art='fabric --pattern create_art_prompt --stream'
echo "一只戴着宇航头盔的橘猫在冥王星上开咖啡馆" | art
Fabric 官方推荐在 shell 配置中遍历模式目录、按"模式名即命令名"批量生成别名(README.md#L395-L412),create_art_prompt 同样适用。
5.6 与上游输入工具的串联
Fabric 的常见用法是把任意来源文本作为模式输入:YouTube 视频文案、网页抓取、对话记录等。对于绘画场景,一个实用的组合是——先用现有模式把素材提炼成主题(如 extract_wisdom 或直接由你书写概念),再把提炼结果管道给 create_art_prompt:
curl -s https://example.com/某篇文章 2>/dev/null \
| fabric --pattern summarize --language zh \
| fabric --pattern create_art_prompt
需要注意:--pattern 一次只执行一个模式,串联请使用管道,这一点在多模式工作流中很关键。仓库内部还提供了 fabric 的若干管道链实例可参考 README.md 的 piping 章节。
六、如何基于此模式做你的定制版本
若内置版无法满足你的风格偏好,可以遵循"先复制、后微调、再挂载"三步:
- 复制一份骨架:将
create_art_prompt/system.md复制到自定义模式目录下,命名为my_art_prompt/system.md; - 按需修改 OUTPUT 节:这是该模式可塑性最高的部分——例如补充"默认画面比例为 16:9""禁用文字与签名""统一在末尾输出
--ar 16:9 --style raw参数"等硬性规则;也可以在 STEPS 节追加"如果输入是非视觉主题,先输出 3 个候选隐喻再选 1 个"等强化推演步骤; - 通过环境变量挂载:设置
CUSTOM_PATTERNS_DIRECTORY=/path/to/custom_patterns,随后fabric --pattern my_art_prompt即会优先命中自定义目录(该优先级逻辑见 internal/plugins/db/fsdb/patterns.go#L135-L145,且自定义目录支持~/展开,见 internal/plugins/db/fsdb/db.go#L59-L68)。
由于模式本质是纯文本提示词,任何风格的摄影、国画、像素画、分镜手稿团队,都可以把各自的"风格参照例句库"注入 OUTPUT 的 nudging clues 段,形成团队专属的艺术风格转译器。
七、局限与使用提醒
基于本仓库实际内容,几点客观提醒:
create_art_prompt产出的是"提示词文本",本身不含任何图像能力;出图质量取决于你粘贴到目标图像模型后的参数(宽高比、采样器、负面提示词等),这些不在模式控制范围内;- 输出中的风格参照(如"像《纽约时报》插画")是面向模型的审美锚点,不一定意味着可在商业场景直接复刻他人风格,涉及商业用途时请注意风格版权边界;
- 该模式没有独立配套测试用例,属于纯提示词资产;其加载与注入行为由 internal/plugins/db/fsdb/patterns_test.go、internal/core/chatter_test.go 等对"模式读取 + system 消息组装"的通用测试间接保障;
- 模式内嵌的步骤依赖模型推理能力,若使用弱模型,可能出现"省略思考步骤、直接输出描述"的退化行为,此时建议配合
--stream观察并切换到更强模型。
结语
create_art_prompt 是观察 Fabric "提示词即产品"理念的一个绝佳切片:一份不到 40 行的 system.md,通过 身份锚点 + 分步推演 + 三段式输出规范 + 风格暗示 的组合,把"把抽象概念变成可出图的艺术指令"这一模糊任务压缩成可复现的高质量输出。结合源码,你已清楚看到它如何被目录约定加载、如何通过模板哨兵完成输入注入、又如何被组装为 system 消息发送给模型——掌握了这套机制,你既可以熟练调用内置模式,也能亲手定制属于自己团队的绘画提示词模式。无论是把一段诗歌、一个科学概念,还是深夜的一个模糊念头送进 fabric --pattern create_art_prompt,你都拿到了一个稳定、专业的概念可视化入口。
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 StartedRust0634
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
jforgamejforgame是一个一站式游戏服务器开发框架。包含游戏服务器开发所需要的各种组件,比如网关,socket服务端与客户端,自定义高效消息编解码,游戏热更新,游戏通用工具等等。包含游戏服,跨服,匹配服,后台管理系统等实现,同时提供大量业务案例以供学习。亦可用于其他socket应用,例如及时聊天等。Java01
fizz-gateway-nodeAn Aggregation API Gateway in Java . FizzGate 是一个基于 Java开发的微服务聚合网关,是拥有自主知识产权的应用网关国产化替代方案,能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理、回调管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行API服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。Java00
certd开源SSL证书管理工具;全自动证书申请、更新、续期;通配符证书,泛域名证书申请;证书自动化部署到阿里云、腾讯云、主机、群晖、宝塔;https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署JavaScript00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00