内容
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./frontend/public/logo-white.svg" />
<img src="./frontend/public/logo-black.svg" alt="DEEIX Chat" width="160" />
</picture>
</p>
<p align="center">
一个面向企业级模型路由、聊天、文件、工具、计费、身份和运维的集成AI平台。
</p>
<p align="center">
English | <a href="./docs/README.zh-CN.md">简体中文</a>
</p>
<p align="center">
<a href="https://deeix.com"><img alt="官网" src="https://img.shields.io/badge/官网-deeix.com-black" /></a>
<a href="https://deeix.com/docs/deeix-chat/quickstart"><img alt="指南" src="https://img.shields.io/badge/指南-快速开始-0f766e" /></a>
<a href="https://t.me/deeix_chat"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-deeix_chat-26A5E4?logo=telegram&logoColor=white" /></a>
<a href="https://x.com/DEEIX_AI"><img alt="X" src="https://img.shields.io/badge/X-%40DEEIX_AI-black?logo=x&logoColor=white" /></a>
<a href="https://www.apache.org/licenses/LICENSE-2.0"><img alt="许可证" src="https://img.shields.io/badge/许可证-Apache%202.0-blue" /></a>
<img alt="Next.js" src="https://img.shields.io/badge/Next.js-16-black" />
<img alt="React" src="https://img.shields.io/badge/React-19-149eca" />
<img alt="Go" src="https://img.shields.io/badge/Go-1.26-00add8" />
</p>
## 概述
DEEIX Chat 是一个开源、可部署的AI平台,适用于需要长期、稳定和统一访问多个模型提供商的个人、团队和企业。它提供了一个清晰的入口,以便访问多个上游模型和提供商,集成了多模态聊天、模型路由、文件和RAG、MCP工具、计费、身份、审计日志和运维控制等功能于一体。
该系统围绕简单的部署、高效的静态交付和低运行资源占用进行设计:轻量级但不感到受限,约束但不失去能力,开放但不变得混乱。

## 功能
| 领域 | 能力 |
| --- | --- |
| 会话 | 一个用于日常使用的多模态聊天界面,支持流式传输、分支、重试、编辑、反馈、分享、丰富渲染和可追溯的模型执行元数据。 |
| 模型和路由 | 一个用于上游通道、真实模型、路由绑定、优先级、权重、熔断、供应商映射和能力配置的平台模型层,减少多提供商运营的成本。 |
| 协议和适配 | 统一支持OpenAI、Anthropic、Google/Gemini、xAI、OpenRouter和OpenAI兼容协议,涵盖文本、图像、工具和提供商原生能力差异。 |
| 文件和检索 | 文件上传、预览、提取、OCR、存储配额、全上下文注入、分块、嵌入和语义检索,以便文件内容可以自然地进入对话上下文。 |
| 工具生态 | MCP服务器和提供商原生官方工具,支持发现、启用、用户选择、执行限制、结果渲染和工具调用可追溯性。 |
| 上下文和记忆 | 消息窗口、令牌预算、摘要压缩、对话记忆、长期记忆和RAG证据记录,以实现受控成本的连续性。 |
| 计费和支付 | 模型定价、每次调用工具定价、订阅、充值、余额、使用账本、计费快照、Stripe Checkout、EPay和Webhook验证。 |
| 身份和安全 | 本地账户、会话管理、HttpOnly刷新Cookie、2FA/TOTP、受信任设备、SSO/OIDC/OAuth、联系人验证和加密敏感数据。 |
| 管理和审计 | 用户、角色、上游、模型、路由、定价、订阅、余额、使用日志、审计日志、身份验证事件和系统事件的集中管理。 |
| 部署和运维 | 单运行时前端/API服务、Docker部署、SQLite或PostgreSQL、内存缓存或Redis、S3兼容存储、Swagger、结构化日志、版本端点、GeoIP和OpenTelemetry。 |
<p align="center">
<img src="./frontend/public/DEEIX-Chat-Image.png" alt="DEEIX Chat 图片生成" width="49.45%" />
<img src="./frontend/public/DEEIX-Chat-Dark.png" alt="DEEIX Chat 黑色模式" width="49.45%" />
</p>
<p align="center">
<img src="./frontend/public/DEEIX-Chat-Usage.png" alt="DEEIX Chat 使用和计费" width="32.3%" />
<img src="./frontend/public/DEEIX-Chat-Artifacts.png" alt="DEEIX Chat 制品" width="32.3%" />
<img src="./frontend/public/DEEIX-Chat-Html.png" alt="DEEIX Chat HTML渲染" width="32.3%" />
</p>
## 架构和技术栈
DEEIX Chat 使用前端/后端开发模型分离的架构,具有单运行时部署路径。前端构建为静态资产,由Go服务提供,而API、授权、模型路由、文件、计费和审计功能在同一后端运行时中运行。重型文档提取和OCR功能是可选服务,保持基础部署轻量级。
```mermaid
flowchart TB
Browser["用户 / 管理员浏览器"]
subgraph Frontend["前端构建"]
Web["Next.js 16 / React 19<br/>聊天界面 / 管理控制台"]
end
subgraph Backend["Go 单运行时"]
Static["静态资产服务"]
HTTP["Gin HTTP API"]
App["应用程序<br/>身份验证 / 路由 / 文件 / 计费 / 审计"]
Infra["基础设施适配器<br/>协议 / 数据 / 缓存 / 存储"]
end
subgraph External["外部能力"]
Providers["模型提供商<br/>OpenAI / Anthropic / Google / xAI / OpenRouter"]
Tools["工具服务<br/>MCP / 提供商原生工具"]
Extractors["可选文件处理<br/>Tika / Docling / OCR"]
end
subgraph Data["数据和存储"]
DB["PostgreSQL + pgvector<br/>或 SQLite + sqlite-vec"]
Cache["Redis<br/>或内存缓存"]
Storage["本地文件系统<br/>或S3兼容存储"]
end
Web --> Static
Browser --> Static
Browser --> HTTP
HTTP --> App
App --> Infra
Infra --> Providers
Infra --> Tools
Infra --> Extractors
Infra --> DB
Infra --> Cache
Infra --> Storage
```
| 层 | 责任 | 技术 |
| --- | --- | --- |
| 前端 | 聊天界面、管理控制台和静态构建 | Next.js 16、React 19、TypeScript、Tailwind CSS、Shadcn/UI、Streamdown、KaTeX、Mermaid、Recharts、Motion |
| 后端运行时 | API、身份验证、授权、编排、协议适配和静态服务 | Go 1.26、Gin、Gorm、Swagger、OpenTelemetry、Zap |
| 数据和缓存 | 领域数据、向量检索、会话状态和运行时缓存 | PostgreSQL、pgvector、SQLite、sqlite-vec、Redis、内存缓存 |
| 文件和存储 | 上传文件、生成文件、对象存储和本地持久性 | 本地文件系统、S3兼容对象存储 |
| 文件处理 | 文本提取、OCR、文档解析和LLM OCR备用 | 内置提取器、Apache Tika、Docling、RapidOCR、Tesseract OCR、Paddle OCR、云OCR适配器、MinerU |
| 工具协议 | MCP工具集成和提供商原生官方工具 | MCP Streamable HTTP JSON-RPC、提供商原生工具 |
| 部署运行时 | 轻量级单节点部署或多节点生产部署 | Docker、Docker Compose、SQLite/内存缓存、PostgreSQL/Redis |
后端保持清晰的内部边界:`cmd/internal/cli`处理入口点,`internal/app`组装应用程序,`transport/http`拥有HTTP边界,`application`协调用例和事务,`domain`表达业务语义,`infra`包含数据库、缓存、存储和外部协议实现。数据层使用领域前缀的表,而财务记录、审计轨迹、系统事件和高增长向量数据保留单独的事实来源。
## 快速开始
> 快速安装指南:[快速开始](https://deeix.com/docs/deeix-chat/quickstart)。
### 本地开发
本地开发旨在编辑源代码并单独运行前端和后端。默认配置连接到本地PostgreSQL和Redis。如果您只想进行低依赖性试验,请使用下面的轻量级Docker安装。
1. 准备后端配置:
```bash
cp config.example.yaml config.yaml
```
根据您的本地环境,调整`config.yaml`中的`database.postgres.dsn`、`database.redis.*`和公共URL。
2. 安装工作区依赖项并准备前端环境:
```bash
pnpm install
cp frontend/.env.example frontend/.env.local
```
3. 同时启动前端和后端:
```bash
pnpm dev
```
使用`pnpm dev:web`或`pnpm dev:api`仅启动一个工作区。
前端使用`NEXT_PUBLIC_API_BASE_URL`进行API请求。对于本地开发,请确认`frontend/.env.local`包含:
```env
NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8080
```
网址:
| 服务 | 网址 |
| --- | --- |
| 前端 | `http://localhost:3000` |
| API | `http://localhost:8080` |
| Swagger | `http://localhost:8080/swagger/index.html` |
如果省略`NEXT_PUBLIC_API_BASE_URL`,则本地开发默认为`localhost:8080`;同源部署使用当前源。
### Docker部署
首先选择一个安装配置文件,然后复制匹配的配置文件。所有根Compose配置文件默认情况下都将应用程序暴露在`http://localhost:8080`上,并将存储库级别的`config.yaml`挂载到容器内的`/app/config.yaml`。
| 配置文件 | 用例 | 配置文件 | Compose文件 | 构建依赖 |
| --- | --- | --- | --- | --- |
| 轻量级 | 本地评估、个人使用、小型单节点部署 | `config.sqlite.example.yaml` | `docker-compose.sqlite.yml` | 仅应用,SQLite + sqlite-vec + 内存缓存 |
| 默认 | 外部PostgreSQL和Redis已存在 | `config.example.yaml` | `docker-compose.yml` | 仅应用 |
| 完整 | 带有应用、PostgreSQL和Redis的单机栈 | `config.full.example.yaml` | `docker-compose.full.yml` | 应用、PostgreSQL、Redis |
#### 1. 轻量级安装:SQLite
这是依赖性最低的部署。它仅启动`app`容器,在SQLite中存储数据和本地向量索引,并使用进程内内存缓存。使用它进行本地评估、个人部署和小型单节点设置。
```bash
cp config.sqlite.example.yaml config.yaml
docker compose -f docker-compose.sqlite.yml up -d
```
SQLite + 内存缓存仅限单进程使用。它适用于本地使用、评估和小型单节点部署。对于多节点或高并发生产部署,请使用PostgreSQL + Redis。
#### 2. 默认安装:外部PostgreSQL + Redis
当PostgreSQL和Redis已在外部管理时使用此配置。在启动之前,请将数据库和Redis地址设置为容器内可访问的值;如果服务在Docker主机上运行,`host.docker.internal`通常是正确的hostname。
```bash
cp config.example.yaml config.yaml
# 编辑database.postgres.dsn、database.redis.*和公共URL。
docker compose up -d
```
默认的`docker-compose.yml`仅启动应用程序容器。保持compose `environment`为空,除非您故意希望环境变量覆盖`config.yaml`。
#### 3. 完整安装:PostgreSQL + Redis容器
使用此选项时,您希望compose启动应用程序、PostgreSQL和Redis。
```bash
cp config.full.example.yaml config.yaml
docker compose -f docker-compose.full.yml up -d
```
`docker-compose.full.yml`在compose `environment`中设置`POSTGRES_DSN`、`REDIS_ADDR`、`REDIS_USERNAME`和`REDIS_PASSWORD`,因此这些值会覆盖`config.yaml`中的数据库和Redis值。
#### 配置、持久性和镜像
配置优先级为`环境变量 > config.yaml > 内置默认值`。`config.yaml`用于静态基础设施和安全配置,例如服务器网址、数据库、缓存、存储、GeoIP、跟踪、JWT和加密密钥。运行时业务设置存储在数据库中,并在管理控制台中管理。
默认Compose文件持久化应用程序数据:
| 数据 | 容器路径 |
| --- | --- |
| SQLite数据库 | `/app/data/deeix.db` |
| 上传和生成的 文件 | `/app/storage` |
| PostgreSQL数据 | `/var/lib/postgresql/data`,仅限完整安装 |
| Redis数据 | `/data`,仅限完整安装 |
默认应用程序镜像为`ghcr.io/deeix-ai/deeix-chat:latest`。使用自定义构建时,请使用`DEEIX_CHAT_IMAGE`覆盖它:
```bash
DEEIX_CHAT_IMAGE=deeix-chat:local docker compose up -d --build
```
`APP_ENV`接受`dev`/`development`和`prod`/`production`,将它们规范化为`dev`或`prod`,默认为`prod`时省略。使用`dev`仅用于本地开发。公共生产部署应保持`APP_ENV=prod`或`APP_ENV=production`并使用生产密钥。
#### 可选安装服务
这些服务是可选的。仅启用您在管理控制台或`config.yaml`中启用的服务。
它们附加到`deeix-chat-network`;首先启动一个根Compose配置文件,或使用`docker network create deeix-chat-network`手动创建网络。
```bash
docker compose -f docker/tika/docker-compose.yml up -d
docker compose -f docker/tesseract/docker-compose.yml up -d --build
docker compose -f docker/docling/docker-compose.yml up -d --build
```
默认本地端点:
| 服务 | 网址 | 目的 |
| --- | --- | --- |
| Tika | `http://127.0.0.1:9998` | 文档文本提取 |
| Tesseract OCR | `http://127.0.0.1:8004/ocr` | OCR服务 |
| Docling | `http://127.0.0.1:8005/ocr` | 文档/OCR提取 |
`docker/rapidocr`目前提供Dockerfile和应用程序入口点,但没有Compose文件。如果您选择RapidOCR,请添加Compose文件或手动运行它。
### 分离部署
当前端和后端来自不同的公共来源时,请使用此模式,例如`https://chat.example.com`和`https://api.example.com`。
1. 配置公共网址。
- 前端构建变量:`NEXT_PUBLIC_API_BASE_URL=https://api.example.com`
- 后端配置:`server.public_api_base_url=https://api.example.com`
- 后端配置:`server.public_web_base_url=https://chat.example.com`
- 后端配置:`server.cors_allow_origin=https://chat.example.com`
对于Docker镜像构建,请在构建时传递前端API URL:
```bash
docker build --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.example.com -t deeix-chat .
```
2. 构建并发布前端。
```bash
pnpm install
NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm --filter @deeix/web build
```
静态输出为`frontend/out`。使用Nginx、CDN、对象存储或任何静态Web服务器提供服务。要让Go后端提供前端,请将`frontend/out`放在`server.frontend_dist_dir`下;Docker镜像默认为`/app/frontend/out`。
3. 应用CDN规则。
| 路径 | 规则 |
| --- | --- |
| `/_next/static/*` | 1年缓存启用不可变资产。 |
| `/logo*.svg`, `/*.ico`, `/*.png`, `/*.jpg`, `/*.webp`, `/*.woff2` | 缓存1天至30天。 |
| `/`, `/*.html`, `/chat*`, `/recent*`, `/files*`, `/setting*`, `/admin*`, `/share*` | 不进行长期缓存。使用`no-cache`或短TTL。 |
| `/api/*`, `/healthz`, `/readyz`, `/swagger/*` | 绕过CDN缓存并转发所有请求头、方法和查询字符串以及请求体。 |
如果CDN从对象存储提供`frontend/out`,请启用路由回落,以便干净的URL解析为其导出的`index.html`文件,例如`/chat` -> `/chat/index.html`。
### 启动检查和首次登录
应用程序启动后,请验证健康端点、配置文件和启动日志。对于Docker部署:
```bash
curl http://localhost:8080/healthz
docker compose exec app ls -l /app/config.yaml
docker compose logs app
```
如果数据库不包含超级管理员帐户,则后端创建初始管理员并仅打印初始密码一次。
| 项目 | 描述 |
| --- | --- |
| 初始用户名 | `admin` |
| 初始密码 | 检查后端启动日志,搜索`bootstrap superadmin created`并读取`password`字段。 |
| 首次登录 | 系统要求更改用户名和密码。 |
| 后更改 | 使用账户流程或管理控制台;凭证不通过`config.yaml`管理。 |
如果已经存在超级管理员服务,则服务不会重新生成或打印初始密码。
如果超级管理员已经存在,则服务不会重新生成或打印初始密码。
## 配置
> 完整的配置指南:[配置](https://deeix.com/docs/deeix-chat/configuration)。
后端配置分为静态运行时配置和运行时业务设置。静态运行时配置描述了品牌和基础设施、安全性和存储参数,这些参数是在服务启动前所需的,并通过 `config.yaml` 和环境变量提供。运行时业务设置涵盖了诸如身份验证、对话、模型、文件和计费等产品功能;它们存储在 `system_settings` 中,并通过管理控制台进行维护。环境变量会覆盖匹配的配置文件值,这对于容器化部署、分离部署和机密注入非常有用。
在启动时,后端会从工作目录解析默认配置文件:从仓库根目录开始读取 `config.yaml`,而从 `backend/` 开始读取 `../config.yaml`。Docker 部署通常将主机 `./config.yaml` 挂载为容器内的只读 `/app/config.yaml`。如果配置文件存储在其他位置,请将 `CONFIG_FILE` 设置为运行进程或容器可访问的路径。
前端品牌化也是运行时配置。在 `config.yaml` 中设置 `branding` 部分,然后重启应用程序;不需要重建前端或 Docker 镜像。参见 [自定义品牌](docs/BRANDING.md)。
静态配置环境变量:
| 领域 | 环境变量 | 用途 |
| --- | --- | --- |
| 前端构建 | `NEXT_PUBLIC_API_BASE_URL` | 浏览器 API 基地址;在本地开发时在 `frontend/.env.local` 中设置,或在分离部署时在构建时设置。 |
| 配置文件 | `CONFIG_FILE` | 可选的配置文件路径;Docker 值应使用容器路径。 |
| 应用程序 | `APP_NAME` | 应用程序名称。 |
| 应用程序 | `APP_ENV` | 运行时环境:`dev`/`development` 或 `prod`/`production`;省略的值默认为 `prod`。 |
| HTTP 服务 | `HTTP_PORT` | API/运行时端口。 |
| HTTP 服务 | `CORS_ALLOW_ORIGIN` | 允许的 CORS 源,以逗号分隔。 |
| HTTP 服务 | `TRUSTED_PROXIES` | 受信任的代理 CIDR 列表。 |
| HTTP 服务 | `PUBLIC_API_BASE_URL` | 用于链接、回调和公共 URL 生成的公共 API URL。 |
| HTTP 服务 | `PUBLIC_WEB_BASE_URL` | 用于链接、回调和公共 URL 生成的公共 Web URL。 |
| HTTP 服务 | `FRONTEND_DIST_DIR` | 前端静态输出目录。 |
| HTTP 服务 | `HTTP_READ_HEADER_TIMEOUT_SECONDS` | HTTP 读取头部超时。 |
| HTTP 服务 | `HTTP_READ_TIMEOUT_SECONDS` | HTTP 请求读取超时。 |
| HTTP 服务 | `HTTP_IDLE_TIMEOUT_SECONDS` | HTTP 保持活动空闲超时。 |
| HTTP 服务 | `HTTP_MAX_HEADER_BYTES` | 最大 HTTP 请求头部大小。 |
| 安全 | `JWT_SECRET` | JWT 签名密钥。 |
| 安全 | `DATA_ENCRYPTION_KEY` | 用于上游 API 密钥、SSO 机密、MCP 代币、敏感设置和 TOTP 机密的密钥材料。 |
| 安全 | `SSRF_PROTECTION_ENABLED` | 启用出站 SSRF 保护。 |
| 安全 | `TURNSTILE_SITEVERIFY_URL` | Cloudflare Turnstile siteverify 端点。 |
| 数据库 | `DATABASE_DRIVER` | `postgres` 或 `sqlite`。 |
| PostgreSQL | `POSTGRES_DSN` | PostgreSQL DSN。 |
| PostgreSQL | `POSTGRES_MAX_OPEN_CONNS` | 最大打开连接数。 |
| PostgreSQL | `POSTGRES_MAX_IDLE_CONNS` | 最大空闲连接数。 |
| PostgreSQL | `POSTGRES_CONN_MAX_LIFETIME_MINUTES` | 最大连接生命周期。 |
| PostgreSQL | `POSTGRES_CONN_MAX_IDLE_TIME_MINUTES` | 最大空闲连接时间。 |
| SQLite | `SQLITE_PATH` | 数据库文件路径。 |
| SQLite | `SQLITE_DSN` | 完整的 DSN;优先于基于路径的 DSN 构造。 |
| SQLite | `SQLITE_MAX_OPEN_CONNS` | 最大打开连接数,默认为 `1`。 |
| SQLite | `SQLITE_BUSY_TIMEOUT_MS` | 忙碌超时。 |
| SQLite | `SQLITE_CACHE_SIZE_KB` | 页面缓存大小。 |
| SQLite | `SQLITE_MMAP_SIZE_BYTES` | mmap 大小。 |
| SQLite | `SQLITE_SYNCHRONOUS` | 同步模式:`OFF`、`NORMAL`、`FULL` 或 `EXTRA`。 |
| SQLite | `SQLITE_TEMP_STORE` | 临时存储:`DEFAULT`、`FILE` 或 `MEMORY`。 |
| 缓存 | `CACHE_DRIVER` | `redis` 或 `memory`;`memory` 仅限单进程。 |
| Redis | `REDIS_ADDR` | Redis 地址。 |
| Redis | `REDIS_USERNAME` | Redis ACL 用户名;留空为密码-only/default-user Redis。 |
| Redis | `REDIS_PASSWORD` | Redis 密码。 |
| Redis | `REDIS_DB` | Redis DB 编号。 |
| Redis | `REDIS_TLS_ENABLED` | 为 Redis 连接启用 TLS,例如 Upstash Redis。 |
| Redis | `REDIS_TLS_INSECURE_SKIP_VERIFY` | 跳过 Redis TLS 证书验证;除非需要非标准端点,否则保持 `false`。 |
| 存储 | `STORAGE_BACKEND` | `local` 或 `s3`。 |
| 本地存储 | `STORAGE_ROOT_DIR` | 本地文件存储目录。 |
| S3 存储 | `STORAGE_S3_ENDPOINT` | S3 兼容端点。 |
| S3 存储 | `STORAGE_S3_REGION` | S3 区域;启用 S3 存储时必填。 |
| S3 存储 | `STORAGE_S3_BUCKET` | S3 存储桶;启用 S3 存储时必填。 |
| S3 存储 | `STORAGE_S3_PREFIX` | S3 对象前缀。 |
| S3 存储 | `STORAGE_S3_ACCESS_KEY_ID` | S3 访问密钥 ID。 |
| S3 存储 | `STORAGE_S3_SECRET_ACCESS_KEY` | S3 秘密访问密钥。 |
| S3 存储 | `STORAGE_S3_FORCE_PATH_STYLE` | 是否使用路径样式访问。 |
| GeoIP | `GEOIP_PROVIDER` | `none`、`ipwhois`、`ipinfo` 或 `mmdb`。 |
| GeoIP | `GEOIP_BASE_URL` | GeoIP HTTP 服务 URL,默认为 `https://ipwho.is`。 |
| GeoIP | `GEOIP_TOKEN` | GeoIP 服务令牌。 |
| GeoIP | `GEOIP_TIMEOUT_MS` | GeoIP 请求超时。 |
| GeoIP | `GEOIP_DATABASE_URL` | MMDB 下载 URL。 |
| GeoIP | `GEOIP_DATABASE_PATH` | 本地 MMDB 路径。 |
| GeoIP | `GEOIP_DATABASE_MAX_BYTES` | 最大 MMDB 下载大小。 |
| GeoIP | `GEOIP_REFRESH_INTERVAL_HOURS` | MMDB 刷新间隔。 |
| OpenTelemetry | `OTEL_ENABLED` | 启用跟踪;省略时,配置的端点会自动启用跟踪。 |
| OpenTelemetry | `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP 收集器端点。 |
| OpenTelemetry | `OTEL_EXPORTER_OTLP_HEADERS` | `key=value,key2=value2` 格式的 OTLP 头部。 |
| OpenTelemetry | `OTEL_EXPORTER_OTLP_INSECURE` | 是否使用明文传输。 |
| OpenTelemetry | `OTEL_EXPORTER_OTLP_PROTOCOL` | OTLP 导出协议:`grpc`、`http` 或 `http/protobuf`;默认为 `grpc`。 |
| OpenTelemetry | `OTEL_TRACES_SAMPLER_ARG` / `OTEL_SAMPLING_RATE` | 跟踪采样率,从 `0` 到 `1`;`OTEL_TRACES_SAMPLER_ARG` 优先级更高。 |
身份验证、注册、对话设置、模型选项策略、文件处理、RAG、嵌入、MCP、计费、支付和公告是运行时业务设置,而不是静态 YAML 配置。它们的默认值由后端播种,并在管理控制台中维护。
## 功能指南
- [用户指南](https://deeix.com/docs/deeix-chat/new-chat)
- [管理员指南](https://deeix.com/docs/deeix-chat/admin-accounts)
- [高级指南](https://deeix.com/docs/deeix-chat/advanced-capabilities-passthrough-tools)
## 安全说明
- 用户密码使用 bcrypt 进行哈希加密。
- 生产模式拒绝不安全的默认机密、弱加密密钥、通配符 CORS 和非 HTTPS 公共 URL。
- 刷新令牌和恢复样式的机密存储为哈希值。
- 上游 API 密钥、SSO 客户端机密、MCP 身份验证令牌、敏感设置和 TOTP 机密使用 `DATA_ENCRYPTION_KEY` 通过 AES-GCM 进行加密。
- 访问令牌寿命短暂,客户端在内存中持有;刷新令牌通过 HttpOnly cookie 发行。
- 用户提供的模型选项在提供者请求之前进行过滤。系统生成的字段(如模型、消息、工具、系统提示、头部和前响应标识符)不可由用户覆盖。
## 文档
- [快速入门](https://deeix.com/docs/deeix-chat/quickstart)
- [配置](https://deeix.com/docs/deeix-chat/configuration)
- [用户指南](https://deeix.com/docs/deeix-chat/new-chat)
- [管理员指南](https://deeix.com/docs/deeix-chat/admin-accounts)
- [高级指南](https://deeix.com/docs/deeix-chat/advanced-capabilities-passthrough-tools)
- 后端指南:[backend/README.md](./backend/README.md)
- 后端标准:[backend/docs/README.md](./backend/docs/README.md)
- 前端指南:[frontend/README.md](./frontend/README.md)
- 贡献:[CONTRIBUTING.md](./.github/CONTRIBUTING.md)
- 安全策略:[SECURITY.md](./.github/SECURITY.md)
- Swagger UI:`http://localhost:8080/swagger/index.html`
## 鸣谢
DEEIX Chat 建立在开源生态系统上。感谢 AI 工具生态系统中的所有维护者和社区。
- [Next.js](https://nextjs.org)
- [Go](https://go.dev)
- [LINUX DO](https://linux.do)
## 联系与社区
- 网站:[deeix.com](https://deeix.com/)
- 博客:[blog.cheny.me](https://blog.cheny.me/)
- 电子邮件:[support@deeix.com](mailto:support@deeix.com)
- Telegram:[t.me/deeix_chat](https://t.me/deeix_chat)
- X:[@DEEIX_AI](https://x.com/DEEIX_AI)
## 许可证
DEEIX Chat 在 [Apache License 2.0](./LICENSE) 下获得许可。
连接信息
猜你喜欢
暂无推荐服务器