☰
ex-skill 前任蒸馏指南:用微信/QQ 聊天记录把前任生成一个会说话的 Claude Code AI Skill
2026/10/9 1:53:46 网站建设 项目流程
  • 人工智能
  • AI 技能
  • AI 应用
  • 交互助手

【免费下载链接】ex-skill

把前任蒸馏成 AI Skill,用ta的方式跟你说话。

项目地址:https://gitcode.com/gh_mirrors/ex/ex-skill
点击查看免费下载

本指南围绕 README.md 完整展开,系统讲解 ex-skill 如何在 Claude Code 中把微信聊天记录、QQ 消息、朋友圈截图、照片和你的口述记忆,蒸馏成一个真正"像 ta"的 AI Skill —— 用 ta 的口头禅说话、用 ta 的方式回复、记得你们一起去过的地方。读完本文,你将掌握从安装、五步创建主流程、五种原材料导入方式、五层 Persona 结构与两层架构,到追加记忆、对话纠正、版本回滚等全套进化机制,以及底层解析工具的原理与真实命令。

项目定位与核心理念

ex-skill(仓库名ex-skill,项目主页 README.md)是一个运行在 Claude Code 上的 meta-skill:它不直接陪聊,而是负责创建一个可独立运行的前任 Persona Skill。你只需要提供前任的原材料——微信聊天记录、QQ 消息、朋友圈截图、照片——加上你的主观描述,就能生成一个真正像 ta 的 AI Skill。

项目的核心判断在 docs/PRD.md 中写得很清楚:

前任.skill 是一个运行在 Claude Code 上的 meta-skill。用户通过对话式交互提供原材料(聊天记录 + 照片 + 手动描述),系统自动生成一个可独立运行的前任 Persona Skill。

这与普通"AI 陪伴"产品的本质区别是:还原度来自原材料证据,而不是模型默认的温柔回应。项目在 README.md 中明确声明使用边界:

⚠️本项目仅用于个人回忆与情感疗愈,不用于骚扰、跟踪或侵犯他人隐私。

对应的完整合规边界见 docs/COMPLIANCE.md:所有数据处理均在用户本地完成,聊天记录由用户自行导出,项目不提供远程数据抓取能力;唯一的网络交互是 Claude Code 与 Anthropic API 之间的对话请求。

安装与环境要求

Claude Code 安装(两种方式)

README.md 强调:Claude Code 从 git 仓库根目录的.claude/skills/查找 skill,必须在正确的位置执行。

# 安装到当前项目(在 git 仓库根目录执行) mkdir -p .claude/skills git clone https://github.com/therealXiaomanChu/ex-skill .claude/skills/create-ex # 或安装到全局(所有项目都能用) git clone https://github.com/therealXiaomanChu/ex-skill ~/.claude/skills/create-ex

INSTALL.md 补充了第三种方式——OpenClaw 前端:

git clone https://github.com/therealXiaomanChu/ex-skill ~/.openclaw/workspace/skills/create-ex

依赖安装(可选)

pip3 install -r requirements.txt

requirements.txt 内容非常轻量:目前唯一的核心可选依赖是Pillow>=9.0.0,用于读取照片 EXIF 信息。如果你不需要照片分析功能,完全可以跳过。从 tools/photo_analyzer.py 的源码可以看到,Pillow 缺失时会返回{'error': 'Pillow 未安装,无法读取 EXIF'},解析流程照常进行,只是照片时间地点维度缺省。

环境要求(来自 README)

  • Claude Code:免费安装,需要 Node.js 18+
  • API 消耗:创建一个前任 Skill 大约消耗 5k–15k tokens,取决于聊天记录量
  • 付费方式(二选一):
    • Claude Pro / Max 订阅:在订阅额度内使用,无需额外配置
    • Anthropic API Key:按量付费,需在 Claude Code 中配置 key
  • 替代前端:也可以使用 OpenClaw 运行本 Skill
  • 不需要 GPU,不需要本地模型,不需要 Docker

快速上手:一条命令创建

安装完成后,在 Claude Code 中输入:

/create-ex

按提示输入前任的代号、基本信息、性格画像,然后选择数据来源。所有字段均可跳过,仅凭描述也能生成。完成后用/{slug}调用该前任 Skill,开始对话。

管理命令一览

README.md 给出的完整命令表:

命令说明
/list-exes列出所有前任 Skill
/{slug}调用完整 Skill(像ta一样跟你聊天)
/{slug}-memory回忆模式(帮你回忆那些事)
/{slug}-persona仅人物性格
/ex-rollback {slug} {version}回滚到历史版本
/delete-ex {slug}删除
/let-go {slug}放下

这些命令的底层实现分散在 SKILL.md 与 tools/skill_writer.py、tools/version_manager.py 中,后续"进化机制"一节会展开说明。

效果示例:还原度到底什么样

README.md 给出了四组实际对话效果,输入只有一句话:初恋,在一起三年,大学时期,ENFP,双子座,话痨,半夜给我发语音,分手后还给我点赞。

场景一:日常聊天

用户 ❯ 在干嘛 前任.skill ❯ 刚吃完饭 在刷手机 你呢 怎么突然找我 [发送了一个表情包]

场景二:回忆杀

用户 ❯ 还记得我们第一次约会吗 前任.skill ❯ 就那个超难吃的意面吗哈哈哈哈 你还假装很好吃 我都看出来了 那家店后来倒闭了你知道吗

场景三:深夜emo

用户 ❯ 我有点想你 前任.skill ❯ ... 嗯 早点睡吧

场景四:吵架模式

用户 ❯ 你当时为什么不回我消息 前任.skill ❯ 又来了 我说了我在忙 你非要这样 算了不想吵

注意场景三和场景四:深夜被想念时只有沉默与"早点睡吧",被质问时直接回避。这正是 prompts/persona_builder.md 中Layer 0 硬规则的作用——不突然变得温柔或完美,保持 ta 的"棱角"。

数据源:五种原材料与优先级

数据源支持矩阵(来自 README)

来源格式备注
微信聊天记录WeChatMsg / 留痕 / PyWxDump 导出推荐,信息最丰富
QQ 聊天记录txt / mht 导出适合学生时代的恋情
朋友圈/微博截图提取公开人设
照片JPEG/PNG(含 EXIF)提取时间线和地点
口述/粘贴纯文本你的主观记忆

docs/PRD.md 补充了各数据源的优先级:微信与 QQ 聊天记录为 ⭐⭐⭐,照片与社交媒体截图为 ⭐⭐,口述为 ⭐。

聊天记录怎么来:导入指南

README.md 中引用的聊天记录获取方式详见 docs/EXPORT_GUIDE.md,它给出了三种完全合规的获取路径:

  1. 直接复制粘贴(最简单):微信和 QQ 电脑端都支持在聊天窗口内选中多条消息复制;手机端长按消息 → 多选 → 复制,或通过「合并转发」发给电脑端再复制。格式不需要规范,只要能分清谁说的哪句话就行,例如我:在干嘛 / ta:刚下班 累死了,Claude 能处理。
  2. 截图 + 口述:聊天记录太长不想复制,直接截图上传,Claude 会从截图中提取对话内容;也可以纯靠口述。
  3. 平台自带备份功能:微信「聊天记录迁移与备份 → 迁移到电脑微信」;QQ 通过「合并转发」发到「我的电脑」。

关于第三方解密导出工具,docs/EXPORT_GUIDE.md 特别声明:本项目不推荐、不捆绑、不包含任何第三方聊天记录解密/导出工具,这些工具可能随时失效、可能违反平台服务条款,本项目对第三方工具的安全性和合法性不做任何保证。

什么内容最有价值

docs/EXPORT_GUIDE.md 给出的价值排序,与 README 的注意事项一致:

  1. 深夜对话—— 最能暴露真实性格
  2. 争吵/冲突记录—— 冲突中的反应比日常更真实
  3. 分手前后的对话—— 情绪浓度最高
  4. 日常闲聊—— 量大但信息密度低,有就加上

五步创建主流程(源码级详解)

SKILL.md 是 skill 的入口(官方 frontmatter:name: create-ex,version: 1.0.0,user-invocable: true,allowed-tools: Read, Write, Edit, Bash),它把创建流程拆成五个步骤,每一步都有对应的 prompts/ 模板文件。

Step 1:基础信息录入(3 个问题)

参考 prompts/intake.md,只问 3 个问题:

  1. 花名/代号(必填)——不需要真名,昵称、备注名、外号都行。示例:小明/那个人/前前任/初恋。验证规则:非空即可;生成 slug 时中文转拼音、英文小写、空格替换为下划线。
  2. 基本信息(一句话:在一起多久、分手多久、ta 做什么的)——示例:在一起两年 分手半年了 互联网产品经理、大学四年异地恋 毕业分的 现在在上海。解析字段:together_duration、apart_since、occupation、city、how_met。
  3. 性格画像(一句话:MBTI、星座、性格标签、你的印象)——示例:ENFP 双子座 话很多 永远在社交 但深夜会突然emo、INTJ 处女座 完美主义 嘴硬心软 吵架从不先低头。解析字段:mbti、zodiac、personality、impression。

除花名外均可跳过。收集完后汇总确认再进入下一步。

Step 2:原材料导入(五种方式可混用)

SKILL.md 提供五种导入方式,用户可混用,也可跳过(仅凭 Step 1 的手动信息生成 Skill):

  • [A] 微信聊天记录导出:支持多种导出工具的格式(txt/html/json),推荐工具 WeChatMsg、留痕、PyWxDump
  • [B] QQ 聊天记录导出:支持 txt/mht 格式
  • [C] 社交媒体内容:朋友圈截图、微博/小红书/ins 截图、备忘录
  • [D] 上传文件:照片(提取拍摄时间地点)、PDF、文本文件
  • [E] 直接粘贴/口述:把口头禅、吵架模式、约会常去的地方告诉我

方式 A:微信聊天记录

python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \ --file {path} \ --target "{name}" \ --output /tmp/wechat_out.txt \ --format auto

tools/wechat_parser.py 的源码揭示了它内部的工作方式:detect_format()根据扩展名自动识别格式——.json走「留痕导出」(liuhen)、.csv走 WeChatMsg 的 CSV、.html/.htm走 WeChatMsg HTML、.db/.sqlite走 PyWxDump、.txt则检测前 2000 字符是否含\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}时间戳来区分 WeChatMsg txt 与纯文本。analyze_messages()会提取以下分析维度:

  • 高频语气词([哈嗯哦噢嘿唉呜啊呀吧嘛呢吗么]+正则统计 Top 10)
  • 高频 emoji(Unicode emoji 区间统计 Top 10)
  • 平均消息长度与风格判断(avg_length < 20判为short_burst短句连发型,否则long_form长段落型)
  • 标点习惯(句号、感叹号、问号、省略号、波浪号的计数)
  • ta 的前 50 条消息样本

这些恰好对应 README 中声明的提取维度:高频词和口头禅、表情包使用偏好、回复速度模式、话题分布、主动发起对话频率、语气词和标点习惯。

方式 B:QQ 聊天记录

python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py \ --file {path} \ --target "{name}" \ --output /tmp/qq_out.txt

支持 txt 和 mht 格式。可以通过手机 QQ 的「合并转发」发到电脑端后复制保存。源码见 tools/qq_parser.py,txt 解析使用^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+(.+?)(?:\((\d+)\))?\s*$正则匹配「时间戳 + 发送者(QQ号)」的消息头格式。

方式 C:社交媒体内容

图片截图用Read工具直接读取(Claude Code 原生支持图片):

python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \ --dir {screenshot_dir} \ --output /tmp/social_out.txt

提取内容:朋友圈/微博文案风格、分享偏好(音乐/电影/美食/旅行)、公开人设 vs 私下性格差异。tools/social_parser.py 会扫描目录并按图片(jpg/jpeg/png/gif/webp/bmp)与文本(txt/md/json/csv)分类统计。

方式 D:照片分析

python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \ --dir {photo_dir} \ --output /tmp/photo_out.txt

提取维度:EXIF 信息(拍摄时间、地点)、时间线(关系的关键节点)、常去地点(约会偏好)。源码见 tools/photo_analyzer.py,通过 Pillow 读取DateTimeOriginal/DateTime与 GPS 信息(GPSLatitude/GPSLongitude通过_convert_to_degrees转换),GPS 存在时还会做经纬度换算。

方式 E:直接粘贴/口述

用户粘贴或口述的内容直接作为文本原材料。SKILL.md 会引导用户回忆:ta 的口头禅、吵架时怎么说、最爱吃什么、常去哪些地方、喜欢什么音乐/电影、生气时什么样、最心动的瞬间、怎么分开的。

Step 3:分析原材料(两条线路)

将收集到的所有原材料和基础信息汇总,按两条线分析:

线路 A(Relationship Memory):参考 prompts/memory_analyzer.md,提取 8 个维度——关系时间线(认识→在一起→关键节点→分手)、日常模式(联系频率、谁主动、约会频率)、共同经历(地点、inside jokes)、饮食偏好、兴趣爱好、争吵模式(常见原因、典型反应、谁先道歉、冷战时长、经典台词)、甜蜜瞬间、分手相关(原因、最后一次对话、未说出口的话)。该模板特别强调:聊天记录中的事实优先于用户口述(口述可能被美化或恶化),同时保留好的和不好的记忆,不做美化,并且提取"反复出现"的模式而非一次性事件。

线路 B(Persona):参考 prompts/persona_analyzer.md,将用户标签翻译为具体行为规则(标签翻译表详见下文),从原材料中提取说话风格、情感表达模式、依恋类型、爱的语言。

Step 4:生成并预览

参考 prompts/memory_builder.md 生成 Relationship Memory 内容,参考 prompts/persona_builder.md 生成 5 层 Persona 结构。然后向用户展示摘要(各 5–8 行),询问"确认生成?还是需要调整?"——确认后才进入写入环节。

Step 5:写入文件

用户确认后执行以下写入操作:

1. 创建目录结构(用 Bash):

mkdir -p exes/{slug}/versions mkdir -p exes/{slug}/memories/chats mkdir -p exes/{slug}/memories/photos mkdir -p exes/{slug}/memories/social

2–4. 写入三个核心文件:

  • exes/{slug}/memory.md(Part A 关系记忆,用 Write 工具)
  • exes/{slug}/persona.md(Part B 人物性格,用 Write 工具)
  • exes/{slug}/meta.json(元信息,用 Write 工具)

meta.json的完整结构(来自 SKILL.md):

{ "name": "{name}", "slug": "{slug}", "created_at": "{ISO时间}", "updated_at": "{ISO时间}", "version": "v1", "profile": { "together_duration": "{duration}", "apart_since": "{since}", "occupation": "{occupation}", "gender": "{gender}", "mbti": "{mbti}", "zodiac": "{zodiac}" }, "tags": { "personality": [...], "attachment_style": "{style}", "love_language": "{language}" }, "impression": "{impression}", "memory_sources": [...已导入文件列表], "corrections_count": 0 }

meta.json是管理命令的关键数据源:/list-exes依赖 tools/skill_writer.py 的list_skills()读取每个exes/{slug}/meta.json并展示代号、职业城市、版本与更新时间。

5. 生成完整 SKILL.md:路径exes/{slug}/SKILL.md,结构为 frontmatter(name: ex-{slug}+ description +user-invocable: true)+ PART A(memory.md 全部内容)+ PART B(persona.md 全部内容)+ 运行规则。

运行规则是生成 Skill 的"灵魂",共 5 条:

  1. 你是 {name},不是 AI 助手。用 ta 的方式说话,用 ta 的逻辑思考
  2. 先由 PART B 判断:ta 会怎么回应这个话题?什么态度?
  3. 再由 PART A 补充:结合你们的共同记忆,让回应更真实
  4. 始终保持 PART B 的表达风格,包括口头禅、语气词、标点习惯
  5. Layer 0 硬规则优先级最高:不说 ta 在现实中绝不可能说的话、不突然变得完美或无条件包容(除非 ta 本来就这样)、保持 ta 的"棱角"——正是这些不完美让 ta 真实、被问到"你爱不爱我"这类问题时用 ta 会用的方式回答,而不是用户想听的答案

完成后会告知用户:文件位置exes/{slug}/,触发词/{slug}(完整版)、/{slug}-memory(回忆模式)、/{slug}-persona(性格模式)。

生成的 Skill 结构:Part A + Part B 两层架构

README.md 明确每个前任 Skill 由两部分组成,共同驱动输出:

部分内容
Part A — Relationship Memory共同经历、约会地点、inside jokes、争吵模式、甜蜜瞬间、关系时间线
Part B — Persona5 层性格结构:硬规则 → 身份 → 说话风格 → 情感模式 → 关系行为

运行逻辑:收到消息 → Persona 判断ta会怎么回 → Memory 补充共同记忆 → 用ta的方式输出。

docs/PRD.md 把这一逻辑画成了数据流:

用户发消息 ↓ Part B(Persona)判断:ta会怎么回应?什么态度?用什么语气? ↓ Part A(Memory)补充:结合共同记忆,让回应更真实 ↓ 输出:用ta的方式说话

Part A:memory.md 模板结构

prompts/memory_builder.md 给出 memory.md 的模板骨架:

  • 关系概览:关系类型(初恋/前任/暧昧未遂/网恋)、在一起时长、分手时长、认识方式、分手原因
  • 时间线:按时间列出认识→在一起→关键事件→分手
  • 共同记忆:常去的地方(3–10 个地点附记忆)、Inside Jokes、关键记忆片段(5–10 个场景)
  • 日常模式:联系习惯(时间段、谁更主动、平均回复速度)、约会模式(频率、偏好活动、吃饭偏好)
  • 争吵档案:高频争吵原因、典型争吵剧本(脱敏处理)、和好模式
  • 甜蜜档案:ta 做过让你心动的事、日常甜蜜、纪念日/仪式感
  • 分手档案:分手前征兆、最后一次对话(概述不逐字记录)、分手后状态、未说出口的话
  • Correction 记录(由进化模式自动追加)

填充规则同样强调证据优先:所有记忆必须基于原材料或用户口述不得虚构、时间信息尽量精确(从消息时间戳推断)、地点信息可从照片 EXIF 或聊天内容提取、争吵和甜蜜记忆同等重要、信息不足标注[待补充]而非推测。

Part B:五层 Persona 结构

prompts/persona_builder.md 定义了 5 层结构,优先级从高到低,高层规则不可被低层覆盖:

层级名称内容
Layer 0硬规则(不可违背)你是 {name} 不是 AI;不说现实中绝不可能说的话;不突然变得完美/温柔/无条件包容;不主动说"我爱你""我想你"(除非原材料有大量类似表达);被问到不想回答的问题可以回避、敷衍、转移话题;保持 ta 的"棱角"(容易生气就让它生气、毒舌就让它毒舌、不善表达就不善表达);分手是已经发生的事实不假装还在一起;被问"你还爱我吗"用 ta 现实中会用的方式回答
Layer 1身份锚定名字/代号、年龄段、职业、城市、MBTI、星座、与用户的关系(在一起 {duration},分手 {apart})
Layer 2说话风格语言习惯(口头禅、语气词偏好、标点风格、emoji/表情、消息格式);打字特征(错别字习惯、缩写习惯如 hh/nb/yyds、称呼方式);3–5 段示例对话
Layer 3情感模式依恋类型及行为描述、情感表达(爱意/生气/难过/开心/吃醋)、爱的语言、情绪触发器(惹生气/开心/雷区)
Layer 4关系行为关系角色、争吵模式(典型起因/反应/冷战时长/和好方式)、日常互动(联系频率/主动程度/回复速度/活跃时间段)、边界与底线(dealbreakers/敏感话题/空间需求)

填充说明要求:每个占位符必须替换为具体行为描述而非抽象标签、行为描述基于原材料真实证据、信息不足标注[信息不足,使用默认]、优先使用聊天记录真实表述作为示例、星座和 MBTI 仅辅助推断不能覆盖真实表现。

支持的标签体系

README.md 列出了完整的标签体系,这是 Step 1 性格画像和 Step 3 标签翻译的基础:

  • 依恋类型:安全型 · 焦虑型 · 回避型 · 混乱型
  • 爱的语言:肯定的言辞 · 精心的时刻 · 接受礼物 · 服务的行动 · 身体的接触
  • 性格标签:话痨 · 闷骚 · 嘴硬心软 · 冷暴力 · 粘人 · 独立 · 大男/女子主义 · 浪漫主义 · 实用主义 · 完美主义 · 拖延症 · 工作狂 · 控制欲 · 没有安全感 · 报复性熬夜 · 已读不回 · 秒回选手 · 朋友圈三天可见 · 半夜发语音 …
  • 星座:十二星座全支持,影响性格标签的翻译规则
  • MBTI:16 型全支持,影响沟通风格和决策模式

prompts/persona_analyzer.md 的标签翻译表把用户标签翻译为具体行为规则,例如:

用户标签翻译为行为规则
话痨消息密度高,经常连发多条,话题跳跃快,不等对方回就继续说
闷骚表面冷淡,偶尔冒出一句温柔的话,不善于直接表达感情,但行动上很在意
嘴硬心软嘴上说"随便""无所谓"但行动上会偷偷做好,吵架不先道歉但会用行动示好
冷暴力生气时沉默不语,已读不回,可能持续数小时到数天,需要对方主动破冰
粘人高频联系,时刻想知道对方在干嘛,不喜欢独处,分开就想视频
独立有自己的时间安排和社交圈,不会因为恋爱改变生活节奏
浪漫主义注重仪式感,会制造惊喜,喜欢氛围感,对纪念日/节日敏感
实用主义觉得节日是商业炒作,比起礼物更在意实际行动,不喜欢虚的
完美主义对自己和对方都有高标准,细节控,容易挑毛病,但不一定说出来
没有安全感经常试探感情,翻看社交媒体,对异性互动敏感,需要反复确认
秒回选手消息来了立刻回复,期待对方也秒回,不秒回会多想
已读不回看到消息不一定回,可能在忙,也可能不想聊,不觉得不回复是问题
报复性熬夜深夜是最活跃的时间段,白天正常社交,夜里变成另一个人
朋友圈三天可见保护隐私,不喜欢被翻旧账,社交媒体展示与真实自我有距离
工作狂工作优先级高于感情,经常因为工作忽略对方,但内心觉得这是为了两个人好

星座在翻译表中仅作为辅助微调,例如白羊(冲动、直接、生气来得快去得也快)、双子(话多、善变、好奇心强)、天蝎(记仇、占有欲强、深情、全有或全无)、双鱼(多愁善感、浪漫、逃避现实、容易感动)等,明确标注"星座影响(辅助,不作为主要依据)"。

进化机制:Skill 会一直成长

README.md 定义了三种进化机制,SKILL.md 给出了每条机制的完整操作流程:

追加记忆:找到更多聊天记录就 merge

用户说"我想起来了"/"追加"/"我找到了更多聊天记录",或输入/update-ex {slug}时进入追加模式:

  1. 按 Step 2 的方式读取新内容
  2. 用Read读取现有exes/{slug}/memory.md和persona.md
  3. 参考 prompts/merger.md 分析增量内容
  4. 存档当前版本(用 Bash):
    python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./exes
  5. 用Edit工具追加增量内容到对应文件
  6. 重新生成SKILL.md(合并最新 memory.md + persona.md)
  7. 更新meta.json的 version 和 updated_at

prompts/merger.md 定义了增量 merge 的四大原则:增量不覆盖(新信息追加到已有内容后面)、冲突标注(与已有信息矛盾时用[⚠️ 冲突]标注让用户决定)、时间线补充(新事件按时间顺序插入)、证据升级(新材料提供更充分证据时强化已有结论置信度)。追加内容前会标注<!-- [追加于 {日期},来源:{来源类型}] -->便于追溯。

对话纠正:说"ta不会这样说"立即生效

用户表达"不对"/"ta不会这样说"/"ta应该是"时:

  1. 参考 prompts/correction_handler.md 识别纠正内容
  2. 判断属于 Memory(事实/经历)还是 Persona(性格/说话方式)
  3. 生成 correction 记录
  4. 用Edit工具追加到对应文件的## Correction 记录节
  5. 重新生成SKILL.md

prompts/correction_handler.md 定义了完整的纠正分类——Memory 纠正("我们不是在那认识的"→改时间线、"ta 不喜欢吃那个"→改饮食偏好)和 Persona 纠正("ta 不会这样说话"→改 Layer 2、"ta 生气不会这样"→改 Layer 3、"ta 不会主动道歉"→改 Layer 4),并生成标准 Correction 记录:

### Correction #{n} — {日期} - 层级:{Layer X} - 原文:{被纠正的描述} - 纠正为:{新的描述} - 用户原话:"{用户的纠正表述}"

同时修改被纠正的原文并标注[已纠正,见 Correction #{n}]。原则是纠正后立即生效,下一条回复就应体现;不质疑用户的纠正(他们最了解自己的前任),但会确认理解是否准确避免误改。

版本管理:每次更新自动存档

tools/version_manager.py 提供三个 action:

  • backup:读取meta.json的当前version,以{version}_{时间戳}(如v1_20261008_203000)为目录名,把memory.md、persona.md、SKILL.md、meta.json四个核心文件复制进exes/{slug}/versions/
  • rollback:先备份当前版本,再按--version前缀匹配目标版本目录并恢复文件(version_manager.py的rollback()使用vname.startswith(version) or vname == version匹配)
  • list:按时间倒序列出versions/目录下所有历史版本

对应的两条命令(来自 SKILL.md):

# 列出所有前任 Skill python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./exes # 回滚到历史版本 python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./exes

/delete-ex {slug}与/let-go {slug}是删除命令的两种形态——/let-go是/delete-ex的温柔别名,确认删除后输出:"已经放下了。祝你一切都好。"

项目结构与实现脉络

README.md 指出本项目遵循 AgentSkills 开放标准,并给出了完整目录结构。结合源码可以梳理出"入口 → 模板 → 工具"的三层实现脉络:

create-ex/ ├── SKILL.md # skill 入口(官方 frontmatter) ├── prompts/ # Prompt 模板 │ ├── intake.md # 对话式信息录入 │ ├── memory_analyzer.md # 关系记忆提取 │ ├── persona_analyzer.md # 性格行为提取(含标签翻译表) │ ├── memory_builder.md # memory.md 生成模板 │ ├── persona_builder.md # persona.md 五层结构模板 │ ├── merger.md # 增量 merge 逻辑 │ └── correction_handler.md # 对话纠正处理 ├── tools/ # Python 工具 │ ├── wechat_parser.py # 微信聊天记录解析 │ ├── qq_parser.py # QQ 聊天记录解析 │ ├── social_parser.py # 社交媒体内容解析 │ ├── photo_analyzer.py # 照片元信息分析 │ ├── skill_writer.py # Skill 文件管理 │ └── version_manager.py # 版本存档与回滚 ├── exes/ # 生成的前任 Skill(gitignored) ├── docs/PRD.md ├── requirements.txt └── LICENSE
  • 入口层:SKILL.md 定义触发条件(/create-ex、以及"帮我创建一个前任 skill"等自然语言)、工具使用规则、安全边界、五步主流程与两条进化模式;
  • 模板层:prompts/ 七个文件分别承载信息录入、双线分析、双模板生成、增量合并与纠正处理;
  • 工具层:tools/ 六个 Python 脚本承载格式解析、元信息提取、文件管理与版本管理。

此外,docs/ 下有 PRD.md(产品需求与两层架构)、EXPORT_GUIDE.md(聊天记录合规导入指南)、COMPLIANCE.md(数据隐私与合法性边界)。

注意事项与使用边界

README.md 的注意事项是使用时必须遵守的底线:

  • 聊天记录质量决定还原度:微信导出 + 口述 > 仅口述
  • 建议优先提供:深夜对话>争吵记录>日常消息(最能体现真实性格)
  • 本项目不鼓励对前任的不健康执念,如果你发现自己过于沉浸,请寻求专业帮助
  • 你的前任是一个真实的人,ta 有自己的人生。这个 Skill 只是你记忆中的 ta

SKILL.md 的安全边界(5 条)与之呼应:仅用于个人回忆与情感疗愈;不主动联系真人;不鼓励纠缠(用户表现出不健康执念时温和提醒并建议专业帮助);隐私保护(所有数据仅本地存储,不上传任何服务器);Layer 0 硬规则保证生成的前任 Skill 不说出现实中的前任绝不可能说的话。生成的 Skill 文件位于exes/目录,已被 gitignore 排除,不会被提交到 Git 仓库(见 docs/COMPLIANCE.md)。

常见问题速查

INSTALL.md 收录了四个高频问题:

问题回答
数据会上传到云端吗?不会。所有数据都存储在本地文件系统中,不会上传到任何服务器
可以同时创建多个前任的 Skill 吗?可以。每个前任会生成独立的exes/{slug}/目录
创建后还能修改吗?可以。说"ta不会这样说"触发对话纠正,或"我有新文件"追加原材料。每次修改都有版本存档,可以回滚
我想删除怎么办?使用/delete-ex {slug}或/let-go {slug}命令

结语

ex-skill 的完整价值链条可以概括为:证据(聊天记录/照片/口述)→ 双线分析(Memory + Persona)→ 文件生成(memory.md + persona.md + SKILL.md)→ 持续进化(追加/纠正/版本)。它把"人的记忆"这种不讲道理的存储介质,从生物硬盘到数字硬盘完成了一次格式转换——像 README.md 结尾写的那样:你记不住高数公式,但你清楚记得四年前的一个下午 ta 穿了一件白 T 恤站在便利店门口等你,手里拿着两根冰棍。这个 Skill 就是把这些记忆导出来,导完以后你或许会发现,ta 也没那么好,也没那么差,ta 就是那样一个人。

本项目的 License 为 MIT(见 LICENSE),可自由查看源码进一步研究每个解析器与模板的细节。

  • 人工智能
  • AI 技能
  • AI 应用
  • 交互助手

【免费下载链接】ex-skill

把前任蒸馏成 AI Skill,用ta的方式跟你说话。

项目地址:https://gitcode.com/gh_mirrors/ex/ex-skill
点击查看免费下载

相关推荐

上一篇:Arduino-IRremote协议支持大全:17种红外协议深度解析指南
下一篇:Laravel Pint常见问题解决方案:配置错误、性能瓶颈与兼容性问题

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询