AskaEth 91c9ee4b2d fix: 修复 AI 回复无法送达发送者 + 重复消息 + action角色泄露 + OS环境支持
广播逻辑重构:
- AI 回复 (stream_start/response/stream_segments/multi_message/stream_end) 改用 broadcastToUser 发送给所有客户端
- 用户消息回显保持 broadcastToUserExcept 排除发送者

消息去重与角色修复:
- CacheMessage(user) 移至回复生成后,避免本轮 LLM 调用出现重复用户消息
- action 角色消息在 DB 存储时映射为 assistant,DeepSeek 等模型不支持自定义角色
- stream_end defer 机制确保错误路径也会终止客户端思考指示器

OS 完整环境支持:
- host 包重构为 HostBackend 接口 + Direct/WSL/Docker 三种后端
- 新增 os_exec/os_file/os_system 工具供 AI 在完整 Linux 环境中自由操作

其他:
- 视觉模型注入 + 图片预处理后清空 Images 避免传给 Chat 模型
- 图片 URL 相对路径→绝对 URL 转换
- DevTools 链路追踪页面 + 重启修复
- 记忆搜索模糊匹配增强
- 后台思考定时调度支持
- 管理后台页面 (模型配置/用户管理等)
- docs/api 更新广播机制说明

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 12:46:17 +08:00
2026-05-15 20:10:35 +08:00
2026-05-15 20:14:47 +08:00

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 BashWindows 用户)

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                # 完整帮助

详见 docs/api/devtools.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 个模拟智能家居设备)
│   ├── 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

S
Description
昔涟 - 将记忆命途的少女带入现实
Readme Apache-2.0 96 MiB
2026-05-30 17:56:50 +08:00
Languages
Go 54.2%
TypeScript 41.3%
Shell 4.5%