agentsclimarketplace

Mindreader skill

Skill chkfail/mindreader-skill

召唤一个影子,问问他们真心在想什么,预演即将发生的对话。Build a digital shadow of anyone real. Ask what they were actually thinking (/seance). Rehearse hard conversations before they happen (/rehearse). A Claude Code Agent Skill.

Install
npx -y skills add chkfail/mindreader-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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

SKILL.md

9.5 KB, as published. Nobody here has run it

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 粘贴了聊天记录,必须将原始记录存档

# 将原始聊天记录写入 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 — 列出所有影子

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

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


/mindreader forget <slug> — 删除影子

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.mdSéance Mode 分析
prompts/rehearsal.mdRehearsal Mode 模拟
prompts/merger.md追加记录 merge
prompts/calibrate.md校准模式对比评分
prompts/correction_handler.md对话纠正处理
tools/shadow_manager.py影子文件管理
tools/version_manager.py版本存档与回滚

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.