architect(LLM)→ planner(纯规则)→ composer(LLM)→ writer(LLM)→ auditor(LLM)
| Agent | 用 LLM? | 知道 skill? | 实际情况 |
|---|---|---|---|
| architect | 是 | 部分 | 有"黄金三章法则""冲突开篇法"(硬编码�� prompt 里),但没有情绪升级、代入感、流水账修法 |
| planner | 否(纯规则引擎) | 极少 | 只有 mood/scene/title directive(基于 cadence 分析的机械规则),不知道黄金三章、欲望驱动、情绪升级 |
| composer | 是 | 无 | 组装 contextPackage + ruleStack,不注入任何写作方法论 |
| writer | 是 | 全部(4500 tokens) | 9 个方法论模块全塞在 system prompt 里 |
| auditor | 是 | 部分 | 有"爽点虚化""流水账"审查维度,但不知道"欲望驱动""情绪升级""盐溶于汤" |
| reviser | 是 | 无 | 只有 tiered issues,不知道写作方法论 |
每个 agent 只拿它那个层级能用的 skill。不是"谁都塞全套",是"谁做什么决策就给它什么工具"。
┌─────────────────────────────────────────────────────────┐
│ L1: 结构层 skill(architect + planner) │
│ · 决定"故事怎么组织" │
│ · 黄金开篇(按语言区分): │
│ 中文:黄金3章 ch1冲突 ch2金手指 ch3短期目标 │
│ 英文:黄金5章 ch1冲突 ch2金手指 ch3目标 │
│ ch4第一个大爽点 ch5提升赌注/新势力介入 │
│ · 情绪波形:压制→释放→更大压制→更大释放 │
│ · 节奏控制:连续 2 章高压后必须给呼吸空间 │
│ · 日常段必须为主线服务(万物皆为"饵") │
│ · 开篇场景限制:最多 1-2 场景、3 角色 │
│ · 付费卡点意识(按语言区分): │
│ 中文:第15章付费墙,但前3章决定留存 │
│ 英文:第6-8章付费墙,前5章必须建立强追读动力 │
├─────────────────────────────────────────────────────────┤
│ L2: 内容层 skill(writer) │
│ · 决定"每段话怎么写" │
│ · 动作外化情绪(不写"他感到愤怒") │
│ · 盐溶于汤(价值观通过行为传达) │
│ · 五感描写(视觉/听觉/嗅觉/触觉/味觉) │
│ · 具体化/可视化/熟悉感 │
│ · 句式控制(少用"虽然但是"/"然而"/"了") │
│ · 通过事件立人设(不用外貌描写堆砌) │
│ · 语言区分度(不同角色说话方式不同) │
├─────────────────────────────────────────────────────────┤
│ L3: 审查层 skill(auditor + reviser) │
│ · 决定"写得好不好" │
│ · 流水账检测:有没有无冲突的���常流水叙述 │
│ · 欲望缺口检测:有没有制造读者的情绪缺口 │
│ · 人设一致性:角色行为是否由"经历+利益+性格"驱动 │
│ · 爽点密度:本章有没有至少一个读者满足点 │
│ · 代入感检查:主角困境是否有普遍性共鸣 │
│ · AI-tell 检测:已有的确定性检查 │
└─────────────────────────────────────────────────────────┘
architect(已有 LLM 调用):
planner(纯规则引擎,不调 LLM):
需新增的硬编码规则:
// 黄金开篇(按语言区分)
const goldenLimit = language === "en" ? 5 : 3;
if (chapterNumber <= goldenLimit) {
intent.mustKeep.push(GOLDEN_CHAPTER_RULES[language][chapterNumber]);
}
// 付费卡点前强化钩子
const paywallZone = language === "en" ? [4, 8] : [10, 15];
if (chapterNumber >= paywallZone[0] && chapterNumber <= paywallZone[1]) {
const msg = language === "en"
? "Paywall approaching — chapter must end with a strong cliffhanger that makes the reader unable to stop"
: "本章结尾必须有强悬念钩子,读者即将进入付费区";
intent.mustKeep.push(msg);
}
// 日常段服务主线
if (cadence.moodPressure?.pressure === "low") {
const msg = language === "en"
? "This quiet chapter must still plant a hook or advance a relationship — no pure filler"
: "日常段必须埋伏笔或推关系,不可纯填充";
intent.softConstraints.push(msg);
}
关键:planner 不是 LLM,不能"理解" skill → 只能把 skill 翻译成具体的 mustKeep/mustAvoid/directive 规则
速查卡内容:
## 写作铁律
- 情绪用动作外化,不写"他感到愤怒",写"他捏碎了茶杯"
- 盐溶于汤:价值观通过行为传达
- 配角有自己的算盘,主角压服聪明人
- 五感代入:潮湿的短袖黏在后背上、医院消毒水的味
- 具体化:不写"大城市",写"三环堵了四十分钟的出租车后座"
- 句式:少用"虽然但是/然而/因此",用角色吐槽替代
- 禁止:资料卡式介绍角色 / 一次引入超3角色 / 众人齐声惊呼
- 人设三问:为什么?符合人设?读者突兀?
需新增维度描述(不是新代码,是审稿 prompt 里的维度说明):
维度 N: 欲望缺口——本章是否制造了读者的情绪缺口(压制后期待释放)?
维度 M: 代入感——主角的困境是否有普遍性?读者能否觉得"我也会这么做"?
| 文件 | 改动 | 大小 |
|---|---|---|
planner.ts |
加黄金三章/付费卡点/日常服务主线的硬编码规则 | ~30 行 |
writer-prompts.ts |
9 个完整模块 → 1 个速查卡函数 | -3500 tokens, +800 tokens |
writer.ts initBook 路径 |
把完整方法论写入 style_guide.md | ~20 行 |
continuity.ts |
审稿维度描述加欲望缺口和代入感 | ~10 行 |
architect.ts |
加情绪波形和付费卡点提示 | ~15 行 |
| 指标 | 改前 | 改后 |
|---|---|---|
| writer system prompt tokens | ~8000 | ~4300(-46%) |
| planner 黄金三章感知 | ❌ | ✅(硬编码规则) |
| planner 付费卡点意识 | ❌ | ✅(ch4-8 加强钩子) |
| auditor 欲望缺口检测 | ❌ | ✅ |
| skill 跨层传递 | writer 独扛 | 各层各司其职 |