项目结构
clone 后 ai-cost-gate 源码目录是怎么组织的。
clone 私有仓库(仅 Pro 买家)后,目录是:
ai-cost-gate/
├── cmd/
│ └── aicg/ # 主二进制入口
├── internal/
│ ├── proxy/ # OpenAI 兼容代理
│ ├── attribution/ # project/agent/model 归因
│ ├── budget/ # 预算、限流、自动拉闸
│ ├── store/ # SQLite 持久化
│ ├── admin/ # admin HTTP API
│ └── dashboard/ # 内嵌的 web dashboard
├── web/ # dashboard 前端资源
├── data/ # 运行时 SQLite 文件所在
├── docker-compose.yml
├── Dockerfile
├── .env.example
└── README.md顶层约定
cmd/放入口。目前只有一个二进制aicg,启动代理、admin API 和内嵌 dashboard。internal/放所有业务逻辑。internal/之外不可导入——这是 Go 的约定,我们也遵循。web/放 dashboard 的静态资源,用go:embed内嵌到二进制,docker 镜像始终是单 artifact。
改东西从哪里开始
- 加 provider 适配器? 看
internal/proxy/adapters/。 - 改成本计算? 看
internal/attribution/pricing.go。 - 改 auto-stop 启发? 看
internal/budget/autostop.go。 - 改 schema? 看
internal/store/migrations/。
构建产物
go build ./cmd/aicg 之后,二进制在 ./aicg。Docker 镜像用多阶段 Dockerfile 走 distroless 基础镜像——无 shell、无包管理器,最终 ~30MB。