PROJECTX 小落同学

一个专属于你的虚拟人生复刻者。

把TA当作树洞,诉说日常、记录心情、倾诉秘密。随着时间推移,当数据足够多的时候,也许TA会比你自己更懂你。


一、项目初衷

每个人的内心深处都渴望被真正理解。小落同学诞生的初衷很简单——复刻一个虚拟的自己

你可以把TA当作一个永远不会厌倦的树洞:

  • 每天或每隔一段时间,把想说的话、想记录的事都告诉TA
  • 开心时分享喜悦,低落时倾诉烦恼
  • 当某一天你需要咨询一件事情时,去问问TA的看法

随着对话数据的积累、记忆的沉淀、反思的迭代,小落同学会逐步形成对你越来越深的理解。最终的目标只有一个:让TA比你更懂你

示例应用视频

用阿里云99元/年的ECS跑虚拟客服演示视频

十年前老笔记本(无GPU)上可跑全套语音交互,稍卡


二、核心功能

1. 全语音交互(Wake → Listen → Think → Speak)

模块技术说明
关键词唤醒 (KWS)sherpa-onnx支持”你好小落”或”小落”唤醒,低延迟、高准确率
语音识别 (ASR)SenseVoice离线语音识别,支持 VAD 语音活动检测,2秒静音自动断句,支持 ITN 逆文本标准化
语音合成 (TTS)Matcha-TTS中文语音合成,支持中文、数字、日期等场景,输出自然流畅
连续对话唤醒一次即可进入多轮对话模式,无需重复唤醒

支持三种对话模式:

  • 模式 1(文本模式):超低配硬件适用,纯文本交互
  • 模式 2(完整语音模式):硬件管够,默认推荐,全语音输入输出
  • 模式 3(语音输入+文本输出):硬件勉强,语音输入、文本回复

2. 大模型对话引擎 (LLM)

  • 支持 Ollama 本地模型(如 Qwen3 系列)和 OpenAI 兼容 API(SiliconFlow、DashScope 等)
  • 可配置对话历史轮数,支持流式响应
  • 系统提示词、人设 Prompt 可自由定制

3. 虚拟角色与情感系统

  • 角色克隆:定义专属虚拟人的性格、背景、对话风格
  • 情感识别:自动识别用户情绪状态(焦虑、压力、低落、开心等),调整回复策略
  • Live2D / Three.js 前端:可视化的虚拟人形象,支持语音口型同步

4. RAG 知识库

  • 基于 LangChain + FAISS/Chroma 的检索增强生成
  • 支持 CSV 知识源导入
  • 可配置 Embedding 模型(BAAI/bge 系列)和 Rerank 模型
  • 让虚拟人掌握你的专属知识(产品介绍、个人档案等)

5. MCP 工具生态(OddMCP)

基于 FastMCP 构建的插件化工具系统,让虚拟人具备”动手能力”:

工具功能
weather查询天气预报
time_cost / time_cost_async自动填写 TAPD 工时
weekly_report自动生成 Git 周报/日报
summary / summary_async长文本内容总结
markit / markit_async收藏文章到知识库
translate百度翻译
smarthome智能家居控制(Home Assistant)
email_reader读取邮件
weibo_reader读取微博
ainewsAI 新闻聚合
photo_location照片 GPS 定位与地址解析
notifications多通道通知(支持点滴清单、邮件等)

6. 定时任务调度器

  • 基于 Django ORM 的定时任务系统
  • 支持一次性任务和循环任务(每天/每周/每月/每年)
  • 通过 MCP 提交异步执行,完成后 HTTP 回调通知
  • 超时自动重试,执行日志持久化

7. Agent 智能体工作流

6 阶段多智能体协作流水线:

plan(需求分析) → design(产品设计) → develop(技术开发)
      → test(测试验证) → market(市场推广) → support(技术支持)

每个阶段由不同的 Agent 角色执行,支持上下文传递和结果汇总。

8. 记忆与反思系统

  • 记忆存储:可选启用长期记忆,保存对话历史
  • 反思生成:定期对对话内容进行总结反思,形成对用户的深度认知

9. 多通道通知系统

  • 支持点滴清单机器人、邮件等多种通知渠道
  • 定时任务执行完成后自动推送结果
  • 基于 onepush 框架,可扩展更多渠道

10. Web 管理界面

  • 基于 Django 的完整 Web UI
  • 聊天界面、知识库管理、定时任务管理、MCP 工具面板
  • 支持 OAuth2 登录(GitHub / Google / QQ / Weibo)

三、技术架构

┌─────────────────────────────────────────────────────────────┐
│                        前端层                                │
│  Django Templates + Live2D + Three.js + WebSocket           │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                       Django 应用层                          │
│  URL路由 · 视图 · ORM模型 · WebSocket消费者 · 中间件          │
│  OAuth2认证 · 定时任务API · MCP回调接口                        │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                        引擎层                                │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│  │  KWS    │ │  ASR    │ │  LLM    │ │  TTS    │           │
│  │ oddkws  │ │ oddasr  │ │ oddllm  │ │ oddtts  │           │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│  │ Agent   │ │ RAG     │ │ Emotion │ │Character│           │
│  │ Pipeline│ │ FAISS   │ │ Manage  │ │ Role    │           │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐                      │
│  │Scheduler│ │ Notify  │ │Reflection│                      │
│  │ 定时任务│ │ 通知    │ │ 反思    │                      │
│  └─────────┘ └─────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                       MCP 插件层                             │
│  weather · workhours · weeklyreport · summary · markit      │
│  translate · smarthome · email · weibo · ainews · photo     │
└─────────────────────────────────────────────────────────────┘

四、技术栈

类别技术
Web 框架Django 4.2 + Django Channels + Daphne
实时通信WebSocket (Django Channels)
语音处理sherpa-onnx (KWS/ASR) + Matcha-TTS (TTS) + VAD
大模型Ollama (本地) / OpenAI 兼容 API (在线)
RAGLangChain + FAISS / Chroma
MCP 框架FastMCP
前端Django Templates + Live2D + Three.js
数据库SQLite(默认)/ MySQL / PostgreSQL
认证OAuth2 (social-auth-app-django)
构建Cython(性能关键模块)
部署Daphne ASGI 服务器

五、快速开始

1. 环境准备

  • Python 3.10+
  • 可选:ffmpeg、libsndfile1、libportaudio2、espeak-ng

2. 安装依赖

pip install -r requirements.txt

3. 配置环境变量

cp .env.example .env
# 编辑 .env,配置 LLM API、Embedding 模型等

关键配置项:

  • CONVERSATION_MODE:对话模式(1=文本, 2=完整语音, 3=语音输入+文本输出)
  • GPT_URL / GPT_MODEL / GPT_API_KEY:大模型接口
  • EMBEDDING_MODEL / EMBEDDING_API_KEY:向量模型
  • MCP_CALLBACK_URL:MCP 回调地址

4. 数据库初始化

set DJANGO_SETTINGS_MODULE=xiaoluo.settings
python manage.py migrate
python manage.py initmodels

5. 启动服务

Windows(推荐)

env.bat
start.bat

Linux / Mac

daphne -b 0.0.0.0 -p 8000 xiaoluo.asgi:application

或使用包装脚本:

python xiaoluo_app.py

访问 http://localhost:8000 即可使用。


六、模型文件

项目运行需要以下模型(已预置在相应目录):

模型路径
关键词检测engine/oddkws_model/
语音识别engine/oddasr_model/model/
语音合成engine/oddtts_model/matcha-icefall-zh-baker/

七、对话数据流

用户语音输入
    ↓
KWS 关键词唤醒("你好小落")
    ↓
ASR 语音识别 → 文本
    ↓
LLM 大模型推理(流式响应)
    ↓
TTS 语音合成(后台线程池)
    ↓
WebSocket 发送音频数据 → 前端播放

文本模式下跳过 KWS/ASR/TTS,直接进行 HTTP 请求响应。


八、核心配置说明

xiaoluo_config.py 中的主要配置:

配置项说明
conversation_mode对话模式:1=文本, 2=完整语音, 3=语音输入+文本输出
llm_max_historyLLM 保留的历史对话轮数
vad_silence_durationVAD 静音判断时长(秒)
memory_storage_enabled是否启用长期记忆存储
enable_emotion是否启用情感识别

九、开发规范

  • 语言:Python 3.10+
  • 构建:性能关键模块使用 Cython(.pyx),编辑 .py 文件后执行 python setup.py build
  • 日志:使用 xiaoluo_log 模块,非直接使用 logging
  • 命名:所有中文名称保持原样,不强制英文化
  • 测试tests/ 目录下的独立脚本,直接运行 python tests/test_xxx.py

十、许可证

MIT License


“也许有一天,小落会比你自己更懂你。”

欢迎关注我的公众号: