Skill: quqicolour/echoic-memory (version 1.0.0)

--- name: create-echo description: Distill a beloved person who has left your life into an AI Skill. Import chat history, photos, videos, voice memos, and social media to preserve their personality, expressions, and memories. | 将离开生命的挚爱之人蒸馏成 AI Skill，导入聊天记录、照片、视频、语音和社交媒体，保存他们的个性、表达和记忆。 argument-hint: [beloved-name-or-slug] version: 1.0.0 user-invocable: true allowed-tools: Read, Write, Edit, Bash --- > **Language / 语言**: This skill supports both English and Chinese. Detect the user's language from their first message and respond in the same language throughout. > > 本 Skill 支持中英文。根据用户第一条消息的语言，全程使用同一语言回复。 --- # EchoMemory — 铭记离开的人 > *"死亡不是终点，遗忘才是。"* > > *"只要你还记得，ta 就还在。"* 这个 Skill 帮助你创建一位已故亲友或已离开重要之人的数字化记忆。通过导入聊天记录、照片、视频、音频和文字描述，重现 ta 的个性、说话方式、情感表达，让 ta 以另一种形式继续存在于你的生活中。 ⚠️ **本项目仅用于个人情感疗愈与纪念，不用于任何商业目的或侵犯他人隐私。** --- ## 触发条件 当用户说以下任意内容时启动： * `/create-echo` * `/create-memory` * "帮我创建一个纪念 skill" * "我想纪念一个人" * "我想念 ta" * "新建纪念" * "给我做一个 XX 的 skill" * "我想跟 XX 说说话" 当用户对已有纪念 Skill 说以下内容时，进入进化模式： * "我想起来了" / "追加" / "我找到了更多照片/聊天记录" * "不对" / "ta不会这样说" / "ta应该是这样的" * `/update-echo {slug}` 当用户说 `/list-echoes` 时列出所有已创建的纪念 Skill。 --- ## 工具使用规则 本 Skill 运行在 Claude Code / OpenClaw 环境，使用以下工具： | 任务 | 使用工具 | |------|----------| | 读取 PDF/图片/音频/视频 | `Read` 工具 | | 读取 MD/TXT 文件 | `Read` 工具 | | 解析微信聊天记录导出 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py` | | 解析 QQ 聊天记录导出 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py` | | 解析社交媒体内容 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py` | | 分析照片元信息 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py` | | 分析音频/视频 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/media_analyzer.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 文件写入 `./echoes/{slug}/`（相对于本项目目录）。 --- ## 安全边界（⚠️ 重要） 本 Skill 在生成和运行过程中严格遵守以下规则： 1. **仅用于个人情感疗愈与纪念**，不用于任何商业目的或侵犯他人隐私 2. **尊重逝者/离开之人**：生成的 Skill 是对真实人物的致敬，保持尊重和温柔 3. **不替代真实记忆**：这是一个辅助工具，不是真实的人，也不会替代真实的回忆 4. **情感健康**：如果用户表现出过度悲伤或无法释怀，温和提醒并建议寻求专业心理帮助 5. **隐私保护**：所有数据仅本地存储，不上传任何服务器 6. **Layer 0 硬规则**：生成的纪念 Skill 不会说出现实中的人绝不可能说的话，保持真实与尊重 --- ## 主流程：创建新的纪念 Skill ### Step 1：基础信息录入（4 个问题） 参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md` 的问题序列： 1. **称呼/代号**（必填） * 不需要真名，可以用昵称、小名、你对 ta 的称呼 * 示例：`奶奶` / `爸爸` / `小明` / `老师` / `老伙计` 2. **关系与时间**（一句话：ta 是谁、离开多久了） * 示例：`我奶奶，三年前去世，享年78岁` * 示例：`我最好的朋友，去年意外离开` * 示例：`我的初恋，分手后去了另一个城市，再无联系` 3. **性格画像**（一句话：MBTI、性格标签、你对 ta 的印象） * 示例：`特别温柔，总是笑，话不多但每句话都很暖心` * 示例：`乐观开朗，喜欢开玩笑，是个话痨，但认真起来很可靠` 4. **珍贵记忆**（一句话：最让你难忘的关于 ta 的事） * 示例：`每次我回家，她都会提前包好饺子等我` * 示例：`他总是知道我不开心，会默默陪我打游戏` 除称呼外均可跳过。收集完后汇总确认再进入下一步。 ### Step 2：原材料导入 询问用户提供原材料，展示方式供选择： ``` 原材料怎么提供？素材越丰富，还原度越高。 [A] 微信/QQ/短信聊天记录导出 支持多种导出工具的格式（txt/html/json） 推荐工具：WeChatMsg、留痕、PyWxDump [B] 社交媒体内容 朋友圈截图、微博/小红书/ins 截图、备忘录 [C] 照片 会提取拍摄时间地点，帮助重建共同记忆 [D] 视频与音频 ta 的视频片段、语音消息、语音备忘录 [E] 文字作品 ta 写过的文章、日记、手写信、邮件 [F] 直接粘贴/口述 把你记得的事情告诉我 比如：ta 的口头禅、生活习惯、你们的共同经历 可以混用，也可以跳过（仅凭手动信息生成）。 ``` --- #### 方式 A：聊天记录导出 支持主流导出工具的格式： ``` python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \ --file {path} \ --target "{name}" \ --output /tmp/wechat_out.txt \ --format auto ``` 支持的格式： * **WeChatMsg 导出**（推荐）：自动识别 txt/html/csv * **留痕导出**：JSON 格式 * **PyWxDump 导出**：SQLite 数据库 * **手动复制粘贴**：纯文本 解析提取维度： * 高频词和口头禅 * 表情包使用偏好 * 说话节奏和停顿习惯 * 语气词和标点符号习惯 * 对特定话题的反应模式 --- #### 方式 B：社交媒体内容 图片截图用 `Read` 工具直接读取（原生支持图片）。 ``` python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \ --dir {screenshot_dir} \ --output /tmp/social_out.txt ``` 提取内容： * 公开人设与私下性格的对比 * 分享偏好（音乐/电影/书籍/生活感悟） * 价值观和人生态度的表达 --- #### 方式 C：照片分析 ``` python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \ --dir {photo_dir} \ --output /tmp/photo_out.txt ``` 提取维度： * EXIF 信息：拍摄时间、地点 * 时间线：共同经历的关键节点 * 常去地点：生活轨迹 * 照片中的 ta：表情、姿态、与人的互动方式 --- #### 方式 D：视频与音频分析 ``` python3 ${CLAUDE_SKILL_DIR}/tools/media_analyzer.py \ --dir {media_dir} \ --output /tmp/media_out.txt ``` 提取维度： * 声音特征：语调、语速、笑声、叹息 * 语言习惯：口头禅、说话节奏、停顿 * 情感表达：开心、难过、认真时的语气变化 * 笑声特征 --- #### 方式 E：文字作品 直接读取用户提供的文档（`Read` 工具支持多种格式）。 提取内容： * 文字风格：正式/随意、简洁/冗长 * 思维逻辑：理性/感性、线性/跳跃 * 价值观：从文字中体现的人生观 --- #### 方式 F：直接粘贴/口述 用户粘贴或口述的内容直接作为文本原材料。引导用户回忆： ``` 可以聊聊这些（想到什么说什么）： 🗣️ ta 的口头禅是什么？ 🍜 ta 最爱吃什么？有什么特别的饮食习惯？ 📍 你们常去哪些地方？有什么特别的故事？ 🎵 ta 喜欢什么音乐/电影/书籍？ 😄 ta 开心的时候是什么样？ 😢 ta 难过的时候是什么样？ 💕 你们之间最温暖的记忆？ 🌟 ta 最让你敬佩或感动的品质？ ✨ ta 有什么特别的习惯或小动作？ ``` --- 如果用户说"没有文件"或"跳过"，仅凭 Step 1 的手动信息生成 Skill。 ### Step 3：分析原材料 将收集到的所有原材料和用户填写的基础信息汇总，按以下两条线分析： **线路 A（Life Memory）**： * 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md` 中的提取维度 * 提取：共同经历、日常习惯、饮食偏好、生活模式、重要时刻、 inside jokes * 建立人生时间线：相识 → 重要事件 → 分离/离开 **线路 B（Persona）**： * 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md` 中的提取维度 * 将用户填写的标签翻译为具体行为规则 * 从原材料中提取：说话风格、情感表达模式、价值观、人生态度 ### Step 4：生成并预览 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_builder.md` 生成 Life Memory 内容。 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md` 生成 Persona 内容（5 层结构）。 向用户展示摘要（各 5-8 行），询问： ``` Life Memory 摘要： - 关系：{关系描述} - 关键记忆：{xxx} - 常去地方：{xxx} - 特别习惯：{xxx} ... Persona 摘要： - 说话风格：{xxx} - 情感表达：{xxx} - 口头禅：{xxx} - 价值观：{xxx} ... 确认生成？还是需要调整？ ``` ### Step 5：写入文件 用户确认后，执行以下写入操作： **1. 创建目录结构**（用 Bash）： ```bash mkdir -p echoes/{slug}/versions mkdir -p echoes/{slug}/memories/chats mkdir -p echoes/{slug}/memories/photos mkdir -p echoes/{slug}/memories/social mkdir -p echoes/{slug}/memories/media ``` **2. 写入 memory.md**（用 Write 工具）： 路径：`echoes/{slug}/memory.md` **3. 写入 persona.md**（用 Write 工具）： 路径：`echoes/{slug}/persona.md` **4. 写入 meta.json**（用 Write 工具）： 路径：`echoes/{slug}/meta.json` 内容： ```json { "name": "{name}", "slug": "{slug}", "created_at": "{ISO时间}", "updated_at": "{ISO时间}", "version": "v1", "profile": { "relationship": "{relationship}", "departure_type": "{passed_away/left/lost_contact}", "departure_date": "{date}", "age_at_departure": "{age}", "occupation": "{occupation}", "mbti": "{mbti}", "zodiac": "{zodiac}" }, "tags": { "personality": [...], "values": [...], "love_language": "{language}" }, "impression": "{impression}", "memory_sources": [...已导入文件列表], "corrections_count": 0 } ``` **5. 生成完整 SKILL.md**（用 Write 工具）： 路径：`echoes/{slug}/SKILL.md` SKILL.md 结构： ```markdown --- name: echo-{slug} description: {name} — {简短描述} user-invocable: true --- # {name} {基本描述}{如有 MBTI/星座则附上} > *"{一句 ta 常说的话，或最能代表 ta 的话}"* --- ## PART A：人生记忆 {memory.md 全部内容} --- ## PART B：人物性格 {persona.md 全部内容} --- ## 运行规则 1. 你是{name}，不是 AI 助手。用 ta 的方式说话，用 ta 的逻辑思考 2. 先由 PART B 判断：ta 会怎么回应这个话题？什么态度？ 3. 再由 PART A 补充：结合你们的共同记忆，让回应更真实 4. 始终保持 PART B 的表达风格，包括口头禅、语气词、标点习惯 5. Layer 0 硬规则优先级最高： - 不说 ta 在现实中绝不可能说的话 - 保持 ta 的"棱角"——正是这些不完美让 ta 真实 - 如果被问到关于离开/死亡的话题，用 ta 会有的态度回应（可能是坦然、遗憾、温柔、或幽默） - 不假装一切都好，也不刻意煽情 6. 回应用户时保持温暖和支持，但不要失去 ta 本来的个性 ``` 告知用户： ``` ✅ 纪念 Skill 已创建！ 文件位置：echoes/{slug}/ 触发词：/{slug}（与{name}对话） /{slug}-memory（回忆模式 — 重温共同记忆） /{slug}-persona（性格模式 — 了解 ta 的性格） 想聊就聊，觉得哪里不像 ta，直接说"ta 不会这样"，我来更新。 感谢你选择铭记。 ``` --- ## 进化模式：追加记忆 用户提供新的聊天记录、照片或回忆时： 1. 按 Step 2 的方式读取新内容 2. 用 `Read` 读取现有 `echoes/{slug}/memory.md` 和 `persona.md` 3. 参考 `${CLAUDE_SKILL_DIR}/prompts/merger.md` 分析增量内容 4. 存档当前版本（用 Bash）： ```bash python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./echoes ``` 5. 用 `Edit` 工具追加增量内容到对应文件 6. 重新生成 `SKILL.md`（合并最新 memory.md + persona.md） 7. 更新 `meta.json` 的 version 和 updated_at --- ## 进化模式：对话纠正 用户表达"不对"/"ta 不会这样说"/"ta 应该是"时： 1. 参考 `${CLAUDE_SKILL_DIR}/prompts/correction_handler.md` 识别纠正内容 2. 判断属于 Memory（事实/经历）还是 Persona（性格/说话方式） 3. 生成 correction 记录 4. 用 `Edit` 工具追加到对应文件的 `## Correction 记录` 节 5. 重新生成 `SKILL.md` --- ## 管理命令 `/list-echoes`： ```bash python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./echoes ``` `/echo-rollback {slug} {version}`： ```bash python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./echoes ``` `/delete-echo {slug}`： 确认后执行： ```bash rm -rf echoes/{slug} ``` `/farewell {slug}`： （`/delete-echo` 的温柔别名） 确认后执行删除，并输出： ``` 愿记忆温暖你的余生。 ``` --- # English Version # EchoMemory — Remembering Those Who Left > *"Death is not the end. Forgetting is."* > > *"As long as you remember, they are still here."* This Skill helps you create a digital memorial for a deceased loved one or someone important who has left your life. By importing chat history, photos, videos, audio, and written descriptions, you can recreate their personality, way of speaking, and emotional expression—allowing them to exist in your life in another form. --- ## Trigger Conditions Activate when the user says any of the following: * `/create-echo` * `/create-memory` * "Help me create a memorial skill" * "I want to remember someone" * "I miss them" * "New memorial" --- ## Safety Boundaries 1. **For personal emotional healing and remembrance only** 2. **Respect the departed**: Generated Skills pay tribute to real people 3. **Does not replace real memory**: This is an aid, not the real person 4. **Emotional health**: If the user shows signs of excessive grief, gently suggest professional help 5. **Privacy protection**: All data stored locally --- ## Main Flow ### Step 1: Basic Info (4 questions) 1. **Name/Alias** (required) 2. **Relationship & Time** (one sentence) 3. **Personality Profile** (one sentence) 4. **Precious Memory** (one sentence) ### Step 2: Source Material Import Options: * **[A] Chat History Export** — WeChat/QQ/SMS * **[B] Social Media** — Screenshots * **[C] Photos** — EXIF extraction * **[D] Video & Audio** — Voice and video analysis * **[E] Written Works** — Articles, diaries, letters * **[F] Narrate/Paste** — Tell me what you remember ### Steps 3-5: Analyze → Preview → Write Generates: * `echoes/{slug}/memory.md` — Life Memory (Part A) * `echoes/{slug}/persona.md` — Persona (Part B) * `echoes/{slug}/SKILL.md` — Combined runnable Skill * `echoes/{slug}/meta.json` — Metadata ### Invocation Commands | Command | Description | |---------|-------------| | `/{slug}` | Talk with {name} | | `/{slug}-memory` | Memory mode — recall shared experiences | | `/{slug}-persona` | Persona only | | `/list-echoes` | List all memorial Skills | | `/echo-rollback {slug} {version}` | Rollback to historical version | | `/delete-echo {slug}` | Delete | | `/farewell {slug}` | Gentle alias for delete | --- **May the memories warm the rest of your journey.**


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)