24 · 工程开发规格 · 仓库 / 构建

仓库结构与构建计划

给出可直接 mkdir 出来的 monorepo 目录树、锁定的技术栈版本、从 0 到能部署的脚手架步骤,以及 M0–M3 的分步实现序列(每步带 DoD)。照着做即可开工。

📦 pnpm monorepo 🔒 技术栈锁定 🪜 MVP 分步 + DoD

1monorepo 目录树

aigw/                                   # 新建开发目录(独立 git 仓库)
├─ pnpm-workspace.yaml
├─ package.json                         # 根:scripts、devDeps(typescript, vitest, wrangler, eslint)
├─ tsconfig.base.json
├─ .github/workflows/ci.yml            # lint+typecheck+test → deploy preview/prod
├─ .gitignore                          # 含 .dev.vars, node_modules, .wrangler
├─ README.md
├─ packages/
│  ├─ core/                            # 纯逻辑,无 CF 依赖,可独立单测
│  │  ├─ src/
│  │  │  ├─ router.ts                  # resolveCandidates + dispatch(见 23)
│  │  │  ├─ cache.ts                   # cacheKey 规范化 + 判定
│  │  │  ├─ billing.ts                 # cost/billed_units 计算
│  │  │  ├─ schemas.ts                 # Zod:API I/O + 配置
│  │  │  ├─ errors.ts                  # 统一错误码
│  │  │  └─ providers/                 # 各上游 adapter(请求转换/usage 解析/错误归一)
│  │  │     ├─ openrouter.ts
│  │  │     ├─ deepseek.ts
│  │  │     ├─ groq.ts
│  │  │     └─ workers-ai.ts
│  │  └─ test/                         # vitest 单测(router/cache/billing/providers)
│  ├─ db/                              # D1 迁移 + 数据访问
│  │  ├─ migrations/0001_init.sql      # 见 22
│  │  └─ src/queries.ts
│  └─ config/                          # 共享类型/常量:provider 白名单、tier 定义
│     └─ src/allowlist.ts              # PROVIDER_ALLOWLIST(红线护栏)
├─ workers/
│  ├─ gateway/                         # 主 Worker(数据面 + 管理端)
│  │  ├─ src/
│  │  │  ├─ index.ts                   # Hono app 入口
│  │  │  ├─ middleware/                # auth, ratelimit, requestId, error
│  │  │  ├─ routes/                    # /v1/chat, /v1/embeddings, /v1/models, /admin/*
│  │  │  └─ do/RateLimiter.ts          # Durable Object 令牌桶
│  │  ├─ wrangler.toml                 # bindings: D1, KV, DO, Queues, AI, secrets(见 25)
│  │  └─ test/                         # Miniflare 集成测试
│  └─ batch/                           # 批处理消费者 Worker(M3)
│     ├─ src/index.ts                  # Queue consumer
│     └─ wrangler.toml
└─ docs/                               # 从 AI_Gateway/ 迁移过来的相关规格(19–27)

2技术栈锁定

选型(锁定)
运行时Cloudflare Workers(compatibility_date 2026-05-30+,nodejs_compat 视需要)
语言TypeScript 5.x(strict)
Web 框架Hono 4.x
校验Zod 3.x
数据D1(SQLite)+ KV + Durable Objects + Queues
上游聚合OpenRouter(统一接入)+ DeepSeek/Groq 直采 + Workers AI;前置 Cloudflare AI Gateway
包管理pnpm 9.x workspaces
测试Vitest(单测)+ @cloudflare/vitest-pool-workers / Miniflare(集成)
LintESLint 9 + typescript-eslint(沿用根仓库配置风格)
部署wrangler 4.x + GitHub Actions

与仓库既有 Cloudflare-first 约定一致(根 wrangler.toml/tsconfig);后端模式参照 meng/12

3脚手架步骤(M0,从 0 到可部署空网关)

mkdir aigw && cd aigw && git init && pnpm init
# 1) workspace
printf 'packages:\n  - "packages/*"\n  - "workers/*"\n' > pnpm-workspace.yaml
# 2) 根 devDeps
pnpm add -Dw typescript vitest wrangler eslint typescript-eslint @cloudflare/vitest-pool-workers
# 3) 创建 packages/core packages/db packages/config workers/gateway(各自 package.json + tsconfig)
# 4) gateway Worker:Hono hello world + wrangler.toml 绑定 D1/KV
pnpm --filter gateway add hono zod
# 5) 本地 D1 + 迁移
wrangler d1 create aigw-dev-db
wrangler d1 migrations apply aigw-dev-db --local
# 6) 本地跑
pnpm --filter gateway dev          # wrangler dev(Miniflare)
# 7) CI:.github/workflows/ci.yml(lint+typecheck+test)
# 8) 首次部署 preview
wrangler deploy --env preview

DoD(M0):CI 全绿;GET /healthz 返回 200;preview 环境可访问;本地 D1 迁移成功。

4MVP 分步序列(与 19 里程碑对齐)

M1-1
鉴权中间件:解析 Bearer、sha256 查 D1 api_keys、KV 缓存校验结果。单测 + 集成测试。
M1-2
chat/completions 直通:OpenRouter adapter;非流式先通,再加 SSE 流式透传。回显 OpenAI 格式 + 响应头。
M1-3
记账:解析 usage → billing.ts 算 cost → 写 requests(含 latency、request id)。
M1-4
基础限流:RateLimiter Durable Object 令牌桶(每 key RPM)。
M2-1
路由 + 回退:routes 配置 → resolveCandidates/dispatch(见 23);接 DeepSeek/Groq/Workers AI adapter。
M2-2
缓存:cacheKey 规范化 + KV 读写 + 命中标记;prompt 缓存透传。
M2-3
配额 + 倍率:quota 前置检查 + billed_units 回扣;logical_models.multiplier。
M2-4
管理端 API:渠道/模型/路由/key/配额 CRUD + 用量聚合;白名单护栏(FR-14)。
M3-1
Batch:/v1/batch + Queues 消费者 Worker + 结果存取。
M3-2
可观测 + 硬化:Analytics Engine 指标 + 告警;压测、回滚演练、安全复查(见 26)。

5每步通用 DoD

  • 有对应单测(packages/core)或集成测试(workers/gateway,Miniflare),CI 全绿。
  • 涉及的 API 行为符合 20 验收标准22 schema
  • 新增配置项有 Zod 校验与默认值;新增渠道经白名单。
  • 关键路径有结构化日志与响应头标记,便于排查。
  • 文档同步:如行为偏离 22/23,更新对应规格。