VT
[](https://deepwiki.com/vinhnx/vtchat)
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
[](https://nextjs.org/)
[](https://fly.io)
[](https://github.com/vinhnx/vtchat/actions/workflows/ci.yml)
[](https://codecov.io/gh/vinhnx/vtchat)
**一款现代化、隐私优先且安全可靠的 AI 聊天应用**
[在线应用](https://vtchat.io.vn) | [文档](docs/) | [仓库指南](AGENTS.md) | [项目状态](docs/PROJECT-STATUS.md) | [功能](docs/FEATURES.md) | [架构](docs/ARCHITECTURE.md) | [安全性](docs/SECURITY.md)
## 概述
VT 是一款达到生产级标准、注重隐私的 AI 聊天应用,通过极为慷慨的免费额度和专业的高级订阅提供尖端的 AI 功能。VT 采用现代 Web 技术和隐私优先的架构构建,提供高级 AI 推理、文档处理、Web 搜索集成以及全面的多 AI 服务商支持。
**特色功能 Nano Banana** - 会话式图像编辑器!通过自然对话生成并迭代编辑图像,此为 VT 专属功能。
## 截图

_高级 AI 功能,包括文档处理、Web 搜索和结构化输出_
## 当前项目状态
### 生产环境成就
- **线上部署**:成功运行于 Fly.io,采用双区域部署架构
- **零 TypeScript 错误**:在 50 多个文件中实现完全的类型安全
- **87% 性能提升**:编译时间从 24 秒优化至 3 秒
- **全面的功能集**:所有计划功能均已实现并测试
- **安全加固**:包含机器人检测、Better Auth 和隐私优先架构
- **现代化技术栈**:Next.js 15、React 19、TypeScript、Bun 生态系统
### 隐私与安全
- **本地优先存储**:所有对话均存储在浏览器的 IndexedDB 中
- **零服务器聊天存储**:通过基于用户的数据隔离实现完全的隐私保护
- **Better Auth 集成**:配合安全 session 实现 87% 的性能提升
- **生产级安全**:具备机器人检测和全面的保护措施
## 核心功能
### 高级 AI 功能
- **Nano Banana 会话式图像编辑器(VT 新增功能)**:会话式图像编辑器!生成图像,然后通过自然对话进行迭代编辑:“把猫变大”、“把背景改成日落”、“加一顶派对帽”——同时保留完整的编辑历史
- **高级 AI 模型(使用 BYOK 免费)**:Claude Sonnet 4.5、Claude 4 Sonnet/Opus、GPT-4.1、O3/O3 Mini/O4 Mini、O1 Mini/Preview、Gemini 3 Pro、DeepSeek R1、Grok 3——所有已登录用户均可通过自带 API key 使用
- **9 款免费服务器端模型**:Gemini 2.0/2.5 Flash 系列及 OpenRouter 模型(DeepSeek V3、Qwen3 14B)——无需 API key
- **免费本地 AI**:使用 **Ollama** 和 **LM Studio** 在您自己的电脑上运行 AI 模型——完全免费、私密,且无任何 API 成本
- **多 AI 服务商支持**:OpenAI、Anthropic、Google、Fireworks、Together AI、xAI,以及本地提供商(Ollama、LM Studio)
- **智能工具路由(免费)**:由 AI 驱动的语义路由使用 OpenAI embedding 和模式匹配,根据您的查询自动激活正确的工具
- **文档处理(免费)**:上传并分析 PDF、DOC、DOCX、TXT、MD 文件(最大 10MB)——所有已登录用户均可使用
- **结构化输出提取(免费)**:由 AI 驱动的 JSON 数据提取功能——所有已登录用户均可使用
- **图表可视化(免费)**:创建交互式柱状图、折线图、饼图和散点图——始终可用,并可通过智能 UI 轻松发现
- **思考模式(免费)**:提供完整的 AI SDK 推理 token 支持及透明的思考过程——所有已登录用户均可使用
- **数学计算器(免费)**:包含三角函数、对数和算术在内的高级功能——始终可用,并可通过智能 UI 轻松发现
- **Web 搜索集成(免费)**:具备获取最新信息的实时 Web 搜索功能——始终可用,并可通过智能 UI 轻松发现
### 隐私优先架构
- **本地优先存储**:通过 Dexie.js 将所有聊天数据存储在浏览器的 IndexedDB 中
- **零服务器存储**:对话绝不会离开用户的设备
- **多用户隔离**:在共享设备上实现完全的数据隔离
- **安全性**:通过 Better Auth 进行安全的身份验证
- **注重隐私的安全防护**:具备机器人检测,并通过 Better Auth 进行安全的身份验证
### 本地 AI 配置指南
在您的电脑上**免费**且完全私密地运行 AI 模型:
- **[完整的本地 AI 指南](docs/guides/local-ai-setup.md)** - 在 Ollama 和 LM Studio 之间进行选择
- **[Ollama 配置指南](docs/guides/ollama-setup.md)** - 命令行本地 AI(5 分钟设置)
- **[LM Studio 配置指南](docs/guides/lm-studio-setup.md)** - 图形界面本地 AI(10 分钟设置)
### 现代化的用户体验
- **Shadcn UI 设计系统**:一致且无障碍的界面,支持暗色模式
- **智能工具发现**:所有工具始终可见且可点击,配有智能的权限访问对话框
- **无缝的功能访问**:工具保持启用状态以便于发现,同时适当的访问控制会显示上下文对话框
- **响应式设计**:采用现代 Next.js 15 App Router,针对桌面和移动设备进行优化
- **87% 的性能提升**:更快的编译速度(24秒 → 3秒)和优化的加载时间
- **生产就绪**:部署在 Fly.io 上,采用双区域设置并进行全面监控
## 架构
VT 使用由 Turborepo 管理的 monorepo 结构:
```
vtchat/
├── apps/
│ └── web/ # Next.js 15 web application (App Router, React 19)
├── packages/
│ ├── actions/ # Server actions (e.g., feedback)
│ ├── ai/ # AI models, providers, tools, semantic router, workflow logic
│ ├── common/ # Shared React components, hooks, context, store
│ ├── orchestrator/ # Workflow engine and task management
│ ├── shared/ # Shared types, constants, configs, utils, logger
│ ├── tailwind-config/ # Shared Tailwind CSS configuration
│ ├── typescript-config/# Shared TypeScript configurations
│ └── ui/ # Base UI components (from Shadcn UI)
├── docs/ # Documentation and guides
├── memory-bank/ # Project context and evolution tracking
└── scripts/ # Utility scripts (e.g., data sync)
```
## 技术栈
### **前端与核心**
- **框架**:基于 TypeScript 的 Next.js 15 (App Router)
- **React**:React 19.0.0(最新稳定版)
- **样式**:Tailwind CSS + Shadcn UI 设计系统
- **状态管理**:Zustand + React Query
- **动画**:Framer Motion
- **图标**:Lucide React
### **后端与基础设施**
- **数据库**:配合 Drizzle ORM 的 Neon PostgreSQL
- **身份验证**:Better Auth(现代化的 session 管理)
- **应用安全**:针对身份验证的机器人检测和安全的 OAuth 集成
- **支付处理**:Creem.io 集成
- **本地存储**:通过 Dexie.js 实现的 IndexedDB
- **部署**:Fly.io(生产就绪)
### **开发与构建**
- **运行时**:Bun(包管理器 + JavaScript 运行时)
- **Monorepo**:采用优化缓存的 Turborepo
- **测试**:配合 Testing Library 的 Vitest
- **代码质量**:dprint(格式化)+ oxlint(全面的代码检查)
- **类型检查**:采用严格配置的 TypeScript
- **性能监控**:React Scan(用于开发阶段的性能优化)
### **AI 与集成**
- **AI 提供商**:OpenAI、Anthropic、Google、Fireworks、Together AI、xAI
- **AI SDK**:支持推理 token 的 Vercel AI SDK
- **语义工具路由器**:利用 OpenAI embedding + 模式匹配实现智能工具激活
- **文档处理**:多格式文件分析
- **图表生成**:柱状图、折线图、饼图、散点图
- **Web 搜索**:实时 grounding 功能
## 快速开始
### 前置条件
- **Docker 和 Docker Compose**:用于最简便的设置
- **至少一个 AI API key**:OpenAI、Anthropic 或 Google Gemini
### 快速启动(Docker - 推荐)
在本地运行 VT 最简单的方法是使用 Docker Compose:
### 1. 克隆与设置
```
git clone https://github.com/vinhnx/vtchat.git
cd vtchat
cp apps/web/.env.example apps/web/.env.local
```
### 2. 配置环境
编辑 `apps/web/.env.local` 并添加:
- `BETTER_AUTH_SECRET`(生成命令:`node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"`)
- 至少一个 AI API key(例如 `OPENAI_API_KEY=sk-your-key-here`)
### 3. 使用 Docker 运行
```
# 验证 setup(可选但推荐)
./validate-setup.sh
# 启动应用程序
docker-compose up --build
```
### 4. 访问 VT
- **应用**:http://localhost:3000
- **健康检查**:http://localhost:3000/api/health
**大功告成!** VT 将连同 PostgreSQL、所有依赖项一起运行,并已启用热重载。
## 手动设置(高级)
如果您倾向于不使用 Docker 进行手动设置:
### 前置条件
- **Bun** v1.1.19+(JavaScript 运行时和包管理器)
- **PostgreSQL**(本地或云端)
- **Git**
### 1. 克隆并安装
```
git clone https://github.com/vinhnx/vtchat.git
cd vtchat
bun install
```
### 2. 数据库设置
**选项 A:本地 PostgreSQL**
```
# macOS 使用 Homebrew
brew install postgresql@15
brew services start postgresql@15
createdb vtchat_dev
```
**选项 B:Docker PostgreSQL**
```
docker run -d --name vtchat-postgres \
-e POSTGRES_DB=vtchat_dev \
-e POSTGRES_USER=vtchat \
-e POSTGRES_PASSWORD=vtchat_password \
-p 5432:5432 postgres:15-alpine
```
### 3. 环境配置
```
cp apps/web/.env.example apps/web/.env.local
```
编辑 `apps/web/.env.local` 并填入您的值:
**必需项:**
```
DATABASE_URL=postgresql://vtchat:vtchat_password@localhost:5432/vtchat_dev
BETTER_AUTH_SECRET=your-32-char-secret-here
NEXT_PUBLIC_BASE_URL=http://localhost:3000
OPENAI_API_KEY=sk-your-openai-key-here
```
### 4. 数据库迁移
```
cd apps/web
bun run generate # Generate database schema
```
### 5. 启动开发服务器
```
bun dev
```
## 环境变量
### 必需(核心功能)
```
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/vtchat_dev
# Authentication
BETTER_AUTH_SECRET=your-32-char-secret-key
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# AI Provider(至少选择一个)
OPENAI_API_KEY=sk-your-key-here
# OR
ANTHROPIC_API_KEY=sk-ant-your-key-here
# OR
GEMINI_API_KEY=your-key-here
```
### 可选(增强功能)
```
# Social Authentication
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
# Payment(Creem.io - 若不需要可跳过)
CREEM_API_KEY=creem_test_your-key
CREEM_WEBHOOK_SECRET=your-webhook-secret
CREEM_PRODUCT_ID=your-product-id
# Additional AI Providers
FIREWORKS_API_KEY=fw-your-key-here
```
## 开发命令
```
# Development
bun dev # Start development server
bun dev --turbopack # With Turbopack (faster)
bun build # Production build
bun start # Production server
# Database
cd apps/web
bun run generate # Generate Drizzle schema
# Code Quality
bun run lint # Lint with oxlint
bun run fmt # Format with dprint
bun run fmt:check # Check formatting
# Testing
bun test # Run tests
bun test:coverage # Tests with coverage
```
## 故障排除
### 快速修复
**设置验证**:
```
./validate-setup.sh
```
**重置 Docker 环境**:
```
docker-compose down -v && docker-compose up --build
```
**清除缓存**:
```
rm -rf node_modules apps/web/node_modules apps/web/.next
bun install
```
### 常见问题
- **端口冲突**:在 `docker-compose.yml` 中更改端口
- **数据库问题**:检查 `docker-compose logs postgres`
- **构建失败**:运行 `docker system prune -f`,然后重新构建
- **身份验证问题**:重新生成 `BETTER_AUTH_SECRET`
**[完整的故障排除指南](docs/guides/troubleshooting.md)**
## 文档
- **[自托管指南](docs/guides/self-hosting-complete-guide.md)** - 面向自托管用户的完整设置
- **[Docker 设置指南](DOCKER-README.md)** - 详细的 Docker 说明
- **[本地开发](docs/local-development-setup.md)** - 高级设置选项
- **[故障排除](docs/guides/troubleshooting.md)** - 常见问题与解决方案
- **[功能](docs/FEATURES.md)** - 完整的功能说明文档
- **[架构](docs/ARCHITECTURE.md)** - 系统设计与技术栈
- **[安全性](docs/SECURITY.md)** - 隐私与安全实现细节