# Dp Set Concept

> Use when building world settings, creating character cards, importing external content, or splitting settings into isolated files for chapter-level concept control

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

---


<SUBAGENT-STOP>
如果你是被派遣执行特定任务的子代理，跳过此技能。
</SUBAGENT-STOP>

# 世界观与角色设定

本技能是**刚性技能**。严格遵循流程，不可跳步。

## 前置条件

必须已完成 `dp-tool-research` 和 `dp-set-style`，且 `docs/dreampowers/tracking/overview.md` 和 `docs/dreampowers/tracking/style.md` 均存在。没有故事蓝本就开始构建世界观，等于在流沙上盖楼；没有风格档案就开始构建世界观，等于乐队没定调就开演。

## 核心原则

**冰山原则**：你构建的世界有 100% 的深度，但读者在开篇只看到一部分。冰山比例详见下方"冰山标注规则"章节。这不是偷懒，是纪律。

**物理隔离**：AI 看不到的东西，它就不会使用。本技能完成后，所有设定都拆分为独立文件，通过目录和符号链接控制可见范围。不使用任何索引文件、清单文件或注册表。**目录本身就是真相：文件存在即可用，符号链接存在即可见。**

## 清单

调用本技能后，将以下清单写入 todowrite，逐项执行：

- [ ] 读取故事蓝本（`docs/dreampowers/tracking/overview.md`）
- [ ] 确定工作模式（输入 / 导入 / 不确定）
- [ ] 构建世界规则（力量体系 / 社会结构 / 历史大事件 / 地理）
- [ ] 创建主要角色卡（主角 + 主要配角，每个角色一张卡）
- [ ] 调用 `skill("dp-character-style")` 定义模式，为每个主要角色生成角色风格档案（追加到对应角色文件）
- [ ] 创建角色关系图谱（简明文字描述）
- [ ] 定义故事特有术语表
- [ ] 标注"冰山水下"内容
- [ ] 构建故事级时间线（逐层递进：自动提取锚点 → 推导时间框架 → 关键节点确认 → 锁定存储至 `docs/dreampowers/timeline/timeline.md`）
- [ ] 拆分世界观概念为独立文件 → `docs/dreampowers/set/concept/`
- [ ] 拆分角色卡为独立文件或目录 → `docs/dreampowers/set/character/`
- [ ] 写入世界观整体描述 → `docs/dreampowers/set/world/`
- [ ] 审查：派遣子 agent 检查自洽性
- [ ] 用户确认
- [ ] 过渡到 `dp-set-outline`

## 信息收集方式

信息收集方式详见 dp-tool-research 中的三种回答方式定义。

## 三种模式

### 模式一：用户输入模式

用户主动给出世界观或角色信息时进入此模式。

1. 将用户提供的散碎信息整理进模板
2. 发现空白项时主动追问，不要自行脑补
3. 检查内部逻辑一致性
4. 追问时不要一次性列出所有空白，按"世界规则 → 角色 → 术语"的顺序分批提问

### 模式二：AI 建议模式

用户说"随机"、"帮我生成"、"你来定"或类似表述时进入此模式。

1. **必须生成 3 套差异化方案**供选择
2. 3 套方案之间在世界观类型、力量体系、核心冲突上尽量不同
3. 每套方案用简表呈现，不超过 15 行
4. 用户选定后，再展开填充完整模板
5. **每个阶段生成后都要暂停等用户确认**

### 模式三：导入模式

用户提供已有的外部文档时进入此模式。文件应放置在 `docs/dreampowers/input/` 目录。

**流程**：

1. **格式识别**：判断导入文档的格式与结构
   - 结构化（Markdown / JSON / Wiki 格式）→ 直接解析
   - 半结构化（论坛帖子、字段一致的角色卡）→ 映射到模板
   - 非结构化（散文描述、故事片段）→ 分析提取关键信息

2. **内容识别与分类**：
   | 类型 | 特征信号 | 处理方式 |
   |------|---------|---------|
   | 世界观设定 | 力量体系、社会结构、地理、历史 | 整理进世界规则模板 |
   | 角色卡 | 姓名、性格、背景、能力 | 整理进角色卡模板 |
   | 大纲 | 章节划分、情节要点 | 标记待转交 `dp-set-outline` |
   | 章节稿件 | 叙事正文、对话、场景描写 | 标记待处理（元数据注入 + 伏笔回溯） |
   | 混合内容 | 以上多种类型混杂 | 拆分后分别处理 |

3. **冰山标注**：对导入内容施加冰山标注
   - 默认：所有导入内容初始标记为"水面上"
   - AI 提议哪些应沉入"水面下"（秘密、体系上限、会破坏悬念的内容）
   - 标注结果须符合 50%+ 水下规则

4. **自洽性快检**：文档内部矛盾 + 与已有设定的冲突，标记但不自动修复

5. **用户确认**：映射完成后展示填充后的模板

**导入关键规则**：
- 不符合模板的内容绝不能无声丢弃，保留在"补充信息"区域
- 缺失字段绝不能擅自脑补，标记"待补充"交由用户决定
- 导入到已有设定时，必须标注哪些是新增、哪些与现有条目冲突
- 原始导入文件保留在 `docs/dreampowers/input/` 目录不动

### 章节稿件导入

当导入内容包含章节稿件（用户手写的章节），执行以下处理：

1. **元数据头注入**：为每个章节文件添加标准元数据头，保存至章节文件夹 `docs/dreampowers/chapters/chapter-NNN/draft.md`

```markdown
<!-- 
story: [故事名]
chapter: [章节号]
pov: [视角角色]
date: [导入日期]
word_count: [字数]
review_status: imported
-->

# 第[N]章：[章节标题]

[正文]
```

2. **伏笔回溯**：扫描章节正文，为识别到的伏笔创建 `docs/dreampowers/tracking/thread-NNN-描述性名称.md`
3. **概念隔离简化校验**：内联执行概念隔离检查——遍历导入章节正文，比对已有 `set/concept/` 和 `set/character/` 中的概念/角色白名单，标记正文中出现但设定中不存在的概念或角色。**不调用 `dp-review-consistency`**（该技能是刚性九维度审计，不支持"仅第八维度"的调用模式）。若发现冲突，输出待用户决策的清单
4. **续写衔接**：整理末章结尾状态，生成续写指令卡

**续写指令卡格式**：

```markdown
## 续写衔接点

- **起始章节**：第 [N+M+1] 章
- **前章结尾状态**：[角色位置、情绪状态、场景状态]
- **未解决冲突**：[列表]
- **活跃伏笔线索**：[从 docs/dreampowers/tracking/ 中 status=active 的 thread-* 文件提取]
- **角色风格备注**：[手写章节中展现的角色风格特征]
```

`review_status: imported` 表示该章节来自外部导入，未经审查流程。

## 世界规则模板

生成的世界观设定必须严格遵循此结构：

```markdown
# 世界观设定：[故事名]

## 世界基础
- **时代/科技水平**: 
- **世界类型**: [架空/平行/现实/...]
- **基调**: [黑暗/明亮/灰色/荒诞/...]

## 力量体系
- **名称**: 
- **层级**: [从低到高]
- **获取方式**: 
- **代价/限制**: 
- **已知上限**: 

## 社会结构
- **政治体制**: 
- **经济基础**: 
- **阶层分化**: 
- **核心矛盾**: 

## 历史大事件（按时间线）
1. [事件] — [影响]
2. ...

## 地理
- **主要场景**: 
- **地图关系**: 

## 特有术语
| 术语 | 定义 | 首次出场章节（预计） |
|------|------|---------------------|
|      |      |                     |

## 🧊 冰山水下（已设定但延迟揭示的内容）
> 此部分标注了存在于世界设定中，但将在后续章节中逐步展开的内容。
> 禁止在开篇集中倾倒。

- [ ] [秘密/细节1] — 预计揭示时机：[章节/节点]
- [ ] [秘密/细节2] — 预计揭示时机：[章节/节点]
```

## 角色卡模板

每个主要角色一张卡：

```markdown
## 角色卡：[角色名]

### 基础信息
- **全名**: 
- **年龄**: 
- **身份/职业**: 
- **外貌特征**: [3个最显著的]

### 性格
- **核心特质**: [一个词]
- **优点**: 
- **致命缺陷**: 
- **口头禅/语言习惯**: 

### 动机
- **外在目标**: [想要什么]
- **内在需求**: [真正需要什么]
- **这两者的冲突**: 

### 背景
- **关键经历**: [塑造性格的1-2个事件]
- **秘密**: [角色不愿被人知道的事]

### 人际关系
- 与[角色A]: [关系 + 一句话描述]
- 与[角色B]: [关系 + 一句话描述]

### 成长弧线（概要）
- **起点**: [故事开始时的状态]
- **转折**: [关键改变]
- **终点**: [故事结束时的状态]
```

## 角色关系图谱

角色卡完成后，用简明文字描述角色之间的关系网：

```
[角色A] ——(关系)——> [角色B]：一句话说明
```

标注关系性质：信任 / 敌对 / 暧昧 / 利用 / 亲属 / 师徒等。关系反转标注在"冰山水下"。

## 冰山标注规则

### 什么必须沉入水下

1. **力量体系的真正上限**
2. **历史大事件的隐藏真相**
3. **角色的秘密与未揭示的过去**
4. **阶层/势力之间的暗线关系**
5. **关键术语的深层含义**

### 标注方式

每条内容必须包含：
- **内容描述**：藏了什么
- **预计揭示时机**：哪个章节或剧情节点
- **揭示方式建议**：通过对话 / 事件 / 角色发现 / 环境细节

### 硬性比例

世界观设定中 **50% 以上**的内容应标注为"冰山水下"。

---

## 故事级时间线

世界观和角色设定完成后，在拆分文件之前，必须构建**故事级时间线**。故事级时间线定义故事的时间框架——年代、时间跨度、关键日期节点，为后续大纲规划提供时间基准。

**与章节级时间线手法的区分：**

| 故事级时间线（本技能） | 章节级时间线手法（dp-set-outline） |
|----------------------|--------------------------------|
| **是什么**：故事发生在什么时间 | **怎么讲**：每章用顺叙/倒叙/插叙/补叙 |
| 时间跨度、关键日期、事件锚点 | 叙事手法选择、决策树、执行规则 |
| 客观时间轴 | 叙述视角对时间的重组 |

### 构建方式：逐层递进 + 关键节点确认

**不逐条提问，不全自动。** AI 根据已有素材自动推导，只在关键决策点暂停确认。

#### 第一层：自动提取时间锚点

从已完成的素材中自动提取时间信息：

1. 从故事蓝本（`docs/dreampowers/tracking/overview.md`）提取：故事起始时间、结束时间、核心事件时间
2. 从世界规则（`docs/dreampowers/set/world/history.md`）提取：历史大事件的时间节点
3. 从角色卡提取：角色年龄、关键经历发生时间、角色间年龄差
4. 从概念文件提取：涉及时间属性的概念（如"十年大劫"、"科举周期"）

提取完成后，整理为时间锚点清单，**不暂停，直接进入第二层**。

#### 第二层：自动推导时间框架

基于锚点推导完整的故事时间框架：

1. **时间跨度**：故事主线覆盖的时间范围
2. **时间密度分布**：哪些时段是故事重点（密集叙事），哪些是留白（时间跳跃）
3. **季节/节气/节日**：如果故事类型受季节影响（如农耕、校园、军事），标注关键时令
4. **并行时间线**：如果有多条故事线，标注各线的时间重叠关系

推导完成后，生成时间线草稿。

#### 第三层：关键节点确认（暂停等用户）

向作者提出 **2-4 个关键确认问题**（不是逐条确认）。典型问题：

- 故事的时间跨度（X 到 Y）是否符合你的设想？
- 时间密度分布是否合理？（比如：前半段密集、后半段跳跃 vs 均匀分布）
- 是否有需要精确到具体日期的关键事件？（如历史真实事件）
- 是否有故意的时间模糊区域？（用于后续揭示或悬念）

**提问规则：**
- 最多 4 个问题，不能更多
- 每个问题提供 AI 推导的默认答案 + 替代选项
- 用户可以逐条回答，也可以说"都行"一次通过

#### 第四层：锁定并存储

用户确认后，生成正式的 `docs/dreampowers/timeline/timeline.md` 文件并锁定。

### 时间线文件格式

```markdown
<!-- timeline
story: [故事名]
span: [起始时间] ~ [结束时间]
density: [密集区间描述]
created_by: dp-set-concept
-->

# 故事时间线：[故事名]

## 时间跨度
- **起始**：[年/月/日或模糊表述]
- **结束**：[年/月/日或模糊表述]
- **总跨度**：[X年/月/日]

## 时间密度分布
| 时段 | 密度 | 说明 |
|------|------|------|
| [时段1] | 密集 | 故事主要发生在这段时间 |
| [时段2] | 跳跃 | 中间省略，以摘要过渡 |

## 关键时间节点
| 日期/时间 | 事件 | 涉及角色 | 备注 |
|-----------|------|---------|------|
| [日期1] | [事件1] | [角色] | [精确/模糊] |
| [日期2] | [事件2] | [角色] | [精确/模糊] |

## 并行时间线（如有）
[多条故事线的时间重叠关系描述]

## 季节/时令标记（如适用）
[对故事有影响的季节、节气、节日]

## 时间模糊区域（如有）
[故意留白的时间段，可能用于后续揭示]
```

### 硬性规则

1. **时间线必须在拆分文件之前完成**。拆分后再建时间线，概念文件已经散开，提取锚点的成本翻倍。
2. **时间线是事实文档，不是叙事文档**。只记录"什么时候发生了什么"，不涉及"怎么讲"（那是 dp-set-outline 的事）。
3. **锁定后修改需走修订流程**。时间线一旦确认，后续修改视为大纲修订的一部分。

---

## 设定拆分为独立文件

设定完成后，**必须**立即拆分为独立文件。不拆分就进入后续流程，AI 会看到所有设定内容，导致概念提前泄露。

### 世界观整体描述

世界逻辑关系、大背景、基调等整体性描述写入 `docs/dreampowers/set/world/`：

```
docs/dreampowers/set/world/
├── world-overview.md              # 世界基础（时代、类型、基调）
├── power-system-overview.md       # 力量体系总览
├── social-structure.md            # 社会结构
├── history.md                     # 历史大事件
└── geography.md                   # 地理
```

### 概念拆分

从设定文档中，按独立性和原子性拆分具体概念名词：

```
docs/dreampowers/set/concept/
├── spirit-energy-system.md        # 灵力体系
├── sect-hierarchy.md              # 宗门等级
├── forbidden-arts.md              # 禁术
└── ...
```

**概念文件格式**：

```markdown
<!-- concept
id: spirit-energy-system
name: 灵力体系
category: power-system
iceberg: surface
-->

# 灵力体系

[概念的完整描述]
```

元数据字段：
- `id`：唯一标识符，英文短横线命名
- `name`：中文显示名
- `category`：概念类别（`power-system` / `social-structure` / `history` / `geography` / `terminology` / `custom`）
- `iceberg`：冰山位置（`surface` 水面上 / `underwater` 水面下）

**拆分原则**：
1. 一个概念一个文件，不与其他概念混在同一文件中
2. 概念不可再分（"灵力体系"是一个概念，不是三个层级三个概念）
3. 每个概念文件必须自包含，不依赖其他概念文件
4. 目录即清单，文件存在即概念存在

### 角色卡拆分

```
docs/dreampowers/set/character/
├── lin-feng/                      # 复杂角色：目录
│   ├── before-war.md              # 大战前的林风
│   ├── during-war.md              # 大战中的林风
│   └── post-cataclysm.md          # 灾变后的林风
├── su-wan.md                      # 简单角色：单文件
└── elder-zhang.md                 # 简单角色：单文件
```

**判断标准**：角色在不同时间节点的能力、身份、关系、性格是否有显著差异？有 → 目录，没有 → 单文件。

**复杂角色时间线文件格式**：

```markdown
<!-- character-phase
character: lin-feng
phase: before-war
-->

# 林风 -- 大战前

## 基础信息
- 全名：林风
- 别号：小风、废物
- 定位：主角

## 身份
- 年龄：16
- 身份：外门弟子（末等）
- 实力：灵力未觉醒

## 性格
- 核心特质：倔强
- 当前状态：被全宗门看不起，但拒绝放弃

## 人际关系
- 苏婉：暗恋对象，不敢表白
- 张长老：唯一对他有善意的长辈

## 已知信息
[角色此时知道什么，不知道什么]

## 秘密
[角色此时隐藏的事]
```

**注意**："基础信息"在每个时间线文件中重复。当 AI 只加载一个时间线文件时，它需要完整的角色基本信息。重复优于依赖。

**单文件角色格式**：

```markdown
<!-- character
id: su-wan
name: 苏婉
role: supporting
-->

# 苏婉

## 基础信息
- 全名：苏婉
- 年龄：15
- 身份：内门弟子

[完整角色卡内容]
```

### 数据独立原则

- 源文件之间互不引用
- 不使用任何 YAML、JSON 或其他索引/清单文件
- 有就是有，没有就是没有

## 概念边界标注

在构建设定时，为后续拆分做准备：

1. 每个独立概念用二级或三级标题分隔
2. 角色卡之间用分割线隔开
3. 标注概念的时间线属性（如不同时代有不同表现）
4. 标注角色的时间线复杂度（需按时间线拆分的角色）

## 自洽性审查

世界规则和角色卡全部完成后，派遣子 agent 检查：

1. 力量体系的规则有没有自相矛盾？
2. 社会结构在给定的力量体系下能否稳定存在？
3. 每个角色的动机是否与世界设定兼容？
4. 历史事件的因果链是否合理？
5. 术语定义之间有没有冲突？

子 agent 返回问题清单后，与用户讨论哪些需要修正。

## 存储路径

```
docs/dreampowers/
├── input/                           # 用户导入的原始数据（不动）
├── set/
│   ├── world/                       # 世界观整体描述
│   ├── concept/                     # 具体概念名词（一个概念一个文件）
│   └── character/                   # 角色文件（单文件或目录）
├── timeline/
│   └── timeline.md                  # 故事级时间线（本技能产出）
└── tracking/
    ├── overview.md                   # 故事蓝本（dp-tool-research 产出）
    └── thread-NNN-*.md              # 伏笔线索（如导入章节产生）
```

## 与其他技能的交互

| 关系 | 技能 | 说明 |
|------|------|------|
| 上游 | `dp-tool-research` | 接收故事蓝本，可回调做考据 |
| 上游 | `dp-set-style` | 接收风格档案（`docs/dreampowers/tracking/style.md`）。设定文件内容与 style.md 无直接关联，风格仅在写作阶段生效 |
| 下游 | `dp-set-outline` | 设定拆分完成后进入大纲规划；故事级时间线（`docs/dreampowers/timeline/timeline.md`）作为大纲的时间框架 |
| 下游 | `dp-review-consistency` | 导入章节时调用做连续性校验 |
| 协作 | `dp-character-style` | 手写章节导入时比对角色风格 |

## 反模式

- ❌ **不拆分就进入后续流程** — AI 会看到所有设定，概念隔离失效
- ❌ **默默丢弃不符合模板的导入内容** — 保留在"补充信息"区域
- ❌ **自动脑补缺失字段** — 标记"待补充"让用户决定
- ❌ **跳过冰山标注** — 导入内容更容易全部暴露在水面上
- ❌ **替作者改手写章节** — 分析报告问题，但不擅自修改
- ❌ **创建索引/清单文件** — 违反"目录即逻辑"原则

## 终态

设定拆分完成、用户确认后，**必须**调用 `skill("dp-set-outline")`。

世界已经建好并拆开了。现在去规划大纲，决定每一层在哪个章节出现。

