logo
0
0
WeChat Login
fix: 删除无用配置

前任.skill

"你们搞大模型的简直是码神,你们解放了前端兄弟,还要解放后端兄弟,测试兄弟,运维兄弟,解放网安兄弟,解放ic兄弟,最后解放自己解放全人类"

我会为了你一万次回到那个夏天。

License: MIT Python 3.9+ NPC Agent AgentSkills

 

提供前任的原材料(微信聊天记录、QQ消息、朋友圈截图、照片)加上你的主观描述
生成一个真正像ta的 AI Skill
用ta的口头禅说话,用ta的方式回复你,记得你们一起去过的地方

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

使用方式 · 交互式使用 · 效果示例 · English


使用方式

方式一:CNB 平台 NPC(推荐)

在任意 CNB 仓库的 Issue 或合并请求评论中 @NPC 即可触发:

# 创建新的前任 Skill @Codebuddy 帮我创建一个前任 skill,称呼:咖啡女孩,职业:幼儿园老师,性格:风趣幽默 # 与已有的前任直接对话 @T_T/ex-skills(咖啡女孩) 在干嘛

工作流程

  1. @ Codebuddy → 提供前任信息 → 自动生成 Skill → 自动提交 PR 到仓库
  2. 合并 PR 后,前任角色注册生效 → 可以直接 @ 该前任对话
  3. 每个前任都是独立的 NPC 角色,互不干扰

方式二:本地 Docker 运行

# 1. 克隆仓库 git clone https://cnb.cool/T_T/ex-skills cd ex-skills # 2. 设置环境变量(选择其一) export CNB_TOKEN="your_token_here" # 或 export OPENAI_API_KEY="sk-xxx" export LLM_BASE_URL="https://api.deepseek.com/v1" export LLM_MODEL="deepseek-chat" # 3. 运行 chmod +x npc-skill ./npc-skill

详细说明:INSTALL.md · 快速开始:QUICK_START.md


交互式使用

运行 ./npc-skill 进入交互模式后,直接对 Agent 说:

你:帮我创建前任 skill

Agent 会引导你完成 5 个步骤:基础信息 → 原材料导入 → 智能分析 → 预览确认 → 写入文件。所有字段均可跳过,仅凭口述描述也能生成。

有聊天记录?

# 把文件放到 data/imports/ 目录 cp ~/Downloads/wechat_export.txt data/imports/ # 运行后在对话中告诉 Agent 你:我有微信聊天记录,在 data/imports/wechat_export.txt

创建完成后与前任对话

CNB 平台(合并 PR 后):

# 直接 @ 前任角色名 @T_T/ex-skills(咖啡女孩) 在干嘛 @T_T/ex-skills(咖啡女孩) 还记得我们第一次约会吗

本地 Docker

# 完整版(像 ta 一样跟你聊天) npc agent --system-prompt "@exes/{slug}/SKILL.md" --message "在干嘛" # 回忆模式(帮你回忆那些事) npc agent --system-prompt "@exes/{slug}/memory.md" --message "还记得第一次约会吗" # 性格模式(仅人物性格) npc agent --system-prompt "@exes/{slug}/persona.md" --message "你觉得我怎样"

管理命令

在交互模式中对 Agent 说即可:

说法功能
"列出所有前任"列出已创建的所有前任 Skill
"我有新的聊天记录"追加记忆,自动分析增量
"ta 不会这样说"对话纠正,立即生效
"回滚到上一版"回滚到历史版本
"删掉 {slug}"删除该前任 Skill
"放下 {slug}"同上(温柔别名)

效果示例

输入:初恋,在一起三年,大学时期,ENFP,双子座,话痨,半夜给我发语音,分手后还给我点赞

场景一:日常聊天

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

场景二:回忆杀

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

场景三:深夜emo

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

场景四:吵架模式

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

功能特性

数据源

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

生成的 Skill 结构

每个前任 Skill 由两部分组成,共同驱动输出:

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

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

支持的标签

依恋类型:安全型 · 焦虑型 · 回避型 · 混乱型

爱的语言:肯定的言辞 · 精心的时刻 · 接受礼物 · 服务的行动 · 身体的接触

性格标签:话痨 · 闷骚 · 嘴硬心软 · 冷暴力 · 粘人 · 独立 · 大男/女子主义 · 浪漫主义 · 实用主义 · 完美主义 · 拖延症 · 工作狂 · 控制欲 · 没有安全感 · 报复性熬夜 · 已读不回 · 秒回选手 · 朋友圈三天可见 · 半夜发语音 …

星座:十二星座全支持,影响性格标签的翻译规则

MBTI:16 型全支持,影响沟通风格和决策模式

进化机制

  • 追加记忆 → 找到更多聊天记录/照片 → 自动分析增量 → merge 进对应部分
  • 对话纠正 → 说「ta不会这样说」→ 写入 Correction 层,立即生效
  • 版本管理 → 每次更新自动存档,支持回滚
  • PR 持久化 → 创建/更新 Skill 后自动提交 PR → 合并后角色永久生效 → 可直接 @ 对话

项目结构

ex-skills/ ├── SKILL.md # ⭐ 核心 Skill 文件(v2.0.0) ├── npc.json # NPC Agent 配置 ├── .cnb.yml # CNB Pipeline CI/CD 配置(含多角色触发) ├── .cnb/settings.yml # CNB 平台 NPC 角色注册 ├── Dockerfile # 多阶段构建镜像(TypeScript 编译 + NPC 运行时) ├── docker-compose.yml # 本地开发/测试用 ├── start.sh # 容器入口脚本 ├── src/ # TypeScript 源码(NPC 编排层) │ ├── app.ts # 入口:流程编排 │ ├── env.ts # 环境变量读取 │ ├── prompt.ts # System Prompt 构建 │ ├── agent.ts # NPC Agent CLI 调用 │ ├── skills.ts # 已有 Skill 扫描器 │ ├── tools/cnb.ts # CNB 评论 API 封装 │ └── utils/ # 工具模块(日志/链接转换) ├── exes/ # 已创建的前任 Skill(通过 PR 持久化) │ └── coffee-girl/ # 示例:咖啡女孩 │ ├── SKILL.md # 完整 Skill(Memory + Persona) │ ├── memory.md # 关系记忆 │ ├── persona.md # 人格档案 │ └── meta.json # 元信息 ├── npc-skill # 本地一键启动脚本 ├── 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 # 版本存档与回滚 ├── docs/ # 文档 │ ├── cnb-api-quickref.md # CNB API 快速参考 │ ├── PRD.md # 产品需求文档 │ ├── USAGE_EXAMPLES.md # 使用示例 │ ├── NPC_MIGRATION_GUIDE.md # NPC 迁移指南 │ └── NPC_TESTING.md # 测试指南 ├── package.json # Node.js 项目配置 ├── tsconfig.json # TypeScript 编译配置 ├── requirements.txt # Python 依赖 └── LICENSE

注意事项

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

致敬 & 引用

本项目的架构灵感直接来源于 同事.skill(by titanwings)。同事.skill 首创了"把人蒸馏成 AI Skill"的双层架构(Work Skill + Persona),前任.skill 在此基础上将场景从职场迁移到了恋爱关系。致敬原作者的创意和开源精神。

NPC 封装参考了 鹅鹅鹅(CNB 平台 AI Coding Agent),学习了其 TypeScript 编排 + Docker 多阶段构建 + Pipeline 事件驱动的架构模式。

本项目遵循 AgentSkills 开放标准,当前基于 NPC Agent Docker 运行,同时支持 CNB 平台 NPC 事件驱动模式。


推荐的聊天记录导出工具

以下工具为独立的开源项目,本项目不包含它们的代码,仅在解析器中适配了它们的导出格式:

  • WeChatMsg — 微信聊天记录导出(Windows)
  • PyWxDump — 微信数据库解密导出(Windows)
  • 留痕 — 微信聊天记录导出(macOS)

写在最后

人的记忆是一种不讲道理的存储介质。 你记不住高数公式,记不住车牌号,记不住今天是几号,但你清楚记得四年前的一个下午ta穿了一件白T恤站在便利店门口等你,手里拿着两根冰棍,一根给你,一根ta自己。 这不公平。 这个 Skill 就是把这些不公平的记忆导出来,从生物硬盘到数字硬盘完成格式转换。 导完以后你或许会发现,ta也没那么好。ta也没那么差。ta就是那样一个人。会在吵完架两小时后问你吃了吗。会在纪念日那天忘了发消息然后第二天假装什么都没发生。 是的, 此刻,阳光在江面碎成一万个夏天,闪烁,又汇聚成一个冬天。这一切在你午睡时发生,你从未察觉。

MIT License © T_T