别再对AI说「可爱一点」了:这个开源库SKILL把274种手绘风格编成了编号
“帮我画一张猫,可爱一点。”
每次我把这种话发给AI绘图工具,出来的东西都让我怀疑人生。有时候是一只眼睛占了半张脸的布偶猫,有时候是饱和度拉到爆炸的卡通贴纸,有时候干脆是像素级崩坏的哥特暗黑猫。问题不是AI听不懂,而是“可爱一点”这四个字,在模型眼里根本就不是一个精确指令——它是一团模糊的、随机的、每次解释都不一样的愿望。
所以我后来几乎不再用形容词控制风格了。我会说“吉卜力风格”、“水彩淡彩”、“蜡笔儿童插画”。但还是会翻车。因为这些风格词在不同模型的训练数据里权重完全不同,同一个词在SD和MJ里画出来的东西差着十万八千里。直到我碰到一个叫SKILL的开源库,它干了一件特别笨也特别聪明的事:把274种手绘风格逐一编号,你想画哪种,直接给编号,别跟AI商量。
这篇东西就是我实际用下来的完整记录,包括它怎么解决了我最头疼的风格不可控问题、编号背后到底是什么原理、以及我踩过的几个坑。适合所有被“风格描述词”折磨过的人——不管是画插画的、做设计的,还是纯粹想玩AI绘画的。
1. 为什么「可爱一点」从我嘴里说出来就翻车了
先别急着怪AI。回头看看我们自己说的话,就知道问题出在哪了。“可爱一点”这种描述,在人类的沟通里是没问题的,因为对方会结合你的表情、语气、之前对话的上下文去猜。但AI没有这个能力,它拿到的是一个被编码成向量的文本,你这句话在它内部空间里对应的,大概率是“可爱、一点、提高程度”这几个语义的混合体,具体往哪个方向偏,全看训练数据里这些词经常跟什么风格绑定。
1.1 自然语言描述风格的三个致命伤
我自己的项目里,用自然语言描述风格翻车,基本逃不出这三个原因:
第一是风格词的歧义。同一句话,不同人理解不同。比如“赛博朋克”,有人觉得是霓虹紫蓝调,有人觉得是废土机械风,还有人觉得是日式涩谷街头。模型训练的语料里这些标签的关联是多元的,你越笼统,它越随机。
第二是风格词的强度不可控。你说“厚涂”,但模型可能给你画到一半厚涂一半薄涂。因为提示词里的风格词往往被当作软标签,它只会把生成结果往那个方向拉一点,拉多少不是你能控制的。想加强就得叠词、加权重,但加过头就变成风格灾难。
第三是跨模型迁移性差。我在Midjourney里调好的一套风格描述词,换到Stable Diffusion里完全失效。同一个“宫崎骏风格”,MJ理解的是大色块和柔和光影,SD理解的可能变成一种特定的动画渲染算法。你在A模型里攒下的描述经验,换个模型全废。
1.2 同一句提示词,不同模型画出四种画风
我做个了一个很无聊但很说明问题的实验。同样的关键词“铅笔素描风格,一只狗”,跑了四个主流模型:
| 模型 | 实际输出效果 |
|---|---|
| 模型A | 精细的写实石墨素描,线条有浓淡变化 |
| 模型B | 彩色铅笔涂鸦,带儿童绘本质感 |
| 模型C | 炭笔速写,纸张纹理很重 |
| 模型D | 类似漫画草稿,线条断断续续 |
这四张图你很难说谁对谁错,因为“铅笔素描”本来就是个大类,不是一个可执行的指令。但你让设计师来用,他要的就是其中某一种,剩下的全是废图。出10张挑1张可以用,中间有9张的算力、电费和等待时间,都是白白浪费的。
这让我意识到一件事:风格问题不是靠换一个更好的形容词能解决的,而是需要一种不受歧义干扰的精确指代方式。就像编程里不用字符串比较而用枚举类型一样——你给AI风格描述,本质上是在做一次枚举值的映射,为什么不直接告诉它那个枚举值是什么?
1.3 风格是可枚举的,问题出在表达粒度
人眼能分辨的风格差异,其实远比我们想象中少。专业的画师或者设计师,看到一张图能立刻说出它是水彩、彩铅、油画、粉彩、版画、马克笔还是扁笔厚涂。这本身就是一套已经存在的“风格谱系”。
但AI绘画的提示词体系,一直没有把这套谱系结构化。所有风格都靠自然语言去描述,而自然语言天生就带着冗余和歧义。SKILL做的事情,本质上就是把这套谱系整理成了一个大字典——每种风格给一个唯一编号,你只要说“用编号177”,模型就照着那个固定的风格信号去生成,不再需要你搜肠刮肚想形容词。
我一开始觉得这思路太简单了,简单到有点蠢。但用了几次后发现,越是蠢的、笨的办法,在实际工程里越可靠。因为精确,所以可复现;因为可复现,所以可以批量生产。
2. SKILL到底做了什么事:把风格从形容词变成编号
SKILL是个开源库,核心功能就一句话:它收集和整理了274种手绘风格,给每一种风格分配了唯一的编号和配套描述,在你写AI绘画提示词的时候,可以像查字典一样选编号,然后直接把编号写进提示词里。
你可能会问:这不就是一个风格对照表吗?我自己也整理过类似的Excel,有什么区别?有,而且区别很大。
2.1 274这个数字是怎么来的
274不是拍脑袋凑出来的。我对这个数量级的理解是:它基本覆盖了你能叫得上名字的主流手绘风格,以及大量你叫不上名字但一眼能认出来的细分风格。
粗略分一下大概是这么几类:
- 传统绘画媒介:水彩、水粉、油画、丙烯、蛋彩、色粉、彩铅、石墨、炭笔、钢笔、圆珠笔、马克笔、蜡笔、油画棒等
- 版画与印刷类:木版画、铜版画、丝网印刷、石版画、浮世绘版画等
- 东西方传统画种:水墨写意、工笔重彩、白描、岩彩、唐卡、壁画、细密画、波斯地毯纹样等
- 现代插画风格:扁平插画、渐变噪点插画、颗粒肌理插画、描边贴纸风、涂鸦风、拼贴风等
- 漫画与动画类:日漫赛璐璐、美漫墨线、欧漫清线、中国风动画、剪纸动画、定格动画风等
- 特殊质感与实验类:刮擦、泼溅、烧边、做旧、水渍、吸墨、纸上晕染等
274这个数量,刚好能让你在大部分需求里找到一个“差不多的选项”,又不至于多到你翻不完。而且它的分类是有层级的,不是274个扁平条目,这一点在后面讲分类的时候再细说。
2.2 编号系统的结构设计
SKILL最值得称道的不是风格量多,而是它给每个风格配的描述模板是结构化的。光给一个编号没用,模型不认识“202”这个数字,你必须同时提供一组可被模型理解的描述词,编号才能稳定地触发对应风格。
这个过程有点像查表之后做一次翻译:编号是查找键,查到的是一条精炼的风格描述,然后你把这条描述填进提示词里。关键就在这里——这条描述不是随便写的,它是经过大量生成测试、反复修正后沉淀下来的“最优描述”。
举个例子,某个编号对应的风格,描述大概长这样:
编号182:dry brush, rough paper texture, cracked pigment particles, layered transparent strokes, muted earthy tones, artistic sketching style, hand-drawn feel这段描述里的每个词都不是装饰品。dry brush控制干画笔效果,rough paper texture控制纸张纹理,cracked pigment particles控制颜料开裂感,layered transparent strokes控制笔触叠加方式。它们是经过筛选的、对生成结果影响最大的关键词,而不是“漂亮”、“优雅”这种玄学词汇。
2.3 一个编号背后到底藏了多少参数
如果你在SD里用过ControlNet或者LoRA,就会发现SKILL的一个编号,实际上就等于替你打包了一套完整的风格参数方案。
这里我拆一下,一个编号背后大致包含这么几层:
| 层面 | 内容 | 作用 |
|---|---|---|
| 触发层 | 编号+风格名称 | 方便人查找、记忆、传递 |
| 描述层 | 一组精炼的英文风格词 | 让模型理解要生成什么 |
| 负向层 | 默认负向提示词 | 防止模型跑偏到其他风格 |
| 参数层 | CFG、采样步数、风格强度等建议 | 告诉你在生成时怎么设置 |
| 适配层 | 适用的模型类型与版本 | 告诉你在什么环境里用 |
我第一次看到这套结构的时候,心里想的是:这玩意儿本质上是把风格从“玄学”变成了“工程”。它没有改变模型的生成能力,但改变了你和模型之间的沟通方式。你说“我要编号182”,等于一次性地把风格描述、负向提示词、参数建议全部喂给了模型,它不再需要猜测你的意图。
3. 上手实操:从安装到第一次用编号出图
下面这部分是我实际跑通的流程,基于常见实践整理,不是理论推演。我用的环境是Windows 11,显卡是RTX 4090,部署的是SD WebUI(Auto或Forge都行),这套思路搬到ComfyUI里也成立,就是节点连接方式不同而已。
3.1 环境准备与安装步骤
先说明一下,SKILL本身不是一个独立的绘图工具,而是一套风格描述库和配套脚本,需要配合现有的AI绘图框架使用。安装逻辑其实很简单,本质上就是把风格数据文件和调用脚本放进你的绘图工具目录里。
以SD WebUI为例,我当时的步骤是这样的:
- 下载SKILL仓库:项目在GitHub上,直接git clone或下压缩包都行
- 定位插件目录:放到webui的extensions文件夹下,或者根据项目说明放到指定目录
- 重启WebUI:让程序加载新增的脚本
- 切换到对应Tab:一般在文生图界面里会多出一个风格选择的面板
- 加载风格列表:首次使用会生成一个索引文件,274个风格会全部列出来
安装过程中最容易出问题的点是Python版本和依赖冲突。我的建议是,先在一个干净的环境里测试,不要一上来就往生产环境里塞。如果你平时用ComfyUI,那么需要的是把风格描述的JSON文件和对应的提示词模板导入,然后通过自定义节点调用。
3.2 提示词写法与参数组合(附示例)
装好之后,真正的用法是:先确定主题,再选风格编号,最后组合参数。
我的习惯是写一个固定结构的提示词模板:
主题主体描述 + 构图与光影 + SKILL风格编号 + 风格强度标注举个例子,我想画一幅城市街景,用水墨写意风格。那么提示词可以这样写:
a busy old street corner, morning mist, stone road, people walking, [style_187], brush ink technique, rice paper texture, monochrome ink wash这里的[style_187]是SKILL的编号占位符,后面的brush ink technique和rice paper texture是编号自带描述的一部分,不是我自己加的。
参数层面,我的基准配置是这样的:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Steps | 28-35 | 手绘风格用偏低步数保留笔触质感 |
| CFG Scale | 5-8 | 太高会丢失纸纹和晕染效果 |
| Sampler | DPM++ 2M Karras | 兼容性最好,各风格都能用 |
| 分辨率 | 1024x1024起步 | 低于这个尺寸笔触会糊成噪点 |
| Style强度 | 0.6-0.8 | 太低风格不显,太高内容会被吞掉 |
这只是基准,具体到某一类风格要微调。比如水彩类我习惯把CFG调到6以下,不然水痕边缘会变得太锐利,失去晕染感;而版画类则适合CFG稍高一点,让黑色块更实、更硬。
3.3 实测效果对比:同一主题、不同编号
光说参数没意思,我实际跑了三组测试。主题统一是“一只坐在窗台上的橘猫”,用完全相同的种子,只替换风格编号,看看差异有多大。
第一组用了编号对应粉彩画风格的参数。出来的猫边缘是软的,毛发的质感像被色粉笔一遍遍叠加过,窗台的玻璃反光处理成了粗糙的粉质颗粒感,整张图有一种朦胧的温柔氛围。这个“温柔”不是我提示词要求的,是粉彩这种媒介自带的效果。
第二组用了编号对应木刻版画风格的参数。出来的猫完全是另一个气场,大块的黑色轮廓,刀刻的线条整齐有力,颜色只有红黑两色加少量留白。种子和刚才一样,但构图被重新处理成了更适合版画的强对比分离。
第三组用了编号对应彩色铅笔儿童插画风格的参数。毛发的排线方向清晰可见,颜色比粉彩更跳跃,纸张纹理细腻,整体有很明显的“手账涂鸦”感。
一个主题,三种编号,三种截然不同的画面。但更关键的是,这个结果是可复现的:我把同一个提示词和参数再跑十次,出来的图虽然细节会变,但风格方向高度一致,不会出现第一张是粉彩、第二张突然变成油画的这种跳变。这在用自然语言描述风格时代是做不到的。
4. 不是只有手绘:这套思路能延伸到哪里
一开始我以为SKILL就是一个手绘风格词典,但用着用着我发现,它的核心价值不在274这个数字,而在于它提出了一种风格工程化的思路。这个思路一旦打开,能延伸的地方比想象中多。
4.1 与其他风格控制方案的配合方式
现在AI绘画的风格控制方案不止一种,常见的有LoRA、ControlNet、风格参考图、以及各种风格化插件。SKILL跟它们不是竞争关系,而是可以叠加的。
我的实际用法是:ControlNet管结构,SKILL管风格,LoRA管特定角色或物体,三层各干各的活。比如我要一张水彩风格的原神角色同人图,那就用ControlNet锁住姿态骨架,用SKILL的水彩编号控制整体笔触质感,再叠加角色LoRA保证脸和服装特征。分层之后每个工具的压力都变小了,反而更稳定。
这里有一个经验:如果发现某个编号的生成结果不理想,别急着换编号,先尝试调整ControlNet的权重,或者换一个LoRA。因为风格的偏差很可能不是SKILL描述的问题,而是跟其他控制信号的冲突。
4.2 从绘画风格到摄影、3D、UI的迁移
SKILL目前收录的274种基本都是手绘风格,但它的这套“编号—描述—参数—负向词”四层结构,完全可以平移到其他领域:
- 摄影风格:胶片种类、镜头特质、暗房工艺、年份质感,都是可枚举的。柯达Portra 400和高反差黑白胶片之间的差异,比两种手绘风格的差异更容易用参数表达
- 3D渲染风格:PBR材质、卡通渲染、粘土风、低模风,这些在行业里本来就有明确的名称和参数标准
- UI与平面设计:极简风、新拟态、酸性平面、瑞士国际主义风格,这些也早就有成熟的定义
你完全可以按照SKILL的思路,给自己常用的摄影风格做一个私有编号库。比如编号S-01代表“富士胶片模拟直出”,编号S-02代表“二战老照片褪色质感”。做法就是在AI绘图工具的提示词预置功能里,把固定的描述短语存成模板,跟SKILL的用法一模一样。
4.3 给团队协作和提示词管理带来的启发
这一点是我最看重的。做设计团队的AI绘画落地项目时,最大的麻烦不是模型效果不好,而是成员之间的提示词语言不统一。
同样画“卡通头像”,组员A写“kawaii chibi style”,组员B写“cute cartoon avatar”,组员C写“动漫Q版头像”,三个人拿到完全不一样的结果,然后各调各的,最后交上来的作品风格稀碎。
如果团队统一使用SKILL或者类似的自定义编号系统,情况会变成:今天项目要求的所有头像用风格编号088,谁也别发挥。想换风格,走审批流程改编号,而不是在群里争论哪个形容词更准确。这种标准化带来的效率提升,远远大于单张图片质量的提升。
5. 踩坑记录与个人建议(不是所有编号都好用)
用SKILL跑了大概一个多月,不能说274个风格我都试过,但也试了接近一百个。下面这些坑,我踩过,写出来你们别再踩。
5.1 编号不是魔法,选错照样翻车
部分风格编号在特定模型下效果差得离谱。比如扁平插画类编号,在很多写实模型下表现会非常弱,因为模型本身的语言理解偏重“照片感”,你告诉它做扁平,它只会把照片去色加个描边,不是真正的扁平插画。
所以使用时要带模型适配性的判断。建议先在SD 1.5系、SDXL系、以及其他主流底膜下各跑一组样例,把效果好的编号跟底膜做个绑定记录。别到处传“SKILL很好用”,它是在特定底膜下好用,换了个模型全家翻车的情况不是没有。
5.2 关于“手绘感”的常见误区
很多人以为手绘风格,就是给照片加一个滤镜效果,但实际生成时会发现:真手绘风格不只是改变画面质感的渲染,它会反向重塑构图和结构。
比如我之前用木刻版画风格的编号,想画一个现代大楼,结果出来的图里大楼被简化成大块黑白几何,窗户直接被省略了。这不是模型能力不足,而是木刻版画本身的表达逻辑就是概括、简化、强调形状。你让AI画一张版画风格的建筑,就不该期待它保留照片级别的细节。
理解了这一点,很多“翻车”其实不是翻车,是你选错了风格和主题的匹配度。繁复场景配简约风格、细腻内容配粗犷媒介,自然互相伤害。用编号前先思考一个问题:这个主题在这种媒介下,应该长什么样?
5.3 我目前的工作流(仅供参考)
最后分享一下我现在的工作流。不是标准答案,但经过几个项目验证是稳定的:
第一步,确定项目需要的风格基调。这一步不看AI工具,就直接到Pinterest或者ArtStation找参考图,确定媒介和手感。
第二步,在SKILL里找到最接近的编号,生成一张测试图。如果78%接近就够用了,直接进入批量生产;如果差很多,再去找替代编号或者准备追加自定义描述。
第三步,把确认好用的编号、底膜、参数记入团队的共享表格。下次同一个风格直接用参数组,不再经过风格筛选这一步。
第四步,批量出图时用固定种子+固定编号,只更换主体描述词,保证系列作品的风格统一性。
我现在的体会是,SKILL最大的价值不是让AI画得更好,而是让我在跟AI沟通时少了很多无效沟通。它把风格变成了可复制的、可传递的、可验证的工程参数,而不是飘在空中的感觉。没有它我也能靠不断堆词调到相似效果,但每一次都要花掉几十分钟和几十张废图;有了它,这个步骤被压缩到了几分钟。
如果你也在跟AI绘画的风格可控性较劲,建议把这类“风格结构化”的工具当回事。别再把“可爱一点”甩给模型然后赌运气了,改说“编号053”试试,结果会老实很多。