- 当前仓库是 v2.0 重构架构(
packages/client+packages/server+packages/shared)。 - 与
main分支(旧部署模型)不兼容;请按本 README 的方式部署。 - 后端统一使用 PostgreSQL + Prisma,前端不直接持有模型 API Key。
- Prompt 工作区:多轮消息、变量、结构化输出、参数配置、版本管理。
- Prompt 分组:支持分组管理与排序。
- Prompt 广场:公开 Prompt 浏览、复制、版本查看。
- Prompt API:支持创建 API Key,并通过开放接口调用指定 Prompt。
- 评测中心:评测集、测试用例、评价标准、运行记录。
- 运行控制:执行、中止、结果批量写入。
- 导入导出:评测模板下载、ZIP 导入、评测导出。
- 分析报告:支持保存单次/多次运行分析报告。
- Chat SSE 流式输出,支持 reasoning/thinking 展示。
- 文件上传与附件使用(依赖 S3 兼容对象存储)。
- OCR 能力(
paddle/paddle_vl/paddle_vl_1_5/datalab/mineru)。 - Trace 追踪:输入输出、耗时、Token、附件与 OCR 信息。
- JWT + Refresh Token 登录体系,支持 Demo Token。
- API Key AES-256-GCM 加密存储。
- 私有分享链接(Prompt / Evaluation)+ 密码校验 + 访问日志。
- OAuth(Google / Linux.do)、邮箱验证码与找回密码。
- 管理员用户管理(角色、状态、账号管理)。
| 页面 | 路由 |
|---|---|
| 首页 | / |
| Prompt 向导 | /wizard |
| Prompt 广场 | /plaza |
| Prompt 工作区 | /prompts |
| 评测中心 | /evaluation |
| 调用追踪 | /traces |
| 设置 | /settings |
| 登录 / 找回密码 | /login / /forgot-password |
| 分享页 | /share/p/:token / /share/e/:token |
- 前端:React 18 + TypeScript + Vite + Tailwind + Zustand + i18next
- 后端:Express + TypeScript + Prisma + PostgreSQL + Graphile Worker
- 共享:
@ssrprompt/shared(类型、Schema、错误码)
- Node.js >= 18
- pnpm >= 8
- PostgreSQL >= 14
git clone https://github.com/innocentshen/ssrprompt.git
cd ssrprompt
pnpm installcp packages/server/.env.example packages/server/.env最低必填(packages/server/.env):
DATABASE_URL=postgresql://postgres:password@localhost:5432/ssrprompt?schema=public
JWT_SECRET=your-jwt-secret-at-least-32-characters-long
ENCRYPTION_KEY=your-64-character-hex-string-for-aes-256-encryption生成 ENCRYPTION_KEY:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"pnpm db:generate
pnpm db:deploy # 推荐:按 migration 执行
# pnpm db:push # 仅开发场景可选
pnpm --filter @ssrprompt/server prisma:seed # 可选:初始化角色与管理员生产部署建议在每次发布时执行一次以下幂等命令(会自动判断是否有待执行 migration):
pnpm db:prepare:prodpnpm dev:all # 同时启动 client/server/worker(推荐)
# 或分开启动
pnpm dev # 前端: http://localhost:5173
pnpm dev:server # API: http://localhost:3001
pnpm dev:worker # WorkerSwagger 文档:http://localhost:3001/api-docs
仓库已内置目标库迁移脚本(支持传入任意 DATABASE_URL):
# 常规:对目标库执行 migrate deploy + status
pnpm db:deploy:target -- --database-url "postgresql://user:password@host:port/dbname"
# 历史库有迁移记录漂移时:先 resolve 再 deploy
pnpm db:deploy:target:resolve -- --database-url "postgresql://user:password@host:port/dbname"当你遇到类似 column ... does not exist 的 Prisma 报错时,优先执行上述命令。
EVALUATION_QUEUE_DRIVER 支持两种模式:
memory(默认):进程内队列,适合开发/轻量场景。pg:基于 Graphile Worker,适合生产。
生产建议:
- 设置
EVALUATION_QUEUE_DRIVER=pg - 首次执行一次 worker schema 初始化:
pnpm --filter @ssrprompt/server worker:setup- 分别运行 API 与 Worker:
pnpm --filter @ssrprompt/server start
pnpm --filter @ssrprompt/server start:worker仓库内提供两个 Dockerfile:
Dockerfile.ssrprompt-apiDockerfile.ssrprompt-worker
构建镜像:
docker build -f Dockerfile.ssrprompt-api -t <dockerhub_user>/ssrprompt-api:latest .
docker build -f Dockerfile.ssrprompt-worker -t <dockerhub_user>/ssrprompt-worker:latest .运行镜像:
# API
docker run -d --name ssrprompt-api -p 3001:3001 --env-file packages/server/.env <dockerhub_user>/ssrprompt-api:latest
# Worker
docker run -d --name ssrprompt-worker --env-file packages/server/.env <dockerhub_user>/ssrprompt-worker:latest如果使用 Zeabur/GitHub 仓库构建,API 与 Worker 需配置不同启动命令:
- API:
node packages/server/dist/index.js - Worker:
node packages/server/dist/worker.js
NODE_ENVPORT(默认3001)DATABASE_URLJWT_SECRETENCRYPTION_KEYCORS_ORIGIN
- 注册与认证:
ALLOW_REGISTRATION、REQUIRE_EMAIL_VERIFICATION - SMTP:
SMTP_HOSTSMTP_PORTSMTP_USERSMTP_PASSSMTP_FROM - OAuth:
OAUTH_GOOGLE_*、OAUTH_LINUXDO_* - S3:
S3_ENDPOINTS3_BUCKETS3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEYS3_REGION - 限流:
RATE_LIMIT_WINDOW_MSRATE_LIMIT_MAX_REQUESTS - 评测队列:
EVALUATION_QUEUE_DRIVER及EVALUATION_*并发/批次参数
完整示例请看:packages/server/.env.example
基础前缀:/api/v1
- 认证:
/auth/*(注册、登录、刷新、OAuth、找回密码、Demo) - 健康检查:
/health - Prompt:
/prompts、/prompt-groups - 模型:
/providers、/models - 聊天:
/chat/completions - 评测:
/evaluations、/runs、/test-cases、/criteria - 导入导出:
/evaluation-imports - 文件与 OCR:
/files、/ocr - 分享:
/share-links、/share - Prompt API:
/prompt-api-keys、/open/prompts/:promptId/invoke - 追踪统计:
/traces、/stats/usage - 管理员:
/users
以 Swagger 为准:/api-docs
# 开发
pnpm dev
pnpm dev:server
pnpm dev:worker
pnpm dev:all
# 构建
pnpm build
pnpm build:server
pnpm build:all
# 数据库
pnpm db:generate
pnpm db:migrate
pnpm db:deploy
pnpm db:deploy:target
pnpm db:deploy:target:resolve
pnpm db:studio
pnpm db:prepare:prod
# 质量
pnpm lint
pnpm typecheckGPL
欢迎提交 Issue / PR。