# yourself **Repository Path**: wzdbjz/yourself ## Basic Information - **Project Name**: yourself - **Description**: 你们他妈写代码给我写好的啊,怎么他妈写代码的,cnm - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-23 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Manual AI Proxy Server 人工 AI 代理服务器 — 对外暴露 OpenAI 兼容 API,请求由人工在 Web 工作台上阅读并手写回复。 ## 项目简介 本项目模拟了一个 LLM API 服务器,外部调用方(AI SDK、脚本等)发送标准 OpenAI 格式的请求,服务器接收后不调用大模型,而是将请求展示在前端工作台上,由操作员人工阅读并手写回复,系统将回复包装成 OpenAI 标准格式推送到调用方的回调 URL。整个过程对调用方透明。 ## 架构 ``` 外部调用方 → API接入层(鉴权+校验) → 请求管理服务(入库) ↓ 工作台API → Vue 3 前端(展示) ↓ 人工提交回复 → 回调推送服务(OpenAI格式包装) → 回调URL ``` ## 技术栈 ### 后端 - Java 17 + Spring Boot 3.3.5 - Spring Data JPA + MySQL (生产) / H2 (开发) - Spring Async 异步回调推送 - Maven 构建 ### 前端 - Vue 3 + TypeScript + Vite - Pinia 状态管理 - Vue Router 路由 - Tailwind CSS 样式 - Axios HTTP 客户端 ## 项目结构 ``` ├── backend/ Spring Boot 后端 │ ├── src/main/java/com/manualai/proxy/ │ │ ├── api/ API 接入层(鉴权、Chat Completion 端点) │ │ ├── request/ 请求管理服务(状态机、持久化、定时过期) │ │ ├── workspace/ 人工工作台 API(队列、详情、回复提交) │ │ ├── callback/ 回调推送服务(OpenAI 格式包装、重试) │ │ ├── entity/ JPA 实体 │ │ ├── repository/ 数据仓库 │ │ ├── common/ 通用工具(分页、异常处理) │ │ └── config/ 配置(异步、CORS) │ └── src/main/resources/ │ ├── application.yml 主配置 │ ├── application-dev.yml 开发环境(H2) │ ├── application-prod.yml 生产环境(MySQL) │ └── sql/schema.sql 数据库 DDL ├── frontend/ Vue 3 前端 │ ├── src/ │ │ ├── api/ API 客户端与类型定义 │ │ ├── stores/ Pinia 状态管理 │ │ ├── views/ 页面(登录、工作台、历史) │ │ ├── components/ 组件(队列、详情、编辑器) │ │ └── router/ 路由配置 │ └── ... └── docs/ 设计文档与实现计划 ``` ## 核心功能 - **OpenAI 兼容 API** — `POST /api/v1/chat/completions`,请求格式与 OpenAI 完全一致 - **API Key 鉴权** — Bearer Token 方式,支持 CRUD 管理 - **异步回调模式** — 请求即刻返回 202 Accepted,回复通过 HTTP POST 推送到回调 URL - **人工工作台** — 队列列表 + 详情编辑,支持认领、回复、取消操作 - **SSE 流式响应** — 逐字符模拟 token 输出,兼容流式调用方 - **请求状态机** — PENDING → PROCESSING → COMPLETED,支持 EXPIRED / CANCELLED - **乐观锁** — 防止多个操作员同时认领同一请求 - **自动过期** — 定时任务清理超时未处理的请求 - **回调重试** — 指数退避重试策略(2s → 5s → 10s) ## 快速开始 ### 环境要求 - Java 17+ - Node.js 18+ - MySQL 8.0+(生产环境) ### 启动后端(开发模式) ```bash cd backend mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` 后端启动在 `http://localhost:8080`,开发模式使用 H2 内存数据库。 ### 启动前端 ```bash cd frontend npm install npm run dev ``` 前端启动在 `http://localhost:5173`,已配置代理到后端 8080 端口。 ### 使用流程 1. 创建 API Key: ```bash curl -X POST http://localhost:8080/api/v1/admin/api-keys \ -H "Content-Type: application/json" \ -d '{"name": "测试Key", "callbackUrl": "http://your-callback-url"}' ``` 2. 打开前端工作台 `http://localhost:5173/login`,使用配置文件中的操作员 Token 登录 3. 发送模拟请求: ```bash curl -X POST http://localhost:8080/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {你的API Key}" \ -d '{"model":"gpt-4","messages":[{"role":"user","content":"你好"}]}' ``` 4. 在工作台中查看请求、手写回复、提交 ## 配置说明 ### 操作员 Token(application.yml) ```yaml workspace: tokens: - token: "sk-workspace-admin-001" name: "管理员" - token: "sk-workspace-operator-001" name: "操作员" ``` ### 请求过期时间 ```yaml request: expiry: minutes: 30 ``` ### 回调重试 ```yaml callback: retry: max-attempts: 3 delays-seconds: 2,5,10 ``` ## API 文档 ### 对外 API(/api/v1) | 方法 | 路径 | 说明 | |------|------|------| | POST | /chat/completions | 接收 OpenAI 格式请求 | | GET | /admin/api-keys | 列出 API Key | | POST | /admin/api-keys | 创建 API Key | | PUT | /admin/api-keys/{id} | 修改 API Key | | DELETE | /admin/api-keys/{id} | 删除 API Key | ### 工作台 API(/workspace/api) | 方法 | 路径 | 说明 | |------|------|------| | GET | /requests | 请求队列分页 | | GET | /requests/{id} | 请求详情 | | POST | /requests/{id}/claim | 认领请求 | | POST | /requests/{id}/reply | 提交回复 | | PUT | /requests/{id}/cancel | 取消请求 | | GET | /requests/history | 历史记录分页 | ## License MIT