logo
0
0
WeChat Login

42Chat - 活水智聊

一款面向个人用户与小型团队设计的基于 Web 的多模型 AI 对话中枢,为频繁在不同模型间工作的用户提供统一入口。

功能特性

核心功能

  • 多模型 AI 对话 - 支持 Claude、GPT-4、DeepSeek、Qwen 等多个模型
  • 多提供商支持 - 集成 OpenRouter、硅基流动 (SiliconFlow)、Anthropic、OpenAI
  • 用户 API 密钥管理 - 用户可配置自己的 API 密钥,加密存储
  • 会话管理 - 对话持续保存、可检索、可导出
  • 模型切换 - 在单一界面持续完成跨模型交流
  • 提示词模板 - 配置集中收纳、随时可测、按需启用
  • 流式响应 - SSE 实时流式输出 AI 响应
  • 用户认证 - 基于 Better Auth 的安全认证系统

增强功能

  • 联网搜索 - 一键开启网络搜索,获取实时信息辅助回答
  • 命令面板 - ⌘K 快速访问所有功能和最近对话
  • 键盘快捷键 - 高效操作,提升使用体验
  • 管理后台 - 用户管理、系统日志、数据统计

键盘快捷键

快捷键功能
⌘K打开命令面板
⌘N新建对话
⌘/聚焦输入框
⌘,打开设置
⌘⇧S切换侧边栏
Esc关闭对话框

技术栈

前端

  • Next.js 16 - React 全栈框架
  • TypeScript - 类型安全
  • Tailwind CSS - 原子化 CSS
  • shadcn/ui - UI 组件库
  • Zustand - 状态管理

后端

  • Bun - JavaScript 运行时
  • Drizzle ORM - 类型安全的 ORM
  • Neon PostgreSQL - Serverless 数据库
  • Better Auth - 认证框架

AI 集成

  • OpenRouter - 多模型统一接口
  • SiliconFlow - 国内模型服务
  • OpenAI 兼容 API - 标准化接口

快速开始

环境要求

  • Node.js 20+ 或 Bun 1.0+
  • PostgreSQL 数据库 (推荐 Neon)

安装

# 克隆项目 git clone <repository-url> cd 42chat # 安装依赖 bun install # 配置环境变量 cp .env.example .env.local

环境变量

.env.local 中配置以下变量:

# 数据库 DATABASE_URL=postgresql://... # 认证 BETTER_AUTH_SECRET=your-secret-key BETTER_AUTH_URL=http://localhost:3000 # AI 提供商 (可选,用户可在设置中配置) OPENROUTER_API_KEY=sk-or-... SILICONFLOW_API_KEY=sk-...

数据库初始化

# 推送数据库 schema bun run db:push # 或生成并运行迁移 bun run db:generate bun run db:migrate

运行

# 开发模式 bun run dev # 生产构建 bun run build bun run start

API 端点

认证

  • POST /api/auth/sign-up - 用户注册
  • POST /api/auth/sign-in - 用户登录
  • POST /api/auth/sign-out - 用户登出

对话

  • GET /api/v1/conversations - 获取对话列表
  • POST /api/v1/conversations - 创建新对话
  • GET /api/v1/conversations/:id - 获取对话详情
  • PATCH /api/v1/conversations/:id - 更新对话
  • DELETE /api/v1/conversations/:id - 删除对话

消息

  • GET /api/v1/conversations/:id/messages - 获取消息列表
  • POST /api/v1/conversations/:id/messages - 发送消息 (SSE 流式响应)

模型

  • GET /api/v1/models - 获取可用模型列表

设置

  • GET /api/v1/settings/api-keys - 获取 API 密钥状态
  • POST /api/v1/settings/api-keys - 保存 API 密钥
  • DELETE /api/v1/settings/api-keys - 删除 API 密钥

搜索

  • GET /api/v1/search - 网络搜索

管理后台 (需要管理员权限)

  • GET /api/v1/admin/stats - 获取系统统计数据
  • GET /api/v1/admin/users - 获取用户列表
  • GET /api/v1/admin/users/:id - 获取用户详情
  • PUT /api/v1/admin/users/:id - 用户操作 (冻结/解冻/提权/降权)
  • GET /api/v1/admin/logs - 获取系统日志
  • GET /api/v1/admin/logs/export - 导出日志

支持的模型

OpenRouter

  • Claude 3.5 Sonnet
  • Claude 3.5 Haiku
  • GPT-4o
  • GPT-4o Mini

SiliconFlow (硅基流动)

  • DeepSeek V3
  • DeepSeek R1
  • Qwen 2.5 72B
  • Qwen 2.5 Coder 32B

项目结构

src/ ├── app/ # Next.js App Router │ ├── (auth)/ # 认证页面 │ ├── (main)/ # 主应用页面 │ ├── admin/ # 管理后台页面 │ └── api/ # API 路由 │ └── v1/ │ ├── admin/ # 管理后台 API │ ├── conversations/ │ ├── models/ │ ├── search/ # 搜索 API │ └── settings/ ├── components/ # React 组件 │ ├── auth/ # 认证组件 │ ├── chat/ # 聊天组件 │ ├── command-palette/ # 命令面板 │ ├── layout/ # 布局组件 │ ├── settings/ # 设置组件 │ └── ui/ # UI 基础组件 ├── lib/ # 工具库 │ ├── auth/ # 认证配置 │ ├── crypto/ # 加密工具 │ ├── db/ # 数据库配置 │ ├── hooks/ # 自定义 Hooks │ ├── llm/ # LLM 服务 │ ├── services/ # 业务服务 │ └── stores/ # 状态管理 └── types/ # TypeScript 类型

开发命令

# 开发 bun run dev # 启动开发服务器 bun run build # 构建生产版本 bun run lint # 代码检查 bun run type-check # 类型检查 # 测试 bun run test # 运行单元测试 bun run test:watch # 监听模式 bun run test:e2e # E2E 测试 # 数据库 bun run db:push # 推送 schema bun run db:studio # 打开数据库管理界面

📚 文档

完整的项目文档位于 docs/ 目录:

快速入门

部署文档

开发文档

模板和工具

查看完整的文档索引:docs/README.md

安全特性

  • API 密钥使用 AES-256-GCM 加密存储
  • 基于会话的用户认证
  • CSRF 保护
  • 所有 API 端点需要认证
  • 密钥仓库安全管理(CNB)

许可证

MIT

作者

Vincent

About

No description, topics, or website provided.
Language
TypeScript56.1%
HTML41.7%
CSS1.8%
Shell0.3%
Others0.1%