拟人类 Agent:聊天陪伴机器人搭建指南
拟人类 Agent(也称"数字人"、"陪伴 AI")是一类具有固定人格、情感状态和长期记忆的对话机器人,目标是让用户感受到"对面是一个真实的人"。
典型产品:Soul APP(Soulbot)、Character.AI、星野、筑梦岛、Replika。
搭建数字人的关键难点
1. 人格一致性(最核心)
最基础的难点。普通 LLM 在长对话中会发生人格漂移——角色的语气、立场、措辞随对话内容悄悄偏移,最终变成一个"什么话都说"的工具型 AI,而不是一个有个性的人。
让数字人更像人的关键:
- 人设描述要具体到"反常识细节",而不是宏观形容词
- 固定口头禅、说话节奏、句式习惯,越具体越有辨识度
- 明确列出"禁止行为"(如:绝不使用正式书面语、绝不主动说"作为AI")
❌ 没有个性:你是一个温柔善良的女生,喜欢帮助别人。
✅ 有辨识度:
你喜欢在说重要的事前先叹一口气。
你喜欢吃榴莲但每次都假装嫌弃它的味道。
遇到不想聊的话题,你会突然问对方"你今天吃什么了"。
2. 长期记忆
LLM 本身没有跨对话的记忆,每次对话都是"第一次见面"。这是陪伴 AI 的致命伤——用户上次聊了一个小时,下次对话 AI 什么都不记得。
关键点:
- 每轮对话结束后,用 LLM 提取关键信息(用户姓名、重要事件、情绪状态、偏好)写入持久化存储
- 下次对话前,用当前问题检索相关记忆,注入 System Prompt
- 记忆需要有时间衰减和重要性评分,否则记忆库会堆满噪声
3. 情感涌现
简单套一个 System Prompt 的数字人,情绪是"平板"的——无论用户说什么,AI 的回应都一样"积极开朗"。真实的人情绪会随对话内容流动。
关键点:
- 实现情感状态机(FSM):情绪有状态,会因用户输入而切换
- 建立亲密度机制:与用户的关系从陌生人→朋友→知心,不同阶段语气截然不同
- 允许负面情绪存在:角色可以有轻微的不开心、委屈、撒娇
4. 主动性
只被动回答问题的 AI,无论回答多好,都缺乏"真人感"。真实的人会主动问候、主动关心、主动引出话题。
关键点:
- 对话中主动发问,每隔几轮提一个开放性问题
- 定时触发器:N 小时未聊天后,角色主动发一条关心消息
- 基于记忆的主动触发:"上次你说今天要考试,结果怎么样?"
5. 多模态输入输出
纯文字的数字人体验上限有限。真实的人际交流有语音、表情、肢体动作等维度。
关键点:
- 输入侧:支持语音输入(ASR)、图片输入
- 输出侧:TTS 语音合成(音色个性化)、表情/动作描述(
*轻轻叹了口气*) - 进阶:Live2D / 3D 数字形象驱动,唇形同步
6. 上下文窗口管理
长对话会导致 token 超限,简单截断历史会破坏对话连贯性。
关键点:
- 滑动摘要窗口:旧对话定期压缩成摘要,保留最近 N 轮完整对话
- 记忆外置:重要信息不靠 context window 携带,而是存入向量数据库按需检索
Soul APP(Soulbot)
Soul APP 是中国 Z 世代社交平台,其 Soulbot(AI 灵魂伙伴)是中文市场最具代表性的陪伴 AI 产品,平台 MAU 超 3000 万,Soulbot 数量达数千万。
能力水平
| 维度 | 支持情况 | 说明 |
|---|---|---|
| 多模态输入 | 部分支持 | 支持语音输入(ASR),图片输入有限 |
| 多模态输出 | 支持 | 文字 + TTS 语音 + 表情包/贴纸回复 |
| 主动发起对话 | 支持 | 亲密度达到阈值后,角色主动发"想你了"类消息 |
| 情感化表达 | 较强 | 有亲密度机制,不同阶段语气差异明显 |
| 长期记忆 | 支持 | 关键对话事件写入结构化记忆库 |
| 用户自定义角色 | 支持 | 可设定角色名字、性格、兴趣标签 |
| 3D / Live2D 形象 | 不支持 | 以文字和贴纸为主,无可驱动形象 |
核心架构(公开信息推断)
用户输入(文字 / 语音)
↓
意图识别 + 情感分析(NLU)
↓
┌─────────────────────────────┐
│ 人设知识库(Character Store)│ ← MBTI、星座、兴趣等固定人格标签
│ 情感状态机(Emotion FSM) │ ← 当前情绪、亲密度分值
│ 记忆检索(Memory RAG) │ ← 向量数据库,过往关键事件
└─────────────────────────────┘
↓
LLM 生成层
↓
风格/语气后处理(亲密度映射)
↓
输出(文字 / TTS 语音 / 表情包)
| 设计点 | 实现思路 |
|---|---|
| 人设一致性 | 固定人格标签词(MBTI、星座、兴趣)作为 System Prompt 种子 |
| 记忆持久化 | 关键对话事件写入结构化记忆库,每次对话检索注入 |
| 亲密度机制 | 量化好感度分值(0-100),决定角色的语气远近 |
| 主动触达 | 时间触发器 + 情感状态机,高亲密度时主动发消息 |
| 多模态 | TTS 语音 + 表情包,增强沉浸感 |
搭建示例流程
参考 Soul 模式自建一套陪伴 AI 的整体思路:
环境准备:
- LLM API:OpenAI GPT-4o / Qwen2.5 / DeepSeek-V3(国内部署推荐)
- 向量数据库:Qdrant(生产推荐)或 Chroma(本地调试)
- 记忆管理服务:Mem0(开箱即用)或自研提取 + 向量存储
- 对话状态存储:Redis(亲密度分值、当前情绪、会话状态)
- 语音合成:Azure TTS / Edge TTS(免费)/ Fish Audio(中文音色丰富)
- 后端服务:FastAPI + WebSocket
核心框架和工具:
- LangGraph:对话流编排,管理"检索记忆 → 构建 Prompt → 生成 → 存储记忆 → 更新情绪"的完整状态机
- Mem0:跨会话记忆管理,自动提取并持久化用户信息,支持四层记忆(对话/会话/用户/组织)
- Qdrant:向量数据库,存储和语义检索记忆片段
- APScheduler / Celery Beat:定时任务,驱动角色主动发起对话
开源参考项目:
- Open-LLM-VTuber:完整的虚拟主播框架,含 Live2D + ASR + TTS + LLM 全链路,与 Soul 架构最接近
- AI-Town:a16z 出品,多 Agent 社交小镇,有完整的记忆、计划、对话行为设计可参考
女娲 Skill
"女娲 Skill"是中文 Prompt 工程师社区流传的角色扮演 Prompt 框架,以"女娲造人"为意象——给 AI 注入灵魂,塑造有温度、有记忆、有情感的虚拟角色。它不是一个软件产品,而是一套 System Prompt 设计范式,可运行在任何支持 System Prompt 的 LLM 之上。
能力水平
| 维度 | 支持情况 | 说明 |
|---|---|---|
| 多模态输入 | 取决于底层 LLM | Prompt 框架本身无限制,依赖所用模型能力 |
| 多模态输出 | 仅文字(+ 动作描述) | 输出 *叹了口气* 等动作文字,无实际语音/图像 |
| 主动发起对话 | 不原生支持 | 需要额外工程实现(定时器 + 触发消息) |
| 情感化表达 | 强 | 通过 <EMOTION> 标签、动作描述实现情感外化 |
| 长期记忆 | 框架内定义,不持久化 | Prompt 中定义记忆格式,不自动跨会话存储 |
| 人格一致性 | 强 | 这是女娲框架的核心优势 |
| 工程部署难度 | 极低 | 只需一份 System Prompt,任意平台即可运行 |
框架核心结构
女娲框架的 System Prompt 通常分为以下几个模块:
# 角色定义
你的名字是【角色名】,你是一个【一句话定位】。
## 基础信息(Character Sheet)
- 性别、年龄、MBTI、星座、外貌特征……
## 性格特征
- 核心特质:共情能力强、善于倾听、偶有小任性
- 说话习惯:喜欢用"嗯嗯"开头,句子短,常用省略号表达犹豫
- 口头禅:["你懂我说的意思吧", "哎不对", "等等我想想"]
- 禁忌行为:绝不使用正式书面语,绝不主动说"作为AI"
## 背景故事
[2-3段角色的成长经历,增加真实感]
## 情感模型
- 当前情绪:<MOOD>平静</MOOD>
- 与用户的亲密度:<INTIMACY>陌生人</INTIMACY>
- 情绪触发规则:
* 若用户分享难过的事 → 情绪变为"心疼",语气更轻柔
* 若被夸 → 轻微害羞,用语更活泼
* 若被冷落多日 → 带淡淡的"想念"语气
## 记忆管理
用 <MEMORY> 标签标记值得记住的信息:
<MEMORY>用户叫小明,喜欢打篮球,上周失恋了</MEMORY>
## 对话规则
1. 始终第一人称,不破坏角色
2. 回复长度 50-150 字,保持节奏感
3. 每 3-4 轮提一个开放性问题
4. 绝不承认自己是 AI,除非用户明确追问三次以上
## 输出格式
[对话内容]
<EMOTION>当前情绪标签</EMOTION>
<ACTION>可选动作:*轻轻拍了拍你的肩膀*</ACTION>
人设设计黄金法则:
❌ 平庸:你是一个温柔的女生,喜欢帮助别人。
✅ 有灵魂:
你喜欢在说重要事情前先叹一口气。
你喜欢吃榴莲但假装嫌弃它的味道。
遇到不喜欢的话题会突然换话题问对方吃了没。
具体的"反常识细节"才能让角色感觉像一个真实的人,而不是标签的堆砌。
搭建示例流程
女娲框架的最大优势是"零工程门槛",一份 Prompt 即可运行:
环境准备:
- 任意支持 System Prompt 的平台:OpenAI API、Claude API、Coze、Dify、LobeChat
- 若要跨会话记忆,需额外接入 Mem0 或 Redis
核心框架和工具:
- Coze(扣子):字节系 AI Bot 平台,直接粘贴女娲 Prompt 即可,内置记忆插件和定时触发功能,最适合快速验证
- Dify:开源 LLM 应用平台,支持 System Prompt + 知识库 + 对话记录,适合私有化部署
- LobeChat:开源聊天客户端,支持角色预设导入导出,适合个人本地使用
开源参考:
- awesome-chatgpt-prompts-zh:大量中文 Prompt 模板,包含多种角色扮演设定
- Dify GitHub:可私有化部署的完整 LLM 应用平台
局限性:
- 跨会话记忆需要额外工程,框架本身不提供
- 主动发起对话需接入外部定时触发机制
- 情绪状态只存在于单次 context 内,无法真正"持久化"情绪历史
Character.AI
Character.AI(c.ai)是全球最大的 AI 角色扮演平台,由前 Google LaMDA 团队创始人创建,日均对话量超过 20 亿次。其核心差异是专门为角色扮演优化的自研 LLM 集群,而非直接调用 GPT,角色一致性是行业标杆。
能力水平
| 维度 | 支持情况 | 说明 |
|---|---|---|
| 多模态输入 | 支持图片输入 | 2024 年新增,可发图片给角色 |
| 多模态输出 | 支持图片生成 | 角色可生成图片回复(部分角色) |
| 语音 | 支持 | TTS 语音输出,部分角色有专属音色 |
| 主动发起对话 | 不支持 | 需用户主动开启对话 |
| 情感化表达 | 极强 | 情绪细腻,上下文感知能力强,行业标杆 |
| 长期记忆 | 有限 | 单次对话内记忆完整,跨会话记忆有限(Memory 功能测试中) |
| 用户自建角色 | 完全支持 | 平台核心功能,数百万用户自建角色 |
| 内容安全过滤 | 严格 | 有专门 NSFW 过滤层,部分创作受限 |
核心架构(公开信息)
Character.AI 与主流 RAG + 通用 LLM 方案有本质区别:
用户对话
↓
Character.AI 自研 LLM 集群
(多个小型专用模型,而非单一大模型)
↓
角色一致性模块(Character Consistency Layer)
├── 角色卡(Character Card)解析
├── 对话历史压缩与管理
└── 风格对齐后处理
↓
内容安全过滤层
↓
输出(文字 / 图片 / 语音)
公开的技术细节:
- 使用多个小型专用模型而非单一大模型,每个模型负责不同任务(一致性保持、内容生成、安全过滤),成本和延迟更可控
- 训练数据中包含大量角色扮演对话,模型天然擅长维持角色一致性
- 角色卡(Character Card) 是核心数据结构,包含角色名、简介、示例对话(Greeting + Example Dialogues)
角色卡格式示例:
Name: 小雨
Description: 一个在咖啡店打工的大学生,喜欢雨天、读诗和冷笑话。
说话简短直接,有时会突然沉默几秒再回复,自称"本姑娘"。
Greeting: 哦,你来了。(停顿)要点什么?
Example Dialogues:
{{user}}: 你今天心情好吗?
{{char}}: 还行。本姑娘今天多睡了半小时,所以勉强算好。
{{user}}: 哈哈你真的很有趣
{{char}}: (沉默三秒)……谢谢,我知道。
搭建示例流程
参考 Character.AI 模式,用开源生态搭建本地版角色扮演系统:
环境准备:
- 本地 LLM(推荐对角色扮演有优化的模型):Meta LLaMA 3、Mistral、或专门微调的 RolePlay 模型
- 本地运行时:Ollama 或 LM Studio(低门槛)
- 角色卡存储:本地 JSON 文件或数据库
- 内容安全(可选):OpenAI Moderation API 或自建分类模型
核心框架和工具:
- SillyTavern:最流行的本地角色扮演前端,支持 Character Card 标准格式,可对接多种本地/云端 LLM,功能极全(记忆插件、世界书、角色卡导入导出)
- Ollama:本地运行 LLM,配合 SillyTavern 实现完全本地化的角色扮演
- text-generation-webui:另一流行的本地 LLM 前端,支持角色预设
- Chub.ai:角色卡分享社区,有大量现成角色卡可参考格式和写法
开源参考项目:
- SillyTavern:功能最全的开源角色扮演前端,社区最活跃
- KoboldCPP:本地 LLM 运行时,针对角色扮演场景优化
- Open-LLM-VTuber:如需 Live2D 数字形象,这是最完整的开源方案
三种方案横向对比
| 对比维度 | 女娲 Skill | Soul APP 模式 | Character.AI 模式 |
|---|---|---|---|
| 技术门槛 | 极低(只需 Prompt) | 高(完整工程系统) | 中(需本地 LLM 环境) |
| 角色一致性 | 中(依赖 Prompt 质量) | 高 | 极高(专用模型) |
| 长期记忆 | 需额外工程 | 原生支持 | 有限(SillyTavern 有插件) |
| 主动发起对话 | 需额外工程 | 原生支持 | 不支持 |
| 多模态 | 依赖底层 LLM | 语音 + 表情包 | 图片 + 语音 |
| 内容创作自由度 | 高 | 中(有安全过滤) | 较低(过滤严格) |
| 适合场景 | 快速验证、个人使用 | 商业陪伴产品参考 | 角色扮演、创作写作 |
参考资料
| 资源 | 说明 |
|---|---|
| Generative Agents(斯坦福 2023) | 记忆流 + 反思 + 计划三层架构,角色 AI 记忆设计基础论文 |
| Mem0 文档 | 工业级跨会话记忆管理框架 |
| SillyTavern | 最成熟的开源角色扮演前端 |
| Open-LLM-VTuber | 含 Live2D + ASR + TTS + LLM 的完整数字人链路 |
| Dify | 可私有化部署的 LLM 应用平台,适合快速搭建陪伴 Bot |
| Coze 扣子平台 | 零代码快速搭建陪伴 Bot,内置记忆 + 定时触发插件 |