中文 AI 写小说的最大坑,被这个 2 天 84 星的 skill 拆开了

4 阅读12分钟

中文 AI 写小说的最大坑,被这个 2 天 84 星的 skill 拆开了

向阳乔木(Joe)刚开源的 agent skill:先把剧情钩子、人物欲望、冲突升级定住,再生成原创、完整、低 AI 味的中文短篇。给写小说的人看,也给做 AI 工具的人看。

一、先看个东西

qiaomu-novel-generator 出现在 GitHub 是 2026 年 6 月 13 日,到今天 2 天。84 颗星、11 个 fork、0 open issue,MIT 协议,Python。仓库 6.4MB。

作者是向阳乔木(Joe),公众号「向阳乔木推荐看」主理人,长期把前沿 AI 变化转译成工作流、产品判断、AI 编程实践。

这是一个 agent skill,不是 CLI 工具,也不是 Web 界面。装上之后通过 npx skills add 接入 Claude Code / Codex / 其他兼容 agent 工具。它的输入是"想写个什么故事",输出是 1800-4000 字的中文原创短篇。它最特别的地方是不直接开写——先把剧情拆成可选择的策略让用户拍板,再进入正文。

二、它要解决什么

普通 AI 写小说的 6 种典型翻车:

  1. 开头没有钩子,读者翻两段就走
  2. 主角没有欲望,只是在被剧情推着跑
  3. 爽点来得太便宜,打脸不够爽
  4. 想"参考某部作品",最后变成危险的照搬
  5. 想"学某位作者",最后只学到表面腔调
  6. 越改越像 AI:不是X,而是Y、总结腔、教学腔、黑话堆满

qiaomu 的反向思路是:先讨论剧情怎么吸引人,再写正文。 你给一句主题,它先把你的输入拆成可选择的剧情引擎:

情绪承诺 -> 高压关系 -> 冲突场 -> 经典桥段重构 -> 升级节奏 -> 结尾余味

你回复 按默认更爽一点1B 2A 3C 这样的指令,它再进入正文。

三、最值得工程视角看的:14 个 Hook 流水线

SKILL.md 145 行里定义了 14 个 Hooked Workflow 钩子,作为整条流水线的检查点:

1. Intent Hook               识别输入类型、目标类型、读者承诺
2. Source Research Hook      必要时联网搜,提取 3-6 个公开信号
3. Inspiration Remix Hook    提供 2-3 个经典桥段启发让你选
4. Story Engine Library Hook 选主情绪、高压关系、冲突场、2-4 引擎
5. Prewrite Interview Hook   模糊需求走选择题
6. Story Strategy Hook       输出可确认的剧情策略
7. Story Engine Hook         抽取主角欲望、隐藏压力、读者承诺
8. Technique Hook            从 technique-matrix 选 3-5 个技法
9. Plan Hook                 紧凑计划
10. Draft Hook               按 output-contract 起正文
11. Anti-AI Language Hook    公式化措辞修正
12. Quality Hook             跑 quality-checklist
13. Feedback Hook            用户反馈分类
14. Evolution Hook           重复/高信号反馈才进 skill 核心

这 14 个 Hook 都不是强制 runtime API,是概念检查点——SKILL.md 里专门强调:

They are conceptual hooks, not mandatory runtime APIs. Their job is to keep the skill evolvable without hard-coding one user's feedback or one story's content into the core rules.

#13 Feedback Hook#14 Evolution Hook 的设计很关键:用户对单篇故事的反馈不直接进 skill 核心,只有当一个反馈重复出现、信号强、解决的是可迁移问题时,才升级成稳定规则。

四、反 AI 味:明确的黑名单

references/anti-ai-language.md 列了一组可检测的 AI 句式和替换方案:

Hard Smell:Not-X-But-Y

直接全列:

  • 不是X,而是Y
  • 不是X。不是Y。而是Z。
  • 问题不在于X,问题在于Y
  • 真正的X不是Y,而是Z

正文里要零容忍,最多允许出现 1 次——且必须是角色对话里那个角色真的会说的口吻。

替换示范:

AI 味改写
他不是害怕死亡,而是害怕被遗忘。他怕死,也怕棺材合上以后,没人记得他来过。
这不是失败,而是一次机会。失败两个字还贴在墙上,他已经把第二张图纸摊开。
真正的敌人不是对手,而是自己。对手还没出刀,他先听见自己手腕在抖。

这套改法的关键不是"换成朴素说法",而是把抽象判断换成可见的动作或物件

其他 AI-Smell 模式

总之综上所述关键在于值得注意的是有意思的是让我们想象一个世界这不仅是...更是...这就是...的意义、重复出现的装饰性 ——、结尾的 slogan 式总结——都列在黑名单上。

Fiction-Specific 改写原则

  • 用动作替代解释:别写"他被羞辱了",写"谁笑了、谁移开眼、谁拿走了他的东西"
  • 用画面替代主题:别解释结尾,回到一个有变化意义的物件
  • 用事件替代抽象过渡:别写"危机真正开始了",改成"有人敲门、有人撒谎、有人流血"
  • 用角色压力替代说教:让对话里有威胁、试探、隐瞒、交换

还有一个很少人提的"误导型诗意开篇"

references/anti-ai-language.md 末尾专门有一条:钩子可以压缩、奇怪、有诗意,但不能改变读者对题材的预期。例如"死人走进了酒肆"看似精彩,但下一段不锚定现实画面,读者就以为是玄幻鬼怪——题材契约就崩了。处理方式是下一句给现实锚点:

死人走进了酒肆。

一个快死的人走进了酒肆,胸口的血已经在狐裘上结成冰。

五、版权边界:明文规则 + 安全回复模板

对"参考某部作品""学某位作者"的处理是 qiaomu 设计里最谨慎的部分,明文列在 README 和 inspiration-remix-playbook

允许的:

  • 借用高层级故事功能:跌落神坛、错认身份、公开翻盘、迟来承认、隐藏证据
  • 提到作品名作为参考信号
  • 把 2-4 个启发组合成新前提
  • 换题材、换设定、换力量体系、换冲突场、换情绪回报、换结尾
  • 用通用工艺特征:史料感、冷对白、制度压力、黑色幽默、谜题结构

禁止的:

  • 复制受版权保护段落
  • 搬运名场面、角色名、地名、招式、签名句
  • 复刻可识别的连续情节链
  • 直接仿写在世作者的独特个人文风

对"在学某位在世作者"的安全回复模板(写进 playbook 直接给 AI 用):

我不能直接仿写在世作者的独特文风,但可以提取可泛化技法:制度缝隙、史料感细节、小人物在大系统里的奔走、轻讽刺、线索密集和节奏反转。我们用这些技法写一个全新的故事。

这套设计有两个实际工程价值:一是把"该不该抄"这种模糊判断变成可检测的清单;二是给在世作者相关的请求准备一段标准回复,AI 不用临场发挥。

六、8 个剧情引擎 + 5 层通用公式

references/story-engine-library.md 把爽文、武侠、修仙、悬疑、组织内斗、爱情等题材的共同结构抽象成 8 个可调用的剧情引擎

引擎适合制造什么爽感
隐藏身份被低估后公开翻盘
地下拍卖/鉴宝废物变宝、价值误判、反向打脸
宗门试炼/公开审查规则漏洞、见证人反应、资历压制反杀
杀人夺宝/禁忌交易机缘带来危险,危险逼出成长
双强博弈互相试探、互相利用、反败为胜
组织内斗抢功、甩锅、文件证据、公开复盘
悬疑线索链每个答案打开更坏的问题
追妻/错认/迟来承认情绪拉扯、尊严、代价选择

5 层通用公式——所有题材都可以塞进这五层:

情绪承诺 -> 高压关系 -> 冲突场 -> 引擎组合 -> 升级/钩子节奏

展开来:

强设定 + 强委屈/缺口 + 强关系 + 强对手 + 强反转 + 强钩子 = 可追读故事

这套设计的实用价值是:当你面对一个"不知道怎么写"的前提,先看哪一层弱

  • 设定普通?让关系更近
  • 反派普通?给他证据、身份、公开杠杆
  • 力量系统薄?加稀缺、规则、代价
  • 情节太安静?把冲突搬进公开场合

这个补救路径可被新 contributor 复用——不是某人的天才直觉,是一棵树状决策。

七、一个真实输出预览

仓库 examples/sample-01-wuxia-suspense.md 是江湖悬疑短篇《雨押》:

铁算盘沈七醒来的时候,手里握着一枚人牙。

牙是金的,嵌着细小的红宝石,在油灯下像一点还没冷透的血。

他认得这颗牙。

半个时辰前,金牙还在青州知府梁世安嘴里。梁世安笑起来时,喜欢用舌尖顶那颗牙,像顶着一枚私藏的官印。

现在官印落在沈七掌心,梁世安死在隔壁雅间,七刀,刀刀不见血。门外的雨把整条花街洗得发白,楼下三十七个江湖人都说,杀人的只有一个。

"铁算盘。"有人在门外说,"出来。"

前 6 段包含:物件(人牙)、关系(旧识)、危险(死亡)、现场(雨夜)、社会压力(37 个江湖人)、悬念("出来")。符合 quality-checklist 里"前三段有危险、羞辱、损失或谜题"的要求。这就是所谓不靠流水账写故事的样子。

八、质量门槛 + 自检脚本

每篇故事跑 scripts/evaluate_story.py 自检 9 个维度:

  • 开篇钩子:前三段有危险、羞辱、损失或谜题
  • 人物欲望:主角马上想要一个看得见的东西
  • 冲突升级:至少三次变难,不靠流水账
  • 对白张力:对白里有威胁、试探、隐瞒或交换
  • 画面感:用物件、动作、场景承载信息
  • 反转/悬念:前文细节在后文换意义
  • 结尾余味:解决当下问题,同时留下回响
  • 去 AI 味:删掉公式化对比和总结腔
  • 开篇语义清晰:钩子不能让读者误判题材或基本事实

--fail-on-warning 模式下,任何一维不达标就退出非零,可以直接接 CI。

九、安装与使用

# 装
npx skills add joeseesun/qiaomu-novel-generator

# 验证
npx skills add joeseesun/qiaomu-novel-generator --list
test -f .agents/skills/qiaomu-novel-generator/SKILL.md || \
  test -f ~/.agents/skills/qiaomu-novel-generator/SKILL.md

前置:Node.js + 一个支持 agent skills 的工具(Codex / Claude Code / 其他)。

常用 prompt 入口:

用 qiaomu-novel-generator,写一个不会武功的书生误入江湖死局的完整短篇。
帮我生成一个小说,先给几个方向让我选。
我想写一个类似《凡人修仙传》的小说,先给爽点和大纲。
先联网搜一下《太白金星有点烦》的公开资料,再改成现代组织内斗爽文。
这段 AI 味太重,尤其是"不是……而是……",帮我改得像人写的。

十、这个项目给做 AI 工具的人能借鉴什么

qiaomu-novel-generator 是个典型的**"prompt 工程 + 模块化"组合**,跟一般"prompt 套娃"的差别在于:

1. Hooked Workflow 而不是线性 Step

14 个 Hook 是检查点而不是顺序 API——这个设计让 skill 可以演进,不把单篇反馈写死到核心规则里。#14 Evolution Hook 是给"通用 skill 长期生存"留的口子

2. 黑名单比白名单更可执行

anti-ai-language.md 列了具体要禁的句式,比"写得更像人"这种抽象要求可执行得多。AI 看到 不是X,而是Y 直接改写,比让 AI 自己判断"是不是 AI 味"靠谱。

3. 版权边界明文 + 安全回复模板

对"在学某位在世作者"这种请求,playbook 里直接给一段标准回复——AI 不用临场发挥容易翻车的话术。这个做法对所有可能遇到敏感请求的工具都值得抄。

4. 抽象成 5 层公式 + 8 个引擎

把好故事拆成可组装模块,每个模块有清晰输入输出。这跟软件设计的"组合优于继承"是一回事——让非天才贡献者也能产出合格结果。

5. 8 个 sample + 自检脚本 + CI

examples/ 下有完整样本,evaluate_story.py 跑 9 维自检,--fail-on-warning 模式直接接 CI。

6. 写"你不能做什么"

README 末尾的 Troubleshooting 表格特别有意思——把常见翻车写进表格,连原因和处理方式都给。这相当于把 QA 知识沉淀进文档,新 contributor 不用猜项目历史。

十一、参考资料

一点感想

中文 AI 写小说这事,过去一年最大的进展不是模型变强了,是工程结构变清晰了。qiaomu-novel-generator 把"好故事"拆成 14 个 Hook + 8 个引擎 + 9 维自检,每个模块有明确输入输出,这件事的工程价值不亚于把"会写代码"拆成 lint + formatter + type checker

2 天 84 星、0 open issue——这种社区反应说明中文 AI 写小说这件事有一批真在用的人在等更好的工具。qiaomu 的下一步看点是它能不能保持"低 AI 味"这条护城河——一旦 anti-ai-language 这套黑名单成为行业标准,作者的差异化就要靠"高级工艺判断"那一层了。

写小说的人可以先装来跑两个题材试试。做 AI 工具的,这套 Hooked Workflow + 黑名单 + 引擎库 + 自检脚本的组合值得抄。