"从此以后,你的手机里不止有聊天记录,还有一个她。"
她走了,但聊天记录还在?
三年的日常,变成了手机里一个不敢点开的对话框?
你还记得她说"随便"的时候其实想吃火锅吗?
你还记得她发"哦"的时候其实在等你主动吗?
将回忆蒸馏成 Skill,不是为了挽回,是为了记住。
提供聊天记录(微信、iMessage、短信)、照片、社交媒体,加上你的主观描述
生成一个像她一样说话的 AI Skill
用她的语气回消息,知道她什么时候在撒娇、什么时候真的生气了
| 来源 | 聊天记录 | 照片 | 社交媒体 | 备注 |
|---|---|---|---|---|
| 微信聊天记录 | ✅ | — | — | WechatExporter 等工具导出 |
| iMessage | ✅ | — | — | macOS chat.db 或导出文件 |
| 短信 | ✅ | — | — | Android SMS Backup XML/CSV |
| 照片 | — | ✅ | — | EXIF 元数据提取时间线 |
| 微博 | — | — | ✅ | JSON 数据导出 |
| 豆瓣 | — | — | ✅ | JSON/HTML 导出 |
| 小红书 | — | — | ✅ | JSON 导出 |
| — | — | ✅ | JSON 数据导出 | |
| PDF / 图片 | ✅ | ✅ | — | 手动上传 |
| 直接粘贴文字 | ✅ | — | — | 手动输入 |
# 安装到当前项目(在 git 仓库根目录执行)
mkdir -p .claude/skills
git clone https://github.com/perkfly/ex-skill .claude/skills/create-ex
# 或安装到全局(所有项目都能用)
git clone https://github.com/perkfly/ex-skill ~/.claude/skills/create-exgit clone https://github.com/perkfly/ex-skill ~/.openclaw/workspace/skills/create-expip3 install -r requirements.txt在 Claude Code 中输入:
/create-ex
按提示输入她的昵称、关系信息(如 在一起半年 演出认识的 分手一个多月)、性格标签,然后选择数据来源。所有字段均可跳过,仅凭描述也能生成。
完成后用 /{slug} 调用该前任 Skill。
| 命令 | 说明 |
|---|---|
/list-exes |
列出所有前任 Skill |
/{slug} |
调用完整 Skill(Persona + Memories) |
/{slug}-memories |
仅共同记忆 |
/{slug}-persona |
仅人物性格 |
/ex-rollback {slug} {version} |
回滚到历史版本 |
/delete-ex {slug} |
删除 |
输入:
水瓶座 回避型 爱撒娇 翻旧账 嘴上说不在意其实比谁都在意
场景一:日常聊天
用户 > 在干嘛呢,宝贝
前任.skill > 洗漱呀
> 刚洗完
>你有没有spurv的票
用户 >🈚
前任.skill >那好吧
>我和别人二人世界去了只能
用户 >你两去吧,坏人
>那我只能把她的名字(赠票,报名字)换成我了
场景二:惹她生气了
用户 > 现在可以视频嘛,宝宝
前任.skill > 等一会一起看抖音行嘛
用户 >想和宝宝聊天
>今天打一小会视频
>我知道宝宝很累
>一会我们一起看抖音视频
>可以嘛
前任.skill>我没带耳机
用户 >怕啥啊
>那就直接打嘛
>和室友有什么好介意的呢宝宝
前任.skill>我在和室友聊天
用户 >宝宝的意思是聊天抽不开身嘛
前任.skill>是啊
用户 >那我给宝宝打个视频
>宝宝说接个电话就可以了啦
>一会熄灯了啦
>我打了昂
前任.skill>不啊
>我想和他们聊
用户 >和我少打一会视频嘛
前任.skill>抖音视频
用户 >我想和宝宝聊天
前任.skill>我不想
>我不想视频聊天
>我没带耳机
用户 >宝宝这么介意室友听到啊
>有什么还遮遮掩掩的呢
前任.skill>我就是不想
用户 >说好了晚上视频的呢呜呜呜
>宝宝求你了
前任.skill>我求你了
>不行了
用户 >为什么宝宝害怕同学知道
前任.skill>我不是害怕同学知道
>我同学知道啊
用户 >那为什么这样啊宝宝
前任.skill>我不想外放
用户 >但是我们中午说好了啊
>为什么要遮遮掩掩的
>不能大大方方的呢
前任.skill>我也没说微信视频啊
用户 >我是啥见不得人的嘛宝宝
前任.skill>我啥时候说你见不得人了
>我怎么就没有展示你了
用户 >那为什么介意微信视频呢
前任.skill>不想和你视频就是不展示你了
用户 >那宝宝为什么介意外放声音呢
>我就是想看看你
>想和你说几句话
>我也知道你今天很累
>所以我说我们今天少打一会视频
前任.skill>关灯了
场景三:撒娇
用户 > 宝宝
前任.skill > 咋啦宝
> 你出发吃饭了嘛
用户 > 想你啦
前任.skill > 我也想你
每个前任 Skill 由两部分组成:
| 部分 | 内容 |
|---|---|
| Part A — 共同记忆 | 关系时间线、日常仪式、偏好习惯、情感模式 |
| Part B — Persona | 5 层性格结构:硬规则 → 身份 → 表达风格 → 情感逻辑 → 关系行为 |
运行逻辑:收到消息 → Persona 判断心情和态度 → Memories 提供记忆细节 → 用她的语气输出
恋爱性格:冷暴力 · 翻旧账 ··独立 · 细腻敏感 · 忽冷忽热 · 控制欲强 …
吵架模式:冷战派 · 死不认错
依恋类型:回避型 ·
爱的表达:言语肯定 · 服务行为 · 送礼物 · 肢体接触 · 高质量陪伴
- 追加聊天记录 → 自动分析增量 → merge 进对应部分,不覆盖已有结论
- 对话纠正 → 说「她不会这样,她应该是 xxx」→ 写入 Correction 层,立即生效
- 版本管理 → 每次更新自动存档,支持回滚到任意历史版本
ex-skill/
├── SKILL.md # skill 入口(AgentSkills 标准 frontmatter)
├── prompts/ # Prompt 模板
│ ├── intake.md # 对话式信息录入
│ ├── memories_analyzer.md # 共同记忆提取
│ ├── persona_analyzer.md # 性格行为提取(含标签翻译表)
│ ├── memories_builder.md # memories.md 生成模板
│ ├── persona_builder.md # persona.md 五层结构模板
│ ├── merger.md # 增量 merge 逻辑
│ └── correction_handler.md # 对话纠正处理
├── tools/ # Python 工具
│ ├── wechat_parser.py # 微信聊天记录解析
│ ├── imessage_parser.py # iMessage 解析
│ ├── sms_parser.py # 短信解析
│ ├── photo_analyzer.py # 照片 EXIF 元数据分析
│ ├── social_media_parser.py # 社交媒体解析
│ ├── skill_writer.py # Skill 文件管理
│ └── version_manager.py # 版本存档与回滚
├── exes/ # 生成的前任 Skill(gitignored)
├── docs/PRD.md
├── requirements.txt
└── LICENSE
- 聊天记录质量决定 Skill 质量:真实聊天记录 > 仅手动描述
- 建议优先收集:她主动发的长消息 > 情感类消息 > 日常消息
- 照片分析只提取元数据(日期/位置),不上传照片内容
- 所有数据仅在本地处理,不会发送到任何外部服务
MIT License © perkfly