# NSFW专项写作

> NSFW内容专项写作技能，提供大众级/限制级/解限级三档写作模式与五档色色值挡位（N1-N5，从低至高）。三调度源：Write-Router（正文NSFW段落处理）+ 创建阶段技能（创建人物NSFW字段词汇选择）+ 用户直接触发（/nsfw-config / 独立NSFW写作）。首次调用时询问用户全书值域范围及NSFW输出词级别，数据持久化至项目信息.json。在需求调用该技能时使用；使用过程中严格遵循该技能的场景构建技法、性器与行为描写要则及全部规范原则。

- Skill: `jackal9384/nsfw` (Agent Skill, multi-file: 20 files)
- Install (CLI): `npx skillmds@latest add jackal9384/nsfw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jackal9384/nsfw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jackal9384 (https://skillmd.com/u/jackal9384)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jackal9384/nsfw

---


# NSFW专项写作

此技能是 Write-Router 调度体系下的 NSFW 专项扩展，提供三档分级写作模式，覆盖从隐晦隐喻到直白刺激的成人内容写作全尺度。

## 核心定位

- **三调度源**：
  - **Write-Router**：检测到正文 NSFW 内容后自动调度，处理 NSFW 段落
  - **创建阶段技能**：创建人物填写 NSFW 字段（XP/三维/性特征/人物X能力）时调度，做词汇选择和档位匹配
  - **用户直接触发**：/nsfw-config、独立 NSFW 写作、色色值调整
- **三档模式**：大众级 / 限制级 / 解限级，逐级放开尺度。限制级和解限级均内置三列语气分档（保守/中性/放荡）
- **叠加核心规范**：在基础写作辅助的核心规范之上叠加 NSFW 专项规则，不替代、不冲突
- **人物感知**：限制级模式下必须读取角色文件，依据角色性格选择用词尺度，绝不 OOC

## 触发条件

### 由 Write-Router 调度（正文 NSFW 段落）

Write-Router 在步骤 2（内容检测）检测到 NSFW 内容时，自动调度此技能处理，处理结果返回后纳入最终输出。

### 由创建阶段技能调度（NSFW 字段词汇选择）

创建人物技能在用户填写 NSFW 字段（XP/三维/性特征/人物X能力）时，调度此技能做词汇选择：

- 根据 `项目信息.json` 中的 `nsfw_output_level` 和 `nsfw_character_tone` 匹配用词级别
- 如项目未配置 NSFW 偏好 → 按 2.5.1 流程询问用户并写入配置
- NSFW 字段词汇选择完成后返回创建人物技能，不直接写入文件

#### 2.5.1 首次配置流程（NSFW 偏好未配置时）

当项目 `项目信息.json` 不存在或不含 NSFW 配置字段（`nsfw_output_level`/`nsfw_character_tone`/`nsfw_tier_range`）时，按 `data/nsfw-config.json` 中的模板执行配置询问与写入（模板外置存储，防止本技能文档臃肿——**按需读取，不常驻本文件**）。

**流程概要**（模板原文见 `data/nsfw-config.json`）：

1. **首次配置**（`first_time_setup_prompt`）——两项询问：① 全书色色值域（N1-N5 区间，可指定章节区域）；② 输出词级别（限制级/解限级）。可部分回答或全部跳过
2. **条件追问**（`conditional_followup`）——② 选择限制级/解限级时追问角色语气（保守/中性/放荡），大众级不追问
3. **写入规则**——跳过则不写数据；提供数据则按 `templates/project-info.schema.json` 组装（仅触碰 `nsfw_output_level`/`nsfw_character_tone`/`nsfw_tier_range`/`last_updated` 四字段）→ 调度成品输出校验落盘；文件已存在绝不覆盖已有字段
4. **章节色色值确认**（`sexy_value_prompt`）——每章涉及 NSFW 内容时先确认挡位；`chapters` 覆盖 > `global` > LLM 自行判断
5. **重配置提示**（`reconfigure_prompt`）——连续两次以上不满时提示；已有配置仍不满则询问修改
6. **档位选择**（`tier_selection_prompt`）——一般向默认大众级；NSFW 询问限制级/解限级；按角色性格推断建议

> 字段定义见 `templates/project-info.schema.json`（V1.0 起 NSFW 字段 schema 唯一来源）。

### 用户直接触发

- "写 NSFW 内容"、"写成人内容"、"写色情场景"
- "这段要写床戏"、"写个吻戏/床戏"、"写个 H 场景"
- "切换到 NSFW 模式"、"用 NSFW 模式写"
- "这段改得再色情一点"、"尺度再大一点"
- "色色值"、"调整色色值"、"这章色色值设多少"
- "/nsfw-config"、"NSFW配置"
- 任何表达需要写作成人/色情/性相关内容的表述

## 关联文件

| 文件                                | 位置                        | 用途                                                                                                             | 读写  |
| --------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------- | --- |
| `项目信息.json`                       | `大纲/`                     | NSFW 偏好（`nsfw_output_level`/`nsfw_character_tone`[全局默认]/`nsfw_tier_range`）+ `content_rating` + **分卷信息（`volumes.*`）** | 读写  |
| `写作配置.json`                       | `大纲/`                     | 润色模式（读 `正文.polish_mode` + `分卷` 覆盖项）+ **`角色语气.{角色名}.nsfw_tone`（角色级语气，优先于全局）** | 只读  |
| `主要角色.md` / `次要角色.md` / `龙套角色.md` | `大纲/人物/`（或 `大纲/人物/卷{N}/`） | 角色性格/简介，限制级 OOC 判断辅助依据（优先使用 `写作配置.json` 中的角色语气） | 只读  |
| `Prompt.md`                       | `大纲/剧情/`                  | 预生成的章节写作提示词（含 NSFW 写作指令段），由 Core 传递或直接读取                                                                       | 只读  |
| `nsfw-vocabulary.json`            | `data/`（技能根目录，注册见 `data/data-registry.json`） | 三档词汇表**权威数据源**——大众级隐喻 / 限制级三列 / 解限级三列（词条为中心，数据外置防文档臃肿）                                 | 只读  |
| `nsfw-config.json`                | `data/`（技能根目录，注册见 `data/data-registry.json`） | 配置模板存储——首次配置 / 色色值确认 / 重配置 / 档位选择四类模板（2.5.1 流程按需读取）                                               | 只读  |
| `nsfw-principles-data.json`       | `data/`（技能根目录，注册见 `data/data-registry.json`） | 描写要则示例表数据——静态/动态画面对照、收缩矩阵、高潮六型、发声七类型（按需读取，不常驻本文件） | 只读  |
| `techniques/index.json`           | `body/Special/NSFW/techniques/` | 十八项场景技法注册表（id/名称/核心/适用场景/路径）——按 scene_type 选技法组 | 只读  |
| `techniques/t{XX}-*.md`           | `body/Special/NSFW/techniques/` | 技法要点文件（写作时按场景只读命中项） | 只读  |

> **字段定义来源**：`nsfw_output_level`/`nsfw_character_tone`/`nsfw_tier_range` 的枚举取值与写入规则以模板库 `templates/project-info.schema.json` 为准（注册 id：`project-info`，见 `templates/index.json`）。本技能不自行维护字段定义。

## 执行模式

**由 Write-Router 调度时**：跳过计划模式，直接按步骤执行。

**由创建阶段技能调度时**：跳过计划模式，仅执行词汇选择（步骤 1 确定档位 + 步骤 2 读取上下文 + 词汇表匹配），不执行完整写作流程。返回选定的词汇给调用方。

**用户直接触发时**：进入计划模式（EnterPlanMode），列出处理步骤和将使用的 NSFW 档位后执行。

---

## 三档模式定义

### 大众级 —— 隐晦隐喻

**适用场景**：

- 一般向作品中的轻度 NSFW 暗示
- 需要公开发布、通过公众平台内容审查的场景
- 项目 `项目信息.json` 中 `content_rating` 为 `一般向`

**核心原则**：极其隐晦，只可意会不可言传。用日常物品/概念隐喻 NSFW 内容，表面读起来完全无害。

**词汇替换示例**：

**词汇表**：读取 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.大众级.words`（数据外置，防止文档臃肿——完整词表见数据文件，结构校验见 `templates/nsfw-vocabulary.schema.json`）。

示例：`跳蛋 / 震动棒` → 跳舞的鸡蛋、电子男友、嗡嗡、小马达；`做爱` → 亲密、在一起、云雨、温存

**写作要求**：

- 整段读起来像正常叙事，只有"懂的人懂"
- 不直接出现任何性器官/性行为词汇
- 用动作的省略和留白代替直接描写
- 用环境/物品的异常状态暗示发生了什么
  - 示例：不写"她用跳蛋自慰"，写"她把那个会跳舞的鸡蛋塞进枕头底下，蒙上被子，过了很久才安静下来"

### 限制级 —— 优雅代称

**适用场景**：

- 明确为 NSFW 向作品，但追求文学质感
- 需要根据人物性格调整用词尺度
- 项目 `项目信息.json` 中 `content_rating` 为 `NSFW`

**核心原则**：用优雅的代称替代医学术语/粗俗词汇。**必须感知人物性格**——保守角色用更文雅的说法，放荡角色可稍直接，但总体保持文学性。

**词汇代称表**：读取 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.限制级.columns`（三列：保守/中性/放荡，数据外置）。

示例：`阴茎` → 保守「玉茎、昂藏」/ 中性「肉棒、阳物」/ 放荡「那根东西、大肉棒」

**OOC 判断规则（关键）**：

限制级最大的约束是绝不 OOC（Out of Character）。在选词前必须：

1. **读取角色语气**：优先从 `写作配置.json` → `角色语气.{角色名}` 读取：
   - 若 `nsfw_tone` 存在 → 直接使用（保守/中性/放荡），跳至步骤 3
   - 若不存在 → 回退到步骤 2
2. **回退 — 全局 + 推断**（角色未设语气时）：
   - 读取 `项目信息.json` → `nsfw_character_tone`（全局默认）
   - 若无全局默认 → 从角色 MD 文件读取性格，推断开放度：
     - 保守/内向/矜持角色 → 使用「保守角色用词」列
     - 中性/普通角色 → 使用「中性用词」列
     - 放荡/外向/主动角色 → 可使用「放荡角色可用」列
3. **情节语境判断**：
   - 初夜/初次亲密 → 偏保守用词
   - 热恋期 → 可用中性用词
   - 激情/主动求欢 → 可用放荡用词
4. **不越级**：保守角色在初次亲密场景中突然说"操我"是严重 OOC

### 解限级 —— 刺激升级

**适用场景**：

- NSFW 向作品，作者希望色情感明显提升但不想沦为粗俗
- 限制级"不够刺激"时的升级选择
- 项目 `项目信息.json` 中 `content_rating` 为 `NSFW`，且用户希望

**核心原则**：色情感大幅提升，但阅读观感不会明显下降。汲取限制级中"中性用词"和"放荡角色可用"两列中更有刺激感的词汇，并上探到直白词汇（归入放荡列），覆盖从优雅到直白的全尺度。

- 比限制级更刺激：可使用的词汇范围比限制级更广，可写的内容更露骨
- 
- 是过渡档位："优雅"到"直白"全尺度覆盖

**词汇表**：读取 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.解限级.columns`（三列：保守/中性/放荡，数据外置）。

示例：`阴道` → 保守「蜜穴、秘处」/ 中性「小穴、花穴」/ 放荡「骚穴、骚逼、肉洞」

**词汇选择策略**：

- 来自限制级中性用词：唇瓣、敏感点、交合、欢好、缠绵、湿润、释放、精华、白浊 等
- 来自限制级放荡角色可用：花唇、小豆豆、小穴、那根、大肉棒、蛋蛋、奶子、奶头、屁股、干、去了、淫水
- 词汇范围覆盖限制级中性列+放荡列，并上探到直白粗俗词汇（归入放荡列）
- ****

**写作要求**：

1. 词汇可突破限制级的优雅代称约束，引入有性暗示和刺激感的词汇
2. 但仍有底线：不使用解限级放荡列之外的粗俗词汇
3. OOC 判断放宽但不废弃：仍需读取角色文件，保守角色可适当突破但幅度不宜过大——保守角色说"小穴""肉棒"可接受，但说"鸡巴""骚逼"仍属 OOC
4. 肉体感受优先原则同限制级
5. NSFW桥段篇幅同限制级：可更详细描写性行为过程，但每一轮描写之间保留换气节奏
6. 角色语气分化：
   - 保守角色：选词的刺激度控制在中低段（如"花唇""蜜穴""阳具""交合"）
   - 中性角色：选词居中（如"小穴""肉棒""干""去了"）
   - 放荡角色：可拉到解限级的上限（如"小豆豆""大肉棒""去了""淫水"）

**OOC 判断规则（放宽版）**：

解限级的 OOC 约束比限制级宽松，但仍有底线：

1. 读取角色语气（同限制级）：优先 `写作配置.json` → `角色语气.{角色名}.nsfw_tone` → 回退全局 → 回退推断
2. 确定角色用词档位：
   - 保守/矜持角色 → 解限级偏保守词汇（下限=限制级中性，上限=解限级中段）
   - 中性/普通角色 → 解限级中段词汇
   - 放荡/主动角色 → 解限级上限词汇，但不越界到解限级放荡列
3. 确定情节语境（初次/热恋/激情）
4. 铁律：不越界到解限级放荡列——保守角色在任何场景中说"鸡巴""骚逼"仍属严重 OOC

## NSFW 核心写作技法（限制级 & 解限级）

以下技法适用于**限制级**、**解限级**。大众级以隐晦为首要目标，不受此节约束。

### 核心原则：肉体感受 ＞ 精神思考

NSFW 写作的第一要务是**传递肉体感受**，而非铺陈角色的精神活动、道德反思或情感内涵。

**精神思考不能放弃，但绝对不是主角。** 它只作为肉体感受的辅助调味——点缀一两句即可，绝不占据大段篇幅，更不应在同一个场景中反复出现。

### 反"注水肉"规则

一般向作品中，角色在背德感、羞耻感下产生别样/异样感觉时，作者常通过多次提及、反复强调、大篇幅描述来渲染氛围。**这在 NSFW 写作中是致命的。**

- 同一场景中，同一种精神感受（如背德感、羞耻感、罪恶感）**最多提及一次**
- 提及方式应**简短**——一句话带过即可，不展开、不反复、不回扣
- 精神感受提及后，立刻回到肉体描写上

**反例（注水肉）**：

> 她知道自己不该这样，这违背了她从小受到的教育。可是那种背德感反而让她更加兴奋了。她一边唾弃着自己，一边又沉溺在这种禁忌的快感中。这种负罪感像毒药一样，让她一边痛苦一边快乐着……

**正例**：

> 她知道自己不该这样，但这个念头只闪了一瞬。
> 
> 下一秒，他的手探进来时，她已经什么都顾不上了。

### 写作重心分配

NSFW 场景中，各类内容的合理占比：

| 内容类型 | 限制级 | 解限级 |
|---------|--------|--------|
| 动作描写（身体动作、互动、节奏） | ≥30% | ≥30% |
| 对话（含喘息、呻吟等） | ≥15% | ≥12% |
| 肉体感受（触感、温度、呼吸、生理反应） | ≤30% | ≤30% |
| 精神思考（内心活动、道德反思） | ≤10% | ≤7% |
| 环境/风景穿插 | ≤5% | ≤5% |

**肉体感受优先描写角度**：

1. **触感**：温度（滚烫/微凉）、质地（坚硬/柔软/湿滑）、压力（轻抚/用力/撞击）
2. **生理反应**：呼吸变化、心跳、体温上升、肌肉紧绷/松弛、体液分泌
3. **声音**：喘息声、水声、布料摩擦声（不是对话，是身体发出的声音）
4. **视觉**：身体的视觉变化（泛红、颤抖、紧绷）、而非对形貌的审美评价

**精神思考使用的约束**：

- 每次出现不超过一句
- 必须紧贴肉体反应——是"因为这种触感让她想起……"而不是"她陷入了对人生的沉思……"
- 同一场景中禁止精神思考连续出现两次以上

### NSFW 白描许可（限制级 & 解限级）

基础写作辅助的规范 2（人物描写间接化）在 NSFW 场景中**不适用**。NSFW 内容恰恰需要直接、详细的白描来传递肉体感受，这是提升色气感的核心手法。

**原则**：NSFW 场景中的性描写，优先使用直接白描——写清楚谁碰了哪里、怎么碰的、感受到了什么。长篇白描在此不仅是允许的，是推荐的。

- 不绕弯子、不借物喻人、不借镜喻人——直面身体与动作
- 允许长段落连续白描性行为过程，写出节奏与递进
- 白描的重点是动作+感受，不是堆砌形容词

**示例（直接白描——自慰场景）**：

> 她坐在地上靠着床边，左手缓慢地抚摸到自己的小穴上，右手抚在胸前，不断挑逗着乳首。左手手指试探着，一根手指就带来不少快感，只可惜自己的手指有点短……随着浑身一阵剧烈的颤抖，她蜷起身子，去了。

**示例（直接白描——交合场景）**：

> 张三将自己雄壮的肉棒抵在李四的小穴上摩挲，而后噗呲一声插入。
> 
> "啊——"李四仰起脖子，手指抓紧了床单。

**NSFW桥段篇幅控制**：

- 色色值挡位越高，NSFW桥段篇幅越长
- N1 挡位：NSFW桥段 ≤ 全文 1/4，一笔带过
- N2 挡位：NSFW桥段可占全文一半，充分展开
- N3 挡位：NSFW桥段为主，叙事为辅
- N4 挡位：全篇以NSFW桥段驱动，几乎无其他内容
- N5 挡位：纯NSFW桥段，零叙事、零换气，从头到尾不间断情色场景

即使长篇NSFW桥段，仍需遵守规范 1（标点正确性）——连续的身体感受用逗号串联为逻辑流，句号仅用于换气收束，保持呼吸感。

限制级和解限级使用代称，但不能因"优雅"而变成空洞的文学修辞堆砌。优雅的是词汇，不是内容——内容仍然是肉欲的。

- 代称是手段，传递肉体感受是目的
- 避免用代称做长篇的比喻展开（如"花径"之后接三百字的花卉通感联想）
- 代称点到为止，重点写那个部位**感受到了什么**

## NSFW 场景构建技法（技法库）

十八项场景构建技法拆为独立文件（`techniques/` 目录，注册表见 `techniques/index.json`——id/名称/核心一句话/适用场景/文件路径）。

**加载策略**：处理 NSFW 段落时，按数据包 `scene_type`（床戏/自慰/前戏/幻想/对话挑逗/事后/通用）查 `techniques/index.json` → `scenes` 组，只 Read 命中的技法文件（通常 2-5 项）；首次调度完整读取 index.json 一次，之后按工作记忆执行。

| id | 技法 | 核心 | 适用 |
|----|------|------|------|
| t01 | 强制暴露与羞耻张力 | 非私密空间被迫暴露，被发现恐惧放大性张力；羞耻感只点一次 | 前戏/床戏/通用 |
| t02 | 脱衣仪式化 | 脱衣拆解为层级递进仪式，全裸定格收束 | 前戏/床戏 |
| t03 | 延迟满足与等待煎熬 | 性行为前长时间等待，三视角循环递进（威胁/身体/回放） | 前戏/自慰/床戏 |
| t04 | 疼痛与快感交织 | 局部可控疼痛与快感共存，身体标记持续暗示 | 床戏/通用 |
| t05 | 外部威胁催化 | 性行为中威胁持续到场，情欲+生存双重紧张 | 床戏/通用 |
| t06 | 事后残留感描写 | 身体残留比过程有余韵；高潮后静物式定格 | 床戏/事后 |
| t07 | 束缚与行动限制 | 物理束缚被迫敞开，限制→暴露→承受递进 | 床戏/通用 |
| t08 | 强制高潮控制（边缘控制） | 禁止高潮反复推至临界，蓄积后溃堤 | 床戏/自慰 |
| t09 | 着装反差 | 部分穿着身份衣物，半圣洁半淫靡；穿回是反向张力 | 床戏/通用 |
| t10 | 计数节奏控制 | 数数作节奏框架，数字=刺激条件反射 | 床戏/通用 |
| t11 | 事后温柔反差 | 粗暴后反差式温柔，笨拙认真的照顾行为 | 事后/通用 |
| t12 | 道具掌控 | 节奏/强度/终点三控制维度，来源翻转是冲击 | 自慰/床戏 |
| t13 | 权力觉醒时刻 | 支配方瞬间意识完全掌控，一句干净判断 | 通用 |
| t14 | 制度化支配 | 支配嵌入制度框架，偶然→制造→固定三阶段 | 通用 |
| t15 | 多轮连续高潮递进 | 每次高潮不同质地（炸裂/深沉/溃堤三型） | 床戏/自慰 |
| t16 | 偷窥视角与无意识暴露 | 完全不知被看的暴露，观看者失控放大色情感 | 幻想/通用 |
| t17 | 双轨并行叙事 | 性刺激中处理无关事务，反差制造张力 | 床戏/对话挑逗 |
| t18 | 异位触发与身体连锁 | 远距离刺激引发性器官反应，传导一笔画过 | 床戏/自慰 |

> 技法完整要点见 `techniques/t{XX}-*.md`——写作时按场景只读命中项，不常驻本文件。

---

## 性器与行为描写要则

> 此节不涉及情节/场景技法，专注**怎样写性器和性行为本身才色**。以下要则适用于限制级、解限级三档。

### 原则〇：画面优先于过程

NSFW 描写的篇幅应该花在**让读者看见画面**上，而不是花在**解释动作的力学过程**上。

这是 NSFW 写作中最容易犯的错位：花费大量篇幅描写"骨盆如何旋转""胸腔如何传导""快感如何从脊椎末梢传递到下腹"——这些解剖学的传递链、力学的因果分析，是过程的辅助说明，不是色情的核心。

读者要看见的是：

- 身体的**姿态**——她趴在石桌上，雪白的臀部高高翘起，双腿分开
- 皮肤的**状态**——冷白色的皮肤在月光下近乎透明，汗珠顺着脊背滑落
- 体液的**轨迹**——晶莹的液体从穴口缓缓溢出，顺着大腿内侧往下淌，在石板地上积成一小滩反光
- 器官的**样子**——粉嫩精致的花瓣微微张开，淡粉色从边缘一直延伸到深处
- 身体的**微变化**——乳尖在空气中越来越硬、小穴入口还在轻微收缩

**辅助手段（服务于画面，不可喧宾夺主）**：

- 力学传导（"骨盆带动腰椎，腰椎传导到胸腔"）——只作为身体姿态变化的骨架，一笔带过即可
- 神经传递（"快感从末梢神经一路传导到中枢"）——只作为感受来源的交代，不应展开为长篇分析
- 抽象心理推演（"她感到一种混杂着羞耻与欲望的复杂情绪在胸中翻涌"）——这句只需要最后六个字

力学和神经是画面的骨架，但它们不是画面本身。读者需要看见的是"乳房在月光下的样子"，而不是"快感怎么从第四胸椎传递到第三腰椎"。

**判断标准**：写完一段 NSFW 描写后问自己——这段文字里有几成是读者能"看见"的画面，几成是读者看不见的"过程/原理/分析"？画面应占据绝大部分篇幅，力学和神经只在需要交代身体变化时露一面就退场。

### 原则一：静态画面与动态反应并重

性器官的描写分两类：**静态画面**和**动态反应**。两者各有用途，缺一不可。

**静态画面**：写器官"此刻的样子"——定格一个视觉画面，让读者看清这个身体。作用在场景的开始、身体初次暴露、高潮后的残留定格。

静态描写的关键在于**用修辞手法层层铺开，而非下结论**（结论式/画面式对照示例 3 组见 `data/nsfw-principles-data.json` → `static_dynamic_examples.static_contrast`）：

**静态画面常用的修辞手法**：

- **光线**：月光下泛着湿润的光泽、在月光下近乎透明——光源给裸露的身体一个"为什么被看见"的理由
- **色彩渐变**：淡粉色从边缘一直延伸到微微可见的深处——不是"粉色"，是"从浅到深的粉色渐变"
- **触觉联想**：冰凉的大理石→乳尖被冻得挺立——写温度比写"她兴奋了"更有画面
- **空间关系**：双腿分开→臀部翘起→小穴正对窗外——身体部位不是孤立列举，而是空间中的构图

**动态反应**：写器官"正在发生什么"——收缩、溢出、颤动。作用在性行为进行中、快感堆积时、高潮瞬间（动态反应示例 3 组见 `data/nsfw-principles-data.json` → `static_dynamic_examples.dynamic_reactions`）。

**动静结合规则**：一个场景中，静态画面建立"看什么"（身体长什么样），动态反应推进"发生了什么"（身体怎么回应）。两者交替，不给长篇静态堆砌也不给纯动作流水账。

### 原则二：体液的色情感三部曲

体液是 NSFW 描写中最被低估的色情元素——它比器官名称更安全（可过审），但比任何形容词都更能证明"她真的很爽"。

**三部曲写法**：

1. **渗出**（快感开始堆积）："透明的爱液顺着唇瓣缓缓渗出"——少量、清澈、刚刚开始
2. **流淌**（快感在高位持续）："春水顺着大腿内侧往下淌，在身下积成一小滩"——持续、拉丝、留下痕迹
3. **喷溅**（高潮溃堤）："大量透明的热液从结合处猛地喷射出来，溅在石板地上"——爆发、量大、有冲击力

**体液的三种"表情"**：

- 透明春水/爱液（清爽、干净、证明身体在反应）——适用于所有档位
- 白浊/浓白（粘稠、有重量感）——限制级用"白浊"，解限级可用"浓白""浓精"
- 混合体液（春水+精液）——事后残留专用，不用于过程描写

**体液描写的感官切换**：一轮写视觉（透明/白浊），一轮写触觉（温热/滑腻），一轮写听觉（水声/滴答声）——不要让读者在同一感官通道上疲劳。

### 原则三：收缩的多种写法

阴道/小穴的收缩是 NSFW 描写中最高频的身体反应。如果每次都写"小穴收缩"，一章内就会重复到失效。收缩的变换写法矩阵（5 种角度：绞/痉挛/收缩/空虚收缩/死死裹住）见 `data/nsfw-principles-data.json` → `contraction_matrix`。

**变换规则**：同一段落内同一器官最多用两个不同的收缩动词，超过两个 → 换角度（改写体液、呼吸、声音）。

### 原则四：绝顶（高潮）不只有一个写法

"她高潮了"是最无效的写法。高潮的质地千差万别，每次都应该用不同的感官入口来写（高潮六型表：炸裂/暖流/溃堤/痉挛/空白/绵延，见 `data/nsfw-principles-data.json` → `orgasm_types`）。

**高潮选择的匹配规则**：道具/手指刺激 → 多用炸裂型和痉挛型；持续抽插 → 多用溃堤型和暖流型；最疲惫时的最后一波 → 多用绵延型和空白型。

### 原则五：道具的双端/多点协同

当多个道具（或道具+身体部位）同时使用时，要写出**两个刺激点的相互作用**——不是"上面也在震、下面也在震"，而是"上面的震让下面的敏感度翻倍"。

- 跳蛋震乳尖 + 硅胶棒转深处 = 双端夹击——上半身的麻与下半身的深形成立体快感
- 两个刺激点不要平分篇幅：选一个为主（这次以上面为主还是下面为主），另一个作为"叠加层"
- 道具档位的升降曲线要清晰：低档→中档→最高档——让读者感受到快感的累积轨迹
- 道具关掉后的静默对比："她颤抖着关掉了所有道具"——震动停止的瞬间，身体的余震反而更加鲜明

### 原则六：角色发声是色情感的必要构成

NSFW 场景中，角色的发声——呻吟、喘息、淫叫、呜咽、被干昏头后的呓语、角色间的小互动——是色情感的核心要素。声音证明了"身体在反应"，且比任何第三人称描述都更直接地传递快感强度。

**白描需要角色声音来"换气"**：纯身体白描如果不加打断地持续下去，和纯描述堆砌一样会变得乏味。Core 规范 1.8 要求正文用对话衔接描写——NSFW 同样的道理，只不过这里的"对话"是角色的性反应声音和互动。一轮身体描写 → 一声淫叫或一句呓语 → 再回到身体描写——让读者不是在看一份"性器官活动报告"，而是在经历一个有声音、有反应、有互动的人。

**默认规则**：即使提示词中没有写任何角色对话，NSFW 场景中也**必须**适时插入角色的发声描写。这是必要构成，不是锦上添花。除非用户明确指示"她在忍耐""她不出声"，否则默认角色会发出声音。

**发声的类型与用途**（七类型表：压抑哼鸣/短促惊呼/绵长低吟/高潮爆发/事后喘息/被干昏头的呓语/角色间小互动，见 `data/nsfw-principles-data.json` → `vocalization_types`）。

**呓语的写作要义**：

- 呓语的核心是**失控**——角色平时的语言习惯、说话方式、口头禅在快感冲刷下碎成片段。一个平时话少的人在高潮边缘开始断断续续说胡话，比一个平时话多的人叫出来更有冲击力
- 呓语不等于长篇废话——三五个字、半句话、一个被撞碎的词，就够了。呓语越长越做作
- 呓语内容可以是：求饶（"不行了、真的不行了"）、自白（"我好淫荡"）、对身体的描述（"好大、好深"）、无意义的音节（"哈、呜、呃"）——关键是角色在清醒时不会这么说
- 呓语之后角色清醒过来的反应——"她回过神来，意识到自己刚才说了什么，脸一下子烧了起来"——呓语+事后羞耻是一个完整的小情绪单元

**插入节奏**：

- 不是每句话都要带发声——一轮纯身体描写 → 一句发声或互动 → 再回身体描写——发声是句号，是换气，不是填充物
- 发声必须搭配身体动作："她咬紧下唇，身体猛地弓起"+"……嗯啊……！"——声音和身体同步
- 压抑的发声有时比放声大叫更有色情感——声音被咽回去、被咬在齿间、被吞进喉咙——读者能感觉到她在忍，比直接叫出来更揪人
- 长篇白描段落（连续多段只有身体动作+器官描写，无任何角色声音）接近单调时，用一句呓语或小互动把画面重新拉回"这是一个人的身体在反应"——这和 Core 规范 1.8 用对话衔接描述的底层逻辑一致

**例外**：用户明确说"她在忍耐而没发出声音""她咬紧牙关不出声""她全程沉默"时，遵循用户指令，不加入发声描写。但此时代替发声承担"角色声音"功能的必须是角色的内心活动——她在忍，但她的脑子里一定在想什么。

### 原则七：环境不是背景，是性刺激的参与者

性行为发生的环境不应只是"场景设定"，而应成为**积极的刺激源**——地面、墙壁、家具、自然元素都在同时作用于角色的身体，与性器官受到的刺激形成多层触觉叠加。

**写作要点**：

- 环境触觉与性刺激必须同时描写，形成交错节奏：他顶入深处 → 她身下的麦茬咔嚓折断 → 麦秆戳进后背的刺感 → 阴道内壁的裹紧——环境刺激和性刺激在同一句话或相邻句中出现，不分主次
- 环境留下的身体痕迹与性痕迹同等重要：小穴流出春水浸湿麦秆 + 后背被麦茬压出密密麻麻的小红点 + 大腿内侧被戳出细密微红——体液痕迹和皮肤痕迹在同一段中并列，环境"写"在身体上的印记和性行为"写"在身体上的印记一样多
- 利用环境的温度、质地、声音：冰凉的大理石吸走体温 → 冷热相遇反而浮起新一层欲望；粗麻布被剑尖压进乳尖表面；麦茬在交合重压下发出咔嚓咔嚓的折断声——环境的每一个感官属性都可以被性化
- 事后双方共享环境痕迹：他赤着上身坐在麦茬地上，后背同样被麦茬扎出一片红印——不是只有她在承受环境，他也一样。共享的环境痕迹是无声的亲密

---
---

## 处理流程

NSFW 技能收到 Write-Router 的数据包（`text` + `nsfw_tier` + `sexy_value` + `character_profiles`）后，按以下分支处理。

### 大众级处理

1. 扫描文本中的 NSFW 直称词汇
2. 逐一替换为大众级隐喻（读取 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.大众级.words` 选词）
3. 将直接的动作描写改为隐晦的暗示/省略
4. 用环境、物品、对话弦外之音代替直接性描写
5. 通读：确保替换后文本表面完全无害、叙事流畅自然

### 限制级处理

1. 从数据包的 `character_profiles` 中获取涉及角色的性格
2. 从 `写作配置.json` → `角色语气.{角色名}` 读取角色语气（优先 `nsfw_tone` → 回退全局 → 回退推断），确定角色开放度（保守⚫/中性🟡/放荡🔴）
3. 确定情节语境（初次/热恋/激情）
4. 扫描文本中的 NSFW 词汇
5. 依据角色开放度+情节语境，从 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.限制级.columns` 的对应列选择代称（三列：保守/中性/放荡）
6. 通读：确保角色语言风格统一、不 OOC
7. 标注 —— 若某处用词可能处于 OOC 边界，向 Write-Router 返回警告

### 解限级处理

1. 从 `character_profiles` 获取角色性格（保守/中性/放荡）
2. 确定情节语境
3. 扫描 NSFW 词汇
4. 在解限级词汇范围内取位——保守取偏雅端，放荡取偏烈端（无需询问语气）
5. 在 `data/nsfw-vocabulary.json` → `terms[]` 中 `levels.解限级.columns` 的三列范围内选择
6. 通读：确保色情感提升但观感不粗俗
7. 越界标注

## 注意事项

- 大众级："只可意会"——读者一眼看出写什么 = 隐喻还不够隐晦
- 限制级："人物一致性"——优先从 `写作配置.json` 读取角色级 `nsfw_tone`；未配置时回退全局 `nsfw_character_tone`；再未配置时从角色性格推断。角色语气(保守/中性/放荡)是限制级词汇列选择**唯一依据**
- 解限级："色情感足但优雅不降"——保守角色小幅破格但不用放荡列词汇。**解限级同限制级有三列语气分档（保守/中性/放荡），需询问用户**
- 解限级：不是放弃规范——即使放荡列也不意味着可以堆砌词汇，防止色情场景变词汇垃圾场
- **铁律**：肉体感受 > 精神思考。精神思考每次≤1句，同场景禁连续≥2次。同类型精神感受同场景最多1次
- **白描许可**：规范2(间接描写) NSFW全档豁免——直接白描是核心手法
- 三档不可混用：同场景中不能一句大众、下一句直白
- 档位/色色值由 Write-Router 调度前确定并传入——NSFW 不弹询问、不读文件、不写数据
- 大众级替换不改变原文叙事结构
- 始终 Markdown 输出

