1. 为什么一个后端程序员会把写小说变成“技术项目”
先交代一下背景,免得读者觉得这个标题太跳跃。我是一个写了五六年后端服务的程序员,日常工作就是需求评审、接口设计、数据库表拆分、排查线上告警。写小说这件事,和我的职业八竿子打不着,但它一直是我的一个“历史遗留需求”——嘴上说了很多年“等有空了写点东西”,实际上每次打开文档都活不过二十分钟。
1.1 工作之余的写作欲望与“空白页恐惧”
程序员其实是有叙事冲动的,只是平时这份冲动都消耗在周报、技术方案文档和事故复盘里了。但周报和小说完全不是一回事:周报只需要把结论说清楚,小说却需要你构建一个人物、安放他的动机、制造冲突,再让冲突合理地消解。这些东西对长期写代码的人来说,肌肉是萎缩的。
我不是没尝试过。前两年断断续续开过三个头,全都停在第一章前两千字,原因都一样——盯着空白文档,脑子里什么都有,落到文字就全散架了。后来我把这归因为“没有正反馈”:代码有编译器,有测试用例,有联调环境,你写的每一行都能立刻看到对不对;小说没有编译器,读者也不会在第一章结束的时候给你报一个BUILD SUCCESS。
1.2 把AI当结对程序的思维迁移
接触AI辅助写作之后,我发现我以前掉进了一个误区:总觉得AI写作是“让AI替我写”,是输入一个题材然后坐等它吐出一篇完本。实际上,那只是AI写作最粗糙的用法。
后来我换了个思路——把AI当成结对编程里的那个搭档。我们结对的时候,通常一个人写代码、一个人review,或者一个人负责实现思路、另一个人负责查边界条件。那我写小说,为什么不能让AI负责“把脑子里模糊的画面扩写成段落”,而我负责“评审这段文字是否忠于我的人物设定和情节走向”?
顺着这个思路,我就开始重新设计自己的“写作工程”了。整个过程大概持续了一个多月,记录一下,也能给同样有写作需求但不知道怎么下手的程序员同行一点参考。
1.3 为什么偏偏是番茄工作法
这个标题里带“番茄”,先说清楚我用的是哪个“番茄”。“番茄Todo”这个效率app我用了很多年,但这次真正改变节奏的,是“番茄工作法”这个经典的时间管理方式:25分钟专注、5分钟休息,四个番茄钟为一组,中间来一次15到20分钟的长休息。
一开始我怀疑这玩意儿对写作有没有用。写代码的时候我进入心流两三个小时不带动的,为什么写小说反而要切碎成25分钟?可实际操作后我明白了:写代码的“心流”是有谱的,脑中的数据结构是明确的;而写小说的“心流”极其脆弱,一个措辞卡住,可能十分钟就飘走了,等回过神来发现自己在刷手机。25分钟的番茄钟提供一个“外部压力”,逼着你在有限时间里做出产出,反而帮助大脑集中。
而且,番茄钟的休止符恰好解决了和AI协作时的“输入成本”问题。每次向AI发起一次生成请求前,你需要先想清楚“我要它做什么”,这本身就是一种写作。没有时间盒,你会反复优化prompt而不是真正推进剧情。有了番茄钟,你会更高效地构思每次请求。
2. 从工具选型到第一行“章节代码”
开工之前我花了两天时间做“技术调研”。这听起来很魔怔,但如果你过去几年上班养成了“先调研再动手”的习惯,很难不延续到写作里。
2.1 我选了什么模型、什么工具链
先说说我实际选定的组合,方便照抄:
- 写作主战场:仍然是我熟悉的Markdown编辑器,本地存稿,不依赖网页编辑器的手感。
- 文本生成主力:日常用的通义千问和Kimi都试过,最终把“扩写细节”和“头脑风暴”两个任务分开——扩写细节我用通义千问,因为长文输出稳定;灵感和分支走向我用Kimi,因为它的多轮对话语境保持得更好。
- 辅助工具:一个开源的本地语料管理工具,用来存人物设定、章节摘要和历史事件表,避免后期剧情对不上。
- 番茄计时:手机上的番茄Todo,简单记录每一天的番茄数量和写作字数,后期可以统计。
这套组合不是最优解,但胜在“顺手”。很多写得好的作者用的可能是付费工具,但对我这种刚起步的人来说,先用熟悉的环境跑通流程,比追求最强的工具重要得多。
2.2 给AI交代“项目背景”的提示词工程
作为程序员,我写提示词的第一反应是:“这就像一个初始化的配置文件,得把所有常量先定义好。”
我给自己建了一个统一的项目背景模板,每次开新章前,都先粘贴一遍这个模板再输入新指令。里面包含这么几项:
- 体裁、时代背景、叙事视角
- 主角姓名、年龄、核心性格标签
- 当前章节需要推进的目标事件
- 前情摘要(三到五句话)
- 新增细节要求,比如“这段对话要体现主角口是心非”
模板的好处很直接:AI模型没有记忆,每一次对话都是无状态的请求,就像写HTTP接口一样,你不把上下文放在请求体里,它就返回你一个莫名其妙的响应。你要是每次随意发挥,那么上下文的“接口契约”就是乱的,返回质量自然不稳定。
2.3 第一次试写:我犯的第一个错误
我第一次正式试写就翻车了——我给AI的描述是“写一段主角在雨夜走进便利店买关东煮的场景,带一点孤独感”。AI给了我一整页非常精致的文字,有潮湿的霓虹、也有关东煮上升的热气。乍一看很好,但细读之后,我发现这段文字严重偏离了主角的年龄。主角是个二十多岁刚失业的程序员,但AI把他写成了四五十岁中年落魄男人的口吻,用词太苦太老。
问题出在哪?我给的“孤独感”三个字,AI把它理解成“中年危机的孤独”,而不是“年轻人不知所措的孤独”。同理心不够,或者说是提示词里的约束不够。
这件事给我一个教训:指望AI一次写出完美内容,不如把它当作“一个文笔很好但不懂你的故事的设计师”。你需要先对它做需求评审,它才能给你让开发阶段顺利的代码。后面我所有的prompt里都会带上两三句关于“不要做什么”的负面约束,效果立竿见影。
提示:给AI写写作指令,最好同时给出正面要求(要什么氛围)和反面约束(不要什么倾向、不要什么词汇),否则它很容易用自己训练样本里的“平均审美”覆盖你的个人审美。
3. 一个番茄钟的写作节奏:25分钟能干多少活
既然标题里带“番茄”,这一步是整个历程里最值得展开的部分。
3.1 我的番茄节奏表:四个番茄写一章
我每天能投入的时间有限,下班后大概能挤出两到三个小时。我给自己定的目标是:每天完成一个番茄组,也就是四个番茄钟,总计约100分钟的专注时间,对应产出一章约2500到3500字的草稿。
一个番茄组的拆解是这样的:
- 第一个番茄钟(25分钟):不动笔,只做“情节拆解”。把要写的这一章拆成4到5个情节点,每个点用一两句话写清楚。这个阶段完全不使用AI,事后的经验证明,这个阶段的质量决定了整章的上限。
- 第二个番茄钟(25分钟):带着拆解好的情节点向AI下达分段扩写的指令,一次扩写一个情节点,AI给到草稿后,我在旁边批注“这里不够好,需要改”和“这句情感浓度可以保留”。
- 第三个番茄钟(25分钟):人机交替。这个番茄我会结束AI生成,集中做“编辑手术”,把上一轮AI生成的段落清理干净,去掉模板化的形容词和重复比喻。
- 第四个番茄钟(25分钟):通读全章,标记问题,把仍需修改的部分汇总成下一章的“待办事项”。
这四个番茄钟走下来,相当于走了一遍“粗加工、细加工、终检”的流水线。
3.2 番茄之间的休息:也是给AI降温的时间
这里面有一个很多教程不会讲的细节:番茄钟之间那5分钟休息,不只是给你,也是给AI的“冷却时间”。
为什么这么说?因为我早期习惯在一个番茄里连续追问AI,一次生成不满意,马上调指令再生成,一个场景反复让它重写十几次。这样效率极低,而且AI在这个过程里会被你反反复复的指令带跑,它会在词句上越来越花哨,但剧情推进几乎为零。
后来我刻意控制节奏:一次场景生成最多让AI重写三次。三次不满意,就停手,把问题记录下来,等到下一个番茄钟开始再处理。这段5分钟的冷却时间,看起来什么都没干,实际上是在帮你重新审视“我到底想要它写成什么样”。很多问题本来就出在指令本身,不是出在AI的能力上。
值个休息结束之后,AI经常能写出比上一个版本好得多的内容。这不是玄学,而是因为你重新表达需求时,对场景的理解本身变得更清晰了。
3.3 用数据看节奏:效率从每小时300字涨到900字
我在手机里用表格记录了每天的四项指标:番茄数量、使用AI次数、净字数、返工字数。先说结论,最初一周,我平均每小时只能写300个字左右,返工率超过40%,也就是说每写1000字,有400字会在接下来两天里被删掉。那段时间非常挫败,一度想放弃。
到了第三周,节奏就对了:每小时净字数稳定在850到1000字左右,返工率降到了15%上下。关键变化有三个。第一,我接受了一个认知:AI写的段落,哪怕不满意,也比“空白页”好——你至少能对着它说“我不要这个”,而不是盯着空白页面说“我想要那个”。第二,我的“章节拆解”能力上来了,第一个番茄钟的产出越来越准确。第三,我而且开始懂得鉴别AI的哪些产出适合直接计入正文。
前两个还算好理解,第三个可以多说一句:AI的文字,即便完全符合你的要求,也往往缺少“毛边感”。我的意思是,很顺滑,没有个人风格的粗糙感。后期我当然会在第四番茄钟剔除它。如果你不喜欢这种过程,可能需要考虑自己多写几版。
注意:新手最容易犯的错是把“AI一次能写两千字”当成“自己每小时能写两千字”。实际的净产出一定是扣掉你的编辑时间和返工时间的,别被表面速度骗了。
4. 写崩两次之后的返工现场
如果只看番茄钟计划,好像一切很顺。实际上,写到大概12章的时候,我经历了两次比较大的返工,差点决定弃坑。
4.1 第二次番茄钟还没结束我就发现人物崩了
女主角本来是个冷静、话少、擅长用行动说话的角色,但AI在连续生成了几章对话之后,把她写得越来越“热心”。到第8章的时候,她已经开始主动给主角送药、陪主角聊天、开导主角解开心结——完全是另一个人。
这就是AI长期对话的累积偏差:它的语言模型会倾向把对话写得更有互动性、更有温度,因为训练数据里“暖心互动”的比重很高,所以它在没有强约束的时候会不知不觉地往“甜文”的方向滑。
我意识到时已经是第8章,前面7章里有相当篇幅需要改。这个错误不是“改几句话”能解决的,因为它涉及的是角色性格在叙事里的一致性,属于结构性的返工。
4.2 返工是怎么做的:人改设定,AI改文字
我那会儿先做了两件事。第一,打开之前写的“人物设定卡”,把女主角的性格特征重新写死,明确附加一条“她不会主动给予超出必要限度的情感支持”。第二,把所有出现女主角主动关心的场景全部标记出来,列成一个清单。
然后我做了个看似费力的决定:每一处需要修改的地方,我不直接给AI说“改成这个样子”,而是把“原场景概要和目标场景变更点”一起给AI,让它基于新设定重写。这样做的好处是,AI重写时能保持场景的基本结构,只是把人物行为逻辑扭转过来。
这活儿听起来麻烦,但工作量其实比想象中可控。一天两个番茄组,三天就处理完了。返工完成后,前面章节与后续章节之间的角色一致性明显好了很多。
4.3 吃一堑长一智:建立“章节锁定”和“人物卡”
回到这个坑,我反思出了一个方法论:写小说和做后端服务一样,要用“不可变记录”来约束协作。
具体来说,我建了三个文件:
- 人物卡:每个角色单独一个文件,含年龄、背景、性格标签、说话习惯、绝对不能做的行为清单。
- 已锁定章节摘要:每一章写完后,用三句话写清“本章实际发生了什么”,同时把“本章埋了哪些伏笔”记录在案。
- 关键设定变更日志:每次因为剧情需要调整人物或世界设定,必须在这个文件里登记变更,并顺手给出“变更原因”。
这三个文件的作用是给我自己看的,因为AI根本没有长时记忆,你每次对话都要重新把它需要的上下文喂给它。有了人物卡,我不会在每天的对话里临时编造一个性格特征,AI也就不会因为我的随意描述而左右摇摆了。
提示:不要指望任何AI工具能替你长期维持人物的一致性和剧情连贯性。你的“设定文档”就是整个项目的状态存储,必须自己维护。
5. 遇到AI写歪的时候,不是换一种问法那么简单
写一个多月,和AI打交道多了,多多少少会遇到它的“高光时刻”和“翻车现场”。翻车现场值得单独写一节,因为这些事是教程不会告诉你的。
5.1 实际遇到的一次典型跑偏
我印象最深的一次跑偏发生在写男主角和旧友重逢那一章。我给AI的任务是“写一场两个老友在深夜烧烤摊重逢的戏,气氛是克制、别扭,两个人都想好好聊但都做不到”。
AI交回来的稿子里,两个人从坐下开始就互相开玩笑,嘴上跟说相声一样,三言两语就把当年的心结解开了,末了还很痛快地一起干杯。我读完之后内心只有四个字:用力过猛。
这种跑偏它不是语法错误,是AI的“价值取向”问题。它的注意力机制在处理“重逢”这个主题时,天然会被大量“和好如初”的美好故事样本吸引,于是写出了这种毫无摩擦力的一章。我给的任务里虽然写了“克制”和“别扭”,但这两个形容词权重不够,被“重逢”这个剧情标签盖过去了。
5.2 我的纠偏清单:改温度、删上下文、移注意力
经历了几次类似的情况后,我整理了一份“纠偏清单”,每次AI表现不对时按顺序检查:
- 上下文里有没有冗余信息正在把模型带偏?把上一轮写偏的整段从对话里删掉,只保留最初的任务指令和人物卡。
- 任务指令里有没有“负面约束”?如果没有,先补上,比如“不要写角色之间互相开玩笑”。
- 如果是指令没问题的场景,考虑增加一到两个具体的画面约束,比如要求“用环境描写替代心理描写”或“对话不超过三句”。
- 最后一个办法是“换一个故事背景重述同一个场景”——告诉AI“假设这个场景发生在两个都不善言辞的中年人之间,而不是两个年轻人之间”,用对比来校准它的语感。
整个纠偏过程的关键在于:不要急着说“重写”,先说“偏在哪里”。AI和编译器不一样,你不把错误信息描述清楚,它不会自己意识到问题。
5.3 别把AI的糊涂当成创意
这件事我想提醒每一个像我一样的新手:AI偶尔会生成一些让你觉得“哇这句子真妙,简直神来之笔”的段落。它确实有这种灵光一闪的时刻,但大多数时候,这种“灵光”只是因为它的概率分布把你惯用的语料库打乱了。
当AI的产出明显偏离你的意图时,先不要急着自我怀疑“是不是我原来的设计不够好”,而要想想“是不是我没有把这个约束写清楚”。我犯过好多次把AI的跑偏当成灵感,结果改完全文设定后越写越乱,最后不得不回头恢复原稿架构。
后来我给自己立了一条规矩:如果AI写出的内容让我产生了“要不然顺着这个方向改吧”的念头,我会先把它明确记录为“方案B”,但绝对不允许它在同一个番茄钟内直接对我原来的大纲产生冲击。隔离冷静,再决定是否采纳。这是一条很有效的护栏。
6. 写完之后我重新理解了“AI取代写作者”这件事
说句心里话,刚开始用AI写小说的时候,我也隐隐有一种焦虑:是不是我干的事情AI都能干?要是我写得没AI好,会不会说明我根本不该写小说?写了一个多月,我的答案变成:不是的。
6.1 最终成果和我的署名观念
一个多月,我写完了五万多字的初稿,不算长,但超过我以前所有写作尝试的总和。结构和人物关系基本立住了,虽然语言还需要大幅打磨。重要的不是字数,是我终于意识到AI写作的正确意义:它把“从零到一”的门槛降得很低,但“从一到一百”的过程还是得靠人。
署名的观念也从一开始的“AI帮我写,我该不该署名?”变成了:“肯定署名,因为创意、设定、结构、关键决策和最终取舍全是我做的,AI只是执行层。”这跟项目经理和开发工程师的关系有点像,项目上线,你总不能让编译器署名吧。
6.2 番茄工作法帮我过滤了什么
这一个多月里,番茄工作法起到的作用实际上不仅仅是时间管理。它帮我过滤掉了两个最影响坚持的因素:第一个是“无限打磨”,以前我会花两小时雕琢一个出场段落的措辞,现在25分钟到了就收手,不满意的记录进待办清单,第二天再处理;第二个是“虚无感”,五小时的自由时间容易把写作变成拖延,但四个番茄钟的时间盒把一个大目标拆成了四十五次可完成的小任务,人是要靠完成感续命的。
我现在依然保持着利用番茄钟写作的习惯。不同的是,我把它和AI工具解绑了,不管用不用AI,时间盒对写作都有效。
6.3 给也想这么干的人的一条建议
最后给也想用AI辅助写作的程序员同行一个建议:不要一开始就想写长篇。先写两个三五千字的短故事,走完“设定-生成-编辑-回头修改”的完整流程,这比直接扑到十万字小说上划算得多。短篇能让你快速测试自己的prompt风格和编辑品味,长篇只会让你在第一个月就感受到全面失控。
我的实际体感是,写作这个过程和写代码非常像:你需要一个好用的编译器,但最终交付的是产品,不是编译器。AI是这个时代的编译器升级版,仅此而已。我把这段历程记录下来,倒不是说我已经写出了多好的作品,而是想给“程序员想搞点创作但一直没起步”的人一个具体的、可复制的路径参考。剩下的路,还是得自己走。