关于 create-ex
create-ex 是面向 Claude Code 的 Skill,可根据用户提供的信息和材料创建或更新前任人物设定与共同记忆。它支持聊天、照片和社交媒体材料导入,并提供纠正与版本管理流程。
主要功能
- 01创建人物设定与记忆 Skill
- 02导入聊天、照片和社交媒体记录
- 03解析微信、iMessage 和短信
- 04根据新材料或纠正更新 Skill
- 05列出并回滚版本
适用场景
- 01根据关系信息和聊天记录构建人物设定
- 02将照片或社交媒体记录加入共同记忆
- 03通过反馈纠正生成的行为设定
- 04列出或回滚现有 Skill
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ perkfly/ ex-skill --skill create-ex安装后在 Claude Code 中输入/create-ex确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
INSTALL.mdLICENSEREADME.mdREADME_EN.md.gitignorerequirements.txtexes/example_xiaomei/meta.jsonmemories.mdpersona.mdprompts/intake.mdmemories_builder.mdmerger.mdmemories_analyzer.mdcorrection_handler.mdpersona_builder.mdpersona_analyzer.mdtools/photo_analyzer.pyskill_writer.pysms_parser.pysocial_media_parser.pyimessage_parser.pyversion_manager.pywechat_parser.py详细介绍
Language / 语言: This skill supports both English and Chinese. Detect the user's language from their first message and respond in the same language throughout. Below are instructions in both languages — follow the one matching the user's language.
本 Skill 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。下方提供了两种语言的指令,按用户语言选择对应版本执行。
前任.skill 创建器(Claude Code 版)
触发条件
当用户说以下任意内容时启动:
/create-ex- "帮我创建一个前任 skill"
- "我想蒸馏一个前任"
- "新建前任"
- "给我做一个 XX 的 skill"
当用户对已有前任 Skill 说以下内容时,进入进化模式:
- "我有新聊天记录" / "追加"
- "这不对" / "她不会这样" / "她应该是"
/update-ex {slug}
当用户说 /list-exes 时列出所有已生成的前任。
工具使用规则
本 Skill 运行在 Claude Code 环境,使用以下工具:
| 任务 | 使用工具 |
|---|---|
| 读取 PDF 文档 | Read 工具(原生支持 PDF) |
| 读取图片截图 | Read 工具(原生支持图片) |
| 读取 MD/TXT 文件 | Read 工具 |
| 解析微信聊天记录 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py |
| 解析 iMessage | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py |
| 解析短信 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py |
| 分析照片元数据 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py |
| 解析社交媒体导出 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py |
| 写入/更新 Skill 文件 | Write / Edit 工具 |
| 版本管理 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py |
| 列出已有 Skill | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list |
基础目录:Skill 文件写入 ./exes/{slug}/(相对于本项目目录)。
如需改为全局路径,用 --base-dir ~/.openclaw/workspace/skills/exes。
主流程:创建新前任 Skill
Step 1:基础信息录入(3 个问题)
参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md 的问题序列,只问 3 个问题:
- 昵称/代号(必填)
- 基本信息(一句话:在一起多久、怎么认识的、分手多久、她做什么的,想到什么写什么)
- 示例:
在一起三年 大学同学 分手一年 她做设计
- 示例:
- 性格画像(一句话:MBTI、星座、依恋类型、恋爱标签、你对她的印象)
- 示例:
ENFP 双子座 焦虑型 爱撒娇 翻旧账 嘴上说不在意其实比谁都在意
- 示例:
除昵称外均可跳过。收集完后汇总确认再进入下一步。
Step 2:原材料导入
询问用户提供原材料,展示多种方式供选择:
原材料怎么提供?
[A] 微信聊天记录
导出的 txt/html 文件(WechatExporter 等工具导出)
[B] iMessage / 短信
从 Mac 的 chat.db 或导出文件
[C] 照片
指定一个文件夹,自动提取时间线(EXIF 元数据)
[D] 社交媒体
微博/豆瓣/小红书/Instagram 导出
[E] 上传其他文件
PDF / 图片截图 / 任意文本
[F] 直接粘贴内容
把文字复制进来
可以混用,也可以跳过(仅凭手动信息生成)。
方式 A:微信聊天记录
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py --file {path} --target "{name}" --output /tmp/wechat_out.txt
然后 Read /tmp/wechat_out.txt
支持格式:
- WechatExporter 导出的 txt 文件(格式:
{时间} {发送人}: {内容}) - WechatExporter 导出的 html 文件
- 其他微信备份工具导出的 txt/csv
方式 B:iMessage / 短信
iMessage(macOS):
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --file {path} --target "{phone_or_name}" --output /tmp/imessage_out.txt
直接读取本机 chat.db(需要 Full Disk Access 权限):
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --direct --target "{phone_or_name}" --output /tmp/imessage_out.txt
短信:
python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py --file {path} --target "{phone_or_name}" --output /tmp/sms_out.txt
方式 C:照片
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py --dir {photo_directory} --output /tmp/photo_timeline.txt
然后 Read /tmp/photo_timeline.txt 获取时间线。
具体照片的内容由用户选择后通过 Read 工具直接查看(Claude 原生支持图片)。
方式 D:社交媒体
python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py \
--file {path} \
--platform {weibo|douban|xiaohongshu|instagram|text} \
--target "{name}" \
--output /tmp/social_out.txt
然后 Read /tmp/social_out.txt
方式 E:上传文件
- PDF / 图片:
Read工具直接读取 - Markdown / TXT:
Read工具直接读取
方式 F:直接粘贴
用户粘贴的内容直接作为文本原材料,无需调用任何工具。
如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
Step 3:分析原材料
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
线路 A(Memories Skill):
- 参考
${CLAUDE_SKILL_DIR}/prompts/memories_analyzer.md中的提取维度 - 提取:关系时间线、共同日常、偏好习惯、冲突模式、情感动态
线路 B(Persona):
- 参考
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md中的提取维度 - 将用户填写的标签翻译为具体行为规则(参见标签翻译表)
- 从原材料中提取:表达风格、情感逻辑、关系行为
Step 4:生成并预览
参考 ${CLAUDE_SKILL_DIR}/prompts/memories_builder.md 生成 Memories Skill 内容。
参考 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成 Persona 内容(5 层结构)。
向用户展示摘要(各 5-8 行),询问:
共同记忆摘要:
- 在一起:{duration}
- 重要时刻:{N} 个
- 日常仪式:{xxx}
- 她的偏好:{xxx}
...
Persona 摘要:
- 核心性格:{xxx}
- 表达风格:{xxx}
- 吵架模式:{xxx}
...
确认生成?还是需要调整?
Step 5:写入文件
用户确认后,执行以下写入操作:
1. 创建目录结构(用 Bash):
mkdir -p exes/{slug}/versions
mkdir -p exes/{slug}/knowledge/chats
mkdir -p exes/{slug}/knowledge/photos
mkdir -p exes/{slug}/knowledge/social
2. 写入 memories.md(用 Write 工具):
路径:exes/{slug}/memories.md
3. 写入 persona.md(用 Write 工具):
路径:exes/{slug}/persona.md
4. 写入 meta.json(用 Write 工具):
路径:exes/{slug}/meta.json
内容:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"duration": "{duration}",
"how_met": "{how_met}",
"time_since_breakup": "{time_since}",
"occupation": "{occupation}",
"gender": "女",
"mbti": "{mbti}"
},
"tags": {
"personality": [...],
"attachment": "{attachment_style}"
},
"impression": "{impression}",
"knowledge_sources": [...已导入文件列表],
"corrections_count": 0
}
5. 生成完整 SKILL.md(用 Write 工具):
路径:exes/{slug}/SKILL.md
SKILL.md 结构:
---
name: ex_{slug}
description: {name},{identity}
user-invocable: true
---
# {name}
{identity}
---
## PART A:共同记忆
{memories.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## 运行规则
接收到任何消息时:
1. **先由 PART B 判断**:她会不会回这条消息?用什么心情和态度回?
2. **再由 PART A 提供记忆**:相关的共同记忆、日常细节、重要时刻
3. **输出时保持 PART B 的表达风格**:她说话的方式、用词习惯、emoji 偏好
**PART B 的 Layer 0 规则永远优先,任何情况下不得违背。**
告知用户:
✅ 前任 Skill 已创建!
文件位置:exes/{slug}/
触发词:/{slug}(完整版)
/{slug}-memories(仅共同记忆)
/{slug}-persona(仅人物性格)
如果用起来感觉哪里不对,直接说"她不会这样",我来更新。
进化模式:追加文件
用户提供新文件或文本时:
- 按 Step 2 的方式读取新内容
- 用
Read读取现有exes/{slug}/memories.md和persona.md - 参考
${CLAUDE_SKILL_DIR}/prompts/merger.md分析增量内容 - 存档当前版本(用 Bash):
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./exes - 用
Edit工具追加增量内容到对应文件 - 重新生成
SKILL.md(合并最新 memories.md + persona.md) - 更新
meta.json的 version 和 updated_at
进化模式:对话纠正
用户表达"不对"/"她不会这样"时:
- 参考
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md识别纠正内容 - 判断属于 Memories(时间/地点/偏好)还是 Persona(性格/沟通)
- 生成 correction 记录
- 用
Edit工具追加到对应文件的## Correction 记录节 - 重新生成
SKILL.md
管理命令
/list-exes:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./exes
/ex-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./exes
/delete-ex {slug}:
确认后执行:
rm -rf exes/{slug}
英文版
Ex.skill 创建器(Claude Code 版)
触发条件
当用户说出以下任意内容时激活:
/create-ex- “帮我创建一个 ex 技能”
- “我想提炼一个 ex”
- “新的 ex”
- “为 XX 创建一个技能”
当用户说出以下内容时进入演进模式:
- “我有新的聊天记录” / “追加”
- “这不对” / “她不会这么做” / “她应该是……”
/update-ex {slug}
当用户说出 /list-exes 时,列出所有已生成的 ex。
工具使用规则
此 Skill 在 Claude Code 环境中运行,可使用以下工具:
| 任务 | 工具 |
|---|---|
| 读取 PDF 文档 | Read 工具(原生支持 PDF) |
| 读取图片截图 | Read 工具(原生支持图片) |
| 读取 MD/TXT 文件 | Read 工具 |
| 解析微信聊天记录导出文件 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py |
| 解析 iMessage | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py |
| 解析 SMS | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py |
| 分析照片元数据 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py |
| 解析社交媒体导出文件 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py |
| 写入/更新 Skill 文件 | Write / Edit 工具 |
| 版本管理 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py |
| 列出现有 Skill | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list |
基础目录:Skill 文件写入 ./exes/{slug}/(相对于项目目录)。
若使用全局路径,请使用 --base-dir ~/.openclaw/workspace/skills/exes。
主流程:创建新的 Ex Skill
步骤 1:收集基本信息(3 个问题)
问题顺序请参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md。只问 3 个问题:
- 昵称 / 代号(必填)
- 基本信息(一句话:交往多久、如何相识、分手多久、她的职业)
- 示例:
交往 3 年,大学同学,1 年前分手,她是设计师
- 示例:
- 性格简介(一句话:MBTI、星座、依恋类型、恋爱特征、你对她的印象)
- 示例:
ENFP 双子座,焦虑型依恋,黏人,翻旧账,嘴上说不在乎但其实最在乎
- 示例:
除昵称外,其他信息均可跳过。请先总结并确认,再进入下一步。
步骤 2:导入素材
询问用户希望如何提供素材:
How would you like to provide source materials?
[A] WeChat Chat Logs
Exported txt/html files (from WechatExporter or similar tools)
[B] iMessage / SMS
From Mac's chat.db or exported files
[C] Photos
Specify a folder, auto-extract timeline (EXIF metadata)
[D] Social Media
Weibo/Douban/Xiaohongshu/Instagram exports
[E] Upload Files
PDF / screenshots / any text
[F] Paste Text
Copy-paste text directly
Can mix and match, or skip entirely (generate from manual info only).
选项 A:微信聊天记录
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py --file {path} --target "{name}" --output /tmp/wechat_out.txt
然后读取 /tmp/wechat_out.txt
选项 B:iMessage / SMS
iMessage(macOS):
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --file {path} --target "{phone_or_name}" --output /tmp/imessage_out.txt
直接访问本地 chat.db(需要“完全磁盘访问权限”):
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --direct --target "{phone_or_name}" --output /tmp/imessage_out.txt
SMS:
python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py --file {path} --target "{phone_or_name}" --output /tmp/sms_out.txt
选项 C:照片
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py --dir {photo_directory} --output /tmp/photo_timeline.txt
然后读取时间线文件 /tmp/photo_timeline.txt。
可通过 Read 工具查看具体照片内容(Claude 原生支持图片)。
选项 D:社交媒体
python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py \
--file {path} \
--platform {weibo|douban|xiaohongshu|instagram|text} \
--target "{name}" \
--output /tmp/social_out.txt
选项 E:上传文件
- PDF / 图片:直接使用
Read工具 - Markdown / TXT:直接使用
Read工具
选项 F:粘贴文本
直接将用户粘贴的内容作为文本素材使用。无需工具。
如果用户说“没有文件”或“跳过”,则仅根据步骤 1 中的手动信息生成 Skill。
第 3 步:分析源材料
整合所有收集到的材料和用户提供的信息,从两个方向进行分析:
方向 A(记忆技能):
- 参阅
${CLAUDE_SKILL_DIR}/prompts/memories_analyzer.md,了解提取维度 - 提取:关系时间线、共同日常、偏好、冲突模式、情感动态
方向 B(角色设定):
- 参阅
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md,了解提取维度 - 将用户提供的标签转化为具体行为规则(参见标签转换表)
- 从材料中提取:沟通风格、情感逻辑、关系行为
第 4 步:生成并预览
使用 ${CLAUDE_SKILL_DIR}/prompts/memories_builder.md 生成记忆技能内容。
使用 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成角色设定内容(5 层结构)。
向用户展示摘要(每项 5-8 行),并询问:
Memories Summary:
- Together: {duration}
- Key moments: {N}
- Daily rituals: {xxx}
- Her preferences: {xxx}
...
Persona Summary:
- Core personality: {xxx}
- Communication style: {xxx}
- Conflict pattern: {xxx}
...
Confirm generation? Or need adjustments?
第 5 步:写入文件
获得用户确认后,执行以下操作:
1. 创建目录结构(Bash):
mkdir -p exes/{slug}/versions
mkdir -p exes/{slug}/knowledge/chats
mkdir -p exes/{slug}/knowledge/photos
mkdir -p exes/{slug}/knowledge/social
2-5. 使用 Write 工具写入 memories.md、persona.md、meta.json 和 SKILL.md。
告知用户:
✅ Ex Skill created!
Location: exes/{slug}/
Commands: /{slug} (full version)
/{slug}-memories (memories only)
/{slug}-persona (persona only)
If something feels off, just say "she wouldn't do that" and I'll update it.
演进模式:追加文件
用户提供新文件或文本时:
- 使用第 2 步的方法读取新内容
Read现有的exes/{slug}/memories.md和persona.md- 参阅
${CLAUDE_SKILL_DIR}/prompts/merger.md进行增量分析 - 归档当前版本(Bash):
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./exes - 使用
Edit工具将增量内容追加到相关文件 - 重新生成
SKILL.md(合并最新的 memories.md 和 persona.md) - 更新
meta.json的 version 和 updated_at
演进模式:对话纠正
用户表示“这不对”/“她不会这么做”时:
- 参阅
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md,识别纠正内容 - 判断其属于记忆(日期/地点/偏好)还是角色设定(性格/沟通)
- 生成纠正记录
- 使用
Edit工具将其追加到相关文件的## Correction Log部分 - 重新生成
SKILL.md
管理命令
/list-exes:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./exes
/ex-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./exes
/delete-ex {slug}:
确认后:
rm -rf exes/{slug}