Files
yi 7d10320a82
Build / build (push) Has been cancelled
NPM Lockfile Check / npm ci --ignore-scripts (push) Has been cancelled
Playwright / e2e (push) Has been cancelled
feat: 灵犀 Studio Web UI 定制版
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-05 11:29:11 +08:00

245 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 灵犀 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) 许可证。