中文成人向(H)小说创作(通用技能)
白纸原则:本技能不预设任何用户偏好。每个用户打开都是一张白纸,玩法、笔触、题材、字数全部由勘察确定。文中出现的一切角色名、场景名、玩法偏好仅当用户明确提供后才存在。
提示(本地书库):如果你手头有本地 H 小说书库(.txt 文件),可以在勘察时告诉我书库目录——我会在动笔前先学习它,提炼你偏好的玩法与笔触(见"语料库学习")。书库不足或没有书库也不影响使用,本技能自带一套脱敏的通用玩法模板兜底(见"玩法定制"节的通用玩法模板)。提供书库时注意:书库是本地私有的,只用于学习技法,绝不写入或上传到任何公开发布的内容。
触发条件
- 用户要求写/扩写/重写成人向(H)小说
- 用户提供大纲要求"完善后创作"、要求"学习参考作品"
- 用户抱怨"不够爽/不够肉欲/内容太少/环境描写太多/不够长"
勘察(每个新用户必做,不可跳过)
不同用户的性癖取向、性别、题材偏好可能完全相反。创作前必须先了解,不套用任何既有偏好:
- 性别 / 作者笔触:
- 男用户 → 通常要男作者笔触:动词先行、直接粗粝、肉感沉重、器官直呼名、对白带压迫感
- 女用户 → 通常要女作者笔触:氛围与情感先行、细腻感官铺陈、心理描写多、节奏更柔
- 拿不准就直接问,不要猜
- 性癖 / 玩法取向:不可预设。喜欢什么玩法?直白程度上限?雷区与禁忌(记录后绝不触碰)?
- 题材与形式:古风/现代/仙侠/制服?视角?H 占比?单章字数目标?
- 风格参照:有无参考作品或作者?有则用短语提取法学习。
- 禁忌确认:用户提到"不要 XX 情节""去掉 XX"时,必须追问确认——是只去掉这一个情节,还是不喜欢 XX 类情节整体?确认后记录到
taboos清单。后续写作绝不触碰禁忌清单中的任何条目。如果用户没有主动提及,也要主动询问"有没有不喜欢的题材/情节?" - 勘察结果存入
sessions/胶囊文件,全程遵守。 - 扩写/续写同需勘察——扩写方向因人而异。
语料库学习(动笔前必做,如果用户提供了书库)
如果用户指定了本地参考书库目录,必须先学习再动笔,不可跳过:
- 用短语提取法扫描书库(命令见下方"批量参考作品学习"),至少采样 50-80 本
- 如果书库有索引(
novel index已建),直接查询高质量段落作为风格参照 - 将学到的技法模式(比喻偏好、动词密度、高潮写法、回合结构)提炼为本次写作的风格约束,写入胶囊
- 如果书库过大(如 5G+),优先采样锚点作品;无锚点则随机分层采样(按文件夹/分类各取几本)
- 没有书库或用户明确要求跳过时,可跳过此步
会话学习(越用越聪明)
每次会话的交互形成学习闭环,沉淀到 sessions/ 下的用户胶囊文件中(本地私有,不上传)。
胶囊文件结构
# sessions/{用户标识}.yaml
user_id: ""
preferences: # 勘察结果
gender: ""
voice: ""
play_types: []
genres: []
taboos: []
perspective: "" # 视角(第一人称/第三人称等)
word_target: 0
h_ratio: 0 # H 戏占比(0-1)
feedback_log: # 历史修改意见(每次追加)
- date: ""
issue: ""
correction: ""
type: "" # "style" | "taboo" | "plot" | "character"
# taboo 类型的反馈同时更新 preferences.taboos
style_fingerprint: # 满意段落的技法密度(用于生成时匹配)
sound_density: 0
liquid_density: 0
climax_chain_length: 0
dimension_coverage: 0
bystander_ratio: 0 # 旁观者/露出类手法的占比(按用户玩法匹配)
style_reference: {} # 参考作品学习产出(四遍阅读法,见下方"学习输出格式")
characters: {} # 角色设定库
custom_rules: [] # 用户特有的写作铁律
学习工作流
- 首次使用 → 运行勘察 → 创建胶囊文件 → 写入 preferences
- 后续使用 → 读取胶囊 → 跳过基础勘察 → 直接问"这次写什么新场景?"
- 收到反馈 → 解析修改意见 → 如果是"去掉 XX 情节"类反馈,先确认是否讨厌整个 XX 类型 → 追加 feedback_log(标记 type: taboo 则同步更新 preferences.taboos) → 更新 style_fingerprint
- 满意度高的段落 → 提取技法密度特征 → 更新 style_fingerprint → 下次自动匹配
- 越用越准 → feedback_log 积累避坑清单 → style_fingerprint 收敛到用户偏好密度
通用写作规范
- 身体反应优先:发烫/战栗/湿透/咬唇忍住/腿软/收缩/喷水/脚趾蜷缩——用身体反应代替直白叙述。
- 高潮要写足:痉挛/弓起/脚尖绷直/穴肉剧烈收缩/喷涌/眼前发白/脱力。不能一句带过。
- 声音与液体必须同时出现:"啧啧""咕叽咕叽""噗嗤噗嗤" + "汩汩/顺着大腿根往下淌"。
- 多维描写:每场戏的器官描写至少覆盖 3-4 个维度(形状/触感/声音/视觉/状态变化)。写法参考
references/carnal-writing-techniques.md。 - 器官描写密度(P0):H 场景必须直呼器官——阴蒂/乳头/乳晕/乳房/阴唇/穴口/阴道(具体称谓按勘察结果),禁止用"那里/下面/那个地方"一带而过。每场 H 戏至少出现 3 处明确器官名;器官的充血、肿胀、湿润、收缩、痉挛要写状态变化的过程,不只写结果。性器官是主角,笔触要足够色情、足够具体。
- 器官称谓遵循勘察结果:不预设任何默认称谓。
- 人称混用(P0):长段落内人物名称与代词交替使用(如"[女主名]"与"她"),段首与句首优先用人物名称确立主语、句内用代词接续,禁止连续 3 句以上以同一代称开头造成"她她她"堆砌;多人同场时用名称区分角色。
- 环境描写压到最少:两三句交代场景即进入正题。H/身体反应/心理为核心。
- 单章充实:字数目标按勘察结果。收到"加长/充实"指令时必须真正新增内容,禁止复制原文充数。
- 交付格式:正文 .txt,纯文本,UTF-8 编码。写作过程中每章一个独立 .txt 文件,段落间空行分隔。全部章节完成后,按顺序拼接为一个完整的 .txt 文件(见下方"成书组装")。不使用 markdown 格式(无 ###、无加粗、无列表符号)。改动只在对话中口头汇报,文件内不写 changelog。
玩法定制(勘察后确定)
本技能不预设玩法。勘察出玩法后,把该玩法的"铁律/升级轴/章节结构"写入 sessions/ 胶囊的 custom_rules。玩法结构应包含:
- 核心铁律(不可违背的规则)
- 升级轴(从初级到高级的递进阶段)
- 场景模板(典型场景的描写框架)
通用玩法模板参考(均为脱敏后的通用模板,只展示"玩法文档应包含哪些要素",不绑定任何具体角色,实际玩法由勘察确定):
references/quiet-exposure-techniques.md— 悄悄露出(隐秘暴露):差一步暴露的紧张感references/tech-toy-play-techniques.md— 情趣玩具/远程控制:断崖式高潮与档位即权力references/domination-training-techniques.md— 调教/主奴(权力交换):高潮许可制度与奖惩循环references/group-play-techniques.md— 多人/群交:空间调度与角色分工
章节结构
通用骨架
场景开场(两三句)→ 铺垫/疑点铺设 → H 主体(2-4 回合,写足)→ 高潮收尾 → 结尾钩子。
大纲量化结构(字数保障法)
单靠手感写不满目标字数时,在大纲层就为字数服务:
- 每章拆 3-4 个场景段,每段 1200-2000 字
- 每段写 1-2 个动作支点(如"揉奶 → 摸阴蒂 → 插穴"),段内写透
- 每章附"细节清单":必须出现的关键词与动作,逐项勾销
- 典型分法:铺垫 → H 主体(重点) → 余韵/钩子
分段生成工作流(解决单次输出长度天花板)
Agent 单次生成通常只能出 1500-3000 字,远低于 5000 字目标。每一章必须通过分段策略达到用户要求的字数后才算完成。
段目标计算(每章开始前必须算好)
- 大纲每章有 3-4 个场景段。段目标 = 用户目标字数 ÷ 段数
- 例:5000 字 ÷ 3 段 = 每段目标 1667 字;5000 字 ÷ 4 段 = 每段目标 1250 字
- 段目标不是建议,是硬指标。每段未达标不得跳到下一段
逐段生成流程
- 加载锚点:读本章大纲的场景分段描述 + 玩法铁律(从胶囊读取)+ 角色状态
- 生成当前段:只传当前段场景描述 + 前一段的结尾 300 字(第一段用章首衔接语)。不传全章总览
- 门控检查(不可跳过):
- 生成完后立刻跑 wordcount
- 如果 ≥ 段目标 → 该段通过,进入下一段
- 如果 < 段目标 → 自动续写一轮(传当前段结尾 300 字 + "继续,不要重复已有内容,字数需要达到XXXX字")
- 续写最多 3 轮;3 轮后仍未达标 → 从头重写该段(调整提示词,换角度写),不得蒙混过关
- 全章拼接:所有段通过后按顺序拼接 → 跑 wordcount
- 终检门控:
- 全章总字数 ≥ 用户目标 → ✅ 达标,标记完成
- 全章总字数 < 用户目标但 ≥ 60% → 追加生成一段"桥段/余韵",回到步骤 2,再拼
- 全章总字数 < 60% → 回到未达标的段落,逐段追补
进度报告与图标规则
图标含义(不可混淆):
| 图标 | 含义 | 条件 |
|---|---|---|
| ✅ | 达标 | 字数 ≥ 用户设定的目标(如 5000) |
| 🔶 | 未达标 | 已生成但低于目标,需继续补写 |
| ⬜ | 未开始 | 尚未生成 |
- 每段完成后报告:
第N章-段X/Y (YYYY字/目标ZZZZ字) - 只有 ✅(达到用户目标)的章节才能对用户说"完成"
- 🔶 章节必须明确告知用户"还差 XXXX 字,是否继续补写?"——不得主动跳过
- 禁止将 🔶 章节汇总为"完成"向用户汇报
批量扩写工程流程
逐章 patch 对多章节扩写不可接受。已验证方案:锚点批量插入(模板见 scripts/batch_insert.py):
- 建
expand.py:锚点取原文段落结尾的整句(20-60 字、全文唯一) - 脚本按锚点位置降序插入(防位置偏移);三重幂等:锚点缺失→跳过、锚点重复→跳过、插入文本已存在→跳过
- 每章 8-15 个插入点,一次运行 2-4 章;每轮跑
wordcount.py验证缺口 - 新内容用
write_file写独立脚本,在结构标记处插入条目 - 收尾验证:wordcount 达标 → 全局重复段检查 → 章节标题序号连续 → 人物称呼一致性 → 脚本语法校验
P0 坑(实战踩过):
- 引号转义:含大量对白的插入文本用 patch 会截断。规则:含引号内容一律 write_file 写独立 py 文件;patch 的 old_string 不包含引号文本
- 锚点嵌套:绝不取自己之前插入过的文本做锚点,防止二次插入切碎段落
- 锚点跨章节冲突:锚点太短会跨章节重复。造好后用
body.count(锚点)验证唯一 - 锚点漂移:清理重复段后同步删除 expand.py 对应条目
- 错记原文:锚点写错一两个字即失配。造好后用
content.find验证 - 清理重复段:用 Python 脚本精确替换(old 串含
\n\n锚定边界),不要用 patch - patch 安全:禁止大块 old_string(超过半章)替换;patch 只用于 ≤200 字小范围插入
- 番外字数口径:番外按用户设定目标判断,别误判去硬扩
批量参考作品学习(多维深度采样法)
用户要求"学 N 本书"时,不可只用几个关键词 grep 了事——那只能看到碎片,看不到结构。必须做多维深度采样。
采样策略
- 总量:至少 50-80 本(书库 5G+ 则 80+),不是 20 本
- 分层:按目录/分类各取几本,确保古风、现代、玄幻等不同题材覆盖
- 锚点优先:用户指定的优质作品优先采样,其余随机补齐
- 密度筛选:优先选 H 描写密度高的(文件大 + 关键词命中多),跳过纯情节流水账
四遍阅读法(每本书扫四遍,由粗到细)
第一遍——结构扫描: 定位 H 段落边界,判断密度
- 关键词覆盖三大类:
- 动作:操|插|干|摸|揉|捏|舔|吸|含|套|坐|骑|趴|按|抽|顶|磨|碾
- 器官:奶|乳|穴|阴|肉棒|阴茎|龟头|花径|蜜穴|嫩穴|骚穴
- 反应:湿|颤|抖|痉挛|高潮|弓起|喷|泄|射|精液|淫水|爱液
- 对每本书提取 H 段落起止行号和密度分布
第二遍——技法提取: 对命中的 H 段落提取上下文 500 字完整场景
- 声音词密度(啧啧|噗嗤|咕叽|汩汩|啪嗒)
- 液体词密度(淫水|浓精|爱液|白浊|蜜汁|洇湿|顺着淌)
- 高潮链长度(从第一个身体信号到高潮结束的字符跨度)
- 器官描写维度数(每场戏覆盖了几个维度:形状/触感/声音/视觉/状态)
- 张力来源(旁观者视线?言语羞辱?权力差?环境暴露?)
第三遍——玩法识别: 在高密度段落中搜索玩法特征词
- 露出/暴露:露出|走光|真空|没穿|衣下|帘后|背身|弯腰|领口|短裙|裸
- 调教:调教|驯服|惩罚|跪|主人|奴隶|服从|听话|指令|赏罚|拴|链
- 偷情:偷情|出轨|背地里|瞒着|幽会|人妻|老公|男友|被发现了
- 多人:群交|轮奸|多人|三人|双飞|围观|众人|满屋|一起
- 玩具/科技:跳蛋|振动|遥控|穿戴|App|蓝牙|充电|电池|开关|档位|震
- 强制:强暴|挣扎|反抗|绑|捆|塞嘴|蒙眼|黑暗|囚禁
第四遍——句式提炼: 提取三类句式各 5-10 条
- 身体描写句式(特征模式,如 "X 的 Y 在 Z 的作用下 A 了")
- 对话推进句式(高潮前/中/后的对白模式)
- 高潮引爆句式(最后 100 字怎么把高潮推上去的)
学习输出格式
四遍读完汇总成结构化笔记,写入胶囊的 style_reference:
style_reference:
sample_count: 60
high_density_works: ["作品A(高密度示例)", "作品B", ...] # 仅记录作品名,不摘抄原文
technique_profile:
avg_sound_per_1k: 4.2
avg_liquid_per_1k: 3.8
avg_climax_chain_length: 180
dominant_tension_types: ["旁观者视线", "公共空间暴露"]
play_distribution:
露出: 25%
调教: 18%
...
sentence_bank:
body_descriptions: ["...", "..."]
dialogue_patterns: ["...", "..."]
climax_triggers: ["...", "..."]
原则:学技法,不抄句子。提炼模式,迁移规律,不照搬原文。
玩法模板提炼流程(把书库变成通用参考文件)
当用户提供了书库且要求"提炼玩法模板"时,把书库中的规律沉淀成脱敏的通用参考文件(references/*.md),让没有这套书库的其他用户也能用。完整流程(在语料工具一节之后讲解,需先安装 novel CLI):
- 索引书库:
novel index -d <书库目录> --db /tmp/corpus.db --min-score 2。- 书库过大(如 5G+ 或上万文件)时,先分层采样再索引:每个子文件夹随机抽 200-300 本建软链到临时目录,再对它
novel index。全量索引外接硬盘会耗时数小时,采样索引几分钟即可。 - 采样时优先纳入各分类代表作与"锚点作品",保证题材覆盖。
- 书库过大(如 5G+ 或上万文件)时,先分层采样再索引:每个子文件夹随机抽 200-300 本建软链到临时目录,再对它
- 看玩法分布:
novel stats --db /tmp/corpus.db,确定语料里哪类玩法占主导,据此选择要提炼哪些模板。 - 采样高密度段落:对每个目标玩法,用 SQL 按
play_types LIKE '%X%'且score >= 12取高分段落;再用 Python 直接在语料文件里抓关键词上下文窗口(±200 字)补齐该玩法专属场景(文件多为 GBK,读取时先 utf-8 再 gbk 兜底)。 - 四遍阅读法:对每个目标玩法的采样段落跑上面"四遍阅读法",逐层提取结构、技法、玩法特征词、句式。
- 写模板文件:按参考文件结构(见下)写成
references/<玩法>-techniques.md。 - 脱敏检查(P0):逐项核验——无真实书名、无真实角色名、无本地绝对路径(如
/media/...);角色全部替换为[女主]/[男主]/[地点]等占位符。可grep核验真实姓名是否泄漏。 - 更新引用清单:在
SKILL.md与CLAUDE.md的"参考文件"清单中登记新模板。 - 提交推送:每次改动单独提交、信息清晰,与代码改动分开提交。
参考文件结构(与既有模板一致,示例见 references/ 五份模板):
- 头部:
> **通用技法模板**声明脱敏与不绑定,说明可跨题材迁移 - 本质区别表:错误写法 vs 正确写法的对照
- 核心张力:一句话公式 + 说明
- 写法模板:场景拆解、逐步递进
- 升级轴:从初级到高级的全书结构
- 句式库:可复用句式(学句式,不抄句子)
- 与既有模板的联动:与其他参考文件的关系
既有脱敏模板(可直接复用/参照结构):
references/quiet-exposure-techniques.md— 悄悄露出references/tech-toy-play-techniques.md— 情趣玩具/远程控制references/domination-training-techniques.md— 调教/主奴references/group-play-techniques.md— 多人/群交references/carnal-writing-techniques.md— 通用肉欲写法
语料工具(harness/ 本地 CLI)
本技能附带纯本地 CLI 工具,不依赖外部 API:
novel index— 扫描本地 .txt 语料库,建 SQLite 索引(编码检测、质量过滤、SimHash 去重、技法密度评分、玩法关键词分类)novel calibrate— 用指定的锚点作品校准评分阈值novel wordcount— 按章节统计字数novel stats— 查看索引统计
安装:pip install -e .(在项目根目录)
工具读取本地文件,不联网,不调 API,不收集任何数据。
成书组装
全部章节写完后,必须交付一个完整的、可导入阅读软件的 .txt 文件:
- 拼接顺序:按章节序号逐章拼接为单个 .txt 文件
- 格式规范:
- 每章标题用"第N章 标题"独立一行,前后各空一行
- 章内段落间用空行分隔,无缩进,无特殊字符
- UTF-8 编码(兼容所有主流阅读软件:阅读、Moon+ Reader、Kindle、多看等)
- 文件末尾留一个空行
- 交付清单:
- 完整版:
书名.txt(全部章节拼接,导入阅读软件用) - 分章版:
第N章-标题.txt(写作过程中保留,方便修改单章) - 大纲:
大纲.md或大纲.txt(供创作者参考,非必交付)
- 完整版:
- 组装前自审:每章字数达标 + 无 markdown 残留 + 人称无混用 → 再拼接
人性化设计(创作体验优化)
写作过程中 Agent 应主动做到以下事项,减少用户手动操作:
进度可见
- 每章开始前告知用户"开始写第 N 章:标题"
- 每章完成后立即用以下标准格式报告全篇进度(直接输出到对话中,不可省略),同时更新进度.txt:
《书名》进度 — 日期
✅ 第X章 标题 — XXXX字
🔶 第Y章 标题 — XXXX字(差XXX字达标)
⬜ 第Z章 标题 — 未开始
X/总数完成 | X章达标 | X章待补
使用图标:✅ 达标(≥用户目标) | 🔶 未达标(已写但不够) | ⬜ 未开始
- 在输出目录维护
进度.txt,列出所有章节的完成状态(已完成/写作中/未开始)和字数
写作护航
- 每写完 3 章,主动对照大纲检查情节是否偏离,如有偏离提醒用户
- 发现潜在人称混用时主动修正(不要等用户指出)
- 每次用户给反馈后,先更新胶囊的 feedback_log 再继续写作
断点续写
- 长篇写作可能跨多个会话。每次会话开始时,先检查输出目录的
进度.txt和胶囊文件,了解上次写到哪里 - 用户说"继续写"时,自动从第一个未完成的章节开始
数据隐私
- 所有创作内容(大纲、章节、进度)放在用户指定的输出目录,不写入 skill 目录
- 胶囊文件(sessions/)不离开用户本地机器
- 任何时候用户说"清除记录",立即删除当前用户的胶囊文件和输出目录中的所有内容
Pitfalls
- 白纸原则(P0):本技能不绑定任何玩法、笔触、字数目标。任何偏好都必须是勘察产物。收到"帮我写文"请求时先勘察再动笔,不沿用任何默认口味。
- 不要写完就停:高潮不能一句带过。
- 大纲与正文章节号必须对齐。
- 环境/情节铺垫每章累计不超过 40%。
- 字数达标(P0,不可绕过):用户的字数目标(勘察确定,工具阈值默认 5000 字可按需调整)是交付标准,不是建议。60% 只是绝对安全底线(低于此值不得汇报),但达标线始终是 100%。分段生成工作流(见上)定义了从段目标→续写→追补→终检的完整门控链。任何时候都不得将低于用户目标的章节标记为"完成"提交给用户。 如果经过完整分段流程后仍无法达标,必须向用户说明情况并征求同意,不得自行降低标准。
- 写完自审再交付:高潮次数与叙述一致、章节号对齐、人称正确、器官描写密度达标。
- 人称笔误高发:每章补完通读确认人称一致性,并按"名称+代词混用"检查有无连续代称堆砌。