refactor: 认证系统重构 + DevTools CLI 重写 + 文档全面更新
- auth: Login 简化为管理员始终通过 .env 验证,GetProfile 修正 admin DB 查询 - devtools: .sh/.bat 同步重写为完整 CLI (start/stop/status/logs/build/db:*) - docs: 新增 devtools.md,重写 Deploy.md (三种方式+Windows说明),更新 README/gateway-api - voice-service: DashScope 实时流式 STT 支持 - gateway: Phase 6 多模型配置 + 多端客户端管理 + WebSocket 增强 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,87 +1,80 @@
|
||||
# Cyrene - 昔涟
|
||||
# Cyrene — 昔涟
|
||||
|
||||
昔涟 (本项目) 是一个开源的基于 LLM 平台的智能体,提供多人格对话、IoT 设备操控、记忆管理、自动化规则、知识库、语音交互等功能。
|
||||
基于 LLM 的开源智能体平台:多人格对话、IoT 设备操控、记忆管理、自动化规则、知识库、语音交互、多平台桥接。
|
||||
|
||||
---
|
||||
|
||||
## 架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Frontend (React + Vite) │
|
||||
│ localhost:5173 │
|
||||
└─────────────────────┬───────────────────────────────────┘
|
||||
│ HTTP + WebSocket
|
||||
┌─────────────────────▼───────────────────────────────────┐
|
||||
│ Gateway (Go/Gin) │
|
||||
│ localhost:8080 │
|
||||
│ JWT Auth · Rate Limit · WS Hub · API 路由 │
|
||||
└──┬────────┬────────┬────────┬────────┬────────┬────────┘
|
||||
│ │ │ │ │ │
|
||||
▼ ▼ ▼ ▼ ▼ ▼
|
||||
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐
|
||||
│ AI │ │Memory│ │Tool │ │Voice │ │ IoT │ │ Infra │
|
||||
│ Core │ │Svc │ │Engine│ │Svc │ │Debug │ │ │
|
||||
│:8081 │ │:8091 │ │:8092 │ │:8093 │ │:8083 │ │ PG:5432 │
|
||||
│ │ │ │ │ │ │ │ │ │ │ Redis │
|
||||
│ LLM │ │CRUD │ │执行 │ │STT/ │ │模拟 │ │ :6379 │
|
||||
│ 编排 │ │检索 │ │工具 │ │TTS │ │设备 │ │ Qdrant │
|
||||
│ 人设 │ │ │ │调用 │ │ │ │管理 │ │ :6333 │
|
||||
│ 工具 │ │ │ │ │ │ │ │ │ │ MinIO │
|
||||
│ 后台 │ │ │ │ │ │ │ │ │ │ :9000 │
|
||||
│ 思考 │ │ │ │ │ │ │ │ │ │ NATS │
|
||||
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────────┘
|
||||
┌──────────────────────────────────────────────────────────────────┐
|
||||
│ Frontend (React + Vite) │
|
||||
│ localhost:5173 │
|
||||
└──────────────────────┬───────────────────────────────────────────┘
|
||||
│ HTTP + WebSocket
|
||||
┌──────────────────────▼───────────────────────────────────────────┐
|
||||
│ Gateway (Go/Gin) │
|
||||
│ localhost:8080 │
|
||||
│ JWT Auth · Rate Limit · WS Hub · API 路由 │
|
||||
└──┬───────┬────────┬────────┬────────┬────────┬────────┬─────────┘
|
||||
│ │ │ │ │ │ │
|
||||
▼ ▼ ▼ ▼ ▼ ▼ ▼
|
||||
┌─────┐┌─────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐
|
||||
│AI ││Mem- ││Tool ││Voice ││IoT ││Plugin││Plat- ││ Infra │
|
||||
│Core ││ory ││Engine││Svc ││Debug ││Mgr ││form ││ │
|
||||
│:8081││:8091││:8092 ││:8093 ││:8083 ││:8094 ││Bridge││ PG:5432 │
|
||||
│ ││ ││ ││ ││ ││ ││:8095 ││ Redis │
|
||||
│LLM ││CRUD ││工具 ││STT/ ││模拟 ││插件 ││QQ/ ││ :6379 │
|
||||
│编排 ││检索 ││调用 ││TTS ││设备 ││托管 ││TG/ ││ Qdrant │
|
||||
│人设 ││衰减 ││链 ││ ││管理 ││沙箱 ││DC/ ││ :6333 │
|
||||
│后台 ││ ││ ││ ││ ││ ││Webhk ││ MinIO │
|
||||
│思考 ││ ││ ││ ││ ││ ││ ││ :9000 │
|
||||
└─────┘└─────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘
|
||||
```
|
||||
|
||||
**客户端只需连接 Gateway (8080)**。所有后端服务不直接对外暴露。
|
||||
|
||||
---
|
||||
|
||||
## 功能
|
||||
|
||||
- **多人格对话** — 可配置的角色扮演系统,带上下文构建和子会话路由
|
||||
- **IoT 操控** — 模拟智能家居设备(灯、空调、窗帘、传感器、门锁),支持语音/文本控制
|
||||
- **记忆管理** — LLM 驱动的长期记忆提取、存储和检索(PostgreSQL + pgvector)
|
||||
- **自动化** — 规则引擎 + 场景执行(定时、条件触发、Webhook)
|
||||
- **每日简报** — 定时生成当日汇总
|
||||
- **多人格对话** — 可配置的角色扮演系统,支持子会话路由和上下文构建
|
||||
- **IoT 操控** — 8 个模拟智能家居设备(灯/空调/窗帘/传感器/门锁),语音/文本控制
|
||||
- **记忆管理** — LLM 驱动的长期记忆提取、存储、语义检索、衰减(pgvector)
|
||||
- **自动化** — 规则引擎 + 场景执行(定时/条件触发/Webhook)
|
||||
- **每日简报** — 定时生成当日汇总并推送
|
||||
- **提醒** — 创建/管理定时提醒,到期 WebSocket 推送
|
||||
- **知识库** — 文档管理 + 向量检索
|
||||
- **文件管理** — 上传、下载、缩略图、图片 AI 分析
|
||||
- **语音交互** — 浏览器端 STT(Web Speech API)+ TTS,服务端支持 Whisper
|
||||
- **WebSocket** — 实时消息推送、IoT 状态广播、通知
|
||||
- **PWA** — 可安装为桌面/移动应用,离线支持
|
||||
- **后台思考** — AI 在对话间隙自主进行反思和记忆整理
|
||||
- **Webhook 接入** — 支持 Discord、通用 Webhook 第三方平台接入
|
||||
- **知识库** — 文档管理 + 向量语义检索
|
||||
- **文件管理** — 上传/下载/缩略图/图片 AI 分析
|
||||
- **语音交互** — 服务端 DashScope STT + Edge-TTS,支持实时流式语音
|
||||
- **WebSocket** — 实时消息推送、IoT 状态广播、通知、流式响应
|
||||
- **后台思考** — AI 在对话间隙自主反思和记忆整理
|
||||
- **PWA** — 可安装为桌面/移动应用
|
||||
- **多平台桥接** — QQ / Telegram / Discord / Webhook 第三方平台接入
|
||||
- **插件系统** — 14 个内置插件(计算器/HTTP/加密/搜索/IoT 等),沙箱隔离
|
||||
- **多模型配置** — 支持多 Provider / 多 Model / 路由规则
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
Cyrene/
|
||||
├── frontend/
|
||||
│ ├── web/ # React 前端 (Vite + TypeScript + Tailwind)
|
||||
│ └── packages/shared/ # 共享类型/工具
|
||||
├── backend/
|
||||
│ ├── ai-core/ # AI 推理核心 (LLM 编排、人设注入、工具调用、后台思考)
|
||||
│ ├── gateway/ # API 网关 (JWT 认证、路由、限流、WebSocket Hub)
|
||||
│ ├── memory-service/ # 记忆服务 (CRUD、检索、LLM 提取)
|
||||
│ ├── tool-engine/ # 工具引擎 (计算器、HTTP、IoT、文件操作等)
|
||||
│ ├── voice-service/ # 语音服务 (TTS/STT,基于 Edge-TTS + Whisper)
|
||||
│ ├── iot-debug-service/# IoT 调试服务 (模拟智能家居设备)
|
||||
│ └── proto/ # Protobuf 定义 (预留)
|
||||
├── devtools/ # 开发管理面板 (Express,服务管理/日志/性能)
|
||||
├── scripts/ # 辅助脚本 (Whisper 安装、SSH 隧道、数据迁移)
|
||||
├── test/ # E2E 测试脚本 (CDP/Chromium)
|
||||
├── docs/ # 项目文档与调试记录
|
||||
├── debug/ # 诊断与缓存脚本
|
||||
├── docker-compose.dev.db.yml # 开发环境基础设施 (仅 DB)
|
||||
├── docker-compose.dev.yml # 开发环境一键启动
|
||||
├── docker-compose.yml # 生产环境 (含 Caddy)
|
||||
└── Caddyfile # 反向代理配置
|
||||
```
|
||||
---
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 前提条件
|
||||
|
||||
- Go 1.21+
|
||||
- Node.js 20+
|
||||
- Node.js 20 LTS
|
||||
- Docker & Docker Compose
|
||||
- Git Bash(Windows 用户)
|
||||
|
||||
### 1. 启动基础设施
|
||||
### 1. 配置环境变量
|
||||
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
# 编辑 backend/.env,至少配置:
|
||||
# LLM_API_URL / LLM_API_KEY / LLM_MODEL
|
||||
# ADMIN_USERNAME / ADMIN_PASSWORD
|
||||
```
|
||||
|
||||
### 2. 启动数据库
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.db.yml up -d
|
||||
@@ -89,68 +82,96 @@ docker compose -f docker-compose.dev.db.yml up -d
|
||||
|
||||
启动 PostgreSQL (pgvector)、Redis、Qdrant、MinIO、NATS。
|
||||
|
||||
### 2. 启动后端服务
|
||||
|
||||
使用 DevTools 一键管理:
|
||||
### 3. 启动全部服务
|
||||
|
||||
```bash
|
||||
# Linux / macOS
|
||||
./devtools.sh start all # 编译并启动所有后端 + 前端
|
||||
./devtools.sh status # 查看服务状态
|
||||
./devtools.sh logs ai-core # 查看 AI-Core 日志
|
||||
# Linux / macOS (Git Bash)
|
||||
./devtools.sh start --build
|
||||
|
||||
# Windows
|
||||
devtools.bat # 启动 DevTools Web 面板
|
||||
# 浏览器打开 http://localhost:9090,点击「一键启动」
|
||||
# Windows CMD / PowerShell
|
||||
devtools.bat start --build
|
||||
```
|
||||
|
||||
或手动逐个启动:
|
||||
按依赖顺序编译并启动全部 9 个服务:memory → tool-engine → plugin-manager → iot-debug → voice → ai-core → platform-bridge → gateway → frontend。
|
||||
|
||||
启动后访问:
|
||||
|
||||
| 地址 | 说明 |
|
||||
|------|------|
|
||||
| `http://localhost:5173` | 前端聊天界面 |
|
||||
| `http://localhost:9090` | DevTools 管理面板 |
|
||||
|
||||
使用 `.env` 中配置的 `ADMIN_USERNAME` / `ADMIN_PASSWORD` 登录。
|
||||
|
||||
### 其他 CLI 命令
|
||||
|
||||
```bash
|
||||
# 编译并运行各服务
|
||||
cd backend/memory-service && go run ./cmd/main.go &
|
||||
cd backend/tool-engine && go run ./cmd/main.go &
|
||||
cd backend/iot-debug-service && go run ./cmd/main.go &
|
||||
cd backend/voice-service && go run ./cmd/main.go &
|
||||
cd backend/ai-core && go run ./cmd/main.go &
|
||||
cd backend/gateway && go run ./cmd/main.go &
|
||||
./devtools.sh status # 查看服务状态
|
||||
./devtools.sh logs gateway # 查看 Gateway 日志
|
||||
./devtools.sh build ai-core # 单独编译 AI-Core
|
||||
./devtools.sh db:status # 检查数据库状态
|
||||
./devtools.sh help # 完整帮助
|
||||
```
|
||||
|
||||
### 3. 启动前端
|
||||
详见 [docs/api/devtools.md](docs/api/devtools.md)。
|
||||
|
||||
```bash
|
||||
cd frontend/web && npm install && npm run dev
|
||||
---
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
Cyrene/
|
||||
├── frontend/
|
||||
│ └── web/ # React 前端 (Vite + TypeScript + Tailwind)
|
||||
├── backend/
|
||||
│ ├── ai-core/ # AI 推理核心 (LLM 编排、人设注入、工具调用、后台思考)
|
||||
│ ├── gateway/ # API 网关 (JWT 认证、路由、限流、WebSocket Hub)
|
||||
│ ├── memory-service/ # 记忆服务 (CRUD、语义检索、衰减、LLM 提取)
|
||||
│ ├── tool-engine/ # 工具引擎 (13+ 内置工具,支持工具调用链)
|
||||
│ ├── voice-service/ # 语音服务 (DashScope STT + Edge-TTS)
|
||||
│ ├── iot-debug-service/ # IoT 调试服务 (8 个模拟智能家居设备)
|
||||
│ ├── plugin-manager/ # 插件管理器 (14 个内置插件、沙箱隔离)
|
||||
│ ├── platform-bridge/ # 多平台桥接 (QQ / Telegram / Discord / Webhook)
|
||||
│ └── pkg/ # 共享包 (logger)
|
||||
├── devtools/ # DevTools 管理面板 (Express + WebSocket)
|
||||
├── scripts/ # 辅助脚本 (migrate / tunnel / whisper-setup)
|
||||
├── test/ # E2E 测试
|
||||
├── docs/ # 文档与调试记录
|
||||
│ └── api/ # API 文档
|
||||
├── 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 # 反向代理配置
|
||||
```
|
||||
|
||||
访问 `http://localhost:5173`,默认管理员账户 `admin` / `cyrene-dev-admin`。
|
||||
|
||||
### 4. 配置环境变量
|
||||
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
# 编辑 backend/.env,填入 LLM API Key 等必要配置
|
||||
```
|
||||
---
|
||||
|
||||
## 服务端口
|
||||
|
||||
| 端口 | 服务 |
|
||||
|------|------|
|
||||
| 5173 | 前端 (Vite dev server) |
|
||||
| 8080 | Gateway API |
|
||||
| 8081 | AI-Core (LLM 推理) |
|
||||
| 8083 | IoT 调试服务 |
|
||||
| 8091 | 记忆服务 |
|
||||
| 8092 | 工具引擎 |
|
||||
| 8093 | 语音服务 |
|
||||
| 9090 | DevTools 管理面板 |
|
||||
| 5432 | PostgreSQL |
|
||||
| 6379 | Redis |
|
||||
| 6333 | Qdrant HTTP |
|
||||
| 6334 | Qdrant gRPC |
|
||||
| 9000 | MinIO S3 |
|
||||
| 9001 | MinIO Console |
|
||||
| 4222 | NATS |
|
||||
| 8222 | NATS Monitoring |
|
||||
| 端口 | 服务 | 对外 |
|
||||
|------|------|------|
|
||||
| 5173 | Frontend (Vite) | 是 |
|
||||
| 8080 | Gateway API | **是**(唯一客户端入口) |
|
||||
| 8081 | AI-Core | 否 |
|
||||
| 8083 | IoT Debug | 否 |
|
||||
| 8091 | Memory Service | 否 |
|
||||
| 8092 | Tool Engine | 否 |
|
||||
| 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 | 否 |
|
||||
|
||||
---
|
||||
|
||||
## 技术栈
|
||||
|
||||
@@ -163,15 +184,36 @@ cp backend/.env.example backend/.env
|
||||
| 向量库 | Qdrant |
|
||||
| 对象存储 | MinIO |
|
||||
| 消息队列 | NATS |
|
||||
| 语音 | DashScope STT / Edge-TTS / Whisper.cpp |
|
||||
| 反向代理 | Caddy (生产环境) |
|
||||
| 语音 | Edge-TTS / Whisper.cpp |
|
||||
|
||||
---
|
||||
|
||||
## 文档
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [Deploy.md](Deploy.md) | 部署指南(含 Windows 说明) |
|
||||
| [docs/api/gateway-api.md](docs/api/gateway-api.md) | 客户端 API 文档 |
|
||||
| [docs/api/devtools.md](docs/api/devtools.md) | DevTools CLI + Web 控制台文档 |
|
||||
| [docs/api/backend-services/](docs/api/backend-services/) | 后端服务 API 文档 |
|
||||
| [docs/dev_must_read.md](docs/dev_must_read.md) | 开发者必读 |
|
||||
|
||||
---
|
||||
|
||||
## 部署
|
||||
|
||||
- 开发环境:`docker compose -f docker-compose.dev.yml up -d`
|
||||
- 生产环境:`docker compose up -d`(含 Caddy 反向代理 + 自动 TLS)
|
||||
```bash
|
||||
# 开发环境(基础设施 + 后端服务)
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
|
||||
详见 [Deploy.md](Deploy.md) 和 [Migration.md](Migration.md)(Linux → Windows 迁移指南)。
|
||||
# 生产环境(含 Caddy 反向代理 + 自动 TLS)
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
详见 [Deploy.md](Deploy.md)。
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Reference in New Issue
Block a user