chore: 添加 CLAUDE.md 项目指南
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled

包含 fork 自定义配置清单、构建测试命令、架构概览、编码规范和 skills 索引。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-03 10:23:20 +08:00
parent acd71dcb1a
commit 4bc7fa0e3f

85
CLAUDE.md Normal file
View File

@@ -0,0 +1,85 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Fork Identity
This is a **customized fork** of [Wei-Shaw/sub2api](https://github.com/Wei-Shaw/sub2api.git), branded as **StarFireAPI**. Upstream remote: `https://github.com/Wei-Shaw/sub2api.git`.
### Customizations to preserve on every upstream sync
| Category | Details |
|----------|---------|
| **Brand** | All user-facing `Sub2API``StarFireAPI` in `frontend/src/` (stores, i18n, views, components, router) |
| **Links** | GitHub links → `https://anthropic.edu.pl` in AppHeader, HomeView, i18n |
| **docker-compose** | Image: `starfireapi:latest`, port `6580:8080`, external Redis at `172.18.0.2:6379`, project name `xinghuoapi`, built-in Redis disabled |
| **Update module** | Disabled in `system_handler.go` (always returns no update), `app.ts` (forces `hasUpdate=false`), `VersionBadge.vue` (`isReleaseBuild=false`, removed GitHub release links) |
Full details: `skills/sync-upstream/SKILL.md`
## Build & Test Commands
```bash
# Full build (backend + frontend)
make build
# Backend only
cd backend && make build # Binary → bin/server
cd backend && make test # go test ./... + golangci-lint
cd backend && make test-unit # Unit tests only
cd backend && go test ./internal/service/... -run TestXxx # Single test
# Frontend only
cd frontend && pnpm install --frozen-lockfile
cd frontend && pnpm dev # Dev server
cd frontend && pnpm build # Type-check + production build
cd frontend && pnpm test:run # Vitest
cd frontend && pnpm lint:check # ESLint (no fix)
# Code generation (Ent ORM + Wire DI)
cd backend && make generate
```
## Architecture
**AI API Gateway**: receives requests with user API keys → authenticates → selects upstream account (sticky session / load-aware) → forwards to upstream AI service → records usage for billing.
### Backend (`backend/internal/`)
- **Entry**: `cmd/server/main.go` — supports setup mode, auto-setup (Docker), normal server
- **DI**: Google Wire (`cmd/server/wire.go`)
- **Layers**: handler → service → repository (enforced by `depguard` — service must not import repository)
- **Key services**: `GatewayService` (request forwarding, account selection, failover), `OpenAIGatewayService`, `GeminiMessagesCompatService`, `AntigravityGatewayService`
- **ORM**: Ent (`ent/schema/` for definitions, `ent/` for generated code)
- **Middleware stack**: Recovery → Logger → CORS → SecurityHeaders → RequestBodyLimit → ClientRequestID → APIKeyAuth
- **Run modes**: `standard` (full SaaS with billing) / `simple` (skip billing checks)
### Frontend (`frontend/src/`)
- **Framework**: Vue 3 + Pinia + Vue Router + TailwindCSS
- **State**: `stores/app.ts` (global), `stores/auth.ts` (JWT auth)
- **i18n**: `i18n/locales/en.ts`, `zh.ts` — all user-facing strings
- **Embedded**: production build goes to `backend/internal/web/dist/` and is embedded into the Go binary
### Gateway Routes
```
/v1/messages — Claude API compatible
/v1/responses — OpenAI API compatible
/v1beta/models/* — Gemini native API
/antigravity/v1/* — Antigravity platform
```
## Coding Conventions
- **Go**: `gofmt`, `golangci-lint` (see `backend/.golangci.yml`), max 3 levels of `if` nesting
- **Frontend**: Vue SFC + TypeScript, 2-space indent, ESLint, components `PascalCase.vue`, composables `useXxx.ts`
- **Commits**: Conventional Commits (`feat(scope):`, `fix(scope):`, `chore(scope):`)
- **JSON hot-path**: prefer `gjson` over `encoding/json` for read-only/partial extraction
- **Layering**: handler/service must NOT import repository/gorm/redis directly
## Skills (in `skills/`)
- **sync-upstream** — Pulls and merges upstream sub2api, re-applies all StarFireAPI customizations. Trigger: "拉取上游", "同步上游", "sync upstream"
- **bug-fix-expert** — Multi-agent bug fix workflow with worktree isolation and cross-validation
- **code-review-expert** — Parallel 5-dimension code review with worktree isolation