by agenmod
♾️ 开源数字永生框架 — 从聊天记录蒸馏任何人的七维数字分身。支持微信/飞书/iMessage/Telegram等12+平台,7种角色模板,对齐 OpenClaw Soul Spec 标准。一行指令让你的AI学会蒸馏。
# Add to your Claude Code skills
git clone https://github.com/agenmod/immortal-skill根据用户第一条消息的语言,全程使用同一语言。
选择角色 → 多平台采集 → 分维度提取(procedure / interaction / memory / personality)→ 证据分级 → 冲突合并 → 输出符合 Agent Skills 的技能目录。
{baseDir}。./skills/immortals/<slug>/。slug:小写字母、数字、连字符,与最终 SKILL.md 的 name 一致。向用户询问蒸馏对象的角色,读取对应模板:
你想蒸馏谁?
[1] 🪞 自己(全维度数字分身)
[2] 🏢 同事(工作方式与沟通风格)
[3] 🎓 导师/Mentor(教学方式与指导智慧)
[4] 🏠 亲人(家族记忆与生活智慧)
[5] 💕 伴侣/前任(关系记忆与互动模式)
[6] 🤝 朋友(友谊互动与共同经历)
[7] 🌐 公众人物(公开风格与方法论)
读取 {baseDir}/personas/<选择>.md 了解该角色的特有维度与要求。
同时读取 {baseDir}/personas/_base.md 了解通用维度。
根据角色模板中的伦理要求,在收集材料前告知用户。不同角色的伦理侧重:
读取 {baseDir}/recipes/intake-protocol.md,按角色类型确定数据源。
提供以下采集方式:
材料怎么提供?
[A] 自动采集(推荐)
飞书 / 钉钉 / Slack / Discord / Telegram / Email
→ 扫描频道 → 拉取消息
[B] 本地数据库
微信(需第三方导出或本地 SQLite)
iMessage(macOS,需 Full Disk Access)
[C] 归档文件
WhatsApp 导出 / Twitter/X 归档 / Google Takeout
Facebook 数据下载 / 微博导出
[D] 上传/粘贴文件
PDF / JSON / CSV / Markdown / 纯文本
[E] 直接粘贴文字
可混用多种方式。
2026 年了,所有人都在被蒸馏。
但凭什么别人来决定你被蒸成什么样?
你的同事跑路了?蒸馏他。让他的经验还能接着用。
你的导师退休了?蒸馏他。让「这事你得这么想」还能继续响在你耳边。
你奶奶的唠叨快忘了?蒸馏她。让 AI 替她继续念叨你。
你的朋友不联系了?蒸馏他。你们之间最好笑的对话不该消失。
你前任的语气忘不掉?蒸馏 TA。——算了这个你自己决定。
你自己呢?万一哪天你不在了,谁来当你?
别人蒸馏你之前,先把自己蒸明白。
谁能被蒸馏? · 蒸什么? · 从哪蒸? · 怎么蒸? · 蒸出来长什么样? · English
简单来说:你认识的所有人。包括你自己。
| | 蒸谁 | 蒸什么重点 | 伦理底线 | |:---:|:---:|---------|---------| | 🪞 | 你自己 | 全蒸。怎么做事、怎么说话、经历过什么、是什么人 | 你的数据你做主 | | 🏢 | 跑路的同事 | 工作流程 + 沟通风格 | 仅限团队内部用 | | 🎓 | 退休的导师 | 教学方式 + 人生智慧 | 经本人授权 | | 👴 | | 家族记忆 + 生活智慧 + 唠叨语气 | 家人知情同意 | | 💔 | | 关系互动 + 共同记忆 + 说话方式 | 正面回忆,严格脱敏 | | 🍻 | | 友谊互动 + 共同经历 + 社交偏好 | 对方知情同意 | | 🌍 | | 公开风格 + 方法论 + 公开事迹 | 仅限公开资料 |
No comments yet. Be the first to share your thoughts!
自动采集使用统一 CLI:
python3 {baseDir}/kit/immortal_cli.py collect --platform <平台> [选项]
详见 {baseDir}/docs/PLATFORM-GUIDE.md。
根据角色模板确定所需维度,按需加载对应 Prompt:
| 维度 | Prompt | Recipe | 适用角色 |
|------|--------|--------|---------|
| 程序性 | prompts/procedural-extractor.md | recipes/procedural-mining.md | 同事、导师、自己、公众人物 |
| 互动性 | prompts/interaction-extractor.md | recipes/interaction-mining.md | 所有 |
| 记忆 | prompts/memory-extractor.md | recipes/memory-mining.md | 自己、亲人、伴侣、朋友、导师、公众人物 |
| 性格 | prompts/personality-extractor.md | recipes/personality-mining.md | 所有(同事仅工作相关) |
每条输出标注证据级别:verbatim / artifact / impression。
参考 {baseDir}/examples/ 下的示例查看产出物格式。
读取 {baseDir}/recipes/merge-policy.md,执行证据分级合并。矛盾项写入 conflicts.md。
python3 {baseDir}/kit/manifest_tool.py init --slug <slug> --base ./skills/immortals --persona <角色>
用 Write 工具写入各维度文件,然后读取 {baseDir}/prompts/skill-assembler.md 生成 SKILL.md。
python3 {baseDir}/kit/manifest_tool.py stamp --slug <slug> --base ./skills/immortals --sources "<来源>"
python3 {baseDir}/kit/version_tool.py snapshot --slug <slug> --base ./skills/immortals --note "追加前"
然后按 Phase 2-6 增量更新。
先快照,再读取 {baseDir}/prompts/correction-handler.md 处理。
python3 {baseDir}/kit/version_tool.py list --slug <slug> --base ./skills/immortals
python3 {baseDir}/kit/version_tool.py rollback --slug <slug> --base ./skills/immortals --tag <快照>
name 与目录名一致且符合命名规则。verbatim + artifact 占比是否达标?impression 是否隔离到专属区?conflicts.md 是否反映了真矛盾?SKILL.md 正文 < 100 行?每种角色都有独立的蒸馏模板——因为蒸同事和蒸前任,方法肯定不一样。
不是把聊天记录塞进向量库就叫蒸馏。那叫腌制。
🔧 怎么做事 💬 怎么说话
┌──────────┐ ┌──────────┐
│ 程序性知识 │ │ 互动风格 │
│ procedure │ │interaction│
└──────────┘ └──────────┘
📖 经历过什么 🧠 是什么人
┌──────────┐ ┌──────────┐
│ 记忆经历 │ │性格价值观 │
│ memory │ │personality│
└──────────┘ └──────────┘
蒸馏出来的每一条都标注证据等级:
verbatim 原话 —— TA 亲口说的artifact 文档 —— 留下的文字材料impression 印象 —— 别人觉得 TA 是这样的矛盾的地方不强行统一——人本来就是矛盾的,周一说的话周五自己都能推翻。
你和 TA 的对话散落在十几个 App 里。没关系,都能收。
| | 平台 | 怎么收 | |:---:|------|---------| | 💬 | 飞书 · 钉钉 · Slack · Discord · Telegram | API 自动拉,配个 token 就行 | | 📱 | 微信 · iMessage | 本地数据库读取 | | 📦 | WhatsApp · Twitter/X · Google Takeout · Facebook/Instagram | 官方归档解析 | | 📧 | Email (Gmail / mbox) | 邮箱归档解析 | | 📄 | 任意文件 · TXT · JSON · CSV · Markdown | 手动丢进来 |
12+ 个平台,每个都有保姆级数据获取指南。
方式一:对话触发
在 OpenClaw / Claude Code 里直接说人话:
"帮我把李工蒸馏成 Skill,他的飞书记录在这儿"
"我想蒸馏我奶奶,微信记录我导出来了"
"蒸馏我自己,微信 + Twitter 全上"
方式二:CLI 手动挡
# 能蒸哪些平台?
python3 kit/immortal_cli.py platforms
# 配置凭证
python3 kit/immortal_cli.py setup feishu
# 开蒸
python3 kit/immortal_cli.py collect --platform feishu --scan
python3 kit/immortal_cli.py collect --platform wechat --db ~/wechat.db --channel "张三"
python3 kit/immortal_cli.py collect --platform imessage --scan
# 手动喂料
python3 kit/immortal_cli.py import ~/chat-export.txt --output corpus/chat.md
# 初始化 → 封包 → 快照
python3 kit/immortal_cli.py init --slug grandma --persona family
python3 kit/immortal_cli.py stamp --slug grandma --sources "wechat:chat,paste:notes"
python3 kit/immortal_cli.py snapshot --slug grandma --note "第一版"
一个人 = 一个文件夹 = 一个可以直接用的 AI Skill:
grandma/
├── SKILL.md ← AI 读这个就知道「奶奶是谁」
├── interaction.md ← 奶奶怎么说话、怎么唠叨、怎么关心人
├── memory.md ← 奶奶讲过什么故事、经历过什么
├── personality.md ← 奶奶是什么样的人、在乎什么
├── conflicts.md ← 不同来源说法不一致的地方
└── manifest.json ← 元数据(来源、时间、指纹)
丢进 OpenClaw 的 skills 目录,AI 就能用奶奶的语气跟你说话了。
不是复制粘贴。是真的理解她怎么说话、怎么想、在乎什么。
| 蒸了谁 | 角色 | 蒸了几个维度 | 看看效果 | |:---:|:---:|:---:|:---:| | 李工 | 跑路的同事 | 2 维 | examples/li-gong-demo/ | | 陈韵 | 自己 | 全 4 维 | examples/self-demo/ | | 王老师 | 退休的导师 | 4 维 | examples/mentor-demo/ |
# 扔进工作区
cp -r immortal-skill <your-workspace>/skills/immortal-skill
# 或者全局装
cp -r immortal-skill ~/.openclaw/skills/immortal-skill
验证一下:
openclaw skills list | grep immortal-skill
immortal-skill/
├── SKILL.md # 蒸馏器入口
├── personas/ # 7 种角色蒸馏模板
├── recipes/ # 蒸馏方法论(怎么提取、怎么合并、怎么处理矛盾)
├── prompts/ # 给 LLM 的 Prompt 模板
├── collectors/ # 12 个平台的数据采集器
├── kit/ # CLI 工具集
├── examples/ # 3 个蒸好的示例
└── docs/ # 调研综述 + 平台数据获取指南
| 原则 | 翻译成人话 | |------|---------| | 分路蒸馏 | 四个维度分开提,不搞一锅炖 | | 证据分级 | 原话 > 文档 > 印象,说清楚谁说的 | | 伦理先行 | 蒸谁都行,但得有底线 | | 矛盾保留 | 人本来就前后不一致,不强行洗白 | | 版本快照 | 蒸歪了?一键回滚重来 | | 多源融合 | 微信 + 飞书 + Twitter 混着蒸,味道更正 |
人会走,记忆会模糊,聊天记录会沉到第 99 页。
但 TA 说话的方式、讲过的故事、在乎的东西——
可以不跟着消失。
⭐ Star 一下,下次轮到你被蒸馏的时候,至少蒸馏器是开源的。
Rather than waiting for someone else to distill you, distill yourself first.
A universal digital immortality framework — distill anyone's digital persona from chat logs, social media, and documents across 12+ platforms.
⭐ Star this repo — next time you get distilled, at least the distiller will be open source.