handraw-style 深度评测:6100 Star 的 366 种画风库,自检全绿却有 29 条踩了自己的红线

让 AI 画一张「手绘风」的图,最烦的不是画不好,是每次都画得不一样。今天给它一句「日系手绘」,明天它给你一个水彩,后天变成铅笔素描。你想要的那个味道,说不清、也锁不住。

handraw-style 就是冲着这件事来的:把画风变成编号。366 个画风各占一个号,你报一个编号,它就把那一款的线条、笔触、上色方式翻译成一段中英双语提示词,喂给生图模型。48 天冲到 6100 Star,配套还有 169 种排版图型、36 种主题色,以及 1 个主技能带 13 个子技能。

我把它拷进隔离沙箱跑了一整轮。先说结论:画风库本身是扎实的:366 张风格单图我逐张打开过,一张不缺、一张没坏。但它自己写的自检脚本在最新代码上是红的,打包命令跟着一起用不了。而它文档里反复强调的那条红线,恰恰没有任何脚本在查——我数出至少 29 条越线。

一、它把「画风」拆成了三样东西

普通人生图,是在跟模型聊天:「再文艺一点」「线条细一点」。这个项目换成填表:画风编号 + 排版编号 + 主题色编号,三样填完,提示词就成型了。

你能选的东西 数量 举例
画风(视觉语言) 366 种 黑色简线、少量暖色腮红
排版图型(画面结构) 169 种 社媒卡、信息图、漫画分镜
主题色 36 种 C-01 克莱因蓝、C-26 柿子橙

这三样是分开的,这是它比同类做得细的地方:画风只管笔触和质感,排版只管信息怎么摆,颜色单独一层。你可以用同一套画风做小红书卡,也可以做长图,味道不散。

真正花心思的是下面这一层。它发现不同生图模型「听话程度」不一样——有的模型听到作者名就知道该画成什么样,有的必须把风格特征一条条念给它,还有的连特征都不管用、必须垫一张参考图。于是它给每个画风配了「该用哪种方式激活」的档案:

生图模型 只报名字就够 名字 + 风格特征 还要额外垫参考图
官方标定的 gpt-image-2 130 种(35.5%) 199 种(54.4%) 37 种(10.1%)
没登记过的第三方模型 0 0 366 种(100%)

换句话说:换个模型它不会装作自己还懂。认不出来就退回最保险的方式,让你传参考图。这份保守在开源项目里不多见,多数项目会假装自己通吃。

二、实测:它的自检脚本,自己在最新代码上是红的

我在一台隔离沙箱里跑完了它的全部检查,没有碰生产机。命令和结果都留在下面,你可以照着复现。

第一件事就跑它的官方自检——作者写明「发布前必须通过」的那个脚本。结果是失败,报错原文:

受版本管理的文件里泄漏了本地磁盘路径:一个生图示例脚本的第 11 行,写死了 `E:\handraw-style\output\…`

一行 Windows 盘符路径,卡住了整个自检。这段代码是昨天(10 月 23 日)随 v1.9.4 一起进来的。

我把这一行改成相对路径,别的什么都没动,再跑一次——通过,366 种画风、169 种图型、36 种颜色全绿,耗时 2.6 秒。

这个对比说明两件事:闸门的设计是有效的,它真的会拦;但它自己也真的会红,而且红了没人发现。

连带后果比这行路径严重。项目的打包脚本第一步就是调这个自检,所以:

我跑的东西 结果
官方自检(改前) 失败,卡在一行盘符路径
官方自检(改那行后) 通过,2.6 秒,366 / 169 / 36 全绿
官方打包命令 退出码 1,dist/ 目录根本没生成
前端逻辑测试 崩溃:断言还写着 331 种画风、166 种图型
发布审计脚本 6 个问题:5 处本机路径 + 1 处硬编码密钥
366 张风格单图逐张打开 0 张缺失、0 张损坏

最后两行值得单独说。

打包命令失败,意味着你按项目说明一步步操作,到最后一步拿不到安装包。不是装错,是根本没做出来。

前端测试崩溃,是因为这套测试写死了「331 种画风、166 种图型」——而库早就长到 366 和 169 了。我把数字跟上,它还是崩:界面里的风格选择器比库多一个条目(多一个「写实」入口),期望值得是 367。也就是说这个测试已经很久没人跑过了。

发布审计报的那条硬编码密钥,是我最意外的一处。审计脚本自己的说明写着「检查本机路径、常见凭据」,而它确实查出来了:一个本地生图服务的调用密钥,明文写在发布脚本里。项目根目录的发布检查记录却写着「无本机路径、常见凭据」。文档和工具在这里各说各话。

三、缺陷注入:闸门守住了什么,又放过了什么

光看全绿没用,我往库里塞了几处错,看它拦不拦。

我改坏了什么 闸门反应
删掉 1 张风格参考图 拦下:提示「366 张单图必须全部就位」
从旧编号映射表里删 1 条 拦下:提示「必须双向覆盖每一种风格」
把技能元数据字段名写错(name → nam3) 拦下:提示「缺少必填的 name 或 description」
把某条风格特征里的否定句改成肯定句 放行,但生成提示词时被自动滤掉,没漏出去
在画廊里删掉一张画风卡片 没报错——因为自检会先重建一遍画廊,我的改动直接被覆盖了

前三条是真拦。第四条是设计得不错:风格特征里如果有人写了「避免画人物」这种否定句,它不会原样塞进提示词,而是过滤掉——这个细节说明作者想过提示词污染的问题。

第五条有意思:它不是防住了,是自愈了。自检在检查之前先把画廊整个重新生成一遍,所以你手改的 HTML 不算数。这既是保护,也意味着「检查」和「生成」这两件事被绑在一起——你没法用这个脚本去验别人给你的、已经生成好的包。

四、它自己写的红线,29 条越过去了

这个项目的说明文档里有一段写得特别硬:

严禁把参考图里的具体画面内容(具体人物、外貌、服饰、动作、道具、具体动植物、具体场景)写进风格特征。只能写纯视觉语言:媒介材质、色彩光影、空间景深。

>

禁止出现的反例:「白色棉麻长裙的年轻女性」「黑色短发」「侧身回眸」「咖啡杯」「雨伞」。

理由很实际:风格特征会被塞进每一条提示词里。如果某条风格里写死了「围巾+小鸟」,那你画「宇航员在月球」时,模型也会给你加一条围巾、一只鸟。风格应该对主题完全透明。

我把 366 条风格特征逐条过了一遍。剔除「避免 / 不要」这类否定句后,仍有至少 29 条写进了具体画面内容,占全部有特征描述的 348 条的 8.3%:

类别 条数
具体服饰(围巾、牛仔裤、鞋带) 12
姿态动作(坐姿、站立、回眸) 6
外貌(黑色长发、卷发、眼镜) 6
具体动植物(猫、鸟、小狗) 5
具体场景(咖啡馆、屋顶、街角) 5
道具(咖啡杯、雨伞) 2

对照着看最清楚。文档点名的反例是「黑色短发」,库里有一条编号写着「黑色长发女性、坐姿、白上衣与蓝色牛仔裤」;文档点名「雨伞」「咖啡杯」,另外两条写的正是「咖啡馆水汽与雨伞街景」和「咖啡馆日常」。一条不差,全在文档亲手列的清单上。

要说明的是,我这是按关键词规则匹配的,判据是文档自己点名的那几类词,所以可能有误伤——比如「帽子」在某些风格里确实属于造型语言。但反过来也可能漏:写的是「人物」「主角」这类抽象词、没落到具体服饰的,我没算进去。29 是个下限,你可以按编号自己复核。

问题不在这些条目本身,而在没人拦它们。自检脚本查了图片有没有、编号连不连续、元数据字段全不全、失败提示里的路径泄没泄漏——唯独没查作者自己反复强调的那条铁律,一个字都没查。这条线是靠人守的,而现在看,人没守住。

五、我的判断

值得装,但要按「素材库」理解它,不要按「质量守门人」。

它最值钱的是那 366 张风格单图。我逐张打开验过:零缺失、零损坏,画廊里 369 处图片引用全部命中本地文件。另外 36 种画风还多配了一张四宫格参考图,生图时垫进去,风格能稳住。光这批图就值回它 226 MB 的体积(其中 110 MB 是 Git 历史)。

模型能力分层那一层同样值得学。它没有对所有模型说同一句话,而是承认「有的模型听不懂」,听不懂就退回最保险的路径。这是工程上的诚实。

但两条得自己盯着:

一,别信「全绿」。它的自检在最新代码上是红的,打包命令跟着失效。你要用,先把那行盘符路径改成本机的相对路径,再看一遍输出。两分钟的事,但这一步 README 不会告诉你。

二,它给画风写的特征不完全可信。至少 29 条把具体画面内容写了进去,而那正是它自己禁止的事。用这些编号出图时,你想要的画面主题会被参考图里的衣服、动物、场景污染。稳妥的做法是:出图前先看一眼这条画风的特征描述,觉得混进了具体物件,就自己删掉再喂给模型。

一句话收尾:一个把「怎么让模型听懂画风」想得很透、把「怎么管住自己」做得还没跟上的项目。素材可以放心用,闸门要自己带着。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读:

发表评论