feat: initial commit
This commit is contained in:
@@ -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/提交说明中需写清"调用方 + 触发节点 + 是否允许人工调用"。
|
||||
|
||||
@@ -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`
|
||||
@@ -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 → 下一章上下文
|
||||
```
|
||||
@@ -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 理由类型 | 哪些理由允许 |
|
||||
@@ -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: 必须强调的方向
|
||||
@@ -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: 记录时间
|
||||
@@ -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` | 新增 | 软建议列表 |
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user