CLAUDE.md 12 KB

novel-write — Claude Code 小说写作技能

长中短篇小说写作技能,覆盖题材诊断→设定→大纲→写作→质检全流程。 内置自优化引擎,同题材写作越写越好。

远程仓库: ssh://git@数学.top:10022/nonvioce/novel-skill.git

安装

完全自包含,零外部依赖。内置 15 个中文题材配置文件。

# 克隆仓库
git clone ssh://git@数学.top:10022/nonvioce/novel-skill.git ~/.claude/skills/novel-write

# 或:如果已有本地项目,直接软链接
ln -s /path/to/novel-skill ~/.claude/skills/novel-write

安装后,在 Claude Code 对话中输入"写小说""开新书""续写第X章"等自动触发技能。

快速开始

创建新项目

按以下结构创建小说项目目录:

{书名}/
├── 项目铁律.md          # 必须。POV、时态、禁用词、世界观硬限制。frontmatter 写 genre 字段
├── 设定/
│   ├── 世界观.md
│   ├── 角色/{角色名}.md
│   ├── 势力.md
│   ├── 关系图.md
│   └── 题材定位.md
├── 大纲/
│   ├── 全書大纲.md
│   ├── 卷纲_第N卷.md
│   └── 细纲_第NNN章.md
├── 正文/
│   └── 第NNN章_章名.md
├── 对标/
│   └── {书名}/风格报告.md    # 可选。用于风格注入进化
└── 追踪/
    ├── 钩子账本.md
    ├── 情感矩阵.md
    ├── 时间线.md
    └── 上下文.md

项目铁律.md 示例 frontmatter:

---
title: "重生囤货:绑定诡异种田"
genre: "末世"           # ← 题材识别关键字段
sub_genre: "种田+诡异+重生"
pov: "第三人称有限"
tense: "过去时"
target_words: 3000
---

写作对话中(全自动)

在 Claude Code 中直接说"写第33章",技能自动完成全部流程:

  1. evolve.sh → git pull 获取其他用户的最新进化数据 → 编译
  2. 读取项目铁律、大纲、细纲、钩子账本、情感矩阵
  3. 从 evolution/genres/{genre_id}/ 加载该题材最优提示词 + 阈值
  4. 按六条铁律写作
  5. 写完后 evolve.sh → 反馈收集 → 进化 → git add + commit + push

用户不需要输入任何 git 或进化命令。 所有 git pull、git commit、git push 由 evolve.sh 自动完成。网络不通时自动降级为纯本地模式,不会报错中断。

进化系统

架构

题材级共享 — 同题材所有项目共用进化数据。写第二本末世时,第一本的优化直接可用。

evolution/
├── thresholds.json                 # 技能级默认阈值
├── prompts/population.json         # 技能级种群(无题材时回退用)
└── genres/                         # 题材级共享目录
    └── {genre_id}/                 # other, xianxia, urban, horror ...
        ├── thresholds.json         # 题材特定质量阈值
        ├── prompts/
        │   ├── population.json     # 5岛种群(writing/revision/quality_check/outline/hook_management)
        │   └── current_best.json   # 各岛最优提示词(写作时读取)
        ├── patterns/
        │   └── pattern_library.json
        └── events/                 # 事件日志(多用户 git 共享核心)
            └── {timestamp}_{user}.json

五大岛屿

岛屿 作用 写作阶段
writing 写作规则(密度/去AI味/人物/心理) 写前注入
revision 修稿规则(润色边界/字数治理) 修改时注入
quality_check 质检标准(37维审查/五遍评估) 质检时参照
outline 大纲规则(章节类型轮换/世界观一致性) 大纲阶段参照
hook_management 伏笔管理(生命周期/准入控制/健康分析) 全程参照

遗传算子

  • 交叉 — 两父本按句切分拼接
  • 突变 — 同义词替换 + 句序重排 + 前缀注入
  • 简化 — 保留首尾句,去中间
  • 注入 — 从对标/风格报告提取句式/对话/节奏特征,编码为提示词变体

自适应机制

机制 触发条件 行为
早停 单岛连续2代提升<3% 跳过该岛变异
灭绝重播 连续3代提升<5% 删底30%,重播:题材种子50%+风格注入30%+交叉20%
阈值调优 通过率>90% 提高 pass 线 (+3)
阈值调优 通过率<30% 降低 pass 线 (-3)
权重调优 某P维度持续最低 该维度增权
岛屿迁移 每2代 各岛最优2个体注入相邻岛(分×0.9)

多维评分

不再用单一 composite score。每个提示词变体按 P1-P5 独立追踪:

变体 "abc123" → {P1: 88 (trials=3), P2: 72 (trials=3), P3: 65 (trials=3), P4: 80 (trials=3), P5: 90 (trials=3)}
综合分 = 88×0.35 + 72×0.25 + 65×0.15 + 80×0.15 + 90×0.10 = 80.6

新反馈用滑动平均合并:new = (old × trials + score) / (trials + 1)

多用户 Git 共享

原理:事件溯源

每个用户不修改 population.json,而是写入自己的不可变事件文件。不同文件名 → git merge 永远无冲突。

工作流

# === 用户 A:写章节 + 进化 ===
cd ~/.claude/skills/novel-write
git pull origin main

# 收集章节反馈(Claude Code 写完后自动调用)
python3 scripts/feedback_collector.py collect \
    --project /path/to/novel \
    --chapter 35 \
    --scores '{"P1":88,"P2":76,"P3":70,"P4":82,"P5":91}'

# 执行进化
bash scripts/evolve.sh --project /path/to/novel --full

# 提交事件文件并推送
git add evolution/genres/other/events/
git commit -m "evolve(other): ch35 feedback + gen3 mutation"
git push origin main

# === 用户 B:获取 A 的成果 ===
cd ~/.claude/skills/novel-write
git pull origin main
bash scripts/evolve.sh --project /path/to/novel --compile
# 现在 population.json 已包含用户 A 的所有优化
# 继续写第36章...

初始推送

cd ~/.claude/skills/novel-write
git add .
git commit -m "novel-write skill: multi-genre evolution + event sourcing"
git push -u origin master

冲突场景覆盖

场景 冲突? 原因
两人同题材写不同书 无 各自写 events/{ts}_{user}.json,不同文件名
两人同时给同一题材进化 无 进化事件记录不同变体 ID,合并后种群更丰富
两人给同一变体评分 无 反馈事件各自独立,编译器回放时滑动平均合并
population.json 被两人修改 无(已解决) 不再直接修改;由 --compile 重建,可加 .gitignore
thresholds.json 同时调整 可能 调整频率低;冲突时取最近时间戳或手动合并

题材管理

支持的 15 个题材(全部内置中文配置)

中文题材 题材 ID 章类型 爽点类型示例
仙侠、修仙 xianxia 战斗/悟道/布局/过渡/回收 悟道突破、斗法碾压、天劫渡过
玄幻 xuanhuan 战斗/功法/升级/过渡/回收 越级反杀、神体觉醒、血脉吞噬
都市、现代、职场 urban 商战/社交/布局/过渡/回收 商战碾压、身份揭示、人脉兑现
恐怖、惊悚、灵异、悬疑 horror 铺垫/诡异/恐怖/过渡/回收 恐惧具现化、逃脱、规则破解
科幻、星际、未来 sci-fi 探索/战斗/布局/过渡/回收 发现、科技突破、首次接触
末世、废土、末日 system-apocalypse 求生/战斗/布局/过渡/回收 绝境求生、领土占领、社会重建
无限流、轮回 tower-climber 关卡挑战/升级/布局/过渡/回收 楼层通关、Boss击败、登顶进度
游戏、网游、系统 litrpg 升级/布局/过渡/回收/战斗 升级、技能解锁、装备掉落
奇幻、西幻、魔法 progression 修炼/突破/布局/过渡/回收 等阶突破、技能精通、对手超越
言情、古言、恋爱 romantasy 感情/动作/布局/过渡/回收 化学反应、初吻、关系确认
轻小说、异世界、穿越 isekai 探索/适应/布局/过渡/回收/战斗 世界规则发现、现实技能应用
种田、日常、温馨、治愈 cozy 日常/社区/布局/过渡/回收 关系深化、情感突破、技艺精通
地下城、地城 dungeon-core 策略/冒险者视角/布局/过渡/回收 陷阱成功、楼层扩展、仆从进化
东方修真 cultivation 修炼/突破/战斗/布局/过渡/回收 境界突破、功法大成、天劫渡过
通用回退 other 推进/布局/过渡/回收 目标达成、困难克服、真相揭示

添加新题材

在 genres/ 目录下创建新 .md 文件,遵循 YAML frontmatter + Markdown body 格式:

# 预览提取结果
python3 scripts/seed_extractor.py --genre {新题材} --show

# 初始化题材进化目录
python3 scripts/seed_extractor.py --genre {新题材}

查看某题材进化状态

python3 scripts/prompt_evolver.py show --genre xianxia
python3 scripts/event_store.py list --genre xianxia

全部 CLI 命令

# === 进化编排 ===
bash scripts/evolve.sh                                    # 快速进化(自动检测项目)
bash scripts/evolve.sh --project /path/to/novel           # 指定项目
bash scripts/evolve.sh --project /path/to/novel --full    # 完整进化
bash scripts/evolve.sh --project /path/to/novel --report  # 状态报告
bash scripts/evolve.sh --project /path/to/novel --compile # 从事件重建

# === 提示词进化 ===
python3 scripts/prompt_evolver.py evolve                      # 技能级进化
python3 scripts/prompt_evolver.py evolve --genre xianxia -g 5 # 题材级进化
python3 scripts/prompt_evolver.py evolve --project /path/to/novel  # 自动检测题材
python3 scripts/prompt_evolver.py show                        # 查看技能级最优
python3 scripts/prompt_evolver.py show --genre xianxia        # 查看某题材最优

# === 质量阈值 ===
python3 scripts/quality_tuner.py show                             # 当前阈值
python3 scripts/quality_tuner.py analyze --project /path/to/novel # 分析
python3 scripts/quality_tuner.py tune --project /path/to/novel    # 分析并应用

# === 反馈收集 ===
python3 scripts/feedback_collector.py collect \
    --project /path/to/novel --chapter 35 \
    --scores '{"P1":88,"P2":76,"P3":70,"P4":82,"P5":91}'
python3 scripts/feedback_collector.py state   # 查看会话状态

# === 事件溯源 ===
python3 scripts/event_store.py compile --genre other    # 编译 population
python3 scripts/event_store.py list --genre other       # 列出事件摘要

# === 种子提取 ===
python3 scripts/seed_extractor.py --genre xianxia --show   # 预览某题材种子
python3 scripts/seed_extractor.py --genre urban             # 初始化某题材进化目录

# === 模式挖掘 ===
python3 scripts/pattern_mine.py show --top 10
python3 scripts/pattern_mine.py mine --project /path/to/novel

关键文件参考

文件 用途
SKILL.md 技能主文件,Claude Code 加载此文件获取写作指令
CLAUDE.md 本文件,项目进度和使用说明
scripts/evolve.sh 进化编排器入口,自动检测项目/题材
scripts/prompt_evolver.py 岛屿模型 + 遗传算法 + 早停 + 灭绝
scripts/seed_extractor.py 内置15题材配置 → 5岛种子提取
scripts/event_store.py 事件溯源引擎(编译/写入/列出事件)
scripts/feedback_collector.py 多维反馈收集 + 事件写入
scripts/quality_tuner.py 质量阈值自适应调优
scripts/pattern_mine.py MAP-Elites 写作模式挖掘
scripts/utils.py 共享工具(路径解析/题材映射/持久化)

参考来源

  • InkOS — 题材配置、37维质检、伏笔全生命周期
  • OpenEvolve — MAP-Elites、岛屿模型、双选择