22d7b91cb173dd44fa43ea8ee2f7a312f4f9f485
同一 session 的消息按顺序处理:当前回复未完成时新消息进入队列, 完成后自动消费下一条。避免并发请求导致上下文竞争和响应交错。 客户端收到 type:"queued" 时可显示排队状态。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Cyrene — 昔涟
基于 LLM 的开源智能体平台:多人格对话、IoT 设备操控、记忆管理、自动化规则、知识库、语音交互、多平台桥接。
架构
┌──────────────────────────────────────────────────────────────────┐
│ Frontend (React + Vite) │
│ localhost:5173 │
└──────────────────────┬───────────────────────────────────────────┘
│ HTTP + WebSocket
┌──────────────────────▼───────────────────────────────────────────┐
│ Gateway (Go/Gin) │
│ localhost:8080 │
│ JWT Auth · Rate Limit · WS Hub · API 路由 │
└──┬───────┬────────┬────────┬────────┬────────┬──────────┘
│ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌─────┐┌─────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐
│AI ││Mem- ││Voice ││IoT ││Plugin││Plat- ││ Infra │
│Core ││ory ││Svc ││Debug ││Mgr ││form ││ │
│:8081││:8091││:8093 ││:8083 ││:8094 ││Bridge││ PG:5432 │
│ ││ ││ ││ ││ ││:8095 ││ Redis │
│LLM ││CRUD ││STT/ ││模拟 ││插件 ││QQ/ ││ :6379 │
│编排 ││检索 ││TTS ││设备 ││托管 ││TG/ ││ Qdrant │
│人设 ││衰减 ││ ││管理 ││沙箱 ││DC/ ││ :6333 │
│后台 ││ ││ ││ ││ ││Webhk ││ MinIO │
│思考 ││ ││ ││ ││ ││ ││ :9000 │
│ ││ ││ ││ ││ ││ ││ SearXNG │
│ ││ ││ ││ ││ ││ ││ :8088 │
└─────┘└─────┘└──────┘└──────┘└──────┘└──────┘└──────────┘
客户端只需连接 Gateway (8080)。所有后端服务不直接对外暴露。
功能
- 多人格对话 — 可配置的角色扮演系统,支持子会话路由和上下文构建
- IoT 操控 — 8 个模拟智能家居设备(灯/空调/窗帘/传感器/门锁),语音/文本控制
- 记忆管理 — LLM 驱动的长期记忆提取、存储、语义检索、衰减(pgvector)
- 自动化 — 规则引擎 + 场景执行(定时/条件触发/Webhook)
- 提醒 — 创建/管理定时提醒,到期 WebSocket 推送
- 知识库 — 文档管理 + 向量语义检索
- 文件管理 — 上传/下载/缩略图/图片 AI 分析
- 语音交互 — 服务端 DashScope STT + Edge-TTS,支持实时流式语音
- WebSocket — 实时消息推送、IoT 状态广播、通知、流式响应
- 后台思考 — AI 在对话间隙自主反思和记忆整理
- 跨端消息同步 — 多设备实时消息广播、会话隔离与去重
- 互联网搜索 — 自托管 SearXNG 搜索引擎,支持百度/必应/搜狗/360
- PWA — 可安装为桌面/移动应用
- 多平台桥接 — QQ / Telegram / Discord / Webhook 第三方平台接入
- 插件系统 — 15 个内置插件(计算器/HTTP/加密/搜索/IoT 等),沙箱隔离
- 多模型配置 — 支持多 Provider / 多 Model / 路由规则
快速开始
前提条件
- Go 1.21+
- Node.js 20 LTS
- Docker & Docker Compose
- Git Bash(Windows 用户)
1. 配置环境变量
cp backend/.env.example backend/.env
# 编辑 backend/.env,至少配置:
# LLM_API_URL / LLM_API_KEY / LLM_MODEL
# ADMIN_USERNAME / ADMIN_PASSWORD
2. 启动数据库
docker compose -f docker-compose.dev.db.yml up -d
启动 PostgreSQL (pgvector)、Redis、Qdrant、MinIO、NATS。
3. 启动全部服务
# Linux / macOS (Git Bash)
./devtools.sh start --build
# Windows CMD / PowerShell
devtools.bat start --build
按依赖顺序编译并启动全部 8 个服务:memory → plugin-manager → iot-debug → voice → ai-core → platform-bridge → gateway → frontend。
启动后访问:
| 地址 | 说明 |
|---|---|
http://localhost:5173 |
前端聊天界面 |
http://localhost:9090 |
DevTools 管理面板 |
使用 .env 中配置的 ADMIN_USERNAME / ADMIN_PASSWORD 登录。
其他 CLI 命令
./devtools.sh status # 查看服务状态
./devtools.sh logs gateway # 查看 Gateway 日志
./devtools.sh build ai-core # 单独编译 AI-Core
./devtools.sh db:status # 检查数据库状态
./devtools.sh help # 完整帮助
项目结构
Cyrene/
├── frontend/
│ └── web/ # React 前端 (Vite + TypeScript + Tailwind)
├── backend/
│ ├── ai-core/ # AI 推理核心 (LLM 编排、人设注入、工具调用、后台思考)
│ ├── gateway/ # API 网关 (JWT 认证、路由、限流、WebSocket Hub)
│ ├── memory-service/ # 记忆服务 (CRUD、语义检索、衰减、LLM 提取)
│ ├── voice-service/ # 语音服务 (DashScope STT + Edge-TTS)
│ ├── iot-debug-service/ # IoT 调试服务 (8 个模拟智能家居设备)
│ ├── plugin-manager/ # 插件管理器 (管理 API,插件逻辑在 pkg/plugins)
│ ├── platform-bridge/ # 多平台桥接 (QQ / Telegram / Discord / Webhook)
│ └── pkg/ # 共享包 (logger, plugins — 15 个通用插件/工具)
├── devtools/ # DevTools 管理面板 (Express + WebSocket)
├── scripts/ # 辅助脚本 (migrate / tunnel / whisper-setup / pg-backup)
├── backups/ # 数据库备份文件 (.gitignore)
├── test/ # E2E 测试
├── docs/ # 文档与调试记录
│ └── api/ # API 文档
├── searxng/ # SearXNG 搜索引擎配置
├── docker-compose.dev.db.yml # 开发基础设施 (仅 DB)
├── docker-compose.dev.yml # 开发环境一键启动
├── docker-compose.yml # 生产环境 (含 Caddy)
├── devtools.sh # DevTools CLI (Git Bash)
├── devtools.bat # DevTools CLI (CMD / PowerShell)
└── Caddyfile # 反向代理配置
服务端口
| 端口 | 服务 | 对外 |
|---|---|---|
| 5173 | Frontend (Vite) | 是 |
| 8080 | Gateway API | 是(唯一客户端入口) |
| 8081 | AI-Core | 否 |
| 8083 | IoT Debug | 否 |
| 8091 | Memory Service | 否 |
| 8088 | SearXNG | 否 |
| 8093 | Voice Service | 否 |
| 8094 | Plugin Manager | 否 |
| 8095 | Platform Bridge | 否 |
| 9090 | DevTools | 是 |
| 5432 | PostgreSQL | 否 |
| 6379 | Redis | 否 |
| 6333 | Qdrant HTTP | 否 |
| 6334 | Qdrant gRPC | 否 |
| 9000 | MinIO S3 | 否 |
| 9001 | MinIO Console | 否 |
| 4222 | NATS | 否 |
| 8222 | NATS Monitoring | 否 |
技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 18, TypeScript, Vite, Tailwind CSS, Zustand |
| 后端 | Go, Gin, net/http |
| 数据库 | PostgreSQL + pgvector |
| 缓存 | Redis |
| 向量库 | Qdrant |
| 对象存储 | MinIO |
| 消息队列 | NATS |
| 搜索 | SearXNG (自托管元搜索引擎) |
| 语音 | DashScope STT / Edge-TTS / Whisper.cpp |
| 反向代理 | Caddy (生产环境) |
文档
| 文档 | 说明 |
|---|---|
| Deploy.md | 部署指南(含 Windows 说明) |
| docs/api/gateway-api.md | 客户端 API 文档 |
| docs/api/devtools.md | DevTools CLI + Web 控制台文档 |
| docs/api/backend-services/ | 后端服务 API 文档 |
| docs/dev_must_read.md | 开发者必读 |
| docs/pg-backup-migration.md | PG 备份与迁移指南 |
部署
# 开发环境(基础设施 + 后端服务)
docker compose -f docker-compose.dev.yml up -d
# 生产环境(含 Caddy 反向代理 + 自动 TLS)
docker compose up -d
详见 Deploy.md。
License
Apache-2.0
Description
Releases
1
Alpha_v0.1.0 基础功能发布
Latest
Languages
Go
54.2%
TypeScript
41.3%
Shell
4.5%