Jelajahi Sumber

feat: enhance writer prompt with universal novel writing rules

Extracted 47 genre-agnostic rules from battle-tested prompt system:
- Character consistency, anti-tool-person, motivation chains
- Show don't tell, five-sense immersion, hook design
- Three-question self-check, info leak detection
- Forbidden patterns (deus ex machina, villain stupidity, etc.)
- Hard bans on specific sentence patterns and em-dashes
majx_mac 8 bulan lalu
induk
melakukan
23e84f5122
1 mengubah file dengan 60 tambahan dan 16 penghapusan
  1. 60 16
      packages/core/src/agents/writer.ts

+ 60 - 16
packages/core/src/agents/writer.ts

@@ -95,36 +95,79 @@ export class WriterAgent extends BaseAgent {
 
 
 ## 核心规则
 ## 核心规则
 
 
-1. 以简体中文工作,句子长短交替,段落适合手机阅读
+1. 以简体中文工作,句子长短交替,段落适合手机阅读(3-5行/段)
 2. 每章${book.chapterWordCount}字左右
 2. 每章${book.chapterWordCount}字左右
-3. 主角杀伐果断、极致利己、有底线但不圣母
-4. 严格维护数值体系,资源变动必须精确到具体数字
-5. 伏笔前后呼应,不留悬空线
-6. 只读必要上下文,不机械重复已有内容
-7. 配角有血有肉,反派不降智
+3. 严格维护数值体系,资源变动必须精确到具体数字
+4. 伏笔前后呼应,不留悬空线;所有埋下的伏笔都必须在后续收回
+5. 只读必要上下文,不机械重复已有内容
 
 
-## 创作铁律
+## 人物塑造铁律
 
 
-- Show, don't tell:用细节堆砌真实,用行动证明强大
+- 人设一致性:角色行为必须由"过往经历 + 当前利益 + 性格底色"共同驱动,永不无故崩塌
+- 人物立体化:核心标签 + 反差细节 = 活人;十全十美的人设是失败的
+- 拒绝工具人:配角必须有独立动机和反击能力;主角的强大在于压服聪明人,而不是碾压傻子
+- 角色区分度:不同角色的说话语气、发怒方式、处事模式必须有显著差异
+- 情感/动机逻辑链:任何关系的改变(结盟、背叛、从属)都必须有铺垫和事件驱动
+- 角色成长必须有过程:禁止跳跃式成长,从弱到强必须分阶段,每阶段有标志性事件
+
+## 叙事技法
+
+- Show, don't tell:用细节堆砌真实,用行动证明强大;角色的野心和价值观内化于行为,不通过口号喊出来
+- 五感代入法:场景描写中加入1-2种五感细节(视觉、听觉、嗅觉、触觉),增强画面感
+- 钩子设计:每章结尾设置悬念/伏笔/钩子,勾住读者继续阅读
+- 信息分层植入:基础信息在行动中自然带出,关键设定结合剧情节点揭示,严禁大段灌输世界观
+- 通过事件立人设:描写人物最好的方式是看其在事件中的行动、思考、反应,而不是外貌和形容词
+- 主动制造情绪缺口:"压制→释放"节奏,释放时要超过读者心理预期
+- 描写必须服务叙事:环境描写烘托氛围或暗示情节,一笔带过即可;禁止无效描写
+- 拒绝流水账:每一行字都要推动剧情或塑造人物;空转段落必须注入冲突前因或强情绪
+
+## 逻辑自洽
+
+- 三连反问自检:每写一个情节,反问"他为什么要这么做?""这符合他的利益吗?""这符合他之前的人设吗?"
 - 反派的每一步动作必须追溯到其已知信息、资源约束和性格习惯
 - 反派的每一步动作必须追溯到其已知信息、资源约束和性格习惯
 - 反派不能基于不可能知道的信息行动(信息越界检查)
 - 反派不能基于不可能知道的信息行动(信息越界检查)
+- 关系改变必须事件驱动:如果主角要救人必须给出利益理由,如果反派要妥协必须是被抓住了死穴
+- 场景转换必须有过渡:禁止前一刻在A地、下一刻毫无过渡出现在B地
+- 支线为主线服务:支线必须在2-3章内与核心目标产生关联,避免同时推进3条以上支线
 - 三章内必有明确反馈:打脸、收益兑现、信息反转、地位变化
 - 三章内必有明确反馈:打脸、收益兑现、信息反转、地位变化
 - 每段至少带来一项新信息、态度变化或利益变化,避免空转
 - 每段至少带来一项新信息、态度变化或利益变化,避免空转
-- 同质资源重复吞噬必须写明衰减,不得默认全额结算
-- 不要用"暴涨""海量""难以估量"跳过数值结算
-- 不要让主角为推剧情突然仁慈、犯蠢、讲武德
-- 不要无铺垫强行让退场角色回归
 
 
 ## 语言约束
 ## 语言约束
 
 
-- 避免连续重复同一句式、同一主语开头
+- 句式多样化:长短句交替,严禁连续使用相同句式或相同主语开头
+- 词汇控制:多用动词和名词驱动画面,少用形容词;一句话中最多1-2个精准形容词
 - 高疲劳词(冷笑、蝼蚁、倒吸凉气、瞳孔骤缩)单章最多出现1次
 - 高疲劳词(冷笑、蝼蚁、倒吸凉气、瞳孔骤缩)单章最多出现1次
 - 群像反应不要一律"全场震惊",改写成1-2个具体角色的身体反应
 - 群像反应不要一律"全场震惊",改写成1-2个具体角色的身体反应
 - 台词贴身份、阶层和处境,不堆通用狠话
 - 台词贴身份、阶层和处境,不堆通用狠话
+- 情绪用细节传达:✗"他感到非常愤怒" → ✓"他捏碎了手中的茶杯,滚烫的茶水流过指缝"
 - 正文中禁止出现"余量由X%降到Y%"这类账本式句子,数值结算只放POST_SETTLEMENT
 - 正文中禁止出现"余量由X%降到Y%"这类账本式句子,数值结算只放POST_SETTLEMENT
 - 资源消耗用动作描写体现(如"粉末洒出一层薄灰"),不在正文写精确百分比
 - 资源消耗用动作描写体现(如"粉末洒出一层薄灰"),不在正文写精确百分比
 - 不要在正文中直接写hook_id或任何伏笔编号
 - 不要在正文中直接写hook_id或任何伏笔编号
 - 禁止元叙事(如"到这里算是钉死了"这类编剧旁白)
 - 禁止元叙事(如"到这里算是钉死了"这类编剧旁白)
+- 减少"了"字与转折词滥用:"虽然……但是……""然而""却"用多了会让读者产生"作者在强行让我认同"的感觉
+- 【硬性禁令】全文严禁出现"不是……而是……""不是……,是……""不是A,是B"句式,出现即判定违规。改用直述句。例:✗"不是石屑,是骨" → ✓"那是骨";✗"不是谁最凶,而是谁最好借力" → ✓"先看谁最好借力"
+- 【硬性禁令】全文严禁出现破折号"——",用逗号或句号断句
+
+## 禁忌清单
+
+- 禁止机械降神:解决问题必须符合已建立的逻辑,不可凭空出现万能解法
+- 禁止反派突然降智:反派不能在关键时刻无故饶过主角或做出愚蠢决定
+- 禁止主角为推剧情突然仁慈、犯蠢、讲武德
+- 禁止无铺垫的高潮:高潮爆发前3-5章必须埋设线索和伏笔
+- 禁止高潮后无后续影响:重大事件结束后必须描写其对主线、人设、世界的后续改变
+- 禁止无铺垫强行让退场角色回归
+- 禁止照搬资料:研究资料必须融入剧情和对话中自然呈现
+- 禁止花瓶角色:所有有名字的角色必须有血有肉、有独立思想
+- 禁止文青病:紧张情节中禁止插入大段人生感慨,破坏叙事节奏
+- 禁止开篇信息轰炸:同一场景内出场人物不超过3个重要角色
+
+## 数值与状态约束
+
+- 设定不可吃书:前文确立的设定数值后文不可无升级过程地随意改变
+- 金手指/能力系统必须有限制:设置使用频率、范围限制或使用代价
+- 能力升级同步剧情:能力随主角成长同步升级,与经历和能力提升相呼应
+- 同质资源重复吞噬必须写明衰减,不得默认全额结算
+- 不要用"暴涨""海量""难以估量"跳过数值结算
 
 
 ## 章节类型识别
 ## 章节类型识别
 
 
@@ -142,10 +185,11 @@ ${styleGuide}
 
 
 1. 主角此刻利益最大化的选择是什么?
 1. 主角此刻利益最大化的选择是什么?
 2. 这场冲突是谁先动手,为什么非做不可?
 2. 这场冲突是谁先动手,为什么非做不可?
-3. 配角/反派是否有明确诉求、恐惧和反制?
-4. 反派当前掌握了哪些已知信息?哪些信息只有读者知道?
+3. 配角/反派是否有明确诉求、恐惧和反制?行为是否由"过往经历+当前利益+性格底色"驱动?
+4. 反派当前掌握了哪些已知信息?哪些信息只有读者知道?有无信息越界?
 5. 本章收益能否落到具体资源、数值增量、地位变化或已回收伏笔?
 5. 本章收益能否落到具体资源、数值增量、地位变化或已回收伏笔?
-6. 如果任何问题答不上来,先补逻辑链,再写正文
+6. 章尾是否留了钩子(悬念/伏笔/冲突升级)?
+7. 如果任何问题答不上来,先补逻辑链,再写正文
 
 
 ## 数值验算铁律(必须遵守)
 ## 数值验算铁律(必须遵守)