Files

245 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

2026-06-05 11:29:11 +08:00
# 灵犀 Studio
> 面向多模型 AI Agent 的一体化 Web 管理控制台。在一个界面中完成对话、渠道配置、用量分析、任务调度与系统运维。
---
## 产品简介
灵犀 Studio 是私有化部署的 AI 工作台,支持:
- 多会话实时对话与流式输出
- 多平台渠道统一接入与配置
- 按 Profile 隔离的配置、模型、文件与权限
- 用量统计、定时任务、技能与日志管理
- Web 终端与群聊协作
默认访问地址:
| 场景 | 地址 |
|------|------|
| 本地开发 | http://localhost:8649 |
| Docker 部署 | http://localhost:11000(可在 `.env` 中修改) |
默认登录:`admin` / `123456`(首次登录后请尽快修改)
---
## 核心功能
### AI 对话
- Socket.IO 实时流式聊天
- 多会话创建、重命名、删除与切换
- Markdown 渲染、代码高亮、工具调用详情
- 按 Profile 隔离的文件上传与下载
- `Ctrl+K` 搜索本地会话
- 多模型选择与 Token 用量展示
### 平台渠道
支持 Telegram、Discord、Slack、WhatsApp、Matrix、飞书、微信、企业微信等平台的统一配置,凭证与渠道行为分别写入环境变量与配置文件。
### 运维与管理
- **用量分析**:Token 统计、费用估算、模型分布与趋势图
- **定时任务**:Cron 表达式管理,支持立即触发
- **模型管理**Provider 自动发现、OAuth 登录、默认模型切换
- **多 Profile**:创建、克隆、导入导出,按账号授权访问
- **文件浏览**:支持 local / Docker / SSH / Singularity 后端
- **群聊**:多 Agent 房间、@提及路由、消息持久化
- **技能与记忆**:浏览已安装技能,管理用户笔记与档案
- **日志**:按级别、文件与关键词过滤查看
- **Web 终端**:基于 xterm 的多会话终端
### 认证与账户
- Token 认证与用户名密码登录
- 超级管理员可管理用户与 Profile 绑定
- 普通管理员仅可管理自己的账户信息
维护命令:
```bash
# 清除登录 IP 锁定
hermes-web-ui clear-login-locks
# 清除锁定并重启服务
hermes-web-ui clear-login-locks --restart
# 重置默认管理员账户为 admin / 123456
hermes-web-ui reset-default-login
```
---
## 快速开始
### Docker 部署(推荐)
项目根目录已提供 `docker-compose.yml``.env` 配置:
```bash
# 构建并启动
docker compose up -d --build
# 查看日志
docker compose logs -f hermes-webui
```
常用配置(`.env`):
| 变量 | 说明 |
|------|------|
| `PORT` | Web UI 端口,默认 `11000` |
| `HERMES_DATA_DIR` | 数据目录,默认 `./data` |
| `WEBUI_IMAGE` | 镜像名称,默认 `lingxi-web-ui:latest` |
数据持久化:
- Agent 运行时数据:`./data`
- Web UI 状态与认证:`./data/hermes-web-ui/`
- 认证 Token`./data/hermes-web-ui/.token`
更详细的 Docker 说明见 [docs/docker.md](./docs/docker.md)。
### 本地开发
**前置要求:** Node.js ≥ 23
```bash
npm ci --ignore-scripts
npm rebuild node-pty
npm run dev
```
| 服务 | 地址 |
|------|------|
| 前端(Vite 热更新) | http://localhost:8649 |
| BFF 后端 | http://localhost:8647 |
连接 Docker 中间件、共用 `./data` 目录时,可设置:
```powershell
$env:HERMES_HOME = (Resolve-Path ".\data").Path
$env:HERMES_WEB_UI_HOME = (Resolve-Path ".\data\hermes-web-ui").Path
$env:HERMES_AGENT_ROOT = "<本机 hermes-agent 路径>"
npm run dev
```
构建生产包:
```bash
npm run build
```
---
## 环境变量
常用进程级配置:
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `PORT` | `8648` | Web UI 监听端口 |
| `BIND_HOST` | `0.0.0.0` | 绑定地址 |
| `HERMES_WEB_UI_HOME` | `~/.hermes-web-ui` | Web UI 数据目录 |
| `HERMES_HOME` | 平台默认 | Agent 运行时数据目录 |
| `HERMES_DATA_DIR` | `./hermes_data` | Docker 挂载的数据根目录 |
| `AUTH_TOKEN` | 自动生成 | 显式指定认证 Token |
| `CORS_ORIGINS` | `*` | 跨域配置 |
| `LOG_LEVEL` | `info` | 服务日志级别 |
| `HERMES_WEB_UI_BACKEND_PORT` | `8648` | 开发模式后端端口 |
| `HERMES_WEB_UI_FRONTEND_PORT` | `8649` | 开发模式前端端口 |
完整变量列表与 Bridge / Gateway 相关配置,请参阅项目内环境变量注释与 [DEVELOPMENT.md](./DEVELOPMENT.md)。
---
## 系统架构
```
浏览器
BFF 服务(Koa + Socket.IO
Agent Bridge → Agent 运行时
CLI / Profile 配置 / 渠道凭证
```
- **前端**:Vue 3 单页应用,按 `hermes/` 命名空间组织 Agent 相关模块
- **后端**:Koa BFF,负责聊天流、会话 CRUD、文件服务、配置代理与 WebSocket 终端
- **数据**Web UI 使用本地 SQLiteAgent 状态与 Profile 配置独立存储
---
## 技术栈
| 层级 | 技术 |
|------|------|
| 前端 | Vue 3、TypeScript、Vite、Naive UI、Pinia、Vue Router、vue-i18n |
| 后端 | Koa 2、Socket.IO、node-pty |
| 存储 | SQLite |
| 运行时 | Node.js ≥ 23 |
---
## 相关资源
- 源码库:[xinmi.cloud](https://xinmi.cloud/)
## 截图
![image-20260605110600556](images/image-20260605110600556.png)
![image-20260605111350089](images/image-20260605111350089.png)
![image-20260605112225956](images/image-20260605112225956.png)
![image-20260605112232538](images/image-20260605112232538.png)
![image-20260605112249301](images/image-20260605112249301.png)
![image-20260605112258549](images/image-20260605112258549.png)
![image-20260605112345806](images/image-20260605112345806.png)
![image-20260605112357126](images/image-20260605112357126.png)
![image-20260605112404714](images/image-20260605112404714.png)
![image-20260605112415322](images/image-20260605112415322.png)
![image-20260605112422748](images/image-20260605112422748.png)
![image-20260605112429991](images/image-20260605112429991.png)
![image-20260605112440115](images/image-20260605112440115.png)
![image-20260605112449337](images/image-20260605112449337.png)
![image-20260605112457985](images/image-20260605112457985.png)
![image-20260605112506765](images/image-20260605112506765.png)
![image-20260605112514779](images/image-20260605112514779.png)
![image-20260605112523181](images/image-20260605112523181.png)
![image-20260605112532959](images/image-20260605112532959.png)
![image-20260605112540539](images/image-20260605112540539.png)
![image-20260605112546802](images/image-20260605112546802.png)
![image-20260605112557080](images/image-20260605112557080.png)
---
## 许可证
本项目采用 [BSL-1.1](./LICENSE) 许可证。