# Novelist Character

> novelist-character — 单人物细粒度设定

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

---


# novelist-character — 单人物细粒度设定

把一个人物拆成三个正交文件管理, 让"是谁"、"经历过什么"、"和谁有交集"分开演进、便于一致性检查。

## 三文件结构(人物/<人物名>/)

| 文件 | 内容 | 要点 |
|---|---|---|
| 简介.md | 身份、外貌、**性格**(多维)、动机、说话风格、能力 | 性格写成可驱动行为的条目, 非空泛形容词 |
| 经历.md | 按**时间段**排列的经历与关键事件(时间线) | 每条标时间锚点, 与 世界观/历史.md 对齐 |
| 关系.md | 与其他人物的**交集**: 关系类型、是否见过面、首次相遇章、当前态度 | 双向登记——A 改了对 B 的关系, 也提示更新 B |

## 工作流(按序)

1. **取人物名** — 缺 → 硬停, `AskUserQuestion` 问。
2. **判新旧** — 读 `人物/_索引.md`。已存在该人物 → 更新模式(读其三文件再增量改); 不存在 → 新建文件夹 + 三文件。
3. **采集设定** — 与用户对话补全三文件的关键信息。信息缺口大时按以下优先级逐项追问, 禁大段虚构填充:
   - **简介必填**: 身份/年龄/外貌一句话 / 核心动机(他/她最想要什么) / 性格2-3条可驱动行为的具体条目(如"紧张时揪袖口而非开口说话")
   - **经历必填**: 与主线相关的关键事件 + 时间锚点(朝代/年份/章节前/X年前)
   - **关系必填**: 与主角/主要人物的关系类型 + 是否已见面 + 当前态度(一词: 信任/警惕/敌对/中立)
4. **审批门 — 落盘前确认** — 把已采集内容以三文件摘要形式汇报给用户(简介核心条目/经历关键事件/关系对象), 用 `AskUserQuestion` 确认「写入 / 补充更多 / 取消」。用户取消 → 不写文件。
5. **落盘三文件** — 按 `references/character-templates.md` 的模板分别写 简介/经历/关系。每个文件保持单一职责, 不串内容。
6. **更新索引与关系** — 在 `人物/_索引.md` 登记/更新该人物行; 若涉及与他人交集, 提示同步对方 关系.md。
7. **回报 + 一致性提示** — 若经历/关系与已有世界观(尤其 历史.md 时间线)或他人设定冲突 → 硬停, 标出请用户裁定改哪边, 禁两边各执一词; 无冲突则建议跑 `novelist-check` 复核。

## 与其他 skill 的边界

- 本 skill **独占 人物/ 目录**, 其他 skill 不写人物文件(读可以)。
- 被 `novelist-design` 引用: 核心设计阶段, design 调用本 skill 落地每个主要人物的骨架。
- 主要人物 vs 配角同流程, 仅详略不同。

## 失败模式(触发 → 一线修复 → 仍失败兜底)

| 触发 | 一线修复 | 仍失败兜底 |
|---|---|---|
| 缺人物名 | `AskUserQuestion` 问 | 用户不给 → 不创建 |
| 用户信息太少, 设定填不满 | 逐项追问关键维度(动机/性格/背景) | 仍不足 → 只写已知, 文件标「待补」, 禁虚构 |
| 新增关系但对方人物不存在 | 提示先为对方建档(可本 skill 再跑一次) | 用户暂不建 → 关系.md 记为「(未建档)对方名」 |
| 经历时间与 世界观/历史.md 冲突 | 标出冲突点请用户裁定 | 裁定后改对应文件, 禁两边各执一词 |
| `人物/_索引.md` 不存在 | 新建索引文件并写表头行(人物名/简介摘要/状态) | 仍失败(权限/路径) → 跳过索引更新, 继续写三文件, 提示用户手动建索引 |
| `references/character-templates.md` 不存在 | 用内置三文件结构兜底(简介/经历/关系标准格式直接生成) | 提示用户先跑 `novelist-init` 确保目录完整 |

## 反例黑名单(命中=错, 重来)

| # | 禁做 | 改为 |
|---|---|---|
| 1 | 三件事(简介/经历/关系)塞进一个文件 | 严格三文件分离 |
| 2 | 性格写"善良勇敢"等空泛词 | 写可驱动行为的具体条目 |
| 3 | 用户没给就大段虚构人物背景 | 缺口先问, 实在没有标「待补」 |
| 4 | 改了 A→B 关系却不提示更新 B | 关系双向, 提示同步对方 |
| 5 | 写到 章节/ 或 世界观/ 目录 | 只写 人物/, 越界即冲突 |

> 被 novelist-design 引用以落地主要人物; 与 novelist-worldview / novelist-outline 目录互斥, 互不踩踏。

