-
Notifications
You must be signed in to change notification settings - Fork 537
增加关系反思与经验教训功能 #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
增加关系反思与经验教训功能 #18
Changes from all commits
dcffd9a
065279a
f505e38
c2f23b3
745cb57
ae12027
94cecb0
2820581
3c2cfc4
f7f84a6
e37d160
50c8ea5
18b4015
61e218d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -20,3 +20,8 @@ knowledge/ | |
| # 环境 | ||
| .env | ||
| venv/ | ||
|
|
||
| .spec-workflow | ||
| .claude | ||
| .cache | ||
| logs/ | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,79 @@ | ||||||
| # CLAUDE.md | ||||||
|
|
||||||
| This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. | ||||||
|
|
||||||
| ## 项目概述 | ||||||
|
|
||||||
| ex-skill(原名 ex-partner-skill)是一个 Claude Code 元技能(meta-skill),用于将过往恋爱关系的原始素材(微信/QQ 聊天记录、照片、社交媒体帖子、个人叙述)转化为可独立运行的 AI Skill,模拟前任的说话风格、情感模式和共同记忆。用于个人情感反思与疗愈,内置安全边界。 | ||||||
|
|
||||||
| ## 项目上下文 | ||||||
|
|
||||||
| 本项目使用 Kontext 生成了结构化上下文,存放在 `.kontext/` 目录中。开始任务前请先阅读以下制品: | ||||||
|
|
||||||
| - `.kontext/PROJECT_MANIFEST.json` — 项目清单(定位、技术栈、核心流程) | ||||||
| - `.kontext/ARCHITECTURE_MAP.json` — 架构分层与模块归属 | ||||||
| - `.kontext/CONVENTIONS.json` — 编码规范与约束 | ||||||
| - `.kontext/module_contracts/` — 各模块的职责边界与接口契约 | ||||||
|
|
||||||
| 请基于这些上下文理解项目结构后再进行开发。 | ||||||
|
|
||||||
| ## 运行方式 | ||||||
|
|
||||||
| 这不是传统应用程序,没有构建步骤。项目作为 Claude Code Skill 运行,入口文件是 `SKILL.md`。 | ||||||
|
|
||||||
| **安装到项目:** | ||||||
| ```bash | ||||||
| mkdir -p .claude/skills | ||||||
| git clone <repo> .claude/skills/create-ex | ||||||
| pip3 install -r requirements.txt # 可选,仅 Pillow 用于照片 EXIF 读取 | ||||||
| ``` | ||||||
|
|
||||||
| **触发命令:** | ||||||
| - `/create-ex` — 创建新的前任技能(5 步流程) | ||||||
| - `/list-exes` — 列出所有已生成的前任技能 | ||||||
| - `/{slug}` — 与生成的前任技能对话(完整模式) | ||||||
| - `/update-ex {slug}` — 进入演化模式(追加素材) | ||||||
| - `/ex-rollback {slug} {version}` — 回滚到历史版本 | ||||||
| - `/delete-ex {slug}` — 删除已生成的技能 | ||||||
|
|
||||||
| **单独运行 Python 工具:** | ||||||
| ```bash | ||||||
| python3 tools/wechat_parser.py --file <path> --target <name> --output <output_path> | ||||||
| python3 tools/qq_parser.py --file <path> --target <name> --output <output_path> | ||||||
| python3 tools/social_parser.py --dir <dir> --output <output_path> | ||||||
| python3 tools/photo_analyzer.py --dir <dir> --output <output_path> | ||||||
| python3 tools/skill_writer.py --action list --base-dir ./exes | ||||||
| python3 tools/version_manager.py --action backup --slug <slug> --base-dir ./exes | ||||||
| ``` | ||||||
|
|
||||||
| ## 架构 | ||||||
|
|
||||||
| 项目采用 6 层架构,层间单向依赖: | ||||||
|
|
||||||
| 1. **入口编排层**(`SKILL.md`)— 主控制器,定义触发条件、5 步创建流程、演化模式、管理命令和安全边界。Claude Code 直接解释执行此文件。 | ||||||
| 2. **提示词模板层**(`prompts/`)— 7 个无状态 Markdown 文件,定义各阶段的 LLM 提示词模板,通过 `${CLAUDE_SKILL_DIR}/prompts/xxx.md` 引用。 | ||||||
|
||||||
| 2. **提示词模板层**(`prompts/`)— 7 个无状态 Markdown 文件,定义各阶段的 LLM 提示词模板,通过 `${CLAUDE_SKILL_DIR}/prompts/xxx.md` 引用。 | |
| 2. **提示词模板层**(`prompts/`)— 10 个无状态 Markdown 文件,定义各阶段的 LLM 提示词模板(包含 lessons_analyzer / lessons_builder / reflection_coach 等),通过 `${CLAUDE_SKILL_DIR}/prompts/xxx.md` 引用。 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -64,6 +64,8 @@ pip3 install -r requirements.txt | |
| | `/{slug}` | 调用完整 Skill(像ta一样跟你聊天) | | ||
| | `/{slug}-memory` | 回忆模式(帮你回忆那些事) | | ||
| | `/{slug}-persona` | 仅人物性格 | | ||
| | `/reflect {slug}` | 关系反思模式(复盘经验教训) | | ||
| | `/update-ex {slug}` | 追加素材或纠正性格 | | ||
| | `/ex-rollback {slug} {version}` | 回滚到历史版本 | | ||
| | `/delete-ex {slug}` | 删除 | | ||
| | `/let-go {slug}` | 放下(delete 的温柔别名) | | ||
|
|
@@ -114,6 +116,25 @@ pip3 install -r requirements.txt | |
| 算了不想吵 | ||
| ``` | ||
|
|
||
| **场景五:关系反思** | ||
|
|
||
| ``` | ||
| 用户 ❯ /reflect xx | ||
|
|
||
| 前任.skill ❯ 已加载 xx 的关系反思报告。 | ||
|
|
||
| 你们的核心冲突是「焦虑-回避」追逃模式: | ||
| 你越追问确认,她越需要空间退后; | ||
| 她越退后沉默,你越焦虑追问。 | ||
|
|
||
| 想聊哪个维度? | ||
| - 沟通模式:你们的「翻译错误」在哪里 | ||
| - 冲突循环:每次吵架的升级路径 | ||
| - 课题清单:7 条可行动的成长建议 | ||
|
|
||
| 也可以说「从TA的角度看」切换视角。 | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## 功能特性 | ||
|
|
@@ -130,12 +151,13 @@ pip3 install -r requirements.txt | |
|
|
||
| ### 生成的 Skill 结构 | ||
|
|
||
| 每个前任 Skill 由两部分组成,共同驱动输出: | ||
| 每个前任 Skill 由三部分组成,共同驱动输出: | ||
|
|
||
| | 部分 | 内容 | | ||
| |------|------| | ||
| | **Part A — Relationship Memory** | 共同经历、约会地点、inside jokes、争吵模式、甜蜜瞬间、关系时间线 | | ||
| | **Part B — Persona** | 5 层性格结构:硬规则 → 身份 → 说话风格 → 情感模式 → 关系行为 | | ||
| | **Part C — Lessons** | 7 维度关系反思:性格画像、沟通模式、冲突循环、需求错配、边界、成长轨迹、分手复盘 + 可行动课题清单 | | ||
|
|
||
| 运行逻辑:`收到消息 → Persona 判断ta会怎么回 → Memory 补充共同记忆 → 用ta的方式输出` | ||
|
Comment on lines
+154
to
162
|
||
|
|
||
|
|
@@ -157,6 +179,26 @@ pip3 install -r requirements.txt | |
| * **对话纠正** → 说「ta不会这样说」→ 写入 Correction 层,立即生效 | ||
| * **版本管理** → 每次更新自动存档,支持回滚 | ||
|
|
||
| ### 关系反思(`/reflect`) | ||
|
|
||
| 除了模拟对话,前任.skill 还提供**关系反思**功能——帮你从这段关系中学到东西。 | ||
|
|
||
| 输入 `/reflect {slug}` 进入反思模式,系统会基于聊天记录自动生成一份 7 维度的关系反思报告(`lessons.md`): | ||
|
|
||
| | 维度 | 分析内容 | | ||
| |------|----------| | ||
| | 性格画像 | 双方各自的 MBTI/依恋类型/情绪特征,以及组合效应 | | ||
| | 沟通模式 | 各自的沟通风格、不匹配之处、「翻译错误」 | | ||
| | 冲突循环 | 反复出现的争吵模式、升级路径、收尾方式 | | ||
| | 需求错配 | 双方核心需求是什么、哪些没被满足、怎么互相踩雷 | | ||
| | 边界与自我 | 谁在过度迁就、哪些边界被突破 | | ||
| | 成长轨迹 | 关系期间双方各自的变化 | | ||
| | 分手复盘 | 根本原因、被忽略的信号、如果能重来 | | ||
|
|
||
| 最后提炼 5-10 条**可行动的成长课题**,每条包含:现象 → 根因 → 下段关系中怎么做。 | ||
|
|
||
| 反思模式支持对话式深入探讨——你可以说「从TA的角度看」切换视角,也可以提供新素材重新分析。对话中产生的感悟会自动追加到报告中。 | ||
|
|
||
| --- | ||
|
|
||
| ## 项目结构 | ||
|
|
@@ -170,8 +212,11 @@ create-ex/ | |
| │ ├── intake.md # 对话式信息录入 | ||
| │ ├── memory_analyzer.md # 关系记忆提取 | ||
| │ ├── persona_analyzer.md # 性格行为提取(含标签翻译表) | ||
| │ ├── lessons_analyzer.md # 关系反思 7 维度分析 | ||
| │ ├── memory_builder.md # memory.md 生成模板 | ||
| │ ├── persona_builder.md # persona.md 五层结构模板 | ||
| │ ├── lessons_builder.md # lessons.md 反思报告模板 | ||
| │ ├── reflection_coach.md # /reflect 对话式反思指引 | ||
| │ ├── merger.md # 增量 merge 逻辑 | ||
| │ └── correction_handler.md # 对话纠正处理 | ||
| ├── tools/ # Python 工具 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -30,6 +30,8 @@ allowed-tools: Read, Write, Edit, Bash | |
| * "不对" / "ta不会这样说" / "ta应该是这样的" | ||
| * `/update-ex {slug}` | ||
|
|
||
| 当用户说 `/reflect {slug}` 时进入关系反思对话模式。 | ||
|
|
||
| 当用户说 `/list-exes` 时列出所有已生成的前任。 | ||
|
|
||
| --- | ||
|
|
@@ -223,6 +225,12 @@ python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \ | |
| * 将用户填写的标签翻译为具体行为规则(参见标签翻译表) | ||
| * 从原材料中提取:说话风格、情感表达模式、依恋类型、爱的语言 | ||
|
|
||
| **线路 C(Relationship Lessons)**: | ||
|
|
||
| * 参考 `${CLAUDE_SKILL_DIR}/prompts/lessons_analyzer.md` 中的 7 个分析维度 | ||
| * 从双方视角分析:性格画像、沟通模式、冲突循环、情感需求、边界问题、成长轨迹、分手复盘 | ||
| * 提炼 5-10 条可行动的成长课题 | ||
|
Comment on lines
+228
to
+232
|
||
|
|
||
| ### Step 4:生成并预览 | ||
|
|
||
| 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_builder.md` 生成 Relationship Memory 内容。 | ||
|
|
@@ -245,6 +253,12 @@ Persona 摘要: | |
| - 口头禅:{xxx} | ||
| ... | ||
|
|
||
| 关系反思摘要: | ||
| - 性格组合:{xxx} | ||
| - 核心冲突模式:{xxx} | ||
| - 最大的课题:{xxx} | ||
| ... | ||
|
Comment on lines
+256
to
+260
|
||
|
|
||
| 确认生成?还是需要调整? | ||
| ``` | ||
|
|
||
|
|
@@ -267,7 +281,11 @@ mkdir -p exes/{slug}/memories/social | |
| **3. 写入 persona.md**(用 Write 工具): | ||
| 路径:`exes/{slug}/persona.md` | ||
|
|
||
| **4. 写入 meta.json**(用 Write 工具): | ||
| **4. 写入 lessons.md**(用 Write 工具): | ||
| 路径:`exes/{slug}/lessons.md` | ||
| 参考 `${CLAUDE_SKILL_DIR}/prompts/lessons_builder.md` 模板生成关系反思报告。 | ||
|
|
||
| **5. 写入 meta.json**(用 Write 工具): | ||
| 路径:`exes/{slug}/meta.json` | ||
| 内容: | ||
|
|
||
|
|
@@ -297,7 +315,7 @@ mkdir -p exes/{slug}/memories/social | |
| } | ||
| ``` | ||
|
|
||
| **5. 生成完整 SKILL.md**(用 Write 工具): | ||
| **6. 生成完整 SKILL.md**(用 Write 工具): | ||
| 路径:`exes/{slug}/SKILL.md` | ||
|
|
||
| SKILL.md 结构: | ||
|
|
@@ -349,8 +367,10 @@ user-invocable: true | |
| 触发词:/{slug}(完整版 — 像ta一样跟你聊天) | ||
| /{slug}-memory(回忆模式 — 帮你回忆那些事) | ||
| /{slug}-persona(性格模式 — 仅人物性格) | ||
| /reflect {slug}(反思模式 — 聊聊经验教训) | ||
|
|
||
| 想聊就聊,觉得哪里不像ta,直接说"ta不会这样",我来更新。 | ||
| 想反思这段关系,用 /reflect {slug} 进入反思模式。 | ||
| 不想聊了也没关系。 | ||
| ``` | ||
|
|
||
|
|
@@ -388,6 +408,26 @@ user-invocable: true | |
|
|
||
| ## 管理命令 | ||
|
|
||
| ### `/reflect {slug}` — 关系反思对话 | ||
|
|
||
| 进入与指定前任相关的反思对话模式: | ||
|
|
||
| 1. 用 `Read` 工具读取 `exes/{slug}/memory.md` 和 `exes/{slug}/persona.md` | ||
| 2. 尝试读取 `exes/{slug}/lessons.md`——如果文件不存在,则自动生成: | ||
| - 以已有的 memory.md + persona.md 作为分析素材 | ||
| - 参考 `${CLAUDE_SKILL_DIR}/prompts/lessons_analyzer.md` 进行 7 维度分析 | ||
| - 参考 `${CLAUDE_SKILL_DIR}/prompts/lessons_builder.md` 生成 lessons.md | ||
| - 用 `Write` 工具写入 `exes/{slug}/lessons.md` | ||
| - 告知用户:"已基于现有数据生成了关系反思报告,我们可以开始聊了。" | ||
| 3. 参考 `${CLAUDE_SKILL_DIR}/prompts/reflection_coach.md` 的对话指引 | ||
| 4. 开始对话式反思,支持: | ||
| - 深入探讨报告中的任何维度 | ||
| - 说"从 TA 的角度看"切换视角 | ||
| - 对话中产生的感悟自动追加到 lessons.md | ||
| - 说"重新分析"并提供新素材重新生成报告 | ||
|
|
||
| --- | ||
|
|
||
| `/list-exes`: | ||
|
|
||
| ```bash | ||
|
|
@@ -497,6 +537,7 @@ Same flow as Chinese version above. Generates: | |
| | `/{slug}` | Full Skill (chat like them) | | ||
| | `/{slug}-memory` | Memory mode (recall shared experiences) | | ||
| | `/{slug}-persona` | Persona only | | ||
| | `/reflect {slug}` | Reflection mode (relationship lessons & coaching) | | ||
| | `/ex-rollback {slug} {version}` | Rollback to historical version | | ||
| | `/delete-ex {slug}` | Delete | | ||
| | `/let-go {slug}` | Gentle alias for delete | | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
“触发命令”列表尚未包含本 PR 新增的
/reflect {slug};同时后文“生成产物层”输出文件列表也未包含exes/{slug}/lessons.md。建议补齐这两处,使 CLAUDE.md 与当前功能/目录结构一致,方便后续开发和排查问题。