MCPcopy Index your code
hub / github.com/congde/emotional_chat

github.com/congde/emotional_chat @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
2,467 symbols 8,609 edges 252 files 1,985 documented · 80%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

心语情感陪伴机器人 🤖💝

一个基于 阿里云通义千问(Qwen) + Agent架构 + RAG知识库 + 向量数据库 的智能情感支持聊天机器人,具有情感识别、共情回应、主动服务、长期记忆和数据分析能力。

参考项目: emotional_chat

🆕 更新说明 v3.1.0: - ✅ Runtime + Skills 架构升级(43个模块 + AgentCore V2 适配层) - ✅ 六层记忆系统重构(L1-L6 分层架构) - ✅ WorkBuddy 风格 UI 全面升级 + 流式响应支持 - ✅ Markdown 渲染支持(AI回复支持标题、列表、代码块、表格等格式) - ✅ 深度思考模式(更深入的分析与推理) - ✅ 输入框粘贴图片功能(剪贴板图片直接粘贴 + 缩略图预览) - ✅ 流式聊天优化(httpx 直接调用,修复输入法兼容问题)

📑 目录

✨ 功能特点

核心功能

  • 🎭 情感识别: 智能分析用户情感状态(开心、难过、焦虑、愤怒等)
  • 🎯 意图识别: ✅ 混合式意图识别系统,准确理解用户意图(6大类型)
  • 💝 共情回应: 根据情感状态和意图生成温暖、理解的回应
  • 🧠 长期记忆: ✅ 六层记忆架构(L1-L6),支持跨会话语义检索
  • 📚 RAG知识库: ✅ 集成专业心理健康知识库,提供科学依据的建议
  • 🤖 Agent智能核心: ✅ Runtime+Skills 架构升级,43个模块 + AgentCore V2
  • 🎙️ 多模态交互: ✅ 支持语音识别、语音合成、图像理解,融合文本/语音/图像情感
  • 🖼️ 图片粘贴上传: ✅ 输入框支持剪贴板图片直接粘贴,缩略图预览
  • 📝 Markdown渲染: ✅ AI回复支持标题、列表、代码块、表格等格式化展示
  • 💡 深度思考模式: ✅ 一键开启更深入的分析与推理
  • 🗄️ 数据持久化: MySQL + Redis 多层存储架构
  • 📊 情感趋势分析: 分析用户情感变化趋势和模式
  • 🔄 上下文理解: 基于对话历史和用户画像提供连贯的回应
  • 🚨 危机检测: 自动识别危机情况,提供专业求助资源

技术特性

  • 🚀 高性能架构: FastAPI + LangChain + Runtime+Skills 分层架构
  • 🎨 现代化界面: React 18 + WorkBuddy风格 UI + 流式响应
  • ⌨️ 打字机效果: 智能打字机动画,根据情绪调整速度和光标颜色
  • 📡 流式响应: ✅ httpx 直接调用流式API,实时输出AI回复
  • 🎙️ 多模态处理: ✅ Whisper语音识别 + gTTS语音合成 + DeepFace人脸情绪识别
  • 🖼️ 图片粘贴: ✅ 输入框支持 Ctrl/Cmd+V 粘贴剪贴板图片
  • 📝 Markdown渲染: ✅ react-markdown + remark-gfm,AI回复格式化展示
  • 💡 深度思考: ✅ 一键开启深度思考模式,更深入的分析与推理
  • 🐳 容器化部署: Docker Compose 一键部署
  • 📈 监控体系: Prometheus + Grafana 完整监控
  • 🔒 安全过滤: 自动检测高风险词汇并提供专业求助信息
  • 🇨🇳 中文优化: 使用通义千问模型,对中文理解和表达更加自然
  • 🔄 数据库迁移: Alembic 管理数据库版本
  • 🤝 混合架构: 规则引擎 + 机器学习分类器双重保障

🌟 通义千问模型优势

  • 卓越的中文能力: 针对中文场景深度优化,理解和表达更自然
  • 情感共情出色: 在心理健康场景表现优异,回复温暖细腻
  • 稳定可靠: 阿里云基础设施保障,服务稳定性高
  • 成本优化: 相比国外模型,性价比更高

🤖 Agent智能核心(核心功能)

状态: ✅ 已完成集成,升级至 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

📚 RAG知识库系统

状态: ✅ 已完成集成

集成专业心理健康知识库,提供有科学依据的建议。

特性: - 📖 知识加载: 支持 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 六层架构,按需检索,高效精准

📝 Markdown渲染系统

状态: ✅ 已完成集成

AI回复支持完整的 Markdown 格式渲染,让回复内容更加结构化和易读。

支持的格式: - 📌 标题: H1-H6 层级标题 - 加粗 / 斜体 / ~~删除线~~ - 📋 列表: 有序列表和无序列表 - 💻 代码块: 语法高亮代码展示 - 📊 表格: 结构化数据展示 - 📖 引用: 重要信息引用样式 - 🔗 链接: 可点击的URL链接

🖼️ 图片粘贴与多模态输入

状态: ✅ 已完成集成

支持在输入框中直接粘贴剪贴板图片,无需手动选择文件。

功能特性: - 📋 剪贴板粘贴: Ctrl/Cmd+V 直接粘贴截图或复制的图片 - 🖼️ 缩略图预览: 粘贴/上传的图片显示缩略图预览 - 🔍 点击查看大图: 点击缩略图在新标签页查看原图 - ✂️ 一键删除: 支持删除已粘贴的图片附件 - 📎 附件上传: 支持图片、PDF、TXT、Word 等多种文件格式 - 💬 附件分析: 上传附件后自动切换为内容分析模式

💡 深度思考模式

状态: ✅ 已完成集成

一键开启深度思考,AI将进行更深入的分析与推理,给出更全面、更有深度的回复。

使用方式: 在输入框下方点击"✨ 深度思考"按钮即可开启

🚀 快速开始

💡 提示: 完整详细的安装指南请查看 快速开始详细指南

🍎 MacBook 用户: 查看专门的 MacBook 配置指南 或运行快速配置脚本 ./setup_macbook.sh

快速启动(3步)

# 1. 安装依赖
make install

# 2. 初始化数据库
make db-upgrade

# 3. 启动服务
make run              # 后端服务
cd frontend && npm start  # 前端服务(新终端)

访问地址

  • 🌐 前端界面: http://localhost:3000
  • 🔌 后端API: http://localhost:8000
  • 📖 API文档: http://localhost:8000/docs

Docker 一键部署

# 配置环境变量
cp config.env.example config.env
nano config.env

# 启动所有服务
docker-compose up -d

🍎 MacBook 用户快速配置

对于 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 安装说明、常见问题解决方案和性能优化建议。


快速开始详细指南

1. 环境准备

1.1 安装系统依赖

# 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

1.2 安装Python依赖

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 ..

1.3 配置环境变量

cp config.env.example config.env
nano config.env  # 配置API密钥和数据库信息

必需配置项: - LLM_API_KEYDASHSCOPE_API_KEY: 阿里云通义千问API密钥 - MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD: MySQL数据库配置

📝 获取API Key: 访问 阿里云 DashScope 创建API Key

1.4 安装MySQL

# 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

2. 初始化数据库

# 创建数据库
mysql -u root -p -e "CREATE DATABASE emotional_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 运行数据库迁移
make db-upgrade

# 初始化RAG知识库(推荐)
make rag-init

3. 启动服务

后端服务:

python3 run_backend.py
# 或使用 uvicorn(从项目根目录)
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload

前端服务(新终端):

cd frontend
npm start

4. 验证服务

# 健康检查
curl http://localhost:8000/health

# 测试聊天接口
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "你好", "user_id": "test_user"}'

5. 故障排除

常见问题: - 端口冲突: 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   │           │
│  │关系数据库 │  │向量数据库│  │  缓存    │           │
│  └──────────┘  └──────────┘  └──────────┘           │
└─────────────────────────────────────────────────────┘

分层服务架构详解

1. 路由层 (Router Layer)

负责API接口定义和请求分发

backend/routers/
├── chat.py          - 聊天接口
├── memory.py        - 记忆管理接口
├── feedback.py      - 用户反馈接口
├── evaluation.py    - 评估系统接口
└── agent.py         - Agent智能接口

2. 服务层 (Service Layer)

业务逻辑封装和编排

backend/services/
├── chat_service.py      - 聊天服务
├── memory_service.py    - 记忆服务
├── context_service.py   - 上下文服务
└── agent_service.py     - Agent服务(可选)

3. 核心层 (Core/Module Layer)

核心功能模块

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服务

4. 数据层 (Data Layer)

数据存储和管理

  • MySQL: 用户数据、对话历史、情感记录
  • ChromaDB: 向量存储、语义检索
  • Redis: 缓存、会话状态(生产环境)

📖 详细架构文档: 查看相关模块文档

🛠️ 技术栈

后端技术

核心框架

  • Python 3.10+: 主要开发语言
  • 使用 requirements.txt 安装依赖
  • FastAPI 0.83+: 现代化的Web框架
  • LangChain 0.1+: 对话流管理和记忆管理
  • Pydantic: 数据验证和序列化

AI & 大模型

  • 阿里云通义千问 (Qwen Plus): 大语言模型
  • LangChain-OpenAI: LLM集成
  • Sentence Transformers: 文本嵌入模型

数据存储

  • MySQL 8.0: 关系型数据库(用户数据、对话历史)
  • ChromaDB 0.4+: 向量数据库(语义检索、长期记忆)
  • Redis 7: 缓存和会话管理(生产环境)
  • SQLAlchemy 1.4+: ORM框架
  • Alembic: 数据库迁移工具

文档处理

  • PyPDF 3.17+: PDF文档解析
  • python-multipart: 文件上传支持

运维工具

  • Docker & Docker Compose:

Core symbols most depended-on inside this repo

get
called by 1519
backend/core/interfaces.py
error
called by 313
backend/core/interfaces.py
info
called by 197
backend/core/interfaces.py
warning
called by 119
backend/core/interfaces.py
filter
called by 99
backend/logging_config.py
write
called by 26
backend/agent/memory_store.py
get_logger
called by 24
backend/logging_config.py
debug
called by 22
backend/core/interfaces.py

Shape

Method 1,361
Function 506
Class 450
Route 150

Languages

Python97%
TypeScript3%

Modules by API surface

backend/main.py70 symbols
backend/core/factories.py61 symbols
backend/core/interfaces.py60 symbols
backend/core/utils/helpers.py40 symbols
backend/database.py39 symbols
backend/modules/agent/protocol/mcp.py33 symbols
backend/modules/rag/routers/rag_router.py31 symbols
backend/agent/memory_hub.py30 symbols
backend/agent/agent_core_v2.py30 symbols
backend/tests/unit/test_core.py29 symbols
backend/schemas/common_schemas.py29 symbols
backend/routers/chat.py29 symbols

Datastores touched

(mysql)Database · 1 repos
emotional_chatDatabase · 1 repos

For agents

$ claude mcp add emotional_chat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact