vinhnx/vtchat

GitHub: vinhnx/vtchat

一款隐私优先的现代 AI 聊天应用,支持多服务商集成与本地 AI 模型,提供文档处理、会话式图像编辑和 Web 搜索等丰富功能。

Stars: 51 | Forks: 11

VT

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/vinhnx/vtchat) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Next.js](https://img.shields.io/badge/Next.js-000000?logo=next.js&logoColor=white)](https://nextjs.org/) [![Deployed on Fly.io](https://img.shields.io/badge/Deployed%20on-Fly.io-blueviolet)](https://fly.io) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0d7d22a083100829.svg)](https://github.com/vinhnx/vtchat/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/vinhnx/vtchat/branch/main/graph/badge.svg)](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 专属功能。 ## 截图
VT Advanced Features _高级 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)** - 隐私与安全实现细节
标签:TypeScript, 人工智能, 安全插件, 测试用例, 用户模式Hook绕过, 自动化攻击, 请求拦截