# 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 用户）
- [cyrene-plugins](https://git.yeij.top/AskaEth/Cyrene-Plugins) — 克隆到 `backend/` 目录内：
  ```bash
  git clone https://git.yeij.top/AskaEth/Cyrene-Plugins.git backend/cyrene-plugins
  ```

### 1. 配置环境变量

```bash
cp .env.example .env
# 编辑 .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
```

启动 PostgreSQL (pgvector)、Redis、Qdrant、MinIO、NATS。

### 3. 启动全部服务

```bash
# Linux / macOS (Git Bash)
./ethend.sh start --build

# Windows CMD / PowerShell
ethend.bat start --build
```

按依赖顺序编译并启动全部 8 个服务：memory → plugin-manager → iot-debug → voice → ai-core → platform-bridge → gateway → frontend。

启动后访问：

| 地址 | 说明 |
|------|------|
| `http://localhost:5173` | 前端聊天界面 |
| `http://localhost:9090` | ethend 管理面板 |

使用 `.env` 中配置的 `ADMIN_USERNAME` / `ADMIN_PASSWORD` 登录。

### 其他 CLI 命令

```bash
./ethend.sh status              # 查看服务状态
./ethend.sh logs gateway        # 查看 Gateway 日志
./ethend.sh build ai-core       # 单独编译 AI-Core
./ethend.sh db:status           # 检查数据库状态
./ethend.sh help                # 完整帮助
```

详见 [docs/api/ethend.md](docs/api/ethend.md)。

---

## 项目结构

```
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 个模拟智能家居设备)
│   ├── platform-bridge/         # 多平台桥接 (QQ / Telegram / Discord / Webhook)
│   └── pkg/                     # 共享包 (logger 等)
├── ethend/                    # ethend 管理面板 (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)
├── ethend.sh                  # ethend CLI (Git Bash)
├── ethend.bat                 # ethend CLI (CMD / PowerShell)
└── Caddyfile                    # 反向代理配置
```

> **关联仓库**：[cyrene-plugins](https://git.yeij.top/AskaEth/Cyrene-Plugins) — 插件 SDK + 15 个内置插件 + Plugin Manager 服务。克隆到 `backend/cyrene-plugins/`，ai-core 通过 go.mod replace 引用。

---

## 服务端口

| 端口 | 服务 | 对外 |
|------|------|------|
| 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 | ethend | 是 |
| 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](Deploy.md) | 部署指南（含 Windows 说明） |
| [docs/api/gateway-api.md](docs/api/gateway-api.md) | 客户端 API 文档 |
| [docs/api/ethend.md](docs/api/ethend.md) | ethend CLI + Web 控制台文档 |
| [docs/api/backend-services/](docs/api/backend-services/) | 后端服务 API 文档 |
| [docs/api/backend-services/tool-system.md](docs/api/backend-services/tool-system.md) | 工具调用系统 |
| [docs/api/plugin-development.md](docs/api/plugin-development.md) | 插件开发指南 |

---

## 部署

```bash
# 开发环境（基础设施 + 后端服务）
docker compose -f docker-compose.dev.yml up -d

# 生产环境（含 Caddy 反向代理 + 自动 TLS）
docker compose up -d
```

详见 [Deploy.md](Deploy.md)。

---

## License

Apache-2.0
