长中短篇小说写作技能,覆盖题材诊断→设定→大纲→写作→质检全流程。 内置自优化引擎,同题材写作越写越好。
远程仓库: 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章",技能自动完成全部流程:
evolve.sh → git pull 获取其他用户的最新进化数据 → 编译evolution/genres/{genre_id}/ 加载该题材最优提示词 + 阈值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)
每个用户不修改 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 同时调整 |
可能 | 调整频率低;冲突时取最近时间戳或手动合并 |
| 中文题材 | 题材 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
# === 进化编排 ===
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 |
共享工具(路径解析/题材映射/持久化) |