Skip to content

Latest commit

 

History

History
80 lines (56 loc) · 2.81 KB

File metadata and controls

80 lines (56 loc) · 2.81 KB

Grok2API Backend

Grok2API 的 Go 后端,负责上游账号调度、协议转换、额度管理、请求审计和管理 API,并可直接托管前端构建产物。

技术栈

  • Go 1.26、Gin、GORM
  • SQLite / PostgreSQL
  • Memory / Redis
  • Grok Build OAuth 与 Grok Web SSO Provider

本地运行

配置文件位于仓库根目录。首次运行前创建本地配置并设置安全密钥:

cp config.example.yaml config.yaml
openssl rand -hex 32
openssl rand -base64 32

将生成值写入 config.yamlsecrets,并修改 bootstrapAdmin 初始密码,然后启动:

cd backend
go run ./cmd/grok2api

服务默认监听 http://127.0.0.1:8000。也可以显式指定配置文件或监听地址:

go run ./cmd/grok2api --config /path/to/config.yaml --listen 0.0.0.0:8000

配置与存储

启动配置统一由根目录 config.yaml 管理,启动阶段字段见 config.example.yaml。Provider、批量任务、路由、媒体容量、审计和客户端密钥默认限制由管理端设置页持久化并热加载。

场景 数据库 运行态存储
本地开发 / 单实例 SQLite Memory
多实例部署 PostgreSQL Redis

关系型数据库保存账号、凭据、模型、额度、客户端密钥、审计和媒体任务;Redis 仅承载限流、并发租约、粘滞路由、分布式锁和事件通知。敏感凭据使用 credentialEncryptionKey 加密,该密钥必须长期保留且不得提交到版本库。

可热加载的 Provider、批量任务并发、路由、审计、媒体和代理参数由管理端设置页维护;数据库驱动、监听地址、Redis、JWT 与加密密钥仍通过 YAML 配置并在启动时生效。

服务入口

  • /v1/*:兼容 API
  • /api/admin/v1/*:管理 API
  • /healthz/readyz:健康与就绪探针
  • /swagger/index.html:公开 API Swagger,仅在 server.swaggerEnabled: true 时注册
  • frontend.staticPath:前端静态目录,默认 ./frontend/dist

详细协议说明见 docs

修改公开接口注释后,在仓库根目录执行 make swagger 更新 backend/docs/docs.goswagger.jsonswagger.yaml。生产配置应保持 server.swaggerEnabled: false

代码结构

cmd/grok2api/       进程入口
internal/domain/    领域模型与规则
internal/application/ 应用服务与用例
internal/infra/     数据库、Provider、运行态与安全实现
internal/transport/ HTTP 路由、鉴权与协议适配
internal/repository/ 持久化接口

依赖方向保持为 Transport → Application → Domain,基础设施通过接口接入,不在领域层依赖 HTTP、数据库或具体 Provider。

验证

go test ./...
go test -race ./...
go vet ./...
go build ./cmd/grok2api