install
source · Clone the upstream repo
git clone https://github.com/chkfail/mindreader-skill
Claude Code · Install into ~/.claude/skills/
git clone --depth=1 https://github.com/chkfail/mindreader-skill ~/.claude/skills/chkfail-mindreader-skill-mindreader
manifest:
SKILL.mdsource content
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
— 构建新影子
/mindreader buildStep 1:基础信息录入
开场白:
我来帮你构建 {name} 的数字影子。 只需要回答几个问题,每个都可以跳过。 信息越详细,影子越准。
按顺序问:
- 称呼/代号 — TA 叫什么?
- 关系基本信息 — 性别、年龄、你们的关系阶段
- 性格标签(可选)— MBTI、星座、依恋风格
- 关系特质标签 — 话痨/沉默系/冷战派/嘴硬心软 等
- 主观印象 — 你对 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 粘贴了聊天记录,必须将原始记录存档:
# 将原始聊天记录写入 knowledge/chats/ 目录,以时间戳命名 # 文件名格式:{YYYY-MM-DD}_{序号}.md # 内容格式:原始粘贴内容 + 元信息头
文件内容格式:
--- source: user_paste date: {ISO date} message_count: {N} --- {用户粘贴的原始聊天记录,不做任何修改}
同时更新
knowledge/chats/index.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:写入影子文件
用户确认后:
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
— 列出所有影子
/mindreader listpython {skill_root}/tools/shadow_manager.py --action list --base-dir {skill_root}/shadows
输出所有影子的列表(名字、关系阶段、版本、消息数、最后更新)。
/mindreader forget <slug>
— 删除影子
/mindreader forget <slug>python {skill_root}/tools/shadow_manager.py --action delete --slug {slug} --base-dir {skill_root}/shadows
/mindreader seance
— Séance Mode
/mindreader seance目的:分析过去的对话,理解"他们到底在想什么"
工作流程
- 加载对应影子
- 收集要分析的对话
- 展示带编号的消息列表,让用户选择分析范围(单条 / 一段 / 全部)
- 按 prompts/seance.md 对用户选择的范围生成多个矛盾解读
- 用户可以继续选择其他消息深挖,无需重新粘贴
输出要求
必须输出 3 个矛盾解读,每个包含:
- 置信度
- 证据(引用具体消息)
- 如果这个解读是对的(推测动机)
- 这个解读成立的条件
最后必须有自警告:
⚠️ 我可以让这三种解读听起来都像真的。 这是 LLM 最擅长的事,也是最危险的事。 把我当作"你没考虑到的情况",而不是"答案"。
/mindreader rehearse
— Rehearsal Mode
/mindreader rehearse目的:在和真人说之前,先在影子身上预演
工作流程
- 确认用户想说的话
- 确认用户的目标
- 加载影子
- 运行最多 5 轮模拟
- 输出:影子反应 + 失败模式 + 建议修改
输出要求
每轮必须包含影子的内心独白,不只是表面回复。
结果必须包含:
- 目标达成率(X/10)
- 失败模式分析
- 建议修改(带估计达成率)
最后必须有 fidelity warning:
⚠️ 这个影子是从 {N} 条消息构建的。 这是排练,不是剧本。真实对话中,stay present。
/mindreader calibrate
— 校准模式
/mindreader calibrate目的:用真实对话验证影子的准确度
工作流程
⚠️ 核心设计约束:必须分两步收集对话。如果一次性看到完整对话,模型会"回忆"而不是"预测",校准分数毫无意义。
- 用户先粘贴前半段对话(至少 5 条)
- 影子基于前半段上下文 + 影子人格,预测接下来 5 条对方的回复(交替模拟双方)
- 将预测展示给用户
- 用户再粘贴真实的后半段对话
- 逐条对比影子预测 vs 真实回复,按 4 个维度打分
- 输出校准报告(总分 + 逐条对比 + 维度评分 + 诊断)
对比维度
| 维度 | 权重 | 评估内容 |
|---|---|---|
| 语义方向 | 40% | 说的是同一个意思吗 |
| 情绪基调 | 30% | 情绪一致吗 |
| 表达风格 | 20% | 用词/语气/emoji 像吗 |
| 行为选择 | 10% | 主动/被动、追问/转移等 |
输出要求
必须输出:
- 总分(0-10 加权平均)
- 逐条对比(真实 vs 影子预测 + 单条评分 + 分析)
- 维度评分(4 个维度各自的平均分)
- 诊断(强项 + 盲区 + 改进建议)
- 优化建议(基于失准维度给出 2-3 条具体可执行的改进操作,并引导用户立即执行)
最后必须有自警告:
⚠️ 这个分数不代表"你有多了解 TA"。 它代表的是:基于你喂给影子的数据,影子能在多大程度上复现 TA 的表达。 影子是假设生成器,不是复读机。
详见
prompts/calibrate.md。
持续进化
追加记录
用户说"追加记录"或粘贴新聊天记录:
- 先存档原始记录到
(同 build 流程的 Step 5)knowledge/chats/ - 更新
knowledge/chats/index.json - 按
执行增量 mergeprompts/merger.md - 调用
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
文件引用索引
| 文件 | 用途 |
|---|---|
| 构建影子人格 |
| Séance Mode 分析 |
| Rehearsal Mode 模拟 |
| 追加记录 merge |
| 校准模式对比评分 |
| 对话纠正处理 |
| 影子文件管理 |
| 版本存档与回滚 |