背景与目标
为了让 AI 陪伴具备记忆能力(短期记忆和长期记忆),需要两条 AI 交互通道。
短期记忆:接续 IM 文字聊天的近期话题,语音和文字无缝衔接
长期记忆:记住用户跨越较长时间的偏好、习惯和重要信息
通道 | 交互方式 | 当前记忆状态 |
IM-AI 通道 | 文字聊天 | 腾讯云 IM 原生支持 N 轮上下文,控制台可配置(最大 50 条) |
TRTC-AI 通道 | 语音通话 | 每次通话独立,无跨 session 记忆 |
IM 文字聊天的记忆能力(腾讯云原生支持)
方案说明
腾讯云 IM 的 AI 聊天机器人原生支持多轮上下文,无需额外开发。
配置方式
在腾讯云 IM 控制台可直接调整 AI 机器人的上下文记忆长度,具体操作路径如下:
1. 登录 腾讯云 IM 控制台,选择目标应用。
2. 在左侧导航栏选择消息服务 Chat > AI 聊天机器人。
3. 在机器人列表中找到目标机器人,单击操作列的编辑。
4. 在编辑页的 AI 服务配置区域,修改历史消息数参数。
5. 保存后立即生效,无需重启服务或重新发布客户端。
注意:
历史消息数参数表示每次请求传递给大模型的历史消息条数。最大支持50条。
每次用户发送消息时,IM 后台自动将历史上下文一并送入 LLM。
同时受 IM 套餐中漫游消息时长限制,超过漫游存储时长的消息无法作为上下文携带给 AI 大模型
效果
用户在文字聊天中,AI 始终能"记住"最近 N 轮的对话内容,实现连贯的多轮交互,无需任何客户端或服务端改动。
TRTC 语音通话的记忆能力(双层方案)
TRTC AI 对话通过
StartAIConversation 接口启动,其中 LLMConfig 支持以下关键字段:LLMConfig 字段 | 用途 |
SystemPrompt | 注入长期记忆(人设 + 历史摘要) |
UserMessages | 注入短期记忆(近期 IM 聊天记录) |
History | TRTC 通话内的上下文轮次(最大 50 轮) |
注意:
SystemPrompt 和 UserMessages 均为 LLMConfig 的字段,而非 AgentConfig 的字段。AgentConfig 负责机器人进房配置(UserId / UserSig / WelcomeMessage 等),不承载 LLM 上下文。UserMessages 是通话前注入的外部历史(来自 IM),History 是通话过程中 TRTC 自动管理的上下文轮次,两者互不冲突,可同时使用。两层记忆互补,形成完整的记忆体系:
记忆层级 | LLMConfig 字段 | 内容 | 特点 |
长期记忆 | SystemPrompt | 基础人设 + 用户长期偏好摘要 | 覆盖时间跨度长,精度相对低 |
短期记忆 | UserMessages | 最近 N 条 IM 聊天原文(用户可配置) | 精度高,直接接续文字聊天话题 |
通话内记忆 | History | 当前 TRTC 通话内的上下文轮次 | 自动管理,默认 0,最大 50 轮 |
短期记忆:注入 IM 聊天历史
原理
在每次语音通话启动时,服务端从腾讯云 IM 拉取该用户与机器人的最近 N 条聊天记录,转换格式后通过
LLMConfig.UserMessages 注入给 TRTC AI。流程图

LLMConfig 注入示例
{"LLMType": "openai","Model": "deepseek-chat","APIKey": "...","APIUrl": "https://api.deepseek.com/chat/completions","Streaming": true,"SystemPrompt": "你化身为人工智能助手贾维斯...","History": 10,"Timeout": 10,"UserMessages": [{ "Role": "user", "Content": "你好,我是小明" },{ "Role": "assistant", "Content": "你好小明!很高兴认识你。" },{ "Role": "user", "Content": "帮我推荐一本Python的书" },{ "Role": "assistant", "Content": "推荐《流畅的Python》,适合有一定基础的开发者。" }]}
用户可配置项
配置项 | 说明 | 建议默认值 |
注入条数 N | 拉取最近 N 条 IM 消息作为短期记忆 | 10条 |
最大上限 | 受 LLM token 窗口限制 | 建议不超过30条 |
注意:
Token 消耗:注入的 UserMessages 条数越多,每次 LLM 调用的 token 消耗越大,需结合实际成本合理配置默认值。
IM 消息格式解析:AI 在 IM 通道的回复以
customElem(chunks 数组)形式存储,注入前需还原为完整文本,否则 LLM 上下文理解会出现异常。长期记忆:SystemPrompt 历史摘要
原理
基于用户与 AI 的完整交互历史(包括 IM 文字聊天 + TRTC 语音通话),定期通过 LLM 生成精简摘要,存储在服务端。每次启动语音通话时,将摘要拼接到
LLMConfig.SystemPrompt,使 AI 具备对该用户的长期了解。数据来源
长期记忆的输入数据来自两个通道,合并后可构建更完整的用户画像:
数据来源 | 获取方式 | 内容 |
IM 文字聊天记录 | 调用 IM REST API v4/openim/admin_getroammsg 拉取 | 用户文本消息 + AI 回复(customElem chunks 拼接) |
TRTC 语音对话记录 | ASR 识别的用户语音文本 + LLM 生成的 AI 回复文本 |
903 回调说明
TRTC AI 对话服务支持 EventType 903(
EVENT_TYPE_AI_SERVICE_MSG)服务端回调,每当 ASR 识别出完整一句话或 LLM 返回完整回复时,TRTC 后台会主动推送到开发者配置的回调地址。回调包体格式:
{"EventGroupId": 9,"EventType": 903,"CallbackTs": 1687770730166,"EventInfo": {"EventMsTs": 1622186275757,"TaskId": "xx","RoomId": "1234","RoomIdType": 0,"Payload": {"UserId": "user_123","Text": "我最近在学习 Python","StartTimeMs": 1234,"EndTimeMs": 1269,"RoundId": "xxxxxx"}}}
关键字段:
字段 | 说明 |
Payload.UserId | 发送者 ID,通过判断是否为机器人 UserId 来区分用户发言和 AI 回复 |
Payload.Text | 对话文本内容(ASR 识别结果或 LLM 完整回复) |
Payload.RoundId | 一轮对话的唯一 ID,可用于关联同一轮的用户提问和 AI 回答 |
说明:
摘要内容示例
以下是您与该用户的历史对话摘要,请在本次对话中记住这些信息:- 用户名叫小明,偏好简洁直接的回答风格- 用户从事软件开发工作,熟悉 Python 和移动端开发- 上次讨论了 AI 产品设计方案,用户对语音交互体验很感兴趣- 用户在语音通话中提到希望 AI 能记住自己的偏好,不用每次重复说明- 用户通过语音通话询问过 TRTC 的降噪配置方法
流程图



注意:
摘要更新时机:长期摘要建议在每次对话结束后异步更新,避免影响通话启动速度。
隐私合规:长期记忆摘要仅存储关键事实性信息,不保留原始对话全文,并应在用户协议中明确告知。
摘要长度控制:注入 LLMConfig.SystemPrompt 的摘要建议控制在300 token 以内,避免挤占对话上下文窗口,影响 AI 实时响应质量。
三种记忆能力对比总览
维度 | IM 文字记忆 | TRTC 短期记忆 | TRTC 长期记忆 |
技术方案 | 腾讯云 IM 原生 | LLMConfig.UserMessages 注入 IM 历史 | LLMConfig.SystemPrompt 注入 LLM 摘要 |
数据来源 | IM 后台自动管理 | IM REST API 拉取 | IM 聊天记录 + TRTC 903 回调语音记录 |
覆盖范围 | 最近 50 条 | 最近 N 条(用户配置) | 全量历史(压缩) |
精度 | 高(原文) | 高(原文) | 中(摘要) |
时间跨度 | 短期 | 短期 | 长期 |
额外基础设施 | 无 | 无 | 需要存储层 + 903 回调配置 |