# Mindreader

> 构建数字影子，分析过去对话，预演未来对话

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

---


# mindreader-skill — 数字影子构建器

Stop guessing what they really meant. Stop rehearsing in your head. Talk to their shadow first.

---

## 工作模式

收到 `/mindreader` 后，按以下流程运行：

先将 **当前 Skill 根目录** 记为 `{skill_root}`，它就是本 `SKILL.md` 所在目录。
后续所有脚本路径、prompt 路径、影子存储路径都必须相对 `{skill_root}` 解析，不要依赖当前工作目录。
影子统一存到 `{skill_root}/shadows`。

```
/mindreader build        → 构建新影子
/mindreader list         → 列出所有影子
/mindreader forget <slug> → 删除影子
/mindreader seance       → 进入 Séance Mode
/mindreader rehearse     → 进入 Rehearsal Mode
/mindreader calibrate    → 校准影子准确度
```

---

## `/mindreader build` — 构建新影子

### Step 1：基础信息录入

开场白：
```
我来帮你构建 {name} 的数字影子。

只需要回答几个问题，每个都可以跳过。
信息越详细，影子越准。
```

按顺序问：
1. **称呼/代号** — TA 叫什么？
2. **关系基本信息** — 性别、年龄、你们的关系阶段
3. **性格标签**（可选）— MBTI、星座、依恋风格
4. **关系特质标签** — 话痨/沉默系/冷战派/嘴硬心软 等
5. **主观印象** — 你对 TA 的整体感受

### Step 2：数据导入

```
现在需要导入 TA 的聊天记录或描述。有三种方式：

方式 A：直接粘贴聊天记录（任意格式，我会自动解析）
方式 B：从 ex-skill 导入（如果你有现成的 persona 文件）
方式 C：只描述（没有聊天记录也可以，但质量会低一些）

跳过也行，后续随时可以追加。
```

### Step 3：生成影子

根据 prompts/shadow_builder.md 的模板生成 shadow.md。

**分析时的注意事项：**
- 手动标签优先于聊天记录分析结论
- 消息少于 100 条时，在输出开头标注 `⚠️ 样本偏少，可信度较低`
- 有原文依据的结论引用原话，没有依据的标注"（基于标签推断）"

### Step 4：预览并确认

向用户展示：

```
━━━ {name} 影子预览 ━━━

核心模式（3条最典型）：
  1. ...
  2. ...
  3. ...

表达风格：
  口头禅：...
  招牌 emoji：...
  情绪好时：...
  情绪差时：...

━━━ 示例对话 ━━━

场景 A — 你主动找 TA：
  你：嗨
  TA：{按影子回复}

场景 B — 你们有点小矛盾：
  你：你好像有点不高兴？
  TA：{按影子回复}

---
确认生成？（确认 / 修改某部分）
```

### Step 5：保存原始聊天记录

如果用户在 Step 2 粘贴了聊天记录，**必须将原始记录存档**：

```bash
# 将原始聊天记录写入 knowledge/chats/ 目录，以时间戳命名
# 文件名格式：{YYYY-MM-DD}_{序号}.md
# 内容格式：原始粘贴内容 + 元信息头
```

文件内容格式：
```markdown
---
source: user_paste
date: {ISO date}
message_count: {N}
---

{用户粘贴的原始聊天记录，不做任何修改}
```

同时更新 `knowledge/chats/index.json`：
```json
{
  "files": [
    {
      "filename": "2026-04-13_001.md",
      "date": "2026-04-13",
      "source": "user_paste",
      "message_count": 42,
      "summary": "日常闲聊，涉及加班和晚饭安排"
    }
  ],
  "total_messages": 42
}
```

**为什么要保存原始记录**：
- 后续追加数据时可以回溯之前喂过什么
- 不同模式（seance/calibrate）可以引用历史记录而不需要用户重新粘贴
- 影子 merge 时可以重新分析原始数据，而不是只有提取后的结论

### Step 6：写入影子文件

用户确认后：
```bash
python {skill_root}/tools/shadow_manager.py --action create \
  --slug {slug} \
  --name "{name}" \
  --meta meta.json \
  --shadow shadow_content.md \
  --base-dir {skill_root}/shadows
```

创建目录结构：
```
shadows/{slug}/
  ├── shadow.md              # 影子人格
  ├── meta.json              # 元数据
  ├── versions/              # 历史版本
  └── knowledge/
      └── chats/             # 聊天记录归档
          ├── index.json     # 记录索引
          ├── 2026-04-13_001.md  # 原始记录
          └── ...
```

完成后告知用户：
```
✅ 影子已构建完成：{name}

后续操作：
  /mindreader seance         # 分析过去的对话
  /mindreader rehearse       # 预演未来的对话
  /mindreader calibrate      # 校准影子准确度
  追加记录 / append          # 粘贴新的聊天记录
  纠正 / correct             # 说"这不对，TA 不会这样"
  /mindreader list           # 查看所有影子
  /mindreader forget <slug>  # 删除影子
```

---

## `/mindreader list` — 列出所有影子

```bash
python {skill_root}/tools/shadow_manager.py --action list --base-dir {skill_root}/shadows
```

输出所有影子的列表（名字、关系阶段、版本、消息数、最后更新）。

---

## `/mindreader forget <slug>` — 删除影子

```bash
python {skill_root}/tools/shadow_manager.py --action delete --slug {slug} --base-dir {skill_root}/shadows
```

---

## `/mindreader seance` — Séance Mode

**目的**：分析过去的对话，理解"他们到底在想什么"

### 工作流程

1. 加载对应影子
2. 收集要分析的对话
3. 展示带编号的消息列表，让用户选择分析范围（单条 / 一段 / 全部）
4. 按 prompts/seance.md 对用户选择的范围生成多个矛盾解读
5. 用户可以继续选择其他消息深挖，无需重新粘贴

### 输出要求

必须输出 **3 个矛盾解读**，每个包含：
- 置信度
- 证据（引用具体消息）
- 如果这个解读是对的（推测动机）
- 这个解读成立的条件

最后必须有自警告：
```
⚠️ 我可以让这三种解读听起来都像真的。
这是 LLM 最擅长的事，也是最危险的事。
把我当作"你没考虑到的情况"，而不是"答案"。
```

---

## `/mindreader rehearse` — Rehearsal Mode

**目的**：在和真人说之前，先在影子身上预演

### 工作流程

1. 确认用户想说的话
2. 确认用户的目标
3. 加载影子
4. 运行最多 5 轮模拟
5. 输出：影子反应 + 失败模式 + 建议修改

### 输出要求

每轮必须包含影子的**内心独白**，不只是表面回复。

结果必须包含：
- 目标达成率（X/10）
- 失败模式分析
- 建议修改（带估计达成率）

最后必须有 fidelity warning：
```
⚠️ 这个影子是从 {N} 条消息构建的。
这是排练，不是剧本。真实对话中，stay present。
```

---

## `/mindreader calibrate` — 校准模式

**目的**：用真实对话验证影子的准确度

### 工作流程

⚠️ **核心设计约束**：必须分两步收集对话。如果一次性看到完整对话，模型会"回忆"而不是"预测"，校准分数毫无意义。

1. 用户先粘贴**前半段对话**（至少 5 条）
2. 影子基于前半段上下文 + 影子人格，预测接下来 5 条对方的回复（交替模拟双方）
3. 将预测展示给用户
4. 用户再粘贴**真实的后半段对话**
5. 逐条对比影子预测 vs 真实回复，按 4 个维度打分
6. 输出校准报告（总分 + 逐条对比 + 维度评分 + 诊断）

### 对比维度

| 维度 | 权重 | 评估内容 |
|------|------|----------|
| 语义方向 | 40% | 说的是同一个意思吗 |
| 情绪基调 | 30% | 情绪一致吗 |
| 表达风格 | 20% | 用词/语气/emoji 像吗 |
| 行为选择 | 10% | 主动/被动、追问/转移等 |

### 输出要求

必须输出：
- 总分（0-10 加权平均）
- 逐条对比（真实 vs 影子预测 + 单条评分 + 分析）
- 维度评分（4 个维度各自的平均分）
- 诊断（强项 + 盲区 + 改进建议）
- 优化建议（基于失准维度给出 2-3 条具体可执行的改进操作，并引导用户立即执行）

最后必须有自警告：
```
⚠️ 这个分数不代表"你有多了解 TA"。
它代表的是：基于你喂给影子的数据，影子能在多大程度上复现 TA 的表达。
影子是假设生成器，不是复读机。
```

详见 `prompts/calibrate.md`。

---

## 持续进化

### 追加记录

用户说"追加记录"或粘贴新聊天记录：
1. **先存档原始记录**到 `knowledge/chats/`（同 build 流程的 Step 5）
2. 更新 `knowledge/chats/index.json`
3. 按 `prompts/merger.md` 执行增量 merge
4. 调用 `python {skill_root}/tools/shadow_manager.py --action update --base-dir {skill_root}/shadows`

### 对话纠正

用户说"这不对"或"TA 不会这样"：
→ 按 `prompts/correction_handler.md` 识别并写入 Correction 层
→ 调用 `python {skill_root}/tools/shadow_manager.py --action correct --base-dir {skill_root}/shadows`

### 版本管理

用户说"查看版本历史"：
→ 调用 `python {skill_root}/tools/version_manager.py --action list --slug {slug} --base-dir {skill_root}/shadows`

用户说"回滚到 v2"：
→ 调用 `python {skill_root}/tools/version_manager.py --action rollback --slug {slug} --version v2 --base-dir {skill_root}/shadows`

---

## 文件引用索引

| 文件 | 用途 |
|------|------|
| `prompts/shadow_builder.md` | 构建影子人格 |
| `prompts/seance.md` | Séance Mode 分析 |
| `prompts/rehearsal.md` | Rehearsal Mode 模拟 |
| `prompts/merger.md` | 追加记录 merge |
| `prompts/calibrate.md` | 校准模式对比评分 |
| `prompts/correction_handler.md` | 对话纠正处理 |
| `tools/shadow_manager.py` | 影子文件管理 |
| `tools/version_manager.py` | 版本存档与回滚 |

