Ch1rpy2613/Mirrai
Ch1rpy2613/MirraiFrom the README
Presence
"不在身边的时候,TA 还在这里。"
上传聊天记录,AI 重建 TA 的数字分身 — 用 TA 的语气回你消息,用 TA 的方式撒娇,知道 TA 什么时候会突然变冷漠。
随时随地,TA 都在。
目录
创新点
1. 多阶段性格蒸馏引擎
不是简单地把聊天记录丢给 AI 让它"模仿"。系统采用多阶段 pipeline 对原始素材进行深度分析:
上传素材 → 人物维度提取 → 结构化人设构建 → 多源融合 → 数字分身
最终生成的 persona 包含 7 层结构:性格特质、说话方式、口头禅、依恋类型、爱的语言、争吵风格、触动瞬间。不是"像他",而是"就是他"。
2. 动态情感状态机
每个数字分身拥有 6 种情感状态,会根据对话内容实时切换:
| 状态 | 触发词示例 | 表现 | |------|-----------|------| | 🌸 温柔 | 默认状态 | 温柔体贴,充满关怀 | | 😄 俏皮 | "哈哈""好玩""搞笑" | 轻松活泼,爱开玩笑 | | 🌙 思念 | "想你""那时候""记得吗" | 触景生情,回忆过去 | | 🌧️ 忧郁 | "难过""伤心""委屈" | 情绪低落,需要安慰 | | ✨ 开心 | "开心""太好了""爱你" | 充满活力,心情很好 | | ❄️ 疏离 | "随便""无所谓""算了" | 话不多,有距离感 |
情感状态不仅影响回复语气,还会在聊天界面实时显示,用户也可以手动切换。
3. 统一 LLM 抽象层 — 10 家 AI 提供商即插即用
一套统一接口,支持国内外主流 AI 服务,用户可在设置页面自由切换:
| 提供商 | 协议 | 默认模型 | |--------|------|---------| | OpenAI | REST | gpt-4o | | Claude | REST | claude-sonnet-4-6 | | DeepSeek | OpenAI 兼容 | deepseek-chat | | Kimi (月之暗面) | OpenAI 兼容 | moonshot-v1-8k | | 通义千问 | OpenAI 兼容 | qwen-turbo | | 豆包 | OpenAI 兼容 | 自定义 | | 302.ai | OpenAI 兼容 | 自定义 | | Ollama | REST | llama3 (本地) | | Dify | Workflow API | 自定义 | | 讯飞星火 | WebSocket + HMAC | v3.5 |
OpenAI 兼容协议的提供商共用一个适配器,通过 baseUrl / model 区分,零代码接入新服务。
4. 微信机器人 — 数字分身走出浏览器
集成 Wechaty 框架,扫码登录后,将微信联系人绑定到对应的数字分身。朋友给你发消息,数字分身自动用 TA 的语气回复。Web 端和微信端共享同一套人设和记忆,消息记录标记来源渠道(web / wechat)。
5. 全链路类型安全
从数据库 schema 到前端组件,全程 TypeScript + tRPC,零运行时类型错误:
Drizzle Schema → DB Helpers → tRPC Router → React Query Hook → UI 组件
类型推导贯穿全链路,改一处接口定义,全栈同步报错
功能概览
- 创建数字分身 — 输入名字、关系描述、在一起时间,创建一个新的前任分身
- 上传素材 — 支持微信聊天记录 (.txt)、CSV、照片、视频,拖拽上传
- AI 性格分析 — 多阶段 pipeline 自动提取人物画像,实时显示进度
- 沉浸式对话 — 暗色系 UI,情感状态实时变化,支持文本/图片/语音消息
- 多分身管理 — 大厅页面管理所有数字分身,一键切换
- 亲密度系统 — 初识→熟悉→亲密→知己→灵魂伴侣,随对话自然成长
- 毕业机制 — 亲密度达到灵魂伴侣后可触发毕业,AI 生成告别信,分身进入休眠(可唤醒)
- TTS 语音朗读 — AI 回复旁的播放按钮,使用 Edge TTS 中文语音朗读消息
- 对话导出 — 导出完整对话记录为自包含 HTML 文件(含情感时间线 SVG 图表)
- 记忆管理 — 手动或 AI 自动提取关系记忆节点(里程碑/纪念日)
- 对话日记 — AI 根据聊天记录生成每日日记(摘要/亮点/情感弧线/金句)
- 场景模式 — 内置 + 自定义对话场景,切换不同情境下的互动风格
- 数据分析 — 消息量趋势、情感时线、分身互动热力图、时段分布
- 人设编辑 — 可视化编辑分身的性格特质、说话方式、口头禅等
- 微信集成 — 扫码登录,绑定联系人,自动回复
- LLM 自由切换 — 设置页面配置 API Key,随时切换 AI 后端
- 本地认证 — 用户名密码注册登录,JWT 会话管理
- 国际化 — 支持多语言
- 暗色/亮色主题 — 可切换
技术架构
┌─────────────────────────────────────────────────────────┐
│ 客户端 (React 19) │
│ Wouter 路由 · Radix UI · Tailwind CSS · Framer Motion │
│ tRPC React Query · Streamdown (Markdown 渲染) │
└──────────────────────┬──────────────────────────────────┘
│ tRPC (HTTP Batch + SuperJSON)
┌──────────────────────▼──────────────────────────────────┐
│ 服务端 (Express) │
│ │
│ ┌─────────┐ ┌──────────┐ ┌────────────┐