Merge branch 'dev' into codex/update-project-documentation-and-version-number-0jh1p4

This commit is contained in:
CJACK.
2026-04-03 01:17:37 +08:00
committed by GitHub
6 changed files with 40 additions and 32 deletions

View File

@@ -98,7 +98,9 @@ Gemini-compatible clients can also send `x-goog-api-key`, `?key=`, or `?api_key=
| Method | Path | Auth | Description |
| --- | --- | --- | --- |
| GET | `/healthz` | None | Liveness probe |
| HEAD | `/healthz` | None | Liveness probe (no body) |
| GET | `/readyz` | None | Readiness probe |
| HEAD | `/readyz` | None | Readiness probe (no body) |
| GET | `/v1/models` | None | OpenAI model list |
| GET | `/v1/models/{id}` | None | OpenAI single-model query (alias accepted) |
| POST | `/v1/chat/completions` | Business | OpenAI chat completions |

2
API.md
View File

@@ -98,7 +98,9 @@ Gemini 兼容客户端还可以使用 `x-goog-api-key`、`?key=` 或 `?api_key=`
| 方法 | 路径 | 鉴权 | 说明 |
| --- | --- | --- | --- |
| GET | `/healthz` | 无 | 存活探针 |
| HEAD | `/healthz` | 无 | 存活探针(无响应体) |
| GET | `/readyz` | 无 | 就绪探针 |
| HEAD | `/readyz` | 无 | 就绪探针(无响应体) |
| GET | `/v1/models` | 无 | OpenAI 模型列表 |
| GET | `/v1/models/{id}` | 无 | OpenAI 单模型查询(支持 alias 入参) |
| POST | `/v1/chat/completions` | 业务 | OpenAI 对话补全 |

View File

@@ -28,28 +28,28 @@
```mermaid
flowchart LR
Client["🖥️ 客户端\n(OpenAI / Claude / Gemini 兼容)"]
Client["🖥️ 客户端 / SDK\n(OpenAI / Claude / Gemini)"]
subgraph DS2API["DS2API 服务"]
direction TB
CORS["CORS 中间件"]
Auth["🔐 鉴权中间件"]
subgraph DS2API["DS2API 3.0(统一 Go 路由内核)"]
Router["chi Router + 中间件\n(RequestID / Recoverer / CORS / Timeout)"]
subgraph Adapters["适配层"]
OA["OpenAI 适配器\n/v1/*"]
CA["Claude 适配器\n/anthropic/*"]
GA["Gemini 适配器\n/v1beta/models/*"]
subgraph Adapters["协议适配层"]
OA["OpenAI\n/v1/*"]
CA["Claude\n/anthropic/* + /v1/messages"]
GA["Gemini\n/v1beta/models/* + /v1/models/*"]
end
subgraph Support["支撑模块"]
Pool["📦 账号池 / 并发队列"]
PoW["⚙️ PoW WASM\n(wazero)"]
Stream["🌊 统一流式引擎\nstream + sse"]
Sieve["🧰 Tool Sieve\nGo + Node 对齐"]
subgraph Runtime["运行时与核心能力"]
Auth["Auth Resolver\n(API key / bearer / x-goog-api-key)"]
Pool["Account Pool + Queue\n(并发与轮询)"]
DS["DeepSeek Client\n(Session / Auth / HTTP)"]
Pow["PoW WASM (wazero)"]
Tool["Tool Sieve\n(Go/Node 语义对齐)"]
Format["Response Render\n(OpenAI/Claude/Gemini)"]
end
Admin["🛠️ Admin API\n/admin/*"]
WebUI["🌐 WebUI\n(/admin)"]
Admin["Admin API\n/admin/*"]
WebUI["WebUI Static\n/admin"]
end
DS["☁️ DeepSeek API"]
@@ -425,6 +425,7 @@ go run ./cmd/ds2api
```text
ds2api/
├── app/ # 统一 Handler 入口(供 Vercel / 本地共用)
├── cmd/
│ ├── ds2api/ # 本地 / 容器启动入口
│ └── ds2api-tests/ # 端到端测试集入口

View File

@@ -28,28 +28,28 @@ DS2API converts DeepSeek Web chat capability into OpenAI-compatible, Claude-comp
```mermaid
flowchart LR
Client["🖥️ Clients\n(OpenAI / Claude / Gemini compat)"]
Client["🖥️ Clients / SDKs\n(OpenAI / Claude / Gemini)"]
subgraph DS2API["DS2API Service"]
direction TB
CORS["CORS Middleware"]
Auth["🔐 Auth Middleware"]
subgraph DS2API["DS2API 3.0 (Unified Go Routing Core)"]
Router["chi Router + Middleware\n(RequestID / Recoverer / CORS / Timeout)"]
subgraph Adapters["Adapter Layer"]
OA["OpenAI Adapter\n/v1/*"]
CA["Claude Adapter\n/anthropic/*"]
GA["Gemini Adapter\n/v1beta/models/*"]
subgraph Adapters["Protocol Adapters"]
OA["OpenAI\n/v1/*"]
CA["Claude\n/anthropic/* + /v1/messages"]
GA["Gemini\n/v1beta/models/* + /v1/models/*"]
end
subgraph Support["Support Modules"]
Pool["📦 Account Pool / Queue"]
PoW["⚙️ PoW WASM\n(wazero)"]
Stream["🌊 Unified Streaming\nstream + sse"]
Sieve["🧰 Tool Sieve\nGo + Node parity"]
subgraph Runtime["Runtime + Core Capabilities"]
Auth["Auth Resolver\n(API key / bearer / x-goog-api-key)"]
Pool["Account Pool + Queue\n(concurrency and rotation)"]
DS["DeepSeek Client\n(session / auth / HTTP)"]
Pow["PoW WASM (wazero)"]
Tool["Tool Sieve\n(Go/Node semantic parity)"]
Format["Response Render\n(OpenAI/Claude/Gemini)"]
end
Admin["🛠️ Admin API\n/admin/*"]
WebUI["🌐 WebUI\n(/admin)"]
Admin["Admin API\n/admin/*"]
WebUI["WebUI Static\n/admin"]
end
DS["☁️ DeepSeek API"]
@@ -419,6 +419,7 @@ Response fields include:
```text
ds2api/
├── app/ # Unified handler entry (shared by Vercel/local)
├── cmd/
│ ├── ds2api/ # Local / container entrypoint
│ └── ds2api-tests/ # End-to-end testsuite entrypoint

View File

@@ -94,6 +94,7 @@ Manually build WebUI to `static/admin/`:
```text
ds2api/
├── app/ # Unified handler entry (shared by Vercel/local)
├── cmd/
│ ├── ds2api/ # Local/container entrypoint
│ └── ds2api-tests/ # End-to-end testsuite entrypoint

View File

@@ -94,6 +94,7 @@ docker-compose -f docker-compose.dev.yml up
```text
ds2api/
├── app/ # 统一 Handler 入口(供 Vercel / 本地共用)
├── cmd/
│ ├── ds2api/ # 本地/容器启动入口
│ └── ds2api-tests/ # 端到端测试集入口