一个基于 阿里云通义千问(Qwen) + Agent架构 + RAG知识库 + 向量数据库 的智能情感支持聊天机器人,具有情感识别、共情回应、主动服务、长期记忆和数据分析能力。
参考项目: emotional_chat
🆕 更新说明 v3.1.0: - ✅ Runtime + Skills 架构升级(43个模块 + AgentCore V2 适配层) - ✅ 六层记忆系统重构(L1-L6 分层架构) - ✅ WorkBuddy 风格 UI 全面升级 + 流式响应支持 - ✅ Markdown 渲染支持(AI回复支持标题、列表、代码块、表格等格式) - ✅ 深度思考模式(更深入的分析与推理) - ✅ 输入框粘贴图片功能(剪贴板图片直接粘贴 + 缩略图预览) - ✅ 流式聊天优化(httpx 直接调用,修复输入法兼容问题)
状态: ✅ 已完成集成,升级至 Runtime+Skills 架构
从"被动响应"升级到"主动服务"的智能对话系统。v3.1.0 引入 Runtime + Skills 架构,实现模块化、可插拔的技能系统。
核心组件: - 🧠 Planner (规划器): 智能任务分解和策略选择 - 🛠️ Tool Caller (工具调用器): 10+ 内置工具自动调用 - 💾 Memory Hub (记忆中枢): 长短期记忆管理和用户画像 - 🔄 Reflector (反思器): 主动回访和策略优化 - ⚙️ Agent Core (核心控制器): 统筹协调所有组件
Runtime+Skills 架构 (v3.1.0):
┌───────────────────────────────────────────────────┐
│ ConversationRuntime │
│ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Lifecycle │ │ Turn │ │ Snapshot │ │
│ │ Mixin │ │ Mixin │ │ Mixin │ │
│ └───────────┘ └──────────┘ └───────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ SkillRegistry (5大技能) │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────┐ │ │
│ │ │Emotion │ │Memory │ │Planning│ │Reflect│ │ │
│ │ │Skill │ │Skill │ │Skill │ │Skill │ │ │
│ │ └────────┘ └────────┘ └────────┘ └──────┘ │ │
│ │ ┌────────┐ │ │
│ │ │Tool │ │ │
│ │ │Skill │ │ │
│ │ └────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌────────────┐ ┌────────────┐ ┌───────────┐ │
│ │PolicyEngine│ │SessionFSM │ │BudgetPress│ │
│ └────────────┘ └────────────┘ └───────────┘ │
│ ┌────────────┐ ┌────────────┐ │
│ │HookDispatch│ │FallbackMgr │ │
│ └────────────┘ └────────────┘ │
└───────────────────────────────────────────────────┘
43个模块: 覆盖对话生命周期、技能注册、策略引擎、会话状态机、预算管控、钩子分发、降级管理等。
工作原理:
用户输入 → Agent Core
↓
┌──────┴──────┐
│ Planner │ 分析目标、分解任务
└──────┬──────┘
↓
┌──────┴──────┐
│ Memory Hub │ 检索记忆、构建画像
└──────┬──────┘
↓
┌──────┴──────┐
│ Tool Caller │ 调用工具、执行任务
└──────┬──────┘
↓
┌──────┴──────┐
│ Reflector │ 评估效果、规划回访
└──────┬──────┘
↓
智能回复生成
详细文档: 查看 AGENT_README.md
状态: ✅ 已完成集成
为AI回复添加了智能打字机效果,让对话更加生动有趣。
核心特性: - 🎭 情绪化打字: 根据AI情绪调整打字速度和光标颜色 - ⚡ 智能速度: 标点符号停顿、中文字符优化、空格快速通过 - 🎮 交互控制: 点击暂停/恢复、暂停指示器 - 🎨 视觉增强: 闪烁光标、情绪色彩、动画效果
情绪化配置:
😢 悲伤情绪: 40ms速度 + 蓝色光标 (#74b9ff)
😠 愤怒情绪: 20ms速度 + 红色光标 (#ff7675)
😊 开心情绪: 25ms速度 + 绿色光标 (#00b894)
😐 中性情绪: 30ms速度 + 黑色光标 (#333)
技术实现: - React组件化设计 - 动态速度计算算法 - 情绪状态映射 - 用户交互控制
状态: ✅ 已完成集成
采用"规则+模型"的混合架构,准确识别用户意图,为对话生成提供关键依据。
核心特性: - 🔍 混合识别: 规则引擎(快速)+ ML分类器(准确) - 🚨 危机优先: 优先检测危机情况,确保安全第一 - 💡 智能Prompt: 根据意图自动构建针对性的响应策略 - ⚡ 高效处理: 关键词快速匹配,毫秒级响应
6大意图类型: | 意图 | 说明 | 示例 | |------|------|------| | emotion | 情感表达 | "我好难过"、"今天心情不好" | | advice | 寻求建议 | "怎么办?"、"你有什么建议" | | conversation | 普通对话 | "今天天气不错" | | function | 功能请求 | "提醒我吃药" | | crisis | 危机干预 | "不想活了" ⚠️ | | chat | 闲聊 | "你好"、"在吗" |
测试意图识别:
# 运行测试套件
python3 test_intent_module.py
# 测试API接口
curl -X POST http://localhost:8000/intent/analyze \
-H "Content-Type: application/json" \
-d '{"text": "我该怎么办?", "user_id": "test_user"}'
详细文档: 查看 docs/意图识别模块说明.md
状态: ✅ 已完成集成
集成专业心理健康知识库,提供有科学依据的建议。
特性: - 📖 知识加载: 支持 PDF、文本等多种格式 - 🔍 语义检索: 基于向量相似度检索相关知识 - 💡 智能增强: 自动判断何时使用知识库 - 🎯 精准匹配: 6大类心理健康知识分类
知识类别: 1. 认知行为疗法(CBT) 2. 正念减压技术(MBSR) 3. 积极心理学 4. 焦虑应对策略 5. 睡眠改善方法 6. 情绪调节技巧
初始化知识库:
# 初始化内置知识
make rag-init
# 或直接运行
python init_rag_knowledge.py
详细文档: 查看 docs/RAG实施步骤.md
六层记忆架构 (v3.1.0):
┌─────────────────────────────────┐
│ L1 工作记忆 (Working Memory) │ 当前对话上下文
├─────────────────────────────────┤
│ L2 短期记忆 (Short-term) │ 近期会话摘要
├─────────────────────────────────┤
│ L3 情景记忆 (Episodic) │ 关键对话片段
├─────────────────────────────────┤
│ L4 语义记忆 (Semantic) │ 用户画像与知识
├─────────────────────────────────┤
│ L5 程序记忆 (Procedural) │ 对话策略与模式
├─────────────────────────────────┤
│ L6 长期记忆 (Long-term) │ ChromaDB向量存储
└─────────────────────────────────┘
特性: - 🔍 语义检索: 基于语义相似度检索历史对话 - 🌐 跨会话记忆: 不限于当前会话,可访问所有历史对话 - 👤 用户画像: 自动构建用户性格特征和偏好 - 😊 情感模式学习: 学习用户的情感表达模式 - 📊 分层存储: L1-L6 六层架构,按需检索,高效精准
状态: ✅ 已完成集成
AI回复支持完整的 Markdown 格式渲染,让回复内容更加结构化和易读。
支持的格式: - 📌 标题: H1-H6 层级标题 - 加粗 / 斜体 / ~~删除线~~ - 📋 列表: 有序列表和无序列表 - 💻 代码块: 语法高亮代码展示 - 📊 表格: 结构化数据展示 - 📖 引用: 重要信息引用样式 - 🔗 链接: 可点击的URL链接
状态: ✅ 已完成集成
支持在输入框中直接粘贴剪贴板图片,无需手动选择文件。
功能特性: - 📋 剪贴板粘贴: Ctrl/Cmd+V 直接粘贴截图或复制的图片 - 🖼️ 缩略图预览: 粘贴/上传的图片显示缩略图预览 - 🔍 点击查看大图: 点击缩略图在新标签页查看原图 - ✂️ 一键删除: 支持删除已粘贴的图片附件 - 📎 附件上传: 支持图片、PDF、TXT、Word 等多种文件格式 - 💬 附件分析: 上传附件后自动切换为内容分析模式
状态: ✅ 已完成集成
一键开启深度思考,AI将进行更深入的分析与推理,给出更全面、更有深度的回复。
使用方式: 在输入框下方点击"✨ 深度思考"按钮即可开启
💡 提示: 完整详细的安装指南请查看 快速开始详细指南
🍎 MacBook 用户: 查看专门的 MacBook 配置指南 或运行快速配置脚本
./setup_macbook.sh
# 1. 安装依赖
make install
# 2. 初始化数据库
make db-upgrade
# 3. 启动服务
make run # 后端服务
cd frontend && npm start # 前端服务(新终端)
# 配置环境变量
cp config.env.example config.env
nano config.env
# 启动所有服务
docker-compose up -d
对于 macOS 用户,我们提供了专门的配置指南和脚本:
方式一:使用自动配置脚本(推荐)
# 运行自动配置脚本
./setup_macbook.sh
方式二:手动配置
# 1. 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. 安装系统依赖
brew install python@3.10 mysql node cmake
# 3. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 4. 安装 Python 依赖
pip install -r requirements.txt
# 5. 配置环境变量
cp config.env.example config.env
nano config.env
# 后续步骤与 Linux 相同
📖 详细文档: 查看 MacBook 配置指南 获取完整的 macOS 安装说明、常见问题解决方案和性能优化建议。
# CentOS/RHEL/Alibaba Cloud Linux
sudo yum install -y cmake gcc gcc-c++ make
# Ubuntu/Debian
sudo apt update && sudo apt install -y cmake gcc g++ make build-essential
cd /home/workSpace/emotional_chat
# 检查Python版本
python3 --version
# 安装依赖(Python 3.10+)
pip3 install --user -r requirements.txt
# 或 python3.10 -m pip install --user -r requirements.txt
cd frontend && npm install && cd ..
cp config.env.example config.env
nano config.env # 配置API密钥和数据库信息
必需配置项:
- LLM_API_KEY 或 DASHSCOPE_API_KEY: 阿里云通义千问API密钥
- MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD: MySQL数据库配置
📝 获取API Key: 访问 阿里云 DashScope 创建API Key
# Ubuntu/Debian
sudo apt install mysql-server mysql-client
sudo systemctl start mysql
# CentOS/RHEL
sudo yum install mysql-server mysql
sudo systemctl start mysql
# 创建数据库
mysql -u root -p -e "CREATE DATABASE emotional_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 运行数据库迁移
make db-upgrade
# 初始化RAG知识库(推荐)
make rag-init
后端服务:
python3 run_backend.py
# 或使用 uvicorn(从项目根目录)
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload
前端服务(新终端):
cd frontend
npm start
# 健康检查
curl http://localhost:8000/health
# 测试聊天接口
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{"message": "你好", "user_id": "test_user"}'
常见问题:
- 端口冲突: netstat -tulpn | grep :8000 查看占用
- 依赖安装失败: 确保已安装 CMake 和编译工具
- 数据库连接失败: 检查 config.env 中的数据库配置
📖 更多帮助: 查看 完整安装指南 或提交 Issue
┌─────────────────────────────────────────────────────┐
│ 前端层 (Frontend) │
│ React 18 + Styled Components │
│ 端口: 3000 │
└──────────────────────┬──────────────────────────────┘
│ HTTP/WebSocket
┌──────────────────────▼──────────────────────────────┐
│ 路由层 (Router) │
│ Chat | Memory | Feedback | Evaluation | RAG │
│ Agent Router │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ 服务层 (Service) │
│ ChatService | MemoryService | ContextService │
│ AgentService (可选) │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ 核心层 (Core/Module) │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Agent Core │ │ RAG Module │ │ LLM Module│ │
│ │ • Planner │ │ • KB Manager │ │• Qwen API │ │
│ │ • Tool Caller│ │ • Retriever │ │• LangChain│ │
│ │ • Memory Hub │ │ • Embedder │ └───────────┘ │
│ │ • Reflector │ └──────────────┘ │
│ └──────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Runtime + Skills (v3.1.0) │ │
│ │ • ConversationRuntime • SkillRegistry │ │
│ │ • PolicyEngine • SessionFSM │ │
│ │ • HookDispatch • BudgetPress │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ 数据层 (Data) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MySQL │ │ ChromaDB │ │ Redis │ │
│ │关系数据库 │ │向量数据库│ │ 缓存 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────┘
负责API接口定义和请求分发
backend/routers/
├── chat.py - 聊天接口
├── memory.py - 记忆管理接口
├── feedback.py - 用户反馈接口
├── evaluation.py - 评估系统接口
└── agent.py - Agent智能接口
业务逻辑封装和编排
backend/services/
├── chat_service.py - 聊天服务
├── memory_service.py - 记忆服务
├── context_service.py - 上下文服务
└── agent_service.py - Agent服务(可选)
核心功能模块
backend/modules/
├── agent/ - Agent智能核心
│ ├── core/ - Agent Core, Planner, Tool Caller等
│ ├── services/ - Agent服务实现
│ └── routers/ - Agent路由
├── rag/ - RAG知识库系统
│ ├── core/ - 知识库管理、检索
│ ├── services/ - RAG服务
│ └── routers/ - RAG路由
└── llm/ - LLM模型封装
├── core/ - LLM核心功能
├── providers/ - LLM提供商封装(OpenAI、Anthropic等)
└── services/ - LLM服务
数据存储和管理
📖 详细架构文档: 查看相关模块文档
requirements.txt 安装依赖$ claude mcp add emotional_chat \
-- python -m otcore.mcp_server <graph>