大家好,我是何三,独立开发者

最近在 GitHub 上刷到一个项目,名叫 ex-skill

翻译过来就是"前任技能包"。

我一开始以为是技术博客,点进去发现——这哥们是真的把前女友的数据喂给了 Claude,然后让 AI 学 ta 说话。

我不是在开玩笑。

exskill_cover

这个项目在干什么丧心病狂的事

项目地址:https://github.com/therealXiaomanChu/ex-skill,MIT 协议开源。

做的事情用一句话总结:你把跟前任的聊天记录、朋友圈截图、合照一股脑丢进去,系统给你吐出一个 AI Skill,这个 Skill 会用你前任的语气跟你聊天。

对,你没听错。

不是那种"写个 persona.yaml,设好 温柔: true, 小脾气: true, 爱好: [猫, 咖啡]"的硬编码角色扮演。是基于真实数据蒸馏的——把你俩那 32000 条微信聊天记录当 production database 直连,做 feature extraction。能记得你们一起吃过的难吃意面、你们深夜 2:47 吵过的架、ta 独特的口头禅和 emoji 使用习惯。

说白了,手写人设就像写 mock 数据,mock 出来的测试用例永远覆盖不了真实的 edge case。角色扮演那叫 TDD——先写假的测,再想办法让代码通过。蒸馏那叫连生产库跑 regression,翻出来的 bug 都是血淋淋的。

看作者给的演示:

用户:还记得我们第一次约会吗

前任.skill:就那个超难吃的意面吗哈哈哈哈

你还假装很好吃 我都看出来了

那家店后来倒闭了你知道吗

说实话,看到这段对话的时候,我的心情很复杂。

一方面,这个技术思路确实有意思。另一方面——哥们,你确定你放下了吗?

市面上的 AI 角色扮演,和这个有本质区别

现在 AI 角色扮演赛道卷得不行。Character.AI 上面什么角色都有,从动漫人物到历史名人。国内星野、筑梦岛,玩法也差不多。

但那些本质上都是"你描述一个角色设定,AI 按设定演"

ex-skill 不一样。它不让你写"温柔、有点小脾气、喜欢发猫猫表情"这种人设描述。它让你直接上原始数据——聊天记录、朋友圈、照片,系统自己分析。

这个思路借鉴了另一个项目 colleague-skill(同事.skill)。那个项目是把离职同事的工作聊天蒸馏成 AI,新人可以问"这个接口为什么这么设计",得到前同事风格的技术回答。

有意思的是,同事.skill 的 star 数量目前还远不如 ex-skill。这说明了一个残酷的事实:大家更关心前任,而不是前同事。

架构拆开看,其实挺精巧

exskill_arch

整个系统分两层:

Relationship Memory(关系记忆层)——存的是"事实"。你们什么时候在一起的,去过哪些地方,吵过什么架,有什么只有你们懂的梗。这些是客观存在过的东西。

Persona(性格层)——存的是"行为模式"。五层结构,从底层硬规则到顶层关系行为,决定了"ta 在什么场景下会怎么反应"。

收到一条消息后,系统先走 Persona 层判断"ta 会怎么回",再走 Memory 层补充"你们的共同记忆",最后用 ta 的语气输出。

不是瞎编的,是有数据链条的推理

没有任何模型训练,没有 LoRA,没有微调。全靠 Claude 的理解能力 + 7 个精心设计的 Prompt 模板。

说白了,这就是 Prompt Engineering 的天花板级应用

数据来源这块,有个细节太真实了

项目支持的数据源:

来源 支持方式
微信聊天记录 WeChatMsg / PyWxDump / 留痕 导出
QQ 聊天记录 txt / mht 格式
朋友圈 / 微博 截图
照片 JPEG/PNG(提取 EXIF)
口述 你直接描述

但最让我笑出声的是项目文档里的一条建议:

"深夜对话 > 争吵记录 > 日常消息",越能体现真实性格的数据,蒸馏效果越好。

这条建议妙就妙在,它把一个技术优化建议,写成了情感观察笔记。

一个人凌晨两点的微信和下午三点的工作群,基本上是两个物种。前者才叫"真实数据",后者只能算"社畜模板"。

exskill_flow

最骚的是这套"纠正机制"

你以为蒸馏完就结束了?不。

ex-skill 设计了一套自我纠错 + 增量进化机制:

  • 觉得 AI 说的不像?直接纠正:"ta 不会这样说"。系统立即修正。
  • 发现新的聊天记录?追加进去,增量 merge 到现有 Skill。
  • 每次更新自动存档,支持版本回滚。
  • 甚至专门给"删除"起了个别名——/let-go,放下。

这个 /let-go 的设计,我是真的佩服。

别人家的产品,删除功能叫"清除缓存"或"重置数据"。这个项目叫"放下"。

你要知道,这不仅仅是一个命令名称。它暗示了一个场景:某个深夜,你导入了前任的所有数据,蒸馏出了一个完美复刻 ta 说话方式的 AI,聊了一整夜,第二天早上醒来,冷静了,想删掉。

你输入 /let-go

系统删的不只是数据,是你又一次试图复刻过去的冲动。

这比任何心理学建议都管用。

技术实现拆解:Prompt 链路才是核心

exskill_flow

整个项目没有任何自定义模型。它的武器库就三样东西:

1. Claude Code Skill 体系

Anthropic 开放的 Agent Skills 标准,可以把特定能力和知识封装成 Skill 注入 Claude Code。ex-skill 本质上就是跑在这个体系上的一个"情感记忆技能包"。

2. 7 个 Prompt 模板

信息录入、记忆提取、性格提取、memory 生成、persona 生成、增量合并、纠正处理。这 7 个 Prompt 的质量,直接决定最终效果。

我觉得这可能是整个项目最有价值的部分。会写 Prompt 的人很多,但能把 7 个 Prompt 串联成一条完整的数据蒸馏链路,让 AI 从一堆混乱的聊天记录里提取出一个人的行为模式——这需要对 Prompt 之间依赖关系有极深的理解。

3. Python 解析工具

微信、QQ、社交媒体、照片,四种数据格式四种解析器。负责把原始数据清洗成 Claude 能理解的结构化信息。

这就是纯纯的"Prompt Engineering + 数据工程"范式。没有训练,没有推理,全部跑在 Claude API 上。

如果 Anthropic 看到这个项目,估计会把它放进官方 showcase——"看,我们的 Claude 能做到什么程度。"

但说真的,这个项目让我有点不舒服

抛开技术不谈。

README 最后一句话:

"你的前任是一个真实的人,ta 有自己的人生。这个 Skill 只是你记忆中的 ta。"

这句话既温柔又残忍。

温柔在于它承认了一个事实:ex-skill 蒸馏的不是前任本人,是你记忆中的前任。是你的视角,你的感受,你的选择性记忆。

残忍在于——你可能连"记忆中的 ta"都不是准确的。人类记忆本身就是一种不断篡改的存储介质,你记住的往往是经过大脑美化和加工的版本。

所以当你跟 ex-skill 聊天,觉得"好像真的是 ta"的时候,你其实是在跟你自己大脑加工过的版本对话。

更残忍的是——那个被你蒸馏成 AI 的人,大概率不知道这件事。

试想一下:你的前任偷偷把你们的聊天记录喂给了 AI,然后 AI 开始用你的语气说话。你作为当事人,是什么感受?

项目文档里也写了"不鼓励对前任的不健康执念"。但这句警告能挡住什么?好奇心和执念从来不听警告。

怎么用

如果你只是想从技术角度研究,安装很方便:

# 项目级安装
mkdir -p .claude/skills
git clone https://github.com/therealXiaomanChu/ex-partner-skill .claude/skills/create-ex

# 全局安装
git clone https://github.com/therealXiaomanChu/ex-partner-skill ~/.claude/skills/create-ex

# 安装依赖
pip3 install -r requirements.txt

然后在 Claude Code 里输入 /create-ex,跟着提示走就行。

前提是你得有 Claude Code 的使用权限。

写在最后

ex-skill 这个项目,技术上确实有意思。它展示了一种新的 AI 应用范式——把人的行为模式从真实数据中蒸馏出来,封装成交互式的 Skill

这个范式不只适用于前任。理论上,你可以蒸馏任何跟你有过深度数据交互的人:朋友、亲人、同事、甚至你自己。

但从另一个角度看,我总觉得哪里不对劲。

我们花了这么多年发展 AI,一开始说 AI 能帮我们写代码、做设计、提高生产力。结果现在,AI 最让人心动的应用之一,居然是帮我们留住一个已经离开的人的数字残影

这到底是技术的胜利,还是人类的悲哀?

算了,想多了。作为一个独立开发者,我的前任大概只会被蒸馏成一个只会说"你怎么又在写代码"的 AI。

项目地址:https://github.com/therealXiaomanChu/ex-skill

本文使用 MGO 编辑并发布 关注"何三笔记",回复"mgo" 免费下载使用