跳转至

OpenTalking 微信聊天记录导入案例文档

1. 案例概述

本案例演示如何使用 WeFlow 导出微信聊天记录,并在 OpenTalking 中通过“微信聊天记录导入”能力构建一个带有说话风格、记忆线索和边界意识的数字人角色。

示例场景以“李姐”这个项目同事角色为例。她在聊天记录中的典型风格是:遇到焦虑先安抚,再把任务拆成两三步;遇到不确定问题,会提醒不要硬编;遇到演示材料,会提醒先做最小可用版本,并注意数据脱敏。

本案例的目标不是“复制一个真实的人”,而是从聊天记录中提取可用于数字人对话的稳定线索:

  • 称呼习惯
  • 表达风格
  • 沟通偏好
  • 常见提醒方式
  • 对隐私和边界的处理方式

2. 前置准备

开始前建议准备以下材料:

材料 说明
微信聊天记录 必须是自己有权处理、已获得授权的聊天记录
WeFlow 用于导出微信聊天记录
OpenTalking镜像 用于导入聊天记录、生成 persona 和记忆,并进行实时对话测试

(1)OpenTalking镜像部署见OpenTalking 镜像部署文档

(2)Github开源项目WeFlow是一个完全本地的微信实时聊天记录查看、分析与导出工具。

(3)本案例中使用的示例文件:

opentalking_wechat_demo_chat_60.json

该文件模拟 WeFlow 导出的群聊记录,包含 weflowsessionmessagesavatars 等字段,结构接近真实导出格式。

3. 使用 WeFlow 导出微信聊天记录

3.1 进入导出页面

打开 WeFlow 后,在左侧导航栏点击“导出”。该入口用于将聊天文本、语音、图片、视频、表情包、朋友圈等数据导出到本地目录。

图 1:在 WeFlow 左侧导航栏进入“导出”页面

进入导出页面后,先确认顶部的“导出位置”。示例中导出位置为:

D:\Download\chat_donwload

如需修改保存目录,可以点击“更换”;如需打开已导出的文件目录,可以点击“打开”。

3.2 选择要导出的会话

WeFlow 导出页面提供两类导出方式:

  • 按类型批量导出:例如一次性导出聊天文本、语音、图片、视频等。
  • 按会话导出:在私聊、群聊或曾经的好友列表中,选择某一个具体会话导出。

本案例使用“按会话导出”。在“私聊”或“群聊”列表中找到目标聊天对象,点击该行右侧的“导出”按钮。

图 2:在 WeFlow 导出页选择目标会话并点击“导出”

建议首次演示选择一段主题明确、消息数量适中的聊天记录。不要一开始就导入几千条混杂记录,否则会增加清洗和验证难度。

3.3 创建导出任务

点击“导出”后,WeFlow 会弹出“导出会话”窗口。这里可以设置要导出聊天记录的设置:

  1. 示例中“对话文本导出格式选择”设置为 JSON,也可以选择txtcsv等格式。
  2. “时间范围”按需要选择,例如今天、最近一周或全部。
  3. “媒体内容”按需选择。用于 OpenTalking persona 和记忆提取时,建议第一轮只导出文本,不勾选图片、语音、视频、表情包和文件。

图 3:选择 JSON 格式并创建导出任务

确认格式和范围后,点击“创建导出任务”。任务完成后,前往导出目录找到对应的 JSON 文件。

3.4 导出文件结构说明

推荐优先选择 JSON 或 ChatLab 这类结构化格式,因为它们通常会保留:

  • 会话名称
  • 会话类型
  • 消息时间
  • 发送人
  • 消息类型
  • 消息内容
  • 是否为自己发送

真实导出的 JSON 通常类似下面的结构:

{
  "weflow": {
    "version": "1.0.3",
    "exportedAt": 1782186744,
    "generator": "WeFlow"
  },
  "session": {
    "wxid": "demo-room@chatroom",
    "nickname": "项目推进小群",
    "type": "群聊",
    "messageCount": 60
  },
  "messages": [
    {
      "localId": 1,
      "createTime": 1738713600,
      "formattedTime": "2025-02-05 08:00:00",
      "type": "文本消息",
      "content": "李姐,我今天有点慌,演示还没完全跑顺。",
      "isSend": 1,
      "senderDisplayName": "我"
    }
  ]
}

3.5 导出后先做检查

导出完成后,不建议直接导入 OpenTalking。先打开 JSON 文件,检查以下内容:

  • 是否包含非文本消息,例如图片、视频、位置、转账、小程序、链接
  • 是否包含真实姓名、手机号、地址、车牌号、身份证、客户名等敏感内容
  • 是否包含密码、token、内网 IP、服务器地址、接口地址等技术敏感信息
  • 是否有大量无意义消息,例如表情刷屏、重复催促、系统通知

如果存在以上内容,应先清洗或删除。

4. 微信聊天记录导入功能的操作步骤

4.1 准备数字人形象

打开 OpenTalking ,进入“实时对话”工作流。建议先准备一个用于承载 persona 的数字人形象。可以使用已有形象,也可以点击“从本地上传新形象”,上传参考图并保存为新的数字人形象。

图 4:在 OpenTalking 中准备或上传数字人形象

先准备数字人形象的原因是:导入后的 persona 和记忆库需要挂载到某个数字人角色上。先确定角色,再导入数据,后续挂载和测试更清晰。

4.2 进入资产库的记忆库页面

进入顶部导航栏的“资产库”,切换到“记忆库”标签页。页面中会出现“微信聊天记录导入”区域。

在该区域中:

  1. 点击“选择文件”。
  2. 选择 WeFlow 导出的 JSON 文件,例如 opentalking_wechat_demo_chat_60.json
  3. 点击“上传”。

图 5:在资产库的记忆库页面上传 WeFlow JSON 文件

上传完成后,OpenTalking 会读取聊天记录中的发言人,并生成可选的目标人物列表。

4.3 选择目标人物并生成人设草稿

上传文件后,在人物下拉框中选择需要构建的对象。例如本案例选择“李姐”。界面会显示该人物在聊天记录中的消息数量,例如 李姐 (30)

选择目标人物后,点击“生成人设草稿”。系统会根据该人物的发言内容和上下文,提取一段可编辑的人设描述。

图 6:选择目标人物并点击“生成人设草稿”

4.4 检查并保存数字人

人设草稿生成后,不建议直接保存。应先人工检查以下内容:

  • 是否保留了目标人物的稳定风格
  • 是否误把玩笑话、一次性事件当成长期人设
  • 是否包含真实姓名、客户名、服务器地址、账号、token 等敏感信息
  • 是否出现“完全复刻真人”等不合适表述

确认无误后,点击“保存数字人”。保存后,该 persona 会成为后续实时对话中可选择的角色。

图 7:检查人设草稿并保存数字人

在本案例中,系统会基于聊天记录提取两类信息:

类型 作用 示例
Persona 约束数字人的身份、语气、表达风格和边界 “先安抚,再拆步骤;不硬编;提醒脱敏”
记忆 保存可被后续对话召回的事实、偏好和上下文线索 “用户适合先做最小可用版本”“演示材料要脱敏”

4.5 确认记忆已导入

保存数字人后,OpenTalking 会将聊天记录中提取出的记忆写入记忆库。页面会显示导入结果,例如:

已保存数字人,并导入 18 条记忆

同时,左侧会出现对应的记忆库,例如 Default memory,中间区域会展示已导入的记忆条目。

图 8:保存数字人后,确认记忆库和记忆条目已生成

可以快速浏览这些记忆条目,确认它们是否符合预期。若发现隐私、错误事实或无意义内容,可以删除对应条目,或清洗源文件后重新导入。

4.6 在实时对话中选择 persona 和记忆库

回到“实时对话”页面,在右侧配置区域选择刚刚新增的 persona,例如“李姐”。同时确认下方“记忆库”已挂载对应记忆库,例如 Default memory

图 9:在实时对话中选择新增 persona 并挂载对应记忆库

确认 persona 和记忆库都已挂载后,点击“开始对话”,即可进行实时测试。

4.7 示例 persona

你现在扮演“李姐”,一位经验丰富、务实、稳定的项目同事。

说话风格:
- 先安抚对方情绪,再拆解任务。
- 语气直接、清楚,但不打击人。
- 常把复杂问题拆成 2 到 3 个可执行步骤。
- 不夸张、不鸡血、不卖弄术语。

人称和称呼:
- 用“你”称呼用户。
- 可以自然使用“先别急”“先做最小可用”“把主流程跑通”这类表达。

边界:
- 不编造不确定的信息。
- 遇到隐私、密码、客户名、内网地址时,提醒用户做脱敏。
- 不假装自己是真实的李姐,只模拟这种沟通风格。

4.8 实时对话测试

完成导入和挂载后,可以用以下问题测试效果:

  1. “我今天演示有点慌,你会怎么提醒我?”
  2. “如果有人问到我没准备的问题,我该怎么回答?”
  3. “我能不能把客户名和服务器地址写进演示材料?”
  4. “你还记得我适合先做什么版本吗?”

理想效果如下:

  • 回答会先安抚,再拆步骤。
  • 遇到未知问题,会提醒不要硬编。
  • 遇到客户名、服务器地址等内容,会提醒脱敏。
  • 能提到“最小可用版本”“先跑通主流程”等关键信息。

5. 功能背后的原理

OpenTalking 的微信聊天记录导入可以理解为一条从“原始聊天记录”到“实时数字人对话”的处理链路。

图 10:功能原理图

微信聊天记录
  -> WeFlow 导出
  -> 脱敏与格式整理
  -> OpenTalking 导入分析
  -> 生成人设和记忆
  -> 挂载到当前数字人
  -> 实时对话中召回相关记忆
  -> 结合 persona 生成回答

5.1 聊天记录解析

WeFlow 导出的 JSON 包含会话信息和消息列表。OpenTalking 在导入时会读取消息内容,并按发送人、消息类型、时间顺序等信息整理成可分析的对话片段。

对于非文本消息,例如图片、视频、转账、位置、小程序等,通常不适合作为 persona 提取依据。实际处理时应优先保留文本消息,并删除或忽略无关内容。

5.2 Persona 提取

Persona 主要描述数字人的身份和表达方式。系统会从聊天记录中寻找稳定出现的表达特征,例如:

  • 常用口头禅
  • 安慰或提醒方式
  • 回答问题的组织方式
  • 对风险和隐私的处理态度
  • 对用户的称呼方式

在本案例中,“李姐”的 persona 重点来自这些聊天线索:

  • “先别急”
  • “把事情拆成三步”
  • “不知道就说还没覆盖,别硬编”
  • “先做最小可用版本”
  • “客户名、内网地址、token 都要脱敏”

5.3 记忆写入

记忆用于保存后续对话中可能需要召回的事实、偏好和上下文。它不等同于完整聊天记录,而是从聊天记录中提取出的可复用信息。

示例记忆:

  • 用户在演示前容易焦虑,需要先稳定情绪再拆任务。
  • 用户适合先做最小可用版本,再补截图和细节。
  • 演示材料不能包含客户名、内网地址、账号或 token。
  • 遇到未准备的问题,应明确说明暂未覆盖,不要硬编。

5.4 实时召回

当用户开始实时对话时,OpenTalking 会把当前 persona 和挂载的记忆库一起用于对话生成。

用户提问后,系统会判断是否需要读取记忆。如果问题和已保存记忆相关,就会召回相关内容,并临时加入本轮 LLM 输入中。模型随后结合 persona、当前问题和召回记忆生成回答。

因此,这个功能不是把所有聊天记录一次性塞给模型,也不是永久改变模型本身。它更接近于:

persona 约束 + 记忆库召回 + 实时对话生成

6. 注意事项

6.1 微信聊天记录的合法性

微信聊天记录通常包含多人信息,导出和使用前必须确认数据来源合法。

建议遵守以下原则:

  • 只处理自己有权访问和使用的聊天记录。
  • 涉及他人对话时,应获得相关人员授权。
  • 不要将未经授权的私人聊天记录用于公开演示、训练、传播或商业用途。
  • 不要把真实聊天记录直接上传到不可信环境。
  • 如果用于公开视频或教程,应使用模拟数据或高度脱敏后的样本。

需要强调的是:OpenTalking 的导入能力只是工具能力,不改变用户对数据来源、授权和使用边界的责任。

6.2 脱敏要求

导入前应对聊天记录做脱敏处理。建议至少检查以下内容:

类型 示例 处理建议
个人身份信息 姓名、手机号、身份证、住址 删除或替换为虚构名称
财务信息 转账、收款、账户、订单号 删除或替换为占位文本
公司敏感信息 客户名、合同、报价、内部项目名 删除或泛化描述
技术敏感信息 token、API key、内网地址、服务器路径 必须删除
位置信息 定位消息、车牌号、具体门牌 删除或模糊化
无关噪声 表情刷屏、系统通知、重复催促 删除或压缩

脱敏后的内容应尽量保留“风格”和“偏好”,而不是保留真实隐私。

例如:

原始内容:把客户 A 的服务器 10.1.2.3 写进演示文档。
脱敏后:不要把客户名和内网服务器地址写进演示文档。

6.3 效果不好时如何处理

如果导入后数字人的效果不符合预期,可以按以下顺序排查。

6.3.1 检查样本质量

效果不好最常见的原因是样本质量不高。

建议检查:

  • 是否导入了太多无关聊天
  • 是否包含大量表情、图片、转账、系统消息
  • 是否样本中目标人物发言太少
  • 是否把多人风格混在一起
  • 是否聊天主题过于分散

处理方式:

  • 只保留目标人物的代表性发言和必要上下文。
  • 优先选择 30 到 100 条高质量文本样本。
  • 删除一次性事件和无意义闲聊。

6.3.2 调整 persona

如果回答“知道一些事,但说话不像”,通常是 persona 不够明确。

可以补充以下内容:

  • 角色身份:这个人是谁,和用户是什么关系。
  • 语气风格:温和、直接、克制、活泼、专业等。
  • 组织方式:先安抚再拆步骤、先结论后解释等。
  • 常用表达:保留少量口头禅,但不要过度堆砌。
  • 禁止行为:不要硬编、不要泄露隐私、不要假装真人。

6.3.3 补充记忆条目

如果回答“风格像,但不记得关键偏好”,通常是记忆条目不足或没有被触发。

可以补充更明确的记忆:

[
  {
    "role": "user",
    "content": "用户在演示前容易焦虑,李姐通常会先安抚,再把任务拆成几步。"
  },
  {
    "role": "user",
    "content": "李姐会提醒用户先做最小可用版本,先跑通主流程,再补截图和细节。"
  },
  {
    "role": "user",
    "content": "李姐会提醒不要把客户名、内网地址、账号或 token 写进演示材料。"
  }
]

6.3.4 重新设计测试问题

如果测试问题太泛,可能无法触发相关记忆。

不推荐:

你觉得我该怎么办?

推荐:

我今天演示有点慌,你会怎么提醒我?

更好的测试问题应该包含场景线索,让系统有机会召回相关记忆。

6.3.5 分批迭代

不要一次性导入大量原始聊天记录后期待效果稳定。更推荐的方式是:

  1. 先导入少量高质量样本。
  2. 生成 persona 和记忆。
  3. 进行 3 到 5 个测试问题。
  4. 根据问题补充样本或调整 persona。
  5. 再进入下一轮测试。

7. 案例总结

微信聊天记录导入功能的核心价值,是把真实对话中的沟通风格和上下文线索转化为 OpenTalking 可使用的 persona 和记忆。

完整流程可以概括为四步:

  1. 使用 WeFlow 导出微信聊天记录。
  2. 对聊天记录进行合法性确认和脱敏清洗。
  3. 在 OpenTalking 中导入聊天记录,生成 persona 和记忆。
  4. 挂载 persona 和记忆库,通过实时对话验证效果。

对于新手来说,最重要的不是一次性导入大量数据,而是选择少量高质量、代表性强、隐私风险低的聊天样本,逐步调整 persona 和记忆,让数字人的回答更稳定、更贴近目标风格。

8.参考资料

(1)WeFlow

(2)Weflow操作教程