我用 AI 做了一个写小说的工具,结果它比我会写
一个有脑洞但不会写小说的程序员,如何用 AI 把灵感变成一本完整的小说。
起因
我脑子里一直有故事。
不是那种”恍然大悟”的故事,而是一种模糊的画面——一个少年站在废墟之上,身后的天空被撕开一道口子,光从裂缝里倾泻而下。我觉得这个画面很酷,想把它写成小说。
但我写不出来。
每次打开 Word,对着空白文档发呆十分钟,然后关掉。我脑子里有场景、有人物、有冲突,但就是没办法把它们变成流畅的文字。我知道这是两个完全不同的能力——”想象力”和”写作能力”。前者我有,后者我没有。
有一天我在用 AI 写代码的时候突然想:既然 AI 能帮我写代码,能不能帮我写小说?
于是我开始了 MindPen 这个项目——一个 AI 驱动的智能小说写作平台。口号是:会看就会写,无需写作功底。
技术选型:用自己最熟悉的
这次我没有让 AI 帮我选技术栈。后端我选了自己最拿手的 Java 体系,前端用 Vue 3,快速把想法做出来。
后端选了 Spring Boot 3.2 + Java 17,这是我最熟悉的技术栈。前端选了 Vue 3 + TypeScript + Vite,搭配 Element Plus 做 UI。AI 接口用了智谱 AI 的 GLM-4-Flash,兼容 OpenAI 格式,接入简单。
没有追求什么前沿技术,就是用自己最拿手的工具,快速把想法做出来。
MindPen/├── mindpen-server/ # Spring Boot 后端├── mindpen-web/ # Vue 3 前端└── storage/ # 文件存储(每个小说项目一个目录)
存储方案我选择了最简单的——直接用文件系统。每个小说项目一个文件夹,元数据存 JSON,章节存 Markdown。没有数据库,没有复杂的基础设施,跑起来就行。
核心难题:AI 写小说的最大问题
一开始我以为这事很简单——把用户的需求告诉 AI,让它生成章节不就行了?
试了一下,生成的文字确实是通顺的,但读起来就是不对。你肯定也看过那种 AI 生成的文章:每段都四字成语堆砌,到处是”仿佛”、”宛如”、”不禁”,每段结尾都要来一个情感升华,句式工整得像作文模板。
这就是”AI味”。
AI 写东西最大的问题不是语法错误,而是——它写得太”完美”了。真正好看的小说,是有缺陷的:人物说话不那么工整,情节发展不那么对称,情感表达不那么直白。
反 AI 味的 Prompt 工程
这成了我花时间最多的地方。我在 PromptTemplate 里写了一大段”禁止事项”:
## 绝对禁止(AI味重灾区,出现即为废稿)1. 禁止四字词语堆砌2. 禁止每段都有情感升华3. 禁止完美对称的排比句4. 禁止万能形容词(仿佛、宛如、不禁、竟然)## 必须做到1. 对话要有个性——不同角色说话方式不同2. 句子要有节奏——长短交替,偶尔断句3. 描写要具体——不说"美丽的花",说"花瓣边沿有圈淡黄的边"4. 人物要有缺陷——完美的角色不好看5. 留白——不要什么都写透,给读者想象空间
这段 prompt 我改了不下二十遍。每次生成一段,读一读,标记出”AI味”重的地方,然后回去调 prompt。整个过程就像训狗——不是一次就能训好的,需要反复纠正。
后来我发现这个过程本身就是一种有趣的创作——你不是在写小说,你是在”教 AI 怎么写小说”。你在定义什么是好的文字,什么是差的文字。这种元层面的思考,反而让我对写作有了更深的理解。
最核心的创新:四层记忆系统
解决”AI味”只是第一步。真正难的是另一个问题——长篇一致性。
小说不是写一章就完事的。当你写到第十页时,AI 需要记住第一章埋下的伏笔、第三章出场的配角、第五章揭示的秘密。但 AI 的上下文窗口是有限的,你不能把前面九个章节的全文塞进去。
我设计了一套四层记忆系统来解决这个问题:
第一层:故事圣经(Story Bible)
永远是完整加载的。包含世界观设定、角色档案、主线剧情、写作要求。这部分信息量不大,但对所有章节都适用。
第二层:情节记忆(Episodic Memory)
采用”远简近详”策略:最近 2 个章节保留详细摘要,3-5 章保留中等摘要,6 章以后合并成超简摘要。就像人脑一样——最近的事记得清楚,更早的事只记得大概。
第三层:细节记忆(Detail Memory)
只保留”活跃”的信息:未揭示的伏笔、未完结的剧情线、角色的成长弧线。已经完结的剧情线会被降级,不再占用上下文。
第四层:工作记忆(Working Memory)
当前章节的特殊上下文:上一章的结尾(保证衔接)、即将揭示的伏笔、本章的写作目标。
故事圣经(常驻) → 世界观、角色、主线情节记忆(衰减) → 近详远简的章节摘要细节记忆(活跃) → 伏笔、剧情线、角色弧工作记忆(即时) → 上一章结尾、本章目标
记忆提取管线
每生成一个章节后,系统会自动调一次 AI 来提取结构化信息:
{ "summary": "章节摘要", "newForeshadowing": ["新埋的伏笔"], "revealedForeshadowing": ["揭示的伏笔"], "plotThreadUpdates": ["剧情线更新"], "characterChanges": ["角色变化"], "timelineEvents": ["时间线事件"]}
这个过程是异步的,不阻塞用户操作。如果提取失败,系统会生成一个兜底的简要摘要,保证记忆不会断。

AI 工具箱:写作瑞士军刀
除了自动生成章节,我还做了一组 AI 写作工具,覆盖从构思到打磨的各个环节:
-
• 脑洞变设定:输入一句话灵感,AI 生成完整的世界观、角色、剧情 -
• 黄金开头:生成三种不同风格的开头,挑一个最喜欢的 -
• 小说大纲:一键生成完整的故事大纲 -
• 主线剧情 / 支线剧情:设计剧情结构 -
• 取名神器:生成角色名、地名、组织名 -
• 扩写 / 续写 / 润色 / 改写:选中文字,一键加工
其中”脑洞变设定”是我最喜欢的功能。你只需要输入一句类似”一个能看见别人寿命的少年”这样的话,AI 就能给你生成一套完整的故事设定。
编辑器:让写作回到创作本身
章节编辑器我做得比较克制,没有搞富文本,用的是 Markdown。核心功能包括:
-
• 30 秒自动保存,不用担心丢失 -
• 选中文本弹出 AI 工具栏,直接扩写、续写、润色 -
• 实时字数统计和阅读时间估算 -
• 手动编辑后自动触发记忆同步,保证上下文不乱
我始终认为写作工具应该是”隐形的”——你感受不到它的存在,但它一直在帮你。
开发过程中的趣事
“AI 的上下文就是不够用”
这是开发过程中最大的挑战。GLM-4-Flash 的上下文窗口有限,而一部小说动辄几万字。四层记忆系统就是被这个问题逼出来的。一开始我试过直接塞全文,结果 AI 到后面完全忘了前面写了什么,角色性格突变,伏笔遗忘,剧情自相矛盾。
后来我把问题拆开:不要求 AI 记住所有细节,只要求它记住”关键信息”。这个思路的转变,让整个系统变得可行。
“文件系统就够了”
一开始我考虑过用数据库,但后来放弃了。小说项目之间是完全隔离的,没有复杂的关联查询,文件系统的性能完全够用。而且文件存储有一个额外的好处——用户可以直接用 Git 管理自己的小说版本历史。
“流式生成是刚需”
小说生成不是一秒钟就能完成的事,一个章节可能需要几十秒。如果不做流式输出,用户就盯着一个 loading 转圈,体验极差。我用 SSE(Server-Sent Events)实现了实时流式输出,AI 生成一段就推给前端一段,用户能看到文字逐字出现,就像 AI 在现场写给你看。
我的感受
AI 是搭档,不是保姆
这次做 MindPen,后端是我自己写的,AI 更多是帮我处理前端的 Vue 组件和 CSS 样式。我知道自己想要什么,AI 帮我更快地实现。遇到不确定的技术选型,我可以自己做判断。这种”我和 AI 并肩走”的感觉很好——你清楚方向,AI 帮你加速。
Prompt 工程是一种新的编程能力
调教”反 AI 味”的 prompt 让我意识到,未来的编程不只是写代码。用自然语言精确地描述你想要什么、不想要什么,这本身就是一种核心能力。写好 prompt 和写好代码一样,需要清晰的逻辑、对细节的关注和大量的实践。
AI 能写出”及格”的小说,但写不出”优秀”的小说
MindPen 生成的文字经过 prompt 调教后,确实比大多数 AI 输出要自然。但离真正的优秀作品还有距离。AI 擅长的是结构化的内容——设定、大纲、剧情推进。但在那些需要”灵光一现”的时刻,AI 还是做不到。
不过没关系。MindPen 的目标从来不是替代作家,而是降低写作的门槛。把”有故事但不会写”的人,变成”能写出自己故事”的人。
项目现状
目前 MindPen 已经实现了完整的小说创作流程:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技术栈:Spring Boot 3.2 + Vue 3 + TypeScript + Vite + 智谱 AI
写在最后
做 MindPen 的过程中,我最大的感悟是:AI 降低了创作的门槛,但没有降低审美的门槛。
AI 可以帮你把一句话灵感变成完整的设定,可以把大纲变成流畅的章节,可以在你卡文的时候续写一段。但什么故事值得讲、什么情节打动人、什么文字是好的——这些判断还是需要你自己来做。
工具越来越强大,但品味永远是稀缺的。
如果你也有一个一直想写但写不出来的故事,试试 MindPen 吧。也许你和一本小说之间的距离,只是一个工具。
MindPen 目前仍在持续完善中,很多功能和体验还在打磨。如果你对 AI 写作感兴趣,或者有什么想法和建议,非常欢迎提出来,帮我一起把这个工具做得更好。
夜雨聆风