feat: initial commit

This commit is contained in:
2026-06-23 20:29:02 +08:00
commit ea8f6066c4
217 changed files with 60754 additions and 0 deletions
+168
View File
@@ -0,0 +1,168 @@
# Checker 统一输出 Schema
所有审查 Agent 应遵循此统一输出格式,便于自动化汇总和趋势分析。
说明:
- 单章写作场景默认使用 `chapter` 字段。
- 若需要兼容区间统计,可在聚合层补充 `start_chapter/end_chapter`,不要求单个 checker 必填。
- 允许扩展字段,但不得删除或替代本文件定义的必填字段。
## 标准 JSON Schema
```json
{
"agent": "checker-name",
"chapter": 100,
"overall_score": 85,
"pass": true,
"issues": [
{
"id": "ISSUE_001",
"type": "问题类型",
"severity": "critical|high|medium|low",
"location": "位置描述",
"description": "问题描述",
"suggestion": "修复建议",
"can_override": false
}
],
"metrics": {},
"summary": "简短总结"
}
```
## 字段说明
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `agent` | string | ✅ | Agent 名称 |
| `chapter` | int | ✅ | 章节号 |
| `overall_score` | int | ✅ | 总分 (0-100) |
| `pass` | bool | ✅ | 是否通过 |
| `issues` | array | ✅ | 问题列表 |
| `metrics` | object | ✅ | Agent 特定指标 |
| `summary` | string | ✅ | 简短总结 |
扩展字段约定(可选):
- 可附加 checker 私有字段(如 `hard_violations``soft_suggestions``override_eligible`)。
- 私有字段用于增强解释,不用于替代 `issues`
## 问题严重度定义
| severity | 含义 | 处理方式 |
|----------|------|----------|
| `critical` | 严重问题,必须修复 | 润色步骤必须修复 |
| `high` | 高优先级问题 | 优先修复 |
| `medium` | 中等问题 | 建议修复 |
| `low` | 轻微问题 | 可选修复 |
## 各 Checker 特定 metrics
### reader-pull-checker
```json
{
"metrics": {
"hook_present": true,
"hook_type": "危机钩",
"hook_strength": "strong",
"prev_hook_fulfilled": true,
"micropayoff_count": 2,
"micropayoffs": ["能力兑现", "认可兑现"],
"is_transition": false,
"debt_balance": 0.0
}
}
```
### high-point-checker
```json
{
"metrics": {
"cool_point_count": 2,
"cool_point_types": ["装逼打脸", "越级反杀"],
"density_score": 8,
"type_diversity": 0.8,
"milestone_present": false
}
}
```
### consistency-checker
```json
{
"metrics": {
"power_violations": 0,
"location_errors": 1,
"timeline_issues": 0,
"entity_conflicts": 0
}
}
```
### ooc-checker
```json
{
"metrics": {
"severe_ooc": 0,
"moderate_ooc": 1,
"minor_ooc": 2,
"speech_violations": 0,
"character_development_valid": true
}
}
```
### continuity-checker
```json
{
"metrics": {
"transition_grade": "B",
"active_threads": 3,
"dormant_threads": 1,
"forgotten_foreshadowing": 0,
"logic_holes": 0,
"outline_deviations": 0
}
}
```
### pacing-checker
```json
{
"metrics": {
"dominant_strand": "quest",
"quest_ratio": 0.6,
"fire_ratio": 0.25,
"constellation_ratio": 0.15,
"consecutive_quest": 3,
"fire_gap": 4,
"constellation_gap": 8,
"fatigue_risk": "low"
}
}
```
## 汇总格式
Step 3 完成后,输出汇总 JSON
```json
{
"chapter": 100,
"checkers": {
"reader-pull-checker": {"score": 85, "pass": true, "critical": 0, "high": 1},
"high-point-checker": {"score": 80, "pass": true, "critical": 0, "high": 0},
"consistency-checker": {"score": 90, "pass": true, "critical": 0, "high": 0},
"ooc-checker": {"score": 75, "pass": true, "critical": 0, "high": 1},
"continuity-checker": {"score": 85, "pass": true, "critical": 0, "high": 0},
"pacing-checker": {"score": 80, "pass": true, "critical": 0, "high": 0}
},
"overall": {
"score": 82.5,
"pass": true,
"critical_total": 0,
"high_total": 2,
"can_proceed": true
}
}
```
@@ -0,0 +1,42 @@
# Claude Code 调用矩阵(命令归属与触发时机)
> 目的:明确"谁调用、什么时候调用、调用什么脚本",避免把 Claude Code 内部流程误当成人工命令。
## 规则
- 本项目中的脚本默认由 **Claude Code Skill/Agent** 在流程节点触发。
- 除非文档显式说明,否则不把脚本视为"用户手动日常命令"。
- 新增脚本或新增命令触发点时,必须同步更新本文件。
## 命令级矩阵(入口 -> 调用方 -> 触发时机)
| 入口命令 | 调用方 | 触发时机 | 关键脚本/动作 |
|---|---|---|---|
| `/noma-init` | `noma-init` Skill | 新建项目、深度初始化阶段 | `scripts/init_project.py` + 生成 `idea_bank.json` |
| `/noma-plan` | `noma-plan` Skill | 卷纲/章纲生成完成并写回状态时 | `scripts/update_state.py --volume-planned ...` |
| `/noma-write` | `noma-write` Skill | 写作流程 Step 5 数据链更新时 | Task 调 `data-agent`(内部再写 state/index |
| `/noma-query` | `noma-query` Skill | 查询"伏笔紧急度/Strand 节奏"等分析请求时 | `scripts/status_reporter.py --focus urgency/strand` |
| `/noma-resume` | `noma-resume` Skill | 中断恢复检测、清理、断点恢复时 | `scripts/workflow_manager.py detect/cleanup/clear` |
## 脚本级矩阵(脚本 -> 谁触发 -> 什么时候)
| 脚本 | 主要触发方 | 触发节点 | 备注 |
|---|---|---|---|
| `${CLAUDE_PLUGIN_ROOT}/scripts/noma.py` | 所有 Skills / Agents | 任何需要调用 CLI 的节点 | **统一入口**:负责解析真实 book project_root,并转发到 `data_modules/*``scripts/*.py`,避免 `PYTHONPATH/cd/参数顺序` 导致的隐性失败 |
| `${CLAUDE_PLUGIN_ROOT}/scripts/update_state.py` | `noma-plan` Skill | 章纲/卷规划落盘后更新 `state.json` | 也可被自动化脚本调用;默认不是人工常规入口 |
| `${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py` | `noma-query` Skill / `pacing-checker` Agent(可选) | 查询分析或节奏审查时 | 产出健康报告与紧急度分析 |
| `${CLAUDE_PLUGIN_ROOT}/scripts/workflow_manager.py` | `noma-resume` Skill | 恢复流程 detect/cleanup/clear | 仅恢复场景触发 |
| `${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py` | `noma-init` Skill | 项目初始化阶段 | 负责项目脚手架与基础状态文件 |
## 内部库调用(非独立命令)
| 内部模块 | 调用方 | 触发时机 |
|---|---|---|
| `${CLAUDE_PLUGIN_ROOT}/scripts/data_modules/state_validator.py` | `update_state.py``status_reporter.py` | 读写 `state.json` 时自动规范化与校验 |
## 变更约束(后续开发必须遵守)
1. 若新增"可由 Skill/Agent 触发"的脚本,必须补充到本矩阵。
2. 若脚本触发时机变化(例如从 plan 阶段改到 write 阶段),必须同步更新本矩阵。
3. PR/提交说明中需写清"调用方 + 触发节点 + 是否允许人工调用"。
+109
View File
@@ -0,0 +1,109 @@
# Context Contract
## 目的
-`Context Agent``Writer``Review` 提供统一、可排序、可追踪的上下文契约。
- 在不破坏旧调用方的前提下,增强上下文稳定性与命中率。
## 输出结构
- 根字段保持兼容:`meta``sections``template``weights`
- `meta` 新增:
- `context_contract_version`: 固定为 `v2`
- `ranker`: 当前排序器配置快照(用于复现)
## Section 排序规则
- `core.recent_summaries`
- 主要按章节新近度排序(越近越高)
- 含"钩子/悬念/反转/冲突"提示时额外加分
- `core.recent_meta`
- 主要按章节新近度排序
-`hook` 的条目优先
- `scene.appearing_characters`
- 综合新近度 + 出场频次排序
-`warning`(如 pending invalid)降权
- `story_skeleton`
- 按新近度优先,兼顾摘要信息密度
- `alerts`
- 优先 `critical/high` 或包含关键风险词的项
## Phase B 扩展段
- `reader_signal`
- 聚合最近章节追读力元数据(钩子/爽点/微兑现)
- 聚合最近窗口的模式使用统计(`pattern_usage` / `hook_type_usage`
- 聚合审查趋势与低分区间(`review_trend` / `low_score_ranges`
- `genre_profile`
- 基于 `state.json -> project.genre` 自动选取题材策略片段
- 引用 `${CLAUDE_PLUGIN_ROOT}/references/genre-profiles.md``${CLAUDE_PLUGIN_ROOT}/references/reading-power-taxonomy.md`
- 输出 `reference_hints` 供 Writer 快速执行
## Phase C 扩展段
- `writing_guidance`
- 基于 `reader_signal` + `genre_profile` 生成章节级执行建议
- 优先提示低分区间修复、钩子差异化、爽点模式优化、题材锚定
- 输出 `guidance_items``signals_used`
## 紧凑文本策略
- 当 section 超出预算时,文本采用紧凑截断(头部 + 截断标记 + 尾部)
- 截断标记固定为 `…[TRUNCATED]`
- 保留 `content` 原始结构,`text` 用于快速注入模型上下文
## 兼容性约束
- 不改变既有 key 名和字段语义。
- 仅重排列表顺序;内容不删改(除已有过滤逻辑)。
- 调用方若忽略 `meta.context_contract_version`,行为与 v1 等价。
## 推荐调用时机
- `Context Agent` 在 Step 1 聚合上下文时调用。
- `noma-write``noma-review` 开始阶段调用。
- 恢复流程(`noma-resume`)在 `detect` 后重建上下文时调用。
## 配置项(DataModulesConfig
- `context_ranker_enabled`
- `context_ranker_recency_weight`
- `context_ranker_frequency_weight`
- `context_ranker_hook_bonus`
- `context_ranker_length_bonus_cap`
- `context_ranker_alert_critical_keywords`
- `context_ranker_debug`
Phase B:
- `context_reader_signal_enabled`
- `context_reader_signal_recent_limit`
- `context_reader_signal_window_chapters`
- `context_reader_signal_review_window`
- `context_reader_signal_include_debt`
- `context_genre_profile_enabled`
- `context_genre_profile_max_refs`
- `context_genre_profile_fallback`
Phase C:
- `context_compact_text_enabled`
- `context_compact_min_budget`
- `context_compact_head_ratio`
- `context_writing_guidance_enabled`
- `context_writing_guidance_max_items`
- `context_writing_guidance_low_score_threshold`
- `context_writing_guidance_hook_diversify`
Phase E:
- `context_writing_checklist_enabled`
- `context_writing_checklist_min_items`
- `context_writing_checklist_max_items`
- `context_writing_checklist_default_weight`
Phase F:
- `context_writing_score_persist_enabled`
- `context_writing_score_include_reader_trend`
- `context_writing_score_trend_window`
- `writing_guidance.checklist_score` 写入 `index.db -> writing_checklist_scores`
Phase H:
- `context_dynamic_budget_enabled`
- `context_dynamic_budget_early_chapter`
- `context_dynamic_budget_late_chapter`
- 新增 `meta.context_weight_stage`early/mid/late
Phase I:
- `context_genre_profile_support_composite`
- `context_genre_profile_max_genres`
- `context_genre_profile_separators`
- 新增 `genre_profile.genres/composite/composite_hints`
+295
View File
@@ -0,0 +1,295 @@
# 实体管理规范 (Entity Management Specification)
> **适用范围**: 所有实体类型(角色/地点/物品/势力/招式)
> **核心目标**: AI 驱动的实体提取、别名管理、版本追踪
---
## 当前规范变更
1. **SQLite 存储**: 实体、别名、状态变化、关系迁移到 `index.db`
2. **state.json 精简**: 仅保留进度、主角状态、节奏追踪(< 5KB)
3. **AI 提取**: Data Agent 从纯正文语义提取实体
4. **置信度消歧**: >0.8 自动采用,0.5-0.8 警告,<0.5 人工确认
5. **双 Agent 架构**: Context Agent (读) + Data Agent (写)
> **注意**: XML 标签仍可用于手动标注场景,但主流程不再要求。
---
## 一、存储架构
### 1.1 数据分布
| 数据类型 | 存储位置 | 说明 |
|---------|---------|------|
| 实体 (entities) | index.db | SQLite entities 表 |
| 别名 (aliases) | index.db | SQLite aliases 表 (一对多) |
| 状态变化 | index.db | SQLite state_changes 表 |
| 关系 | index.db | SQLite relationships 表 |
| 章节索引 | index.db | SQLite chapters 表 |
| 场景索引 | index.db | SQLite scenes 表 |
| 进度/配置 | state.json | 精简 JSON (< 5KB) |
| 主角状态 | state.json | protagonist_state 快照 |
| 节奏追踪 | state.json | strand_tracker |
### 1.2 index.db Schema
```sql
-- 实体表
CREATE TABLE entities (
id TEXT PRIMARY KEY,
type TEXT NOT NULL, -- 角色/地点/物品/势力/招式
canonical_name TEXT NOT NULL,
tier TEXT DEFAULT '装饰', -- 核心/重要/次要/装饰
desc TEXT,
current_json TEXT, -- JSON 格式的当前状态
first_appearance INTEGER,
last_appearance INTEGER,
is_protagonist INTEGER DEFAULT 0,
created_at TEXT,
updated_at TEXT
);
-- 别名表 (一对多)
CREATE TABLE aliases (
alias TEXT NOT NULL,
entity_id TEXT NOT NULL,
entity_type TEXT NOT NULL,
PRIMARY KEY (alias, entity_id, entity_type)
);
-- 状态变化表
CREATE TABLE state_changes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
entity_id TEXT NOT NULL,
field TEXT NOT NULL,
old_value TEXT,
new_value TEXT,
reason TEXT,
chapter INTEGER,
created_at TEXT
);
-- 关系表
CREATE TABLE relationships (
id INTEGER PRIMARY KEY AUTOINCREMENT,
from_entity TEXT NOT NULL,
to_entity TEXT NOT NULL,
type TEXT NOT NULL,
description TEXT,
chapter INTEGER,
created_at TEXT,
UNIQUE(from_entity, to_entity, type)
);
```
### 1.3 各类实体特点
| 实体类型 | 别名复杂度 | 属性变化 | 层级关系 |
|---------|-----------|---------|---------|
| 角色 | 高(多种称呼)| 高(境界/位置/关系)| 无 |
| 地点 | 中(简称/全称)| 低(状态变化)| 有(省>市>区)|
| 物品 | 低(别称较少)| 中(升级/转移)| 无 |
| 势力 | 中(简称/别称)| 中(等级/领地)| 有(总部>分部)|
| 招式 | 低(别名少见)| 中(升级)| 无 |
---
## 二、处理流程
### 2.1 Data Agent 自动提取
```
章节正文
Data Agent (AI 语义分析)
┌─────────────────────────────────────────────────────────┐
│ 1. 识别出场实体 │
│ - 匹配已有实体(通过 aliases 表) │
│ - 识别新实体,生成 suggested_id │
│ │
│ 2. 置信度评估 │
│ ├─ > 0.8: 自动采用 │
│ ├─ 0.5-0.8: 采用但警告 │
│ └─ < 0.5: 标记待人工确认 │
│ │
│ 3. 写入 index.db │
│ - entities 表: 新实体/更新出场章节 │
│ - aliases 表: 注册新别名 │
│ - state_changes 表: 记录属性变化 │
│ - relationships 表: 记录新关系 │
│ │
│ 4. 更新 state.json (精简) │
│ - protagonist_state: 主角状态快照 │
│ - strand_tracker: 节奏追踪 │
│ - disambiguation_warnings/pending: 消歧记录 │
└─────────────────────────────────────────────────────────┘
index.db 更新完成
```
### 2.2 查询接口
```bash
# 查询实体
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index get-entity --id "xiaoyan"
# 查询核心实体
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index get-core-entities
# 通过别名查找
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index get-by-alias --alias "萧炎"
# 查询状态变化历史
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index get-state-changes --entity "xiaoyan"
# 查询关系
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index get-relationships --entity "xiaoyan"
```
---
## 三、标签体系 (可选)
> 当前主流程使用 Data Agent 自动提取。以下标签仅用于**手动标注场景**。
### 3.1 新建实体 (`<entity>`)
```xml
<entity type="角色" id="lintian" name="林天" desc="主角,觉醒吞噬金手指" tier="核心">
<alias>废物</alias>
<alias>那个少年</alias>
</entity>
<entity type="地点" id="tianyunzong" name="天云宗" desc="东域三大宗门之一" tier="核心">
<alias>宗门</alias>
</entity>
```
### 3.2 添加别名 (`<entity-alias>`)
```xml
<entity-alias id="lintian" alias="林宗主" context="成为天云宗主后"/>
<entity-alias ref="林天" alias="不灭战神" context="晋升战神称号后"/>
```
### 3.3 更新属性 (`<entity-update>`)
```xml
<entity-update id="lintian">
<set key="realm" value="筑基期一层" reason="血煞秘境突破"/>
<set key="location" value="天云宗"/>
</entity-update>
```
**操作类型**:
| 操作 | 语法 | 说明 |
|------|------|------|
| set | `<set key="k" value="v"/>` | 设置属性值 |
| unset | `<unset key="k"/>` | 删除属性 |
| add | `<add key="k" value="v"/>` | 向数组添加元素 |
| remove | `<remove key="k" value="v"/>` | 从数组删除元素 |
| inc | `<inc key="k" delta="1"/>` | 数值递增 |
---
## 四、ID 生成规则
```python
def generate_entity_id(entity_type: str, name: str, existing_ids: set) -> str:
"""
生成唯一实体 ID
规则:
1. 优先使用拼音(去空格、小写)
2. 冲突时追加数字后缀
3. 类型前缀: 物品→item_, 势力→faction_, 招式→skill_, 地点→loc_
"""
prefix_map = {
"物品": "item_",
"势力": "faction_",
"招式": "skill_",
"地点": "loc_"
# 角色无前缀
}
pinyin = ''.join(lazy_pinyin(name))
base_id = prefix_map.get(entity_type, '') + pinyin.lower()
final_id = base_id
counter = 1
while final_id in existing_ids:
final_id = f"{base_id}_{counter}"
counter += 1
return final_id
```
---
## 五、错误处理
### 5.1 别名冲突
当前结构允许 **aliases 一对多**:同一别名可以指向多个实体。
`ref="别名"` 命中多个实体且无法消歧时,报错:
```
⚠️ 别名歧义: '宗主' 命中 2 个实体,请改用 id 或补充 type 属性
解决方案:
1. 改用稳定 id<entity-update id="...">...</entity-update>
2. 补充 type(仅能消歧跨类型;同类型重名仍需 id)
```
### 5.2 置信度处理
| 置信度范围 | 处理方式 |
|-----------|---------|
| > 0.8 | 自动采用,无需确认 |
| 0.5 - 0.8 | 采用建议值,记录 warning |
| < 0.5 | 标记待人工确认,不自动写入 |
---
## 六、迁移说明
从旧版结构迁移到当前结构:
```bash
# 运行迁移脚本
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" migrate -- --backup
# 验证迁移结果
python "${SCRIPTS_DIR}/noma.py" --project-root "$PROJECT_ROOT" index stats
```
迁移后:
- `index.db` 包含所有实体、别名、状态变化、关系
- `state.json` 仅保留进度、主角状态、节奏追踪
- 旧的 `entities_v3``alias_index` 字段会被清理
---
## 七、总结
### 7.1 当前结构的核心改进
1. **SQLite 存储**: 解决 state.json 膨胀问题
2. **精简 JSON**: state.json 保持 < 5KB
3. **一对多别名**: 同一别名可映射多个实体
4. **AI 自动提取**: Data Agent 语义分析替代 XML 标签
### 7.2 数据流
```
章节正文 → Data Agent → index.db (实体/别名/关系/状态变化)
→ state.json (进度/主角状态/节奏)
→ vectors.db (场景向量)
Context Agent → 下一章上下文
```
+691
View File
@@ -0,0 +1,691 @@
# 题材配置档案 (Genre Profiles)
> **定位**:本文档定义各题材的追读力配置参数,供 Step 1.5 / Context Agent / Checkers 读取。
>
> **原则**:配置用于"调整权重和建议",不做硬性裁决。
>
> **说明**:基于 xslca.cc 热门榜实证数据扩展,新增 history-travel / game-lit,并更新 shuangwen / xianxia / urban-power 关键参数。
---
## 一、Profile 字段说明
### 1.1 核心字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | string | 题材唯一标识(英文小写) |
| `name` | string | 题材中文名 |
| `description` | string | 一句话描述核心卖点 |
| `tags` | string[] | 可叠加的题材标签(预留多标签扩展) |
### 1.2 钩子配置 (hook_config)
| 字段 | 类型 | 说明 |
|------|------|------|
| `preferred_types` | string[] | 偏好钩子类型(按优先级排序) |
| `strength_baseline` | string | 默认钩子强度:strong/medium/weak |
| `chapter_end_required` | boolean | 章末钩子偏好(true=强偏好,不是逐章硬性) |
| `transition_allowance` | number | 过渡章豁免上限(连续多少章可降级) |
### 1.3 爽点配置 (coolpoint_config)
| 字段 | 类型 | 说明 |
|------|------|------|
| `preferred_patterns` | string[] | 偏好爽点模式(按优先级排序) |
| `density_per_chapter` | string | 每章爽点密度:high(2+)/medium(1)/low(0-1) |
| `combo_interval` | number | combo爽点建议间隔(每N章参考1个) |
| `milestone_interval` | number | 阶段性胜利建议间隔(每N章参考1个) |
### 1.4 微兑现配置 (micropayoff_config)
| 字段 | 类型 | 说明 |
|------|------|------|
| `preferred_types` | string[] | 偏好微兑现类型 |
| `min_per_chapter` | number | 每章建议微兑现下限 |
| `transition_min` | number | 过渡章建议微兑现下限 |
### 1.5 节奏红线 (pacing_config)
| 字段 | 类型 | 说明 |
|------|------|------|
| `stagnation_threshold` | number | 节奏停滞阈值(连续N章无推进=HARD-003 |
| `strand_quest_max` | number | Quest主线最大连续章数 |
| `strand_fire_gap_max` | number | Fire感情线最大断档章数 |
| `transition_max_consecutive` | number | 过渡章最大连续数 |
### 1.6 约束豁免 (override_config)
| 字段 | 类型 | 说明 |
|------|------|------|
| `allowed_rationale_types` | string[] | 允许的Override理由类型 |
| `debt_multiplier` | number | 债务倍率(>1表示该题材更严格) |
| `payback_window_default` | number | 默认偿还窗口(章数) |
---
## 二、内置题材 Profiles
### 2.1 爽文/系统流 (shuangwen)
```yaml
id: shuangwen
name: 爽文/系统流
description: 金手指开挂,快节奏升级,打脸装逼一条龙
tags: [shuangwen]
hook_config:
preferred_types: [渴望钩, 危机钩, 情绪钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [装逼打脸, 扮猪吃虎, 越级反杀, 迪化误解]
density_per_chapter: high
combo_interval: 5
milestone_interval: 10
micropayoff_config:
preferred_types: [能力兑现, 资源兑现, 认可兑现]
min_per_chapter: 2
transition_min: 1
pacing_config:
stagnation_threshold: 3
strand_quest_max: 5
strand_fire_gap_max: 15
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, ARC_TIMING]
debt_multiplier: 1.0
payback_window_default: 3
```
**题材特点**
- 追求高密度爽点,读者期待快节奏
- 章末优先保留明确期待(要突破了/要打脸了/要发财了)
- 过渡章容忍度低,建议不连续超过 2 章
- 数值反馈建议可视化(战力50→战力180,前后对比)
- 金手指建议设置上限/消耗/冷却,避免无限使用
---
### 2.2 修仙/玄幻 (xianxia)
```yaml
id: xianxia
name: 修仙/玄幻
description: 逆天改命,残酷法则,机缘与争斗并存
tags: [xianxia]
hook_config:
preferred_types: [危机钩, 渴望钩, 选择钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 3
coolpoint_config:
preferred_patterns: [越级反杀, 扮猪吃虎, 身份掉马, 反派翻车]
density_per_chapter: high
combo_interval: 5
milestone_interval: 15
micropayoff_config:
preferred_types: [能力兑现, 资源兑现, 信息兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 4
strand_quest_max: 6
strand_fire_gap_max: 12
transition_max_consecutive: 3
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, WORLD_RULE_CONSTRAINT, ARC_TIMING]
debt_multiplier: 0.9
payback_window_default: 5
```
**题材特点**
- 需要世界观构建,允许更多铺垫章
- 境界突破是核心期待,阶位制建议可视化(8-10级体系,前后对比数值)
- 资源货币化体系(灵石/丹药/功法)是核心微兑现载体
- 设定约束可作为合理Override理由
---
### 2.3 言情/甜宠 (romance)
```yaml
id: romance
name: 言情/甜宠
description: 情感互动,关系推进,心动与虐心交织
tags: [romance]
hook_config:
preferred_types: [情绪钩, 渴望钩, 选择钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [甜蜜超预期, 身份掉马, 迪化误解]
density_per_chapter: medium
combo_interval: 6
milestone_interval: 12
micropayoff_config:
preferred_types: [关系兑现, 情绪兑现, 认可兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 4
strand_quest_max: 4
strand_fire_gap_max: 5
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, CHARACTER_CREDIBILITY, ARC_TIMING]
debt_multiplier: 1.0
payback_window_default: 4
```
**题材特点**
- 感情线是绝对核心,断档容忍度极低
- 情绪钩是王牌(心疼/心动/吃醋)
- 关系进展是最重要的微兑现
---
### 2.4 悬疑/推理 (mystery)
```yaml
id: mystery
name: 悬疑/推理
description: 谜题驱动,逻辑推演,真相一步步揭示
tags: [mystery]
hook_config:
preferred_types: [悬念钩, 危机钩, 选择钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [反派翻车, 身份掉马]
density_per_chapter: low
combo_interval: 10
milestone_interval: 20
micropayoff_config:
preferred_types: [信息兑现, 线索兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 3
strand_quest_max: 8
strand_fire_gap_max: 20
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [LOGIC_INTEGRITY, TRANSITIONAL_SETUP, ARC_TIMING]
debt_multiplier: 0.8
payback_window_default: 5
```
**题材特点**
- 逻辑完整性优先于爽点密度
- 信息兑现是核心微兑现(建议保持持续线索推进)
- LOGIC_INTEGRITY可作为降级钩子强度的合理理由
---
### 2.5 规则怪谈 (rules-mystery)
```yaml
id: rules-mystery
name: 规则怪谈
description: 诡异规则,生存推理,反杀怪谈
tags: [rules-mystery, horror]
hook_config:
preferred_types: [危机钩, 悬念钩, 选择钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 1
coolpoint_config:
preferred_patterns: [越级反杀, 反派翻车]
density_per_chapter: medium
combo_interval: 5
milestone_interval: 8
micropayoff_config:
preferred_types: [信息兑现, 线索兑现, 能力兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 2
strand_quest_max: 4
strand_fire_gap_max: 15
transition_max_consecutive: 1
override_config:
allowed_rationale_types: [LOGIC_INTEGRITY, WORLD_RULE_CONSTRAINT]
debt_multiplier: 1.2
payback_window_default: 2
```
**题材特点**
- 紧张氛围要求高钩子强度
- 过渡章容忍度极低(1章)
- 规则约束是合理Override理由
---
### 2.6 都市异能 (urban-power)
```yaml
id: urban-power
name: 都市异能
description: 现代背景,隐藏超能,低调装逼,产业链博弈
tags: [urban, power, industry]
hook_config:
preferred_types: [危机钩, 渴望钩, 情绪钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [扮猪吃虎, 装逼打脸, 身份掉马, 迪化误解]
density_per_chapter: high
combo_interval: 3
milestone_interval: 10
micropayoff_config:
preferred_types: [认可兑现, 能力兑现, 关系兑现]
min_per_chapter: 2
transition_min: 1
pacing_config:
stagnation_threshold: 3
strand_quest_max: 5
strand_fire_gap_max: 8
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, ARC_TIMING]
debt_multiplier: 1.0
payback_window_default: 3
```
**题材特点**
- 装逼打脸系列是核心爽点
- 现代背景要求身份隐藏→掉马的节奏控制
- 社会地位变化是重要微兑现
- 娱乐圈/产业链背景热门,感情线权重高(断档容忍度降至8章)
- 3章一峰节奏:第1章困境,第2章能力初展,第3章小胜+新阻力
---
### 2.7 知乎短篇 (zhihu-short)
```yaml
id: zhihu-short
name: 知乎短篇
description: 短平快,强反转,情绪冲击
tags: [short, zhihu]
hook_config:
preferred_types: [情绪钩, 悬念钩, 选择钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 0
coolpoint_config:
preferred_patterns: [反派翻车, 身份掉马, 甜蜜超预期]
density_per_chapter: high
combo_interval: 2
milestone_interval: 3
micropayoff_config:
preferred_types: [情绪兑现, 信息兑现, 关系兑现]
min_per_chapter: 2
transition_min: 2
pacing_config:
stagnation_threshold: 1
strand_quest_max: 2
strand_fire_gap_max: 3
transition_max_consecutive: 0
override_config:
allowed_rationale_types: []
debt_multiplier: 2.0
payback_window_default: 1
```
**题材特点**
- 过渡章窗口极窄,建议每章至少有一项可感知收获
- 极高钩子强度要求
- 债务倍率最高(短篇应避免长期欠债)
---
### 2.8 替身文/虐文 (substitute)
```yaml
id: substitute
name: 替身文/虐文
description: 情感纠葛,误解与反转,追妻火葬场
tags: [substitute, angst]
hook_config:
preferred_types: [情绪钩, 选择钩, 悬念钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [身份掉马, 反派翻车, 甜蜜超预期]
density_per_chapter: medium
combo_interval: 5
milestone_interval: 10
micropayoff_config:
preferred_types: [情绪兑现, 关系兑现, 认可兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 3
strand_quest_max: 3
strand_fire_gap_max: 4
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [CHARACTER_CREDIBILITY, ARC_TIMING, TRANSITIONAL_SETUP]
debt_multiplier: 1.0
payback_window_default: 4
```
**题材特点**
- 情绪钩是绝对核心(虐心→心疼→期待)
- 身份掉马是王牌爽点
- 感情线断档容忍度极低
---
### 2.9 电竞 (esports)
```yaml
id: esports
name: 电竞
description: 赛场博弈,团队磨合,逆风翻盘与冠军追逐
tags: [esports, competition]
hook_config:
preferred_types: [危机钩, 选择钩, 渴望钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 1
coolpoint_config:
preferred_patterns: [越级反杀, 反派翻车, 迪化误解]
density_per_chapter: high
combo_interval: 4
milestone_interval: 8
micropayoff_config:
preferred_types: [信息兑现, 认可兑现, 关系兑现]
min_per_chapter: 2
transition_min: 1
pacing_config:
stagnation_threshold: 2
strand_quest_max: 4
strand_fire_gap_max: 8
transition_max_consecutive: 1
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, ARC_TIMING, LOGIC_INTEGRITY]
debt_multiplier: 1.1
payback_window_default: 2
```
**题材特点**
- 比赛章节建议有可追踪的胜负目标与决策节点
- 逆风局/翻盘局是核心爽点来源
- 过渡章容忍度低,需保持实时反馈感(比分/舆论/状态)
---
### 2.10 直播文 (livestream)
```yaml
id: livestream
name: 直播文
description: 平台流量博弈,实时反馈驱动,舆论与商业双线并进
tags: [livestream, urban]
hook_config:
preferred_types: [危机钩, 情绪钩, 选择钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 1
coolpoint_config:
preferred_patterns: [装逼打脸, 反派翻车, 身份掉马]
density_per_chapter: high
combo_interval: 3
milestone_interval: 6
micropayoff_config:
preferred_types: [认可兑现, 资源兑现, 信息兑现]
min_per_chapter: 2
transition_min: 1
pacing_config:
stagnation_threshold: 2
strand_quest_max: 4
strand_fire_gap_max: 6
transition_max_consecutive: 1
override_config:
allowed_rationale_types: [TRANSITIONAL_SETUP, ARC_TIMING, CHARACTER_CREDIBILITY]
debt_multiplier: 1.1
payback_window_default: 2
```
**题材特点**
- 优先形成"外部反馈→主角反应→结果变化"闭环
- 舆论反转与商业博弈需依赖证据链,不靠口号
- 数据变化(在线/榜单/转化)可作为高频微兑现
---
### 2.11 克苏鲁 (cosmic-horror)
```yaml
id: cosmic-horror
name: 克苏鲁
description: 规则污染与理性崩塌并行,真相越近代价越高
tags: [horror, mystery, cosmic]
hook_config:
preferred_types: [悬念钩, 危机钩, 选择钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 1
coolpoint_config:
preferred_patterns: [反派翻车, 迪化误解, 越级反杀]
density_per_chapter: medium
combo_interval: 6
milestone_interval: 10
micropayoff_config:
preferred_types: [线索兑现, 信息兑现, 情绪兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 2
strand_quest_max: 4
strand_fire_gap_max: 12
transition_max_consecutive: 1
override_config:
allowed_rationale_types: [LOGIC_INTEGRITY, WORLD_RULE_CONSTRAINT, ARC_TIMING]
debt_multiplier: 1.3
payback_window_default: 2
```
**题材特点**
- 恐怖感来自规则和代价,而非纯氛围堆叠
- 每次推进真相都应绑定明确损失(理智/关系/资源)
- 高强度钩子优先"未闭合规则问题"而非单纯惊吓
### 2.12 历史穿越 (history-travel)
```yaml
id: history-travel
name: 历史穿越
description: 现代灵魂穿越古代,知识优势改变历史,种田发家逆袭
tags: [history, travel, knowledge]
hook_config:
preferred_types: [选择钩, 危机钩, 渴望钩]
strength_baseline: medium
chapter_end_required: true
transition_allowance: 2
coolpoint_config:
preferred_patterns: [打脸权威, 扮猪吃虎, 反派翻车, 身份掉马]
density_per_chapter: medium
combo_interval: 3
milestone_interval: 10
micropayoff_config:
preferred_types: [信息兑现, 资源兑现, 认可兑现]
min_per_chapter: 1
transition_min: 1
pacing_config:
stagnation_threshold: 3
strand_quest_max: 5
strand_fire_gap_max: 10
transition_max_consecutive: 2
override_config:
allowed_rationale_types: [WORLD_RULE_CONSTRAINT, CHARACTER_CREDIBILITY, ARC_TIMING]
debt_multiplier: 0.9
payback_window_default: 4
```
**题材特点**
- 知识优势 > 武力优势,推导过程要展示(不能只说答案)
- 3章一峰节奏:第1章困境/穿越,第2章知识初展,第3章小胜+新阻力
- 反派有合理动机(利益冲突),权威人物不轻易被说服(需多次证明)
- 历史有惯性,改变一件事会引发连锁反应(非线性结果)
- 女性主角占比上升,种田/发家/行业改革标签热门
---
### 2.13 游戏文 (game-lit)
```yaml
id: game-lit
name: 游戏文
description: 游戏化世界观,系统金手指驱动,数值反馈爽感,极致反差起点
tags: [game, system, apocalypse]
hook_config:
preferred_types: [危机钩, 渴望钩, 选择钩]
strength_baseline: strong
chapter_end_required: true
transition_allowance: 0
coolpoint_config:
preferred_patterns: [越级反杀, 装逼打脸, 扮猪吃虎, 反派翻车]
density_per_chapter: high
combo_interval: 3
milestone_interval: 10
micropayoff_config:
preferred_types: [能力兑现, 资源兑现, 认可兑现]
min_per_chapter: 2
transition_min: 1
pacing_config:
stagnation_threshold: 2
strand_quest_max: 5
strand_fire_gap_max: 15
transition_max_consecutive: 0
override_config:
allowed_rationale_types: [WORLD_RULE_CONSTRAINT, ARC_TIMING]
debt_multiplier: 1.1
payback_window_default: 2
```
**题材特点**
- 早期章节建议尽快亮出金手指(通常前 1-2 章)
- 数值反馈建议可视化(战力50→战力180,前后对比)
- 金手指建议设置上限/消耗/冷却,避免无限使用
- 过渡章窗口很窄,建议保持"爽点或数值推进"至少一项
- IP融合(LOL/宝可梦等)是差异化标签,末日生存系兴起
- 前期(建议前 3 章)应出现明确对手(环境/规则/具体反派任选其一)
---
## 三、Profile 加载机制
### 3.1 加载时机
1. **Step 1.5**:根据 `state.json → project.genre` 加载对应profile
2. **Context Agent**:将profile相关字段注入创作任务书
3. **Checkers**:根据profile调整检测阈值和建议权重
### 3.2 多标签支持(预留)
当前为单标签模式。未来支持多标签时:
- 使用 `tags` 字段叠加
- 冲突字段取更严格的值
- 例:`[romance, mystery]` → 感情线断档取 min(5, 20) = 5
### 3.3 自定义Profile
用户可在 `state.json` 中覆盖默认值:
```json
{
"project": {
"genre": "xianxia",
"genre_overrides": {
"pacing_config": {
"stagnation_threshold": 5
}
}
}
}
```
---
## 四、与 Taxonomy 的关系
| Taxonomy 定义 | Profile 配置 |
|--------------|-------------|
| 钩子类型清单 | 哪些类型偏好 |
| 爽点模式清单 | 哪些模式偏好 |
| 微兑现类型清单 | 哪些类型偏好 |
| Hard/Soft 标准 | 阈值调整 |
| Override 理由类型 | 哪些理由允许 |
+28
View File
@@ -0,0 +1,28 @@
# preferences.json 设计
用于保存用户偏好与写作约束(可由 /noma-init 或用户手动编辑)。
## 示例
```json
{
"tone": "热血",
"pacing": {
"chapter_words": 2500,
"cliffhanger": true
},
"style": {
"dialogue_ratio": 0.35,
"narration_ratio": 0.65
},
"avoid": ["过度旁白", "重复台词"],
"focus": ["主角成长", "战斗描写"]
}
```
## 字段说明
- tone: 全局情绪基调
- pacing: 节奏偏好
- style: 叙事/对话比例
- avoid: 禁忌清单
- focus: 必须强调的方向
+29
View File
@@ -0,0 +1,29 @@
# project_memory.json 设计
> **DEPRECATED**: 此 schema 已被 `.noma/wiki/patterns/writing-patterns.md` 取代。
> Wiki 格式提供更好的上下文管道集成。project_memory.json 仍保留用于向后兼容,
> 但不再是主要数据源。迁移命令:`noma.py wiki migrate-project-memory`
用于保存长期可复用的写作模式,由 `/noma-learn` 写入。
## 示例
```json
{
"patterns": [
{
"pattern_type": "hook",
"description": "危机钩设计:悬念拉满",
"source_chapter": 100,
"learned_at": "2026-02-02T12:00:00Z"
}
]
}
```
## 字段说明
- patterns: 已验证的写作模式列表
- pattern_type: hook / pacing / dialogue / payoff / emotion
- description: 可复用描述
- source_chapter: 来源章节
- learned_at: 记录时间
+359
View File
@@ -0,0 +1,359 @@
# 追读力分类标准 (Reading Power Taxonomy)
> **定位**:本文档定义"追读力"相关的统一分类标准,供 Step 1.5 / Context Agent / Checkers 共享使用。
>
> **原则**:所有分类用于"指导性建议",不做硬性评分裁决。
>
---
## 一、钩子类型 (Hook Types)
### 1.1 现有类型(兼容映射)
| 旧类型 | 新 Taxonomy | 说明 |
|--------|-------------|------|
| 危机型 | 危机钩 (Crisis Hook) | 敌人出现/危险逼近 |
| 反常型 | 悬念钩 (Mystery Hook) | 信息缺口/未解之谜 |
| 利益型 | 渴望钩 (Desire Hook) | 好事即将发生/奖励可期 |
### 1.2 扩展类型
#### 1.2.1 情绪钩 (Emotion Hook)
**定义**:通过触发读者的强烈情绪反应(愤怒/心疼/共情/不公/羞耻/心动)来驱动阅读。
**触发场景**
- 主角遭受不白之冤
- 被信任的人背叛
- 弱者被欺凌
- 关系突破/心动时刻
**题材适配**
| 题材 | 偏好情绪 | 强度建议 |
|------|---------|---------|
| 言情 | 心疼/心动/羞耻 | strong |
| 爽文 | 愤怒/不公 | medium→strong |
| 悬疑 | 共情/恐惧 | medium |
**过渡章降级**:可用"轻情绪"(如淡淡的担忧/期待)替代强情绪。
**软提示问句**
- 本章结尾读者会产生什么情绪?
- 这个情绪是否足以让他们想知道"接下来怎么办"?
**常见误用**
- ❌ 情绪无来由(没有铺垫就要求读者共情)
- ❌ 情绪与角色行为不匹配
- ❌ 过度煽情导致疲劳
**示例**
- 爽文:"萧炎看着倒在血泊中的药老,拳头攥紧——他发誓,这笔账一定要讨回来。"
- 言情:"她终于明白,那个从不解释的男人,一直在用自己的方式保护她。"
- 悬疑:"监控里那个身影,分明是三天前已经死去的人。"
---
#### 1.2.2 选择钩 (Choice Hook)
**定义**:通过设置两难抉择/高风险决策来驱动阅读,读者想知道角色会如何选择。
**触发场景**
- 生死二选一
- 利益与道义冲突
- 误会导致的抉择
- 时间压力下的决定
**题材适配**
| 题材 | 偏好选择类型 | 强度建议 |
|------|-------------|---------|
| 悬疑 | 真相vs安全 | strong |
| 言情 | 感情vs现实 | medium→strong |
| 爽文 | 冒险vs稳妥 | medium |
**过渡章降级**:可用"小选择"(如去哪/见谁/信谁)替代生死抉择。
**软提示问句**
- 角色面临什么选择?
- 两个选项各有什么代价?
- 读者会站在哪一边?
**常见误用**
- ❌ 选择没有代价(假两难)
- ❌ 正确答案太明显
- ❌ 选择与角色性格不符
**示例**
- 悬疑:"门后传来女儿的哭声,但规则明确写着:不要开门。"
- 言情:"机票已经订好,行李已经打包——她只需要决定,要不要回头看他最后一眼。"
- 爽文:"吞下这颗丹药,有三成概率突破,七成概率走火入魔。"
---
#### 1.2.3 渴望钩 (Desire Hook)
**定义**:通过展示可期待的奖励/成就/进展来驱动阅读,读者想看到愿望实现的过程。
**触发场景**
- 突破在即
- 宝物将得
- 复仇时机成熟
- 关系即将进展
- 真相呼之欲出
**子类型**
| 子类型 | 描述 | 示例 |
|--------|------|------|
| 成长渴望 | 想看主角变强 | "再有三天,就能突破了" |
| 关系渴望 | 想看CP发糖 | "她答应了那个约定" |
| 复仇渴望 | 想看反派倒霉 | "王少不知道,他的末日近在眼前" |
| 真相渴望 | 想知道谜底 | "答案或许就在这块玉佩里" |
| 收获渴望 | 想看获得好东西 | "这朵火莲,足以让他脱胎换骨" |
**题材适配**
| 题材 | 偏好渴望类型 | 强度建议 |
|------|-------------|---------|
| 爽文 | 成长/复仇/收获 | strong |
| 言情 | 关系/真相 | medium→strong |
| 悬疑 | 真相 | strong |
**过渡章降级**:可用"小期待"(如即将见到某人/即将到达某地)替代大期待。
**软提示问句**
- 读者在期待什么?
- 这个期待什么时候会实现?
- 本章是否给了实现的希望?
**常见误用**
- ❌ 期待一直不兑现(狼来了效应)
- ❌ 期待太容易实现(没有张力)
- ❌ 期待与读者不共鸣
**示例**
- 爽文:"明日宗门大比,所有嘲笑过他的人,都将见证他的崛起。"
- 言情:"他说,等这件事结束,有话要对她说。"
- 悬疑:"十年前那场火灾的真相,就藏在这份档案里。"
---
### 1.3 钩子强度分级
| 强度 | 适用场景 | 特征 |
|------|---------|------|
| **strong** | 卷末/关键转折/大冲突前 | 读者必须立刻知道后续 |
| **medium** | 普通剧情章 | 读者想知道,但可以等 |
| **weak** | 过渡章/铺垫章 | 维持阅读惯性即可 |
### 1.4 章内 vs 章末
| 位置 | 常用钩子 | 作用 |
|------|---------|------|
| **章内** | 悬念钩、情绪钩 | 保持章内沉浸 |
| **章末** | 危机钩、选择钩、渴望钩 | 驱动点下一章 |
---
## 二、爽点模式 (Cool-Point Patterns)
### 2.1 现有6种模式(保留)
| 模式 | 标识 | 典型触发 |
|------|------|---------|
| 装逼打脸 | Flex & Counter | 嘲讽→反转→震惊 |
| 扮猪吃虎 | Underdog Reveal | 示弱→暴露→碾压 |
| 越级反杀 | Underdog Victory | 差距→策略→逆转 |
| 打脸权威 | Authority Challenge | 权威→挑战→成功 |
| 反派翻车 | Villain Downfall | 得意→反杀→落幕 |
| 甜蜜超预期 | Sweet Surprise | 期待→超预期→升华 |
### 2.2 扩展模式
#### 2.2.1 迪化误解 (Misunderstanding Elevation)
**定义**:主角做了一件普通/随意的事,配角通过脑补认为主角深不可测、高人隐世。
**核心结构**
1. 主角随意行为(无心插柳)
2. 配角信息差(不知道主角真实情况)
3. 配角脑补升华(合理化主角行为)
4. 读者优越感(我知道真相)
**题材适配**
| 题材 | 适用度 | 注意事项 |
|------|--------|---------|
| 爽文/系统流 | 高 | 避免过于刻意 |
| 日常/轻松 | 高 | 可作为喜剧元素 |
| 严肃/悬疑 | 低 | 容易破坏氛围 |
**替代建议**
- 如果迪化用多了 → 换"真实实力展示"
- 如果配角太蠢 → 增加合理脑补的信息支撑
**示例**
- "萧炎只是随口说了句'还行',长老却浑身一震——这等天才,竟如此谦逊!"
- "他只是因为没钱才住破庙,众人却以为他在闭关悟道。"
---
#### 2.2.2 身份掉马 (Identity Reveal)
**定义**:隐藏身份在关键时刻被揭露,造成巨大反差和震撼。
**核心结构**
1. 身份伪装(长期铺垫)
2. 关键时刻(危机/高光)
3. 身份揭露(意外或主动)
4. 周围反应(震惊/后悔/敬畏)
**题材适配**
| 题材 | 适用度 | 常见身份反差 |
|------|--------|-------------|
| 豪门/言情 | 高 | 穷亲戚→真千金 |
| 爽文/玄幻 | 高 | 废物→隐藏大佬 |
| 悬疑 | 中 | 路人→关键人物 |
**替代建议**
- 如果掉马用多了 → 换"能力展示"或"背景揭示"
- 如果没有铺垫 → 先补充身份暗示
**示例**
- "当那枚玉佩从她怀中滚落,所有人的脸色都变了——那是皇室的信物。"
- "你们口中的废物萧炎,便是我斗帝强者萧炎的转世。"
---
### 2.3 结构提示(30/40/30 软化版)
> **注意**:以下结构仅供参考,不作为硬性要求。
| 阶段 | 占比建议 | 作用 |
|------|---------|------|
| 铺垫 (Setup) | ~30% | 建立信息差、压力、期待 |
| 兑现 (Delivery) | ~40% | 核心爽点执行 |
| 余波 (Aftermath) | ~30% | 反应、收获、新期待 |
**软提示问句**
- 爽点之前是否有足够的铺垫/压力?
- 兑现时刻是否有足够的展开?
- 爽点之后是否有反应和余味?
---
## 三、即时满足/微兑现 (Micro-Payoff)
### 3.1 定义
**微兑现**:章节内给读者的"小收获",让读者感觉"这章没白看"。
> 与大爽点不同,微兑现更轻量、更频繁,用于维持章内沉浸。
### 3.2 微兑现类型
| 类型 | 描述 | 示例 |
|------|------|------|
| **信息兑现** | 揭示新信息/线索 | "原来那把钥匙的真正用途是..." |
| **关系兑现** | 关系推进/确认 | "她第一次主动握住了他的手" |
| **能力兑现** | 能力提升/新技能 | "他终于掌握了这门功法的精髓" |
| **资源兑现** | 获得物品/资源 | "储物袋里竟然还藏着一颗聚气丹" |
| **认可兑现** | 获得认可/面子 | "在场所有人看他的眼神都变了" |
| **情绪兑现** | 情绪释放/共鸣 | "他终于说出了压在心底的那句话" |
| **线索兑现** | 伏笔回收/推进 | "三年前的那件事,终于有了眉目" |
### 3.3 题材偏好
| 题材 | 偏好微兑现 | 每章建议数量 |
|------|-----------|-------------|
| 爽文 | 能力/资源/认可 | 2-3 |
| 言情 | 关系/情绪/认可 | 1-2 |
| 悬疑 | 信息/线索 | 1-2 |
| 日常 | 关系/情绪 | 1 |
### 3.3.1 新增题材补充
| 题材 | 关键追读触发 | 钩子偏好 | 微兑现重点 |
|------|-------------|---------|-----------|
| 电竞 | 比赛胜负与临场决策 | 危机钩/选择钩 | 认可兑现/信息兑现 |
| 直播文 | 实时反馈与舆论反转 | 危机钩/情绪钩 | 资源兑现/认可兑现 |
| 克苏鲁 | 规则真相与代价升级 | 悬念钩/危机钩 | 线索兑现/情绪兑现 |
**执行提示**
- 电竞:建议每章给出 1 个可验证决策点(BP/战术/执行)与后果。
- 直播文:优先形成"反馈→反应→数据变化"闭环。
- 克苏鲁:优先回收规则线索,避免仅靠惊悚形容词推动。
### 3.4 过渡章微兑现
过渡章可降低要求,优先保留至少 1 个微兑现:
| 过渡章允许 | 过渡章不建议 |
|-----------|-------------|
| 信息兑现(新线索) | 大爽点 |
| 关系兑现(小互动) | 强冲突 |
| 情绪兑现(轻情绪) | 高密度节奏 |
**软提示问句**
- 读者看完这章会获得什么?
- 是否有"这章有收获"的感觉?
---
## 四、约束分层标准
### 4.1 Hard Invariants(硬约束)
> **违反 = MUST_FIX,不可申诉跳过**
| ID | 约束名称 | 定义 | 触发条件 |
|----|---------|------|---------|
| HARD-001 | 可读性底线 | 关键信息缺失导致看不懂 | 读者无法理解"发生了什么/谁在做什么/为什么" |
| HARD-002 | 承诺违背 | 上章钩子完全不兑现 | 明确的章末承诺在下章无任何回应 |
| HARD-003 | 节奏灾难 | 连续N章无任何推进 | 无新信息/无关系变化/无能力变化/无局势变化(N由题材profile决定)|
| HARD-004 | 冲突真空 | 整章无问题/目标/代价 | 读者无法回答"这章要解决什么" |
### 4.2 Soft Guidance(软建议)
> **违反 = 可申诉,但需记录Override Contract并承担债务**
包括但不限于:
- 章末钩子强度不足
- 微兑现缺失
- 情绪曲线平淡
- 模式重复疲劳
- 段落过长影响可读性
### 4.3 rationale_type 枚举
当违背 Soft Guidance 时,必须选择以下理由之一:
| 类型 | 描述 | 债务影响 |
|------|------|---------|
| `TRANSITIONAL_SETUP` | 铺垫/过渡需要 | 标准 |
| `LOGIC_INTEGRITY` | 剧情逻辑/悬疑公平性优先 | 减少 |
| `CHARACTER_CREDIBILITY` | 人物可信度/成长节奏优先 | 减少 |
| `WORLD_RULE_CONSTRAINT` | 设定/规则约束导致无法兑现 | 减少 |
| `ARC_TIMING` | 长线大回收的节奏安排 | 标准(需明确窗口)|
| `GENRE_CONVENTION` | 题材惯例 | 标准(需引用profile)|
| `EDITORIAL_INTENT` | 作者主观意图 | 增加(配额更严)|
---
## 五、兼容性说明
### 5.1 与现有 checker 的对接
| 现有 Checker | 使用的 Taxonomy |
|--------------|----------------|
| `reader-pull-checker` | 钩子类型、钩子强度、Hard-002 |
| `high-point-checker` | 爽点模式、微兑现 |
| `pacing-checker` | Hard-003 (节奏灾难) |
| `continuity-checker` | Hard-001 (可读性底线) |
### 5.2 输出字段映射
| 新字段 | 对应现有字段 | 说明 |
|--------|-------------|------|
| `hook_type` | 兼容扩展 | 新增情绪钩/选择钩/渴望钩 |
| `hook_strength` | 保持不变 | strong/medium/weak |
| `coolpoint_pattern` | 兼容扩展 | 新增迪化误解/身份掉马 |
| `micro_payoffs` | 新增 | 微兑现列表 |
| `hard_violations` | 新增 | 硬约束违规列表 |
| `soft_suggestions` | 新增 | 软建议列表 |
+313
View File
@@ -0,0 +1,313 @@
---
name: cool-points-guide
purpose: 爽点设计参考,规划大纲时和写作时按需加载
---
<context>
此文件用于爽点(cool-points)设计。Claude 已知基本叙事技巧,这里只补充网文特定的爽点工程方法论。
注意:此文件为 shared 单一事实源;禁止在各 Skill 的 references 下复制修改。若需更新,请修改本文件。
</context>
<instructions>
## 一、六种爽点执行模式
### 1. 装逼打脸
```
对方轻视 → 主角展示实力 → 对方震惊/后悔
```
**适用**:都市、玄幻、职场
### 2. 扮猪吃虎
```
表面弱小 → 关键时刻爆发 → 众人惊艳
```
**适用**:重生、隐藏身份、低调流
### 3. 越级反杀
```
实力差距明显 → 主角逆袭 → 敌人不可置信
```
**适用**:玄幻、武侠、竞技
### 4. 打脸权威
```
权威质疑 → 主角用实力证明 → 权威认可/尴尬
```
**适用**:职场、学院、技术流
### 5. 反派翻车
```
反派得意 → 计划破产 → 反派狼狈
```
**适用**:所有题材
### 6. 甜蜜超预期
```
平淡日常 → 意外惊喜 → 情感升温
```
**适用**:言情、甜宠
---
## 二、爽点三段式结构 (30/40/30参考框架)
### 铺垫阶段 (Setup, 30%篇幅)
- **建立预期**:读者应该期待什么
- **制造反差**:当前状态 vs 即将展现的状态
- **信息差设置**:读者知道什么?角色知道什么?
### 兑现阶段 (Delivery, 40%篇幅)
- **触发时机**:什么事件触发爽点
- **展现方式**:用对话/动作/结果展现
- **情绪高峰**:爽点的最高潮瞬间
### 微反转阶段 (Twist, 30%篇幅)
- **假结束**:读者以为爽点结束了
- **还有一手**:其实还有更厉害的
- **余韵**:微反转后的状态与暗示
---
## 三、压扬比例控制
### 压扬比例标准
| 题材类型 | 压扬比例 | 说明 |
|---------|---------|------|
| 传统爽文 | 压3扬7 | 轻度压迫,快速释放 |
| 硬核正剧 | 压5扬5 | 平衡叙事 |
| 虐恋/黑深残 | 压7扬3 | 长期压抑,爆发更爽 |
### 压扬节奏控制
```
慢铺垫(压) → 快爆发(扬) → 停顿 → 再加速
```
### 句式节奏
- **短句**:快节奏,动作密集
- **长句**:慢节奏,细节描写
- **交替**:制造节奏变化
---
## 四、爽点密度建议(滚动窗口)
| 周期 | 要求 |
|------|------|
| 逐章 | 优先保证有"爽点或同等兑现",允许过渡章低密度 |
| 每 5 章 | 建议 ≥1 个组合爽点(2种模式叠加) |
| 每 10-15 章 | 建议 ≥1 个里程碑爽点(改变主角地位) |
### 爽点强度分级
| 级别 | 说明 | 频率 |
|------|------|------|
| 小爽点 | 单一模式,日常打脸,规模不大 | 常见(多数章节) |
| 组合爽点 | 2种以上模式叠加,重要转折 | 中频(阶段节点) |
| 里程碑爽点 | 改变主角地位的阶段性胜利 | 低频(大节点) |
---
## 五、信息差设计
### 信息差层级
| 层级 | 说明 |
|------|------|
| 读者已知 | 读者通过前文已经知道的信息 |
| 角色已知 | 场景中的角色知道的信息 |
| 信息差核心 | 读者知道但角色不知道的关键信息 |
| 反转信息 | 微反转时揭示的新信息 |
### 信息差运用
```
读者知道主角是隐藏大佬 + 角色不知道 = 期待感
角色嘲讽主角 + 读者知道主角实力 = 爽感积累
主角展示实力 + 角色震惊 = 爽感释放
```
---
## 六、打脸四步法(核心套路)
**Step 1 铺垫**: 提前1-2章建立信息差(读者知道主角底牌,反派不知道)
**Step 2 挑衅**: 通过1-3次挑衅建立对照组(反派被追捧 vs 主角被贬低)
**Step 3 拉扯**: 2-3轮交锋,主角示弱 → 反派得意 → 期待拉满
**Step 4 爆发**: 物理碾压 + 精神打击 + 围观群众反应 + 实质收获
---
## 七、微反转类型
### 还有更强
展示了一手,其实还有更厉害的
```
"你以为这就是我的全力?"
```
### 意外收获
本来只想完成目标,结果还有意外好处
```
打败对手 → 获得宝物 → 宝物比预期更珍贵
```
### 对方更惨
对方以为只是小失败,其实是大翻车
```
输了比赛 → 赌注曝光 → 身败名裂
```
### 情感升温
本以为只是甜,其实更甜
```
以为只是普通礼物 → 发现是精心准备 → 感动落泪
```
### 真相揭示
表面是A,其实是B,而且B更厉害
```
以为是普通玉佩 → 其实是上古神器 → 还认主了
```
---
## 八、爽点升级路径
### 维度1: 规模升级
```
打脸小流氓 → 打脸世家少爷 → 打脸宗门长老 → 覆灭一个帝国
```
### 维度2: 方式升级
```
暴力碾压 → 智谋碾压 → 规则掌控 → 因果抹杀
```
### 维度3: 受众升级
```
让邻居震惊 → 让全城震惊 → 让全国震惊 → 让诸天神魔战栗
```
---
## 九、题材适配
### 都市爽文
- 注重装逼打脸
- 用财力/人脉/身份反转
- 社会地位碾压
### 玄幻升级
- 注重战力反转
- 用实力碾压/等级差距打破
- 越级战斗
### 悬疑本格
- 注重真相反转
- 用证据/推理打脸
- 智商碾压
### 甜宠言情
- 注重情感惊喜
- 用意外浪漫/深情告白
- 甜度超标
---
## 十、AI执行指令
创作时必须遵守:
1. **设计反转时**: 明确**信息差核心**(谁知道什么,谁不知道什么)
2. **审核爽感时**: 爽感不足检查**铺垫篇幅(30%)**是否太少导致势能不足
3. **节奏检查时**: 用 30/40/30 做诊断参考,不作为硬性配比
---
## 十一、伏笔三层级
| 层级 | 回收周期 | 示例 |
|------|----------|------|
| 核心 | 50-300章 | 主角身世/终极敌人/金手指来历 |
| 支线 | 30-100章 | 配角动机/神秘物品/师门秘密 |
| 装饰 | 10-30章 | 场景细节/小习惯/路人提及 |
</instructions>
<examples>
<example>
<input>设计一个打脸爽点:主角在宗门大比被嘲笑</input>
<output>
**铺垫**(第45章): 主角已筑基但隐藏修为,王少以为主角只有练气七层
**挑衅**: 王少当众嘲讽"废物也来参加?",长老们追捧王少
**拉扯**: 第1轮主角用三成力被轻视,第2轮继续示弱,王少大笑"不过如此"
**爆发**: 主角爆发筑基威压,一拳击飞王少,全场震惊"十八岁筑基天才!"
**收获**: 晋升内门 + 5000灵石 + 女主好感度+20
**压扬比例**: 压3扬7(铺垫2章+挑衅拉扯30% / 爆发+收获70%)
</output>
</example>
<example>
<input>设计越级反杀爽点:主角突破境界</input>
<output>
**困境**: 被追杀至悬崖,走投无路
**机缘**: 发现隐藏洞府,获得天材地宝
**突破**: 服用后突破至筑基期
**展示**: 回头一掌拍飞追兵,"你们...还追吗?"
**30/40/30分配**:
- 30%: 被追杀过程,生死危机(压)
- 40%: 发现洞府、突破过程(扬)
- 30%: 反杀追兵、展示威风(爆)
</output>
</example>
<example>
<input>节奏脉冲示例</input>
<output>
【慢铺垫】
"你?"王浩嗤笑一声,上下打量着萧炎,眼中满是不屑,"就凭你一个废物,也配站在这里?"
【快爆发】
萧炎动了。
一步。
王浩的笑容僵住。
两步。
他的瞳孔骤缩。
三步。
"砰!"
【停顿】
全场寂静。
没有人说话。
甚至没有人敢呼吸。
【再加速】
"还有谁?"萧炎淡淡开口,目光扫过全场。
</output>
</example>
<example type="edge_case">
<input>连续3章都是打脸,如何调整?</input>
<output>
❌ 继续打脸 → 审美疲劳
✅ 第4章改为越级反杀或打脸权威
✅ 或穿插 Fire Strand(感情线)调节节奏
</output>
</example>
</examples>
<errors>
❌ 无铺垫的突然反转 → ✅ 提前1-2章埋信息差
❌ 一招秒杀且无情绪势能 → ✅ 补一到两轮有效拉扯或代价
❌ 降智反派 → ✅ 基于已知信息的合理轻视
❌ 打完无收获 → ✅ 建议补战利品/认可/资格中的至少一项
❌ 缺少围观群众 → ✅ 可用侧面反应替代(不强制群像围观)
❌ 铺垫篇幅明显不足 → ✅ 适当补压迫或信息差,提升爽点势能
❌ 压扬比例失衡 → ✅ 根据题材调整比例
❌ 未标注信息差 → ✅ 明确读者和角色的认知差异
</errors>
@@ -0,0 +1,98 @@
---
name: core-constraints
purpose: 每次章节写作前加载,确保三大定律执行
---
<context>
此文件用于章节创作时的核心约束检查。Claude 已知一般写作规范,这里只补充网文特定的防幻觉协议。
注意:此文件为 shared 单一事实源;禁止在各 Skill 的 references 下复制修改。若需更新,请修改本文件。
</context>
<instructions>
## 三大定律(低自由度 - 必须精确执行)
| 定律 | 规则 | 检查方式 |
|------|------|----------|
| **大纲即法律** | 严格执行大纲,不得擅自发挥 | 审查时对照大纲 |
| **设定即物理** | 实力/招式/物品 ≤ index.db 记录 | 写作前查询确认 |
| **发明需识别** | 新实体由 Data Agent 自动提取 | 章节完成后处理 |
## 新实体处理流程
当前规则:正文不再要求 XML 标签:
1. **写作时**: 直接写纯正文,新角色/地点/物品正常描写
2. **完成后**: Data Agent 自动识别新实体并写入 index.db
3. **不确定实体**: Data Agent 标记为 uncertain,由人工确认
## 章节约束分层
### Hard(必须)
- 本章可读性达标:读者能回答"发生了什么 / 谁在做什么 / 为什么"。
- 本章必须存在清晰推进:问题、目标、代价、关系变化、信息变化至少一项可被识别。
- 若上章有明确承诺(钩子/未闭合问题),本章必须回应(允许部分兑现,不要求一次性结清)。
- 禁止输出占位正文(如 `[待补充]``[TODO]``...(省略)...`)。
### Soft(建议)
- 开头尽早进入冲突/风险/强情绪(建议前 200-400 字,不再固定 120 字)。
- 未闭合问题或下一章期待锚点建议放在章末或后段(不限定"后 80-150 字")。
- 局面变化建议保持节奏感(参考 800-1400 字一个脉冲,短章至少一次实质变化)。
- 微兑现频率按题材 profile 建议执行,不要求机械等间距。
### Style(可选强化)
- 对话尽量带意图(试探/回避/施压/诱导),减少纯说明句。
- 避免连续大段纯解释;若必须解释,建议切分为"信息 + 行动/反应"。
- 避免"回去休息了"式机械收尾;若使用平缓收尾,需同时保留未闭合期待。
## 爽点与节奏(按题材 profile 调整)
- 爽点密度由题材与章型共同决定:过渡章允许低密度,但不允许"整章无收获"。
- 组合爽点与里程碑爽点采用滚动窗口评估(5章/10-15章),用于预警而非逐章硬判。
- 连续同类型爽点达到 3 章记为风险预警,优先通过类型变体或执行差异化修正。
## Strand 平衡警告
| 情节线 | 警告条件 |
|--------|----------|
| Quest(主线) | 连续 5+ 章 |
| Fire(感情线) | >10 章未出现 |
| Constellation(世界观) | >15 章未出现 |
## 禁止事项
- `[待补充]``[TODO]``...(省略)...` → 必须完整写出
- 战斗后无善后描述(都市异能题材)
</instructions>
<examples>
<example>
<input>主角需要使用"天雷掌"击败敌人</input>
<output>
1. 查询 index.db 中是否有"天雷掌"技能
2. 若有:直接使用
3. 若无:在正文中描写获得途径(如拜师/领悟/传承),Data Agent 会自动提取
</output>
</example>
<example type="edge_case">
<input>剧情需要主角展示筑基期实力,但 index.db 显示练气期</input>
<output>
❌ 直接写筑基期战力 → 违反"设定即物理"
✅ 先安排突破场景,Data Agent 更新 index.db,再展示新实力
</output>
</example>
</examples>
<errors>
❌ 新实体描写模糊(无法自动识别) → ✅ 确保新实体有明确名称和描写
❌ 主角突然会新技能 → ✅ 先描写获得途径
❌ 实力设定不一致 → ✅ 写作前查询 index.db 确认
❌ 整章无推进点(无目标/无代价/无变化) → ✅ 补至少一项可识别推进
</errors>
@@ -0,0 +1,111 @@
---
name: strand-weave-pattern
purpose: 章节规划时检查三线平衡,避免节奏单调
---
<context>
此文件用于情节线平衡控制。Claude 已知多线叙事技巧,这里只补充网文特定的三线交织机制和 state.json 中的追踪器结构。
注意:此文件为 shared 单一事实源;禁止在各 Skill 的 references 下复制修改。若需更新,请修改本文件。
</context>
<instructions>
## 三条线定义与占比
| 线条 | 占比 | 定义 | 典型剧情 |
|------|------|------|----------|
| **Quest(主线)** | 55-65% | 核心任务、升级、战斗、夺宝 | 宗门大比、秘境、突破境界、复仇打脸 |
| **Fire(感情线)** | 20-30% | 情感关系发展(爱情/友情/师徒) | 相识暧昧、英雄救美、确认关系 |
| **Constellation(世界观线)** | 10-20% | 扩展设定、展示新势力/地点、势力关系、社交网络 | 揭示隐藏势力、介绍新大陆、主角身世 |
## 交织规则(低自由度 - 必须执行)
| 规则 | 警告条件 | 建议操作 |
|------|----------|----------|
| Quest 不连续超过 5 章 | chapters_since_switch >= 5 | 切换到 Fire 或 Constellation |
| Fire 不超过 10 章不出现 | current - last_fire > 10 | 安排感情戏(小甜蜜/吃醋) |
| Constellation 不超过 15 章不出现 | current - last_constellation > 15 | 展示新设定/势力/伏笔 |
## state.json 中的 strand_tracker 结构
```json
{
"strand_tracker": {
"last_quest_chapter": 45,
"last_fire_chapter": 43,
"last_constellation_chapter": 40,
"current_dominant": "quest",
"chapters_since_switch": 3,
"history": [{"chapter": 46, "dominant": "quest"}, ...]
}
}
```
兼容说明:
- `history[].dominant` 为当前标准字段(update_state.py 写入)
- 若项目存在旧数据 `history[].strand`,读取时应兼容映射到 dominant
## 前 30 章织网模板
```
第 1-5 章: Quest ×5(开局快速推进主线)
第 6 章: Fire(首次与女主相遇)
第 7-10 章: Quest ×4(宗门大比)
第 11 章: Fire(英雄救美)
第 12-14 章: Quest ×3(秘境夺宝)
第 15 章: Constellation(揭示"圣地"存在)
第 16-19 章: Quest ×4(击败强敌)
第 20 章: Fire(确认关系)
第 21-24 章: Quest ×4(突破境界)
第 25 章: Constellation(发现主角身世线索)
第 26-30 章: Quest ×5(卷末高潮)
```
</instructions>
<examples>
<example>
<input>当前第 46 章,last_quest=45, last_fire=43, last_constellation=40, current_dominant="quest", chapters_since_switch=3</input>
<output>
**警告判断**:
- Quest 连续 3 章 < 5 章 → 暂无警告
- 距离 Fire 3 章 < 10 章 → 暂无警告
- 距离 Constellation 6 章 < 15 章 → 暂无警告
**本章建议**: 可继续 Quest,但建议下 1-2 章内安排 Fire 调节节奏
</output>
</example>
<example>
<input>当前第 55 章,last_fire=42,连续 13 章无感情线</input>
<output>
⚠️ **警告**: 距离上次感情线 > 10 章!
**建议**: 本章安排 Fire 线
- 选项 A: 女主出场,小甜蜜互动
- 选项 B: 英雄救美场景
- 选项 C: 吃醋/误会小剧情
</output>
</example>
<example type="edge_case">
<input>开局前 10 章需要快速建立主线,感情线可以少一点吗?</input>
<output>
✅ 可以。前 10 章占比可调整为:
- Quest: 70-80%
- Fire: 10-15%
- Constellation: 5-10%
但第 6-8 章必须安排至少 1 次 Fire(首次相遇/印象建立)
</output>
</example>
</examples>
<errors>
❌ 连续 10 章纯 Quest → ✅ 最多 5 章后切换
❌ 感情线超过 10 章不出现 → ✅ 每 5-10 章安排一次
❌ 世界观线超过 15 章不出现 → ✅ 每 10-15 章展示新设定
❌ 切换 Strand 后忘记更新 strand_tracker → ✅ 每章结束后自动更新
</errors>