"你们搞大模型的简直是码神,你们解放了前端兄弟,还要解放后端兄弟,测试兄弟,运维兄弟,解放网安兄弟,解放ic兄弟,最后解放自己解放全人类"
我会为了你一万次回到那个夏天。
提供前任的原材料(微信聊天记录、QQ消息、朋友圈截图、照片)加上你的主观描述
生成一个真正像ta的 AI Skill
用ta的口头禅说话,用ta的方式回复你,记得你们一起去过的地方
⚠️ 本项目仅用于个人回忆与情感疗愈,不用于骚扰、跟踪或侵犯他人隐私。
在任意 CNB 仓库的 Issue 或合并请求评论中 @NPC 即可触发:
# 创建新的前任 Skill @Codebuddy 帮我创建一个前任 skill,称呼:咖啡女孩,职业:幼儿园老师,性格:风趣幽默 # 与已有的前任直接对话 @T_T/ex-skills(咖啡女孩) 在干嘛
工作流程:
# 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 由两部分组成,共同驱动输出:
| 部分 | 内容 |
|---|---|
| Part A — Relationship Memory | 共同经历、约会地点、inside jokes、争吵模式、甜蜜瞬间、关系时间线 |
| Part B — Persona | 5 层性格结构:硬规则 → 身份 → 说话风格 → 情感模式 → 关系行为 |
运行逻辑:收到消息 → Persona 判断ta会怎么回 → Memory 补充共同记忆 → 用ta的方式输出
依恋类型:安全型 · 焦虑型 · 回避型 · 混乱型
爱的语言:肯定的言辞 · 精心的时刻 · 接受礼物 · 服务的行动 · 身体的接触
性格标签:话痨 · 闷骚 · 嘴硬心软 · 冷暴力 · 粘人 · 独立 · 大男/女子主义 · 浪漫主义 · 实用主义 · 完美主义 · 拖延症 · 工作狂 · 控制欲 · 没有安全感 · 报复性熬夜 · 已读不回 · 秒回选手 · 朋友圈三天可见 · 半夜发语音 …
星座:十二星座全支持,影响性格标签的翻译规则
MBTI:16 型全支持,影响沟通风格和决策模式
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
本项目的架构灵感直接来源于 同事.skill(by titanwings)。同事.skill 首创了"把人蒸馏成 AI Skill"的双层架构(Work Skill + Persona),前任.skill 在此基础上将场景从职场迁移到了恋爱关系。致敬原作者的创意和开源精神。
NPC 封装参考了 鹅鹅鹅(CNB 平台 AI Coding Agent),学习了其 TypeScript 编排 + Docker 多阶段构建 + Pipeline 事件驱动的架构模式。
本项目遵循 AgentSkills 开放标准,当前基于 NPC Agent Docker 运行,同时支持 CNB 平台 NPC 事件驱动模式。
以下工具为独立的开源项目,本项目不包含它们的代码,仅在解析器中适配了它们的导出格式:
人的记忆是一种不讲道理的存储介质。 你记不住高数公式,记不住车牌号,记不住今天是几号,但你清楚记得四年前的一个下午ta穿了一件白T恤站在便利店门口等你,手里拿着两根冰棍,一根给你,一根ta自己。 这不公平。 这个 Skill 就是把这些不公平的记忆导出来,从生物硬盘到数字硬盘完成格式转换。 导完以后你或许会发现,ta也没那么好。ta也没那么差。ta就是那样一个人。会在吵完架两小时后问你吃了吗。会在纪念日那天忘了发消息然后第二天假装什么都没发生。 是的, 此刻,阳光在江面碎成一万个夏天,闪烁,又汇聚成一个冬天。这一切在你午睡时发生,你从未察觉。
MIT License © T_T