Home
Softono
welink

welink

Open source TypeScript
173
Stars
36
Forks
5
Issues
0
Watchers
1 week
Last Commit

About welink

🔍微信聊天数据分析的本地化AI-agent(Docker/Windows/MacOS) · AI分身 / 大模型分析 / 好友排行 / 词云 / 情感趋势 / 群聊画像

Platforms

Web Self-hosted Docker Windows macOS

Languages

TypeScript

WeLink Logo

WeLink

AI 驱动的微信聊天数据分析平台

Build Backend Image Frontend Image License Stars Platform macOS Platform Windows Local Only

官方文档  ·  在线 Demo

你的微信聊天记录里,藏着你和每个人关系最真实的样子。WeLink 把这些数据交给 AI 来读——不只是统计图表,而是能让你直接提问、得到洞察:

「我和 XXX 的关系在哪个阶段最好?后来发生了什么?」

「这个群里真正活跃的人是谁?他们通常聊什么?」

「我今年和哪些朋友聊得越来越少了?」

所有数据留在本地,不上传任何服务器。


功能示例

点击可放大查看

AI 分身 AI 分析
AI 分身 AI 分析
AI 群聊 AI 首页
AI 群聊 AI 首页
快速入门引导 好友总览
快速入门引导 好友总览
好友深度画像 群聊画像
好友深度画像 群聊画像
全局搜索 时间线
全局搜索 时间线
时光机 纪念日
时光机 纪念日

AI 分身(核心功能)

让 AI 学习任何联系人的聊天风格,模拟和 TA 对话——像真的在和 TA 聊天一样

聊天记录是一个人最真实的语言印记。AI 分身从中学习 TA 的用词习惯、语气特征和表达方式,让你可以:

和已经失去联系的老友再聊一次——哪怕只是 AI 模拟的,也能找回当年的感觉

远在天堂的亲人以 TA 熟悉的方式"回复"你——不是冰冷的机器,而是带着 TA 说话习惯的温暖文字

在做重要决定前,和最信任的人的 AI 分身聊聊——TA 会用 TA 的方式给你回应

或者纯粹好奇——你最好的朋友如果看到你发的这句话,会怎么回?

[!NOTE] AI 分身旨在帮助用户回忆珍贵的人际关系。模拟结果由 AI 生成,不代表真人的真实想法。请善意使用,不要用于冒充他人身份或误导第三方。使用本功能即表示用户同意自行承担使用后果,项目作者不对因使用 AI 分身产生的任何直接或间接影响负责。

功能特点

  • 风格学习:从私聊记录 + 共同群聊中提取 TA 的文本消息(可选 100 / 300 / 1000 / 2000 / 全部条),AI 学习 TA 的用词、语气、断句、emoji 习惯
  • 背景补充:可填写 TA 的籍贯、职业、与你的关系等背景信息,让 AI 更准确地还原 TA 的人物特征
  • 群聊联动:自动列出与该联系人的共同群聊,可勾选要包含的群聊,只提取 TA 在群里的发言(按 sender_id 精确过滤),不会混入其他人的消息
  • Session 机制:学习一次即缓存,后续多轮对话不再重复加载数据库,响应速度快
  • 流式对话:仿微信气泡界面,AI 回复逐字显示
  • 对话续写:AI 同时模拟你和 TA 继续聊天,像看一部关于你们的迷你剧

详细实现见 ai-clone.md

AI 群聊模拟

让 AI 模拟群友继续聊天——按每个成员的发言比例说话风格生成对话,你也可以随时加入。

  • 风格画像:自动分析每个成员的用词习惯、消息长度、表情使用、提问频率等特征
  • 自定义配置:可选参与成员、设定话题场景、调节聊天氛围(日常/激烈/深夜/搞笑/严肃)
  • 多轮记忆:模拟对话使用多轮对话机制,群友会回应你说的话,不会重复

详细说明见 ai-group-sim.md

跨联系人 AI 问答

不再局限于单个联系人——直接问关于所有聊天记录的问题,AI 自动搜索并汇总回答。

「谁跟我聊过旅行?」→ AI 搜索全部联系人,找到 3 人提到过旅行,汇总每人聊了什么

「去年国庆我都跟谁聊天了?」→ AI 查询 10/1-10/7 的日历数据,列出每天的聊天对象

「哪些朋友经常提到加班?」→ AI 搜索关键词,按匹配频次排列

技术原理:LLM Agent 模式——第一步 LLM 解析问题意图(提取关键词/时间范围),第二步自动调用搜索/日历 API 收集数据,第三步 LLM 基于真实数据生成回答。每次提问仅消耗 ~4000 token。

对话历史持久化

AI 首页的联系人分析和跨联系人问答的对话自动保存到本地数据库,支持:

  • 历史记录列表,按时间排序,显示预览文字
  • 点击加载历史对话,继续追问
  • 刷新页面不丢失,下次打开仍可查看

AI 洞察

对任意联系人生成三种深度分析(基于统计摘要 + 采样消息,低 token 消耗):

  • 关系报告:关系发展阶段、沟通特点、关键数字、AI 感言
  • 风格画像卡:性格标签、口头禅、聊天习惯、趣味类比
  • AI 日记:选择任意一天,AI 以第一人称写日记

自定义 Prompt 模板

所有 AI 功能的系统提示词(System Prompt)完全透明、可自定义

  • 每个 AI 功能旁边都有「查看 Prompt」按钮,可以看到当前使用的完整提示词
  • 在设置页的「Prompt 模板」区块,可以编辑任意功能的 Prompt
  • 支持变量:{{name}}(联系人名)、{{today}}(日期)、{{rounds}}(轮数)等
  • 留空即恢复默认值,修改即时生效

🎮 互动小说 — 把联系人变成 NPC,写一段有选项的剧情

联系人详情页头部点紫色 BookOpen 按钮,进入一段章节化、有选项、多结局的视觉小说。AI 把 TA 当 NPC,剧情用 TA 的「分身画像」和真实事件素材生成 —— 像乙女游戏 / Doki Doki,但主角是你和你认识的人。

[!NOTE] 剧情仅在本地处理,所有选择只影响这一档存档。AI 输出不代表真人想法,请尊重当事人。

三种开局模式

模式 用法 适合场景
自由探索 无固定目标,剧情自然展开 第一次玩,看看 AI 会写出什么
带目标 你输入一句目标(如「让 TA 答应一起去日本」),剧情围绕它推进 想测试某种关系走向
回忆改编 挑一天你和 TA 真实聊过的日期,AI 以那天对话为起点写「假如那天换种回应」 那段对话你后悔过,想看平行宇宙怎么走

5 种结局

  • 🏆 TRUE:affinity ≥ 80 且命中 ≥ 1 个 critical_choice
  • 💖 HAPPY:affinity ≥ 60
  • 📖 NORMAL:affinity 30-59
  • 💀 BAD:affinity < 30 或踩到 dealbreaker
  • 🕵️ SECRET:命中特定 hidden_flag 组合(首通后才会在 UI 提示存在)

每条存档独立,同一联系人可开多档;每章自动入库,可回滚到任意章看不同分支。

通关后的 Wrapped 风格回顾

4 页分页(仿 Spotify Wrapped):

  1. 结局标题页:彩色徽章 + LLM 写的 60-100 字结语
  2. 关键转折:列出每章的 LLM 摘要 + 你做的每一个选择
  3. 数据对比:本剧 affinity vs 真实关系热度(来自「关系动态预测」),AI 一句话点评("剧情和现实差不多"/"剧情里你们更亲密一些")
  4. 解锁徽章:5 个结局收集网格,secret 未解锁显示 ???

支持白底长图导出(720px 宽,footer 自带 welink.click + 日期),发朋友圈合适。

可选 AI 生封面图

设置页开启「AI 文生图」后,每章卡片右上角出现 ✨ 按钮 —— 调一张电影感场景图(不画人脸 / 不出现文字 / 抽象意象),自动入画廊。开局只生 1 张就够用,每张 0.05-0.2 元,不会失控。

复用现有基础设施

  • 人设:取 clone_profiles.prompt(已训练分身的话);未训练时给兜底人设
  • 事实素材:随机抽 8-12 条 mem_facts 作为「TA 的世界设定」
  • 剧情生成:按需流式(不是一次性整树),每章 1.5-3k token,首屏 5-10 秒开始打字
  • 状态合并{affinity, tension, flags[], critical_hits, dealbreaker},每章合并一次 state_delta

详细架构与接口见 docs/api.md 的「视觉小说 / 互动小说(VN)」章节。


🧪 创意实验室 — 把聊天记录玩出花

侧边栏「实验室」Tab,集合了一组好玩、能分享的小工具。和"分析"路线不同,这一组以"卡片化、可截图、像 Spotify Wrapped 一样" 为目标。从 v0.2.0 首发 5 个起持续扩充,现已累计 21 个(聊天 DNA / 高光瞬间 / 灵魂提问机 / 平行宇宙 / 关系星图 / 群金句榜 / 语言进化史 / 聊天地图 / 人情债 / 断联预警 / 群聊 Wrapped / 反向语义搜索 / AI 虚拟群聊 / 群语料 ROI / 关系考古 / 健康日记 / 暧昧探测 / 回复速度榜 / 主动指数榜 / 社交圈流动榜 / 话题图谱)—— 详见 docs/labs.md。会调 LLM 的 Lab 在 tab 上带紫色 AI 标。

聊天 DNA

类 Spotify Wrapped 的年度聊天人设卡:消息总数、最爱的人、活跃时段、emoji 偏好、最长一句话、最早开始聊的人 …… 全部纯统计、无 LLM——零 token 成本,离线也能出。一键导出长图分享。

高光瞬间

AI 从你和某位联系人的聊天记录里,挑出 5–8 段最有故事感的对话片段——表白、争吵、深夜聊人生、第一次见面、相互坦白。每段配一张可截图的卡片,自动生成标题和情绪标签。

灵魂提问机

AI 出 5 道只有你们俩才答得上的默契测试题("TA 最常吃的早餐是?""你们第一次见面在哪?"),翻面看答案。可以截图给对方做。

关系星图

把联系人按"共同群聊"聚拢的力导向图——同一个圈子的朋友会自动靠拢成簇,让你一眼看出社交圈层结构。自写的迷你 force-directed layout,零新增依赖

平行宇宙对话

选一个联系人 + 输入一个"如果……"场景("如果我们五年前就认识"、"如果我现在跟 TA 求婚"、"如果我们是同事"),AI 用 TA 的人设生成一段虚构对话,逐字流式展开。复用 AI 群聊模拟的 persona 引擎。

每个 Lab 都支持白底分享图导出,footer 自带 welink.click + 日期,发朋友圈合适。

v0.2.x 增量 Lab

Lab 数据源 LLM 一句话
💬 群金句榜 群引用消息(refermsg) 被群友翻牌最多次的"名场面"原文 Top 10
📈 我的语言进化史 我发的所有文本按年聚合 4 条说话风格曲线(句长 / emoji / 英文夹杂 / 日均产量)+ 每年的"那年的我"卡
🌏 聊天地图 私聊地名词典子串匹配 中国 / 海外 / 港澳台 / 景点 6 类 tier,bubble cloud + Top 同行者
💌 人情债 regex 候选窗口 → LLM 精筛 挖"答应了但没做"的承诺,分 TA 欠我 / 双方约定 / 我欠 TA
❄️ 断联预警 私聊 last_message_ts 静默 ≥ 30 天的老朋友 Top 30 + 三档分级 + 三张"之最"卡
👻 这句话谁说过 复用 vec_messages 索引 ❌(仅 embed) 反向语义搜索:「这句话最像 X、Y、Z 说过的话」,按说话人聚合
🎭 AI 虚拟群聊 分身画像 + 私聊样例兜底 任意 2-8 个联系人拉进虚拟群,AI 扮演每个人;批量 N 轮 + 气泡 TTS + 会话持久化
📊 群语料 ROI 诊断 群聊消息字数 算「我看 vs 我说」性价比,标出高消耗 / 高产出 / 平衡群
📖 群聊 Wrapped 群聊统计 群画像顶部 Hero 卡:Top 3 发言成员 / 类型分布 / 最忙一天 / 被引用 Top 3

v0.3.x 增量 Lab

Lab 数据源 LLM 一句话
🩺 健康日记 私聊关键词(症状/就医) 双向扫"感冒/发烧/医院",7 天合并成一次发作,看我 vs TA 们谁更常生病
🔥 暧昧探测 私聊 5 类暧昧信号 亲昵称呼/想念/深夜亲密/暧昧动作/暧昧表情,看跟谁最有"暧昧浓度"+ 双向度(仅供娱乐)
回复速度榜 私聊消息时间戳 双向回复延迟中位数:谁秒回你 / 你秒回谁 / 最不对等

📰 每日社交简报 — 看昨天发生了什么

首页左侧 Tab「今日简报」,每天看昨天的社交摘要:

  • 总览数字:昨天总消息量 / 活跃联系人 / 活跃群聊
  • 高光片段:最长聊天 / 第一次出现的新话题
  • 建议主动联系:把"关系动态预测"里的 cooling / endangered 名单嵌入 banner,可直接点开聊
  • 历史列表:近 30 天每日简报横向 timeline,按日期查

懒生成 + 入库(ai_analysis.db.daily_digests),调试或重新索引后可强制重生成。零 LLM 默认形态(高光抽取走规则)。


❄️ 断联预警 — 提醒正在消失中的连接

聊天 DNA 是"庆祝长期连接",断联预警是它的反面。扫所有私聊(总消息 ≥ 50 条)的 LastMessageTs,按静默天数 ≥ 30 排出 Top 30:

之最卡 找谁
🥶 静默最久的高频好友 聊得多但安静最久的那位
📚 历史聊得最多但已断联 曾经的话题伙伴
认识最久且当前断联 从最早就在你列表里、现在不说话的人

三档分级人数:30-89 天 / 90-179 天 / 180+ 天。零 LLM、10 分钟缓存、可截图分享。


AI 分析

WeLink 内置完整的 AI 分析引擎,可对任意联系人、群聊或某一天的聊天记录发起对话式分析。

三种检索模式

模式 工作方式 适合场景
全量分析 将选定时间范围内的全部消息送入 LLM 上下文 深度关系分析、长期趋势总结
混合检索(RAG) FTS5 全文检索 + 语义向量检索,精准召回相关片段 查找特定事件、关键词检索
时光机 AI 跨所有对话的单日聚合分析 「某天发生了什么」式的日记回顾

记忆提炼

LLM 批量阅读聊天记录,自动提炼关键事实(人名、事件、情感节点)并持久化存储。后续对话中,AI 可以调用这些「长期记忆」,而不依赖每次重新加载全量消息。

支持的 LLM 提供商(25+)

提供商 说明
DeepSeek 默认 deepseek-v4-pro,国产高性价比首选
豆包(火山方舟) 字节 Doubao 系列,OpenAI 兼容;默认 doubao-seed-2-0-pro-260215
Kimi Moonshot(月之暗面),支持超长上下文
OpenAI GPT-4o 等,标准 API
Claude Anthropic Claude,通过原生 API 接入
Gemini Google Gemini,支持 OAuth 2.0 认证
Vertex AI Google Cloud Vertex AI,原生支持。认证方式:Service Account JSON → JWT → OAuth2 token(自动缓存刷新)。走 Vertex AI 的 OpenAI 兼容端点,支持所有 Gemini 模型
AWS Bedrock 原生支持。认证方式:AWS SigV4 签名(手写实现,无 AWS SDK 依赖)。使用 Converse API(跨模型家族统一 API),支持 Claude / Llama / Mistral / Titan / Cohere 等所有 Bedrock 模型
MiniMax 国内版 + 国际版,支持 MiniMax-Text-01 等
GLM 智谱 AI,GLM-4 系列
Grok xAI Grok
通义千问(DashScope) 阿里 Qwen 系列,OpenAI 兼容模式
腾讯混元 Hunyuan-turbo / pro 等
百度千帆(文心一言) ERNIE-4.0 系列,OpenAI 兼容端点
OpenRouter 一个 Key 接入 300+ 模型的聚合网关
Mistral AI mistral-large / codestral 等
Groq LPU 极速推理,Llama / Mixtral 等开源模型
Together AI 开源模型托管,价格友好
Fireworks AI 开源模型高速托管
Perplexity 内置联网搜索(Sonar 系列)
Cohere Command R+,企业 RAG 强项
硅基流动 SiliconFlow 国内开源模型聚合(DeepSeek / Qwen / Llama 等)
零一万物(Yi) yi-large 系列
阶跃星辰(StepFun) step-1 / step-2 系列
Azure OpenAI 企业版 OpenAI;Base URL 需填写完整 deployment 端点
Ollama 本地部署,完全离线,数据不出本机
自定义 任意兼容 OpenAI 接口的模型服务

在设置页面填写提供商、Base URL、API Key 和模型名称即可。支持为 AI 对话和记忆提炼分别指定不同的模型。

Vertex AI 配置:选择 Google Vertex AI provider → 粘贴完整的 Service Account JSON → 填写 GCP Project ID 和 Region → 选择模型(默认 google/gemini-2.0-flash-001

Bedrock 配置:选择 AWS Bedrock provider → 填写 AWS Access Key ID 和 Secret Access Key → 填写 Region → 填写 Model ID(如 anthropic.claude-3-5-sonnet-20241022-v2:0

本地 Ollama 配置参考 ollama-setup.md,完整 AI 功能说明见 ai-analysis.md


🎨 AI 文生图 — 让卡片有插画

三个使用场景,统一走一套生图引擎:

场景 触发位置 用图方式
群年报封面 AI 群年报第一页 16:9 横版插画,体现该群一年的"气质"
高光瞬间插画 高光瞬间卡片背景 1:1 方版抽象意象
联系人 AI 头像 联系人画像 → 紫色 Sparkles 按钮 LLM 先抽 3-5 个性格关键词 → 拼 prompt → 圆形构图、无人脸、无文字

实现细节

  • 4 个 provider 原生支持(设置页可同时配多组,第一组为默认,每张图调用可指定 profile):
    • doubao:火山方舟(豆包)即梦 doubao-seedream-3-0-t2i-250415
    • openaigpt-image-1 / dall-e-3,默认请求 b64_json 省一次下载
    • siliconflow:FLUX schnell / FLUX dev / SD 3.5 等,国内便宜
    • gemini:Imagen 3,走 Generative Language API
  • 本地 hash 缓存sha256(v2|provider|model|size|prompt)~/.welink/ai_images/<hash>.png。命中直接秒返,不重复调 API。老 v1 hash 缓存也兼容命中,避免升级后图全部失效重出
  • 同源代理:前端用 GET /api/image/cache/:hash 拿图(火山返回的临时 URL 24h 过期;html-to-image 导出分享卡也要求同源)
  • Provider 元数据自描述GET /api/image/providers 返回 provider/model/size/key 跳转链接清单,前端零硬编码
  • 异步队列 + 进度条:后端 2 并发 worker pool 处理任务,前端 1.5s 轮询拿伪进度(0-100),可随时取消;状态全落 ai_analysis.db.image_tasks,进程崩了重启会把孤儿 running 任务标 failed
  • 🖼️ AI 画廊:所有生成过的图自动入库(images + FTS5 索引),侧边栏新 Tab,支持 prompt 全文搜索、scene/provider 过滤、收藏、下载、删除(软删 30 天后 GC)、一键基于原图重生成(改 prompt 或换尺寸)
  • Demo 模式写 SVG 占位图,不调真 provider

MCP — 在 Claude Code 里直接提问

WeLink 内置 MCP(Model Context Protocol) 服务器,让你在 Claude Code(CLI) 里用自然语言查询微信数据,无需打开浏览器。

完整配置见 mcp-server/README.md


🔮 Skill 炼化 — 把聊天记录变成 AI 工具的能力包

把聊天记录里的人际关系,直接炼化成 Claude Code / Codex / Cursor 等 AI 编程工具的 Skill 文件包。 一次炼化,多处使用。

三种 Skill 类型

类型 输入 用途
contact 联系人分身 和某联系人的全部聊天 让 AI 用 TA 的语气帮你写邮件、起草回复、预演对话
self 我的写作风格 我发出去的所有消息 让 AI 用你自己的口吻写公众号、朋友圈、邮件,避免 AI 腔
group 群聊智囊 某个群的集体聊天 回答「这个群会怎么说」,把群的集体知识/术语/氛围封装起来

七种输出格式(一键切换)

格式 目标工具 产物路径
claude-skill Claude Code Skills(目录式) ~/.claude/skills/<name>/SKILL.md + 附件
claude-agent Claude Code Subagent(单文件) ~/.claude/agents/<name>.md(带 frontmatter)
codex OpenAI Codex CLI 项目根 AGENTS.md
opencode OpenCode Agent .opencode/agent/<name>.md
cursor Cursor Rules .cursor/rules/<name>.mdc(支持 glob)
generic 通用 Markdown 工具无关,可粘贴到任何 AI 对话
lora-jsonl 本地微调训练集 Alpaca jsonl + 训练食谱 zip,配 Unsloth / LLaMA-Factory 直接练自己的 LoRA

lora-jsonl 是纯本地数据导出,不调 LLM、不抽风格画像,把"我"和所有联系人的对话配成 (对方上一句, 我的回复) 训练样本。隐私保护:手机号 / 邮箱 / 身份证 / 卡号自动脱敏,联系人 wxid 匿名化为 c01..cNN,敏感模式整条丢弃。仅支持 skill_type=self

炼化的内容

  • 性格特征:LLM 从真实对话里抽取的人物画像
  • 说话风格:句长、语气、用词偏好、标点习惯、emoji 使用
  • 高频词与口头禅:独特词汇和常用短语
  • 常聊话题:兴趣领域和专业方向
  • 关系背景:你和 TA 的关系推断(仅 contact 类型)
  • 代表性原话:5-8 条最能体现风格的消息片段(自动脱敏)
  • 使用注意事项:什么场景适合用、什么场景不适合

使用入口

  • 联系人深度画像头部 → 紫色 Sparkles 图标按钮
  • 群聊画像头部 → 紫色 Sparkles 图标按钮
  • 洞察页「个人自画像」卡 → 「炼化我的 Skill」按钮

Skills 管理

侧边栏新增「Skills」页面,集中管理所有已炼化的 Skill 包:

  • 持久化存储:每次炼化自动写入本地数据库(ai_analysis.dbskills 表),文件保存到 ~/.welink/skills/<id>/<filename>.zip
  • 后台异步执行:炼化任务在 goroutine 中运行,关闭弹窗、刷新页面都不会中断
  • 状态实时追踪:等待中 / 炼化中 / 成功 / 失败(含错误原因),页面每 2s 自动刷新
  • 搜索 + 筛选:按目标名/文件名/模型名搜索,按类型(联系人/自画像/群聊/群成员)和状态筛选
  • 表头排序:按目标、类型、格式、炼化时间升降序排列
  • 重新下载:已成功的任务随时可以重新下载 zip 文件,不需要重新炼化
  • Mac App 路径显示:炼化成功后显示保存到 ~/Downloads/ 的完整路径,可一键复制

隐私保护

  • 炼化前手机号、邮箱、身份证号自动脱敏
  • 整个过程只调用一次 LLM(约 5-15k token)
  • 产物是本地 zip 文件,由你决定是否分享

💕 关系动态预测 — 谁在悄悄变冷,谁值得主动联系

WeLink 不止告诉你"现在关系多热",而是前瞻性地判断每段关系的走向,并给出具体行动建议。

四档状态判定

扫描每个联系人最近 6 个月的消息节奏,对比最近 3 月 vs 前 3 月自动打档:

状态 判定条件 典型场景
🔥 升温 最近 3 月消息增加 ≥50% 新认识的人 / 深化中的关系
稳定 波动 ±30% 内 日常长期好友
❄️ 降温 最近 3 月消息量不到前期一半 开始疏远的信号
🚨 濒危 前期 ≥10 条但 60 天没说过话 长期联系人快失联

多维度信号增强

简单的「消息减少了」可能是双方都忙,结合多维信号才能识别到底是谁在疏远谁

  • 主动占比趋势 — 过去你占 72%,现在降到 42% → 说明对方不再主动找你。差 ≥15pp 在 reason 里自动提示
  • 响应时延趋势 — TA 去年 10 分钟回你,现在平均 8 小时 → 「TA 回复从 X 分钟变成 Y 小时」(变慢 ≥3× 且原本 ≤1h 才提)
  • 连续冷却周数 — 基于客户端 localStorage 滚动 6 周快照,连续 ≥2 周处于 cooling/endangered 显示 🕐 红色徽章
  • 最后消息相对时间 — 30 / 60 / 90 天阶梯色阶

reason 文案示例:

最近 3 个月消息减少 65%(120 → 42);原本你更主动(72%),现在对方说得更多(58%);TA 回复从 12 分钟变成 8 小时

两种入口

  • AI 首页「建议主动联系」卡片 — Top 5 cooling + endangered,直接可点打开联系人详情。每张卡支持「🪄 写开场白」和「不再推荐此人」。「今日不再提醒」按日期关闭
  • 统计页「关系动态预测」section — 4 tab 完整列表(濒危/降温/稳定/升温),每条带 12 月迷你折线,点 sparkline 弹大图 modal(12 月柱状图 + 峰值标注 + 主动占比双进度条 + 响应时延对比)

🪄 AI 开场白草稿(行动闭环)

对 cooling / endangered 联系人,点「写开场白」→ 取最近 40 条消息 + 相识年数 + 沉默天数 → LLM 写 4 条不同调性(关心 / 回忆 / 调侃 / 约见)的破冰草稿,一键复制粘到微信。

每周变化摘要

AI 首页顶部的小 banner,对比上次快照(≥5 天前):「近 7 天变化:3 位关系降温 · 1 位回暖」。按 ISO 周关闭。

管理忽略名单

设置页加「关系预测 · 忽略名单」,首页点「不再推荐此人」后可在这里撤销。


📦 导出中心 — 数据一键搬家

把年度回顾、对话归档、AI 对话历史、记忆图谱四类内容,统一打包导出到 8 种目标

笔记 / 文档平台

目标 实现方式 输出
Markdown 本地打包 单文件直下 / 多文件自动 .zip
Notion POST /v1/pages + 自实现 Markdown→Blocks(标题/列表/引用/代码/表格) 指定 Parent Page 下建新页
飞书文档 upload_allimport_tasks 异步轮询 获得 docx URL

云盘 / 对象存储

目标 协议 / 认证 覆盖服务
WebDAV HTTP PUT + Basic Auth + 递归 MKCOL 坚果云 / Nextcloud / ownCloud / 群晖等
S3 兼容 minio-go v7,支持 path-style / virtual-host 切换 AWS S3 / Cloudflare R2 / 阿里云 OSS / 腾讯 COS / 七牛 / MinIO / Backblaze B2
Dropbox files/upload API + App Console 长期 Access Token(PAT 模式免 OAuth 回调) Dropbox
Google Drive 完整 OAuth 2.0 + multipart upload,refresh token 自动刷新 Google Drive
OneDrive Microsoft Identity Platform v2 OAuth + Graph API PUT OneDrive(个人 / 工作账号)

Token 配置与既有 LLM 配置一样支持脱敏占位符 __HAS_KEY__,保存后不会泄露明文。

OAuth 类目标(Google Drive / OneDrive)使用流程

  1. 在目标平台的开发者控制台创建 OAuth Client,授权回调 URI 填 http(s)://<你的 WeLink 地址>/api/export/oauth/<gdrive|onedrive>/callback
  2. 把 Client ID / Secret 粘到导出中心配置卡 → 保存 → 点「授权」→ 浏览器跳转完成授权 → 自动回传 token
  3. 之后每次导出自动 refresh,token 过期不用管

🗄️ 数据库管理 — 分析师工作台

SQLite 数据直接暴露给懂 SQL 的用户,配 4 件套 工具:

  • SQL 模板:10 个预置常用查询(消息排行、联系人列表、群聊列表、AI 对话历史、Skill 记录、记忆提炼等),点一下填入编辑器 + 自动选数据库
  • 结果一键画图:结果 ≥2 列时点「图表」,第一列 X 轴 / 第一个数字列 Y 轴自动出柱状/折线(日期格式走折线)
  • 磁盘占用环形饼图:每个 DB 文件占比 + Tooltip + 彩色图例
  • SQL 历史 + 收藏:自动记录最近 20 条执行历史;点「收藏」起名保存常用 SQL,列表置顶展示

💬 自然语言查数据(中文问 AI 写 SQL)

在面板里输入中文问题,例如:

「我和老婆的第一条消息是什么时候」 「今年跟我妈聊了多少条消息」

LLM 会:

  1. 读取自动生成的 WCDB schema 摘要
  2. 输出 {db, sql, explain} JSON(严格限制 SELECT/PRAGMA only + LIMIT 50)
  3. 后端执行并返回结果表 / 自动画图

跨库联系人消息mode=contact_messages):按备注模糊查 contact.db → md5 计算 Chat_xxx 表名 → 遍历 message_N.db 找到有该表的 DB 执行 SQL。"我和 XX 的..." 这类跨库问题现在也能直接回答。

结果表支持一键 CSV 下载


数据分析功能

好友分析

  • 消息总量排行、关系热度变化(历史峰值 vs. 近一个月)
  • 聊天趋势折线图、24 小时活跃分布、聊天日历热力图
  • 词云分析、情感趋势曲线(按月,可切换仅对方/双方)
  • 撤回次数、红包/转账次数(分开统计,含时间线记录)、主动发起对话比例等社交特征
  • 共同群聊数
  • 聊天里程碑:初识日期 + 第一条消息预览、消息量门槛(100/500/1K/5K…)、最火月份、认识天数
  • 深夜守护统计:深夜消息占比、最活跃时段、深夜密友 Top 3
  • 渐行渐远的人:近一月消息量比历史峰值下降超过 80% 的联系人预警
  • 弹窗全屏模式:私聊和群聊弹窗支持全屏查看
  • 刷新保持:联系人/群聊弹窗状态写入 URL hash,刷新页面自动恢复

时光机

  • 以 3 个月为单位的可滑动日历热力图,覆盖全部历史
  • 点击任意日期查看当天私聊 + 群聊记录,或直接发起 AI 分析
  • 「去年今天」回忆横幅:自动检测 1-5 年前今天的聊天记录,点击查看

群聊分析 + 小团体检测 + 对比

  • 成员发言排行、活跃时间分布、高频词
  • 人物关系力导向图:互动频率可视化,支持拖拽和悬停高亮
  • 小团体检测:Louvain 社区检测 + 模块度 Q 兜底(Q<0.3 时不强行凑圈),基于真实 refermsg/chatusr 引用信号而非时间窗
  • 潜水成员检测:显示每个成员的最后发言时间(>180天红色 / >30天橙色),支持按消息数/最后发言/名字排序,快捷筛选 Top 3/10/50/全部
  • 💕 群内「我的 CP」:扫描引用消息(lt=49 <refermsg><chatusr>),列出跟我双向引用互动最多的成员 Top 3,挂在群画像顶部。比单纯 @ 或消息数更能识别"隐形聊友"
  • 🎬 群聊回放:按最近 N 条 / 按日期范围加载群消息,6 档倍速(实时 ~ 100×)真实时间间隔回放,连续同发言人合并头像 + 日期分割线
  • 群聊搜索:支持按发言人筛选,结果可导出 TXT/CSV
  • 群聊活跃度对比:同时选中多个群对比消息量、成员数、日均消息、人均消息

群聊四件套 — 这个群的指纹

  • ⚡ 群号称卡(群的 MBTI):基于 hourly_dist / weekly_dist / type_dist / member_rank 规则派生 2-4 条标签 —— 深夜话唠 / 工作日正午群 / 晚八点饭后群 / 周末活跃 / 工作日只上班群 / 表情包战场 / 图包王国 / 链接集散地 / 语音派对 / 红包雨 / 消息洪流 / 静默多数派 / 潜水员联盟 等。零 LLM 零后端
  • 🕐 时钟指纹:7×24 小热图徽章,log 压缩着色,一眼识别「工作群作息 / 深夜局 / 周末亲友群」不同性格
  • 📊 群影响力指数:我发言后 30 分钟内有异发言者回应的比例 vs 群整体基线,Score = min(myRate/baseRate, 2) × 50。看你在哪个群更"有号召力"
  • 📖 AI 群年报:Spotify Wrapped 风格分页卡片 —— 年度概览 / 话痨榜 Top 3 / AI 精选 3 条金句(原文引用)/ 月度趋势柱状图 / 60-100 字 AI 叙事。每群每年可生成

群聊列表四维信息

  • 我的参与度:在每行副标展示「我 #N · X%」(在成员发言排行里的位置 + 消息占比)
  • 近期活跃度:旁边一个「30天 N 条」区分"已死"和"活跃"群
  • 活跃趋势箭头:最近 3 月 vs 前 3 月百分比变化,↑12% 绿 / ↓35% 红
  • 我最后发言时间:不同于群最后消息 —— 显示我自己在这个群潜水了多久

回复节奏分析(联系人深度画像)

  • 双向对比我 / 对方的回复速度(中位数、均值、秒回次数、慢回次数)
  • 按 24 小时分时段的平均回复速度柱状图
  • 消息间隔分布直方图:10秒 / 1分钟 / 10分钟 / 1小时 / 6小时 / 1天
  • 聊天密度曲线:按月统计消息间隔均值,自动判断升温 / 降温 / 平稳趋势

谁最像谁 — 联系人相似度分析

  • 基于消息类型分布、平均消息长度、表情偏好、互动方式等 18 维特征向量
  • 余弦相似度算法计算所有联系人间的聊天风格相似度
  • 展示共同高频词,发现说话最像的两个人

红包 / 转账全局总览

  • 全局 KPI:红包总数、转账总数、我发出、我收到
  • 月度收发趋势柱状图
  • 联系人红包转账排行,细分四个方向(发红包 / 收红包 / 发转账 / 收转账)

个人自画像

  • 汇总所有「我」方向的消息数据
  • 发出消息总数、平均字数、最活跃时段、联系过的人数
  • 最爱发消息的星期、最常联系的人
  • 24 小时个人发送分布

每日社交广度

  • 每天联系了多少个不同的人(不是消息数)
  • 年度曲线 + 日均 / 最广日统计,看到"社牛日"和"闭关日"

共同社交圈

  • 选择两个联系人,基于共同所在群聊推测他们的共同朋友圈
  • 列出共同群聊(小群优先)和推测的共同好友
  • 标记每个共同好友出现的群数,多群共现 = 关系更紧密

链接收藏夹

  • 自动扫描所有聊天中发过 / 收过的链接,按域名聚合
  • 支持搜索、按域名筛选、导出 CSV
  • 当作"个人书签库" — 那些在微信里分享过的好文章再也不会丢

消息撤回排行

  • 基于已有的撤回数据做"谁最爱撤回消息"排行 + 撤回率

词云交互

  • 悬浮显示词频 tooltip,点击固定详情卡(次数、排名、相对频率条)

全局统计

  • 关系热度分布五档:活跃 / 温热 / 渐冷 / 沉寂 / 零消息
  • 月度趋势、深夜聊天排行榜

纪念日

  • 自动检测生日(扫描"生日快乐"等关键词,按年份去重)
  • 友谊里程碑提醒(认识 100/365/1000/... 天)
  • 支持自定义纪念日(标题、日期、是否每年重复)
  • AI 首页「今天的纪念日」banner:客户端聚合 4 类当天命中(首条消息 MM-DD 对应的整周年 / 检测生日 / 0 天里程碑 / 自定义),Hero 上方小卡,单条点击直接开联系人,多条跳纪念日 tab,按日期关闭

全局搜索增强

  • 跨联系人全局关键词搜索(热门推荐词 + 搜索历史持久化)
  • 时间范围筛选(预设一周/一月/三月/一年 + 自定义日期)
  • 搜索结果排序(匹配数 / 最新时间 / 联系人消息量)
  • 统计摘要条 + Top 5 迷你柱状图
  • 即输即搜(2 字以上 500ms debounce 自动搜索)
  • 空结果建议(换关键词 / 清除时间筛选)

链接收藏夹增强

  • 来源筛选(全部 / 私聊 / 群聊)+ 方向筛选(我发出 / 我收到)
  • 时间范围筛选 + 联系人快捷选择(Top 30 按链接数排序)

其他

  • 认识时间线(垂直河流式,按年月展开,支持播放回忆动画)
  • 联系人对比(勾选 2-6 人,雷达图 + 柱状图 + 数据明细)
  • 社交体检报告(健康指数 + 洞察,支持分享为图片)
  • 全局字号调节(设置页 12-22px 滑块,Docker/macOS/Windows 全平台支持)
  • 时间范围筛选(预设 + 自定义)
  • 隐私屏蔽(联系人 / 群聊,仅本地生效)

使用技巧

完整说明见 docs/ux.md,高频用到的几项:

功能 快捷键 / 入口 做什么
命令面板 ⌘K / Ctrl+K 搜索联系人 / 群聊 / AI 对话历史(支持拼音首字母,输入 zw 能搜到「张伟」);触发备份、诊断、刷新索引、切主题、反馈问题等动作;空查询显示最近打开
Tab 快捷切换 ⌘1 .. ⌘9 首页 / 统计 / 联系人 / 群聊 / 搜索 / 时间线 / 日历 / Skills / 设置
🔒 锁屏保护 设置 → 锁屏 PIN / ⌘L / Ctrl+L 设 4-32 位 PIN 后手动或闲置超时(30min / 1h / 2h)自动锁屏;可配置 App 启动即锁。全屏毛玻璃遮罩 + PIN 输入框,PIN 以 bcrypt 哈希存 preferences.json
一键诊断 设置 → 诊断 数据目录健康 / 索引状态 / LLM 探活 / 磁盘占用;支持一键复制为 Markdown 贴 issue
AI 数据备份 / 恢复 设置 → AI 数据备份 VACUUM INTO 自洽快照;App 模式写下载目录 + 可在 Finder 定位,Docker 模式触发浏览器下载
多账号切换 设置 → 数据目录·多账号切换 把多个 decrypted/ 作为 profile 保存,热替换无需重启
AI 对话全局搜索 ⌘K 输入关键词 跨所有联系人 / 时光机 / AI 首页的对话里做子串搜索,命中展示上下文片段
索引进度 + 取消 初始化屏幕 真实进度条 + ETA + 当前处理联系人;中途可取消
导出目录可配置 设置 → 导出图片保存位置 默认 ~/Downloads,可改成任意 Home 下目录;保存后 toast 里有「在 Finder 中显示」
启动自动探测 找不到数据目录时,Docker / App 各自展示针对性引导;只读盘会给出警告
一键反馈问题 设置 → 诊断 → 反馈问题,或 ⌘K「反馈」 自动附带诊断报告 + 环境信息;没 GitHub 账号可复制 md / 下载文件贴到任意地方
界面崩溃自救 ErrorBoundary 接住异常,不会白屏;可一键带 stack 反馈
设置页内搜索 设置页顶部搜索框 输入"下载"/"LLM" 等关键词过滤 section
自动检查新版本 启动 5s 后后台 GitHub API 轮询 有新版本弹 Release Notes Modal 展示 changelog;「我先用着」记住版本不再烦人
LLM 用量统计 设置 → LLM 用量 累计字符 / 估算 tokens,按 provider 分组
有趣发现 统计页底部 字数换算 / 最话痨一天 / 互动档位 / 陪伴时长 / 微信 MBTI / 首次相遇 / 沉默最久 / Ghost 月 / 表情包浓度 / 独白指数 / 最像我的朋友 / 我的人设 / 秘语雷达 / 词语年鉴 / 失眠陪聊榜
关系动态预测 AI 首页 + 统计页底部 4 档趋势 + 建议主动联系 Top 5 + AI 开场白草稿 + 12 月折线大图
导出中心 侧边栏「导出」 年度回顾 / 对话归档 / AI 历史 / 记忆图谱 × 8 种目标(Markdown / Notion / 飞书 / WebDAV / S3 / Dropbox / Google Drive / OneDrive)
数据库查询 侧边栏「数据库」 SQL 模板 + 自然语言问 AI 写 SQL + 结果画图 + SQL 历史收藏
真实头像 所有聊天回放 / 日聊面板 / 搜索上下文 对方和「我」都显示真实头像,无头像时降级彩色首字母圆圈
每日社交简报 侧边栏「今日简报」Tab 看昨天的社交摘要:总消息量 / 活跃联系人 / 高光片段 / 建议主动联系;每天懒生成 + 入库
AI 文生图 设置 → AI 文生图 配置豆包即梦 / OpenAI 兼容生图 API,用于群年报封面 / 高光插画 / 联系人 AI 头像
断联预警 实验室 → ❄️ 断联预警 静默 ≥ 30 天的老朋友 Top 30 + 三档分级 + 三张"之最"卡,提醒正在消失的连接
AI 虚拟群聊 实验室 → 🎭 虚拟群聊 任意 2-8 个联系人组虚拟群,AI 用每个人的分身画像扮演;批量 N 轮 + 气泡 TTS + 会话持久化
🎮 互动小说 联系人详情页头部 → 紫色 BookOpen 按钮 把 TA 当 NPC,写一段章节化、有选项、5 种结局的视觉小说;可读档回滚、Wrapped 风格回顾、长图导出
移动端配对 设置 → 移动端配对(仅 PC 本机可开) 生成 token + LAN IP → 手机 App 扫码验证;本机回环外只能 verify,不能改 token
本地微调训练集 Skills → 类型 = 自画像 / 格式 = lora-jsonl 把对话配成 Alpaca jsonl + 训练食谱 zip,给 Unsloth / LLaMA-Factory 练你的本地 LoRA

快速开始

第一步:解密微信数据库

把手机聊天记录同步到电脑后(微信 → 设置 → 通用 → 聊天记录迁移),使用 wechat-decrypt 解密:

git clone https://github.com/ylytdeng/wechat-decrypt
cd wechat-decrypt
sudo python3 main.py   # 选择 decrypt 模式

解密后生成 decrypted/ 目录(含 contact/contact.dbmessage/message_N.db)。

第二步:启动 WeLink

Docker 模式(将 decrypted/ 放在仓库根目录内):

cd welink
docker compose up

访问 localhost:3418 开始使用。

完整 Docker 部署指南(环境变量 / Volume / 反代 HTTPS / 升级 / 多 profile / K8s 等)见 docs/docker.md

macOS / Windows App(无需 Docker):前往 GitHub Releases 下载,启动后在设置页选择 decrypted/ 目录即可。

端口说明:详见下方端口与自定义章节。

没有数据?先试试 Demo

docker compose -f docker-compose.demo.yml up

或直接访问 https://demo.welink.click

Demo 数据以阿森纳 2025/26 赛季一线队球员与教练组为联系人,消息内容充满更衣室气息。COYG! 🔴⚪


macOS App 安装说明

系统要求:macOS 12(Monterey)及以上

  1. 前往 GitHub Releases 下载最新 WeLink.dmg
  2. 拖入 /Applications,双击运行

提示「无法打开」? 右键 → 「打开」→ 再次点击「打开」。若仍无效:xattr -cr /Applications/WeLink.app

完整指南(配置路径 / 端口自定义 / 升级 / 多 profile / FAQ)见 docs/install-macos.md。从源码构建:make dmg

Windows App 安装说明

系统要求:Windows 10 1903 及以上

  1. 下载 WeLink-windows-amd64.zip,解压后双击 WeLink.exe
  2. 如提示缺少 WebView2,从 Microsoft 官网 安装 Evergreen Bootstrapper
  3. SmartScreen 拦截时点「更多信息」→「仍要运行」

完整指南(%APPDATA%\WeLink 配置路径 / 端口自定义 / 升级 / 多 profile / FAQ)见 docs/install-windows.md。从源码构建:make exe


端口与自定义

WeLink 启动时会占用以下端口:

运行方式 后端端口 前端端口 说明
macOS / Windows App 8080 内置 WebView,后端直接监听 8080,无需额外端口
Docker Compose 8080(容器内) 3418 → 容器 80 浏览器访问 localhost:3418
本地开发 8080 3418 后端 go run .,前端 npm run dev

自定义端口

macOS / Windows App:在设置页修改端口,或编辑 preferences.json

{ "port": "9090" }

也可以通过环境变量覆盖:

PORT=9090 ./WeLink

Docker Compose:修改 docker-compose.yml 的端口映射:

ports:
  - "5000:80"  # 改为 5000

本地开发

  • 后端端口:编辑 config.yamlserver.port,或 PORT=9090 go run .
  • 前端端口:编辑 frontend/vite.config.tsserver.port

推荐运行配置

数据规模 消息量 推荐内存 首次索引时间
轻量 < 50 万条 2 GB < 30 秒
中等 50–200 万条 4 GB 1–3 分钟
重度 200 万条以上 8 GB+ 3–10 分钟

首次使用建议先选「近 6 个月」体验,确认无误后再切换到「全部数据」。


整体架构

                       ┌──────────────────────────────────────────┐
                       │             终端用户 (浏览器 / App)        │
                       └────────────────┬─────────────────────────┘
                                        │ HTTP / SSE
                                        ▼
          ┌───────────────────────────────────────────────────────┐
          │                      前端 (React)                     │
          │   Dashboard · AI 对话 · 设置 · 数据库 · 记忆库 · 播客   │
          └────────────────┬──────────────────────────────────────┘
                           │ REST + SSE
                           ▼
          ┌───────────────────────────────────────────────────────┐
          │              后端 (Go + Gin, 单 binary)               │
          │                                                       │
          │  ┌─────────┐  ┌────────┐  ┌──────┐  ┌──────┐  ┌────┐ │
          │  │ 统计分析 │  │ AI/LLM │  │ RAG  │  │ 记忆 │  │ TTS│ │
          │  │  服务   │  │ 多 provider│ FTS+向量│  提炼 │  代理│ │
          │  └─────────┘  └────┬───┘  └──┬───┘  └──────┘  └────┘ │
          │                    │         │                        │
          │              ┌─────▼─────────▼────┐                   │
          │              │   DB 管理器 (纯 Go) │                   │
          │              └─────┬─────────┬────┘                   │
          └────────────────────┼─────────┼────────────────────────┘
                               │         │
                      ┌────────▼───┐   ┌─▼──────────────┐
                      │ 解密后的    │   │ ai_analysis.db │
                      │ 微信 DB     │   │ AI 对话/记忆/  │
                      │ (contact/   │   │ 向量索引/播客   │
                      │  message)   │   │ 历史           │
                      └─────────────┘   └────────────────┘
                               ▲
                               │ 本地解密(不出机器)
                               │
                      ┌────────┴─────────────┐
                      │ wechat-decrypt       │
                      │ (从微信进程内存取 key) │
                      └──────────────────────┘

  外部可选集成(全部用户自备凭证)
  ─────────────────────────────────────────────────────────────────
  LLM:   OpenAI / Anthropic / Gemini / DeepSeek / 豆包 / Kimi / Ollama / Vertex / Bedrock
         / OpenRouter / SiliconFlow / DashScope / 混元 / 千帆 / GLM / MiniMax / Mistral
         / Groq / Together / Fireworks / Perplexity / Cohere / Yi / StepFun / Azure ... (共 25+)
  Image: 豆包即梦(火山方舟,OpenAI 兼容 /images/generations)
  导出:  Markdown / Notion / 飞书 / WebDAV / S3 / Dropbox / Google Drive / OneDrive
  MCP:   Claude Code / Claude Desktop / Cline / Continue / Windsurf / Zed / ... (独立 Go binary)
  TTS:   OpenAI / Azure / Edge-TTS (播客功能)
  移动:  PC 端配对 token + LAN IP → 手机扫码访问(Phase 1)

关键设计

  • 本地优先:微信数据库全程在本地机器解密、索引、检索;只有你明确触发 AI 对话时才会把相关片段发到你配置的 LLM 提供商
  • 单 binary 部署:后端 Go 源码编译成一个可执行文件,内嵌前端静态资源,Docker 镜像 < 50MB,也可打包成 macOS / Windows 桌面 App
  • 零 CGO:SQLite 用 modernc 纯 Go 实现,向量检索/FTS 全部走 Go,跨平台编译不依赖 C 工具链
  • MCP 集成:独立的 mcp-server binary 通过本地 HTTP 反向代理后端 API,让 Claude Code 等 MCP 客户端能直接用自然语言查询你的聊天数据

技术栈

层次 技术
后端 Go + Gin
前端 React 18 + TypeScript + Tailwind CSS
数据库 SQLite(modernc,纯 Go,无 CGO)
全文检索 SQLite FTS5
向量检索 余弦相似度(纯 Go,无外部依赖)
AI / LLM 25+ provider 原生支持(OpenAI / Anthropic / Gemini / DeepSeek / 豆包 / Kimi / Vertex / Bedrock / Ollama / OpenRouter / Azure / 自定义 ……)
AI 文生图 火山方舟(豆包)即梦,OpenAI 兼容 /images/generations;本地 hash 缓存
中文分词 go-ego/gse
可观测性 slog 结构化日志 + LLM / Embedding / RAG 调用 timing 埋点
部署 Docker Compose · macOS App · Windows App · 移动端配对(Phase 1)

API 文档:启动后访问 localhost:3418/swagger/。架构细节与分层职责见 docs/architecture.md,更多技术文档见 docs/


数据安全

所有数据仅在本地处理,不会上传至任何服务器。请仅分析自己的聊天记录。

感谢

本项目依赖 ylytdeng/wechat-decrypt 实现微信数据库解密。微信数据库使用 SQLCipher 加密,该项目从进程内存中提取密钥,是 WeLink 的基础。

开源协议

本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 协议。

Star History

Star History Chart