one-codingplan: 一个 API 密钥搞定所有 AI Coding Provider

当你的 Kimi 配额用完,Claude API 太贵,DeepSeek 又连不上——是时候用一个工具把它们全部管起来了。


背景:一个每个开发者都会遇到的问题

作为一个AI辅助编程的重度用户,你可能已经开通了不止一个 AI 编程工具的服务:

  • Kimi: 每月送 120 分钟
  • Claude: 额度总是很快见底
  • Qwen: 国内访问速度快但模型能力有限
  • DeepSeek: 新用户免费额度很香
  • Minimax: M2.5 模型效果不错

每个工具都好用,但问题是:

  1. 密钥管理混乱 — 每个平台都要单独配置 token
  2. 余额焦虑 — 用到一半突然提示 “Insufficient credits”
  3. 切换麻烦 — 换一个 API 要改一堆环境变量
  4. 国内访问不稳定 — 某些 provider 在某些网络环境下根本连不上

于是我花了点时间,写了 one-codingplan (ocp) — 一个把多个 AI Coding Provider 聚合在一起的智能代理。


one-codingplan 是什么

ocp 是一个轻量级的 AI 编程工具聚合器,核心能力就两个:

  1. 一键聚合 — 把 Kimi、Minimax、Qwen、DeepSeek、GLM、Mimo 全部接入同一个端点
  2. 自动故障转移 — 当前 provider 报 429 或余额不足?自动切到下一个,全程透明
# 只需要配置一个端点
export ANTHROPIC_API_KEY=ocp-xxxxxxxx
claude  # 背后自动路由到可用的 provider

核心特性

1. 多 Provider 支持(开箱即用)

Provider 模型 特点
Kimi Kimi coding Claude 最强平替
Minimax M2.5 综合能力强
Qwen Qwen Coder 国内访问快
DeepSeek deepseek-chat 性价比高
GLM glm-4 免费额度大方
Mimo mimo-v2-pro 响应速度快

所有 provider 都通过配置文件管理,不用改代码。

2. 智能故障转移

ocp 内置了轻量级的熔断机制:

  • 429 (Rate Limit) → 标记该 provider 为 “冷却中”,自动切到下一个
  • 402 (Insufficient Credits) → 标记该 provider 为 “暂时不可用”,等管理员手动恢复
  • 5xx 错误 → Exponential backoff 后重试,切到另一个 provider

核心逻辑就 20 行 Go,使用 atomic 实现无锁计数:

// internal/pool/pool.go
type upstream struct {
    name        string
    enabled     bool    // 是否启用(管理员手动控制)
    available   bool   // 是否可用(运行时健康状态)
    failures    int32  // 连续失败计数
    lastFailure int64  // 上次失败时间戳
}

3. OpenAI + Anthropic 双重兼容

同一个端点,同时支持两种 API 格式:

# OpenAI 格式 - 兼容 Codex CLI
curl http://localhost:9189/v1/chat/completions \
  -H "Authorization: Bearer ocp-xxx" \
  -d '{"model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "say hi"}]}'

# Anthropic 格式 - 兼容 Claude Code
curl http://localhost:9189/v1/messages \
  -H "Authorization: Bearer ocp-xxx" \
  -d '{"model": "claude-sonnet-4-5", "max_tokens": 256, "messages": [{"role": "user", "content": "say hi"}]}'

4. 完整的访问控制

  • Token 认证 — bearer token 方式的访问密钥
  • 速率限制 — 每分钟 / 每天请求数限制
  • 额度管理 — Token 预算(限制总 tokens)
  • 过期时间 — 支持设置密钥有效期
  • 使用统计 — 记录每个 key 的输入/输出 token 消耗

5. Web 管理 Portal

内置一个 React 管理后台:

  • 监控所有 provider 的在线状态
  • 管理访问密钥(创建、禁用、删除)
  • 查看使用统计
  • 一键切换当前 provider

6. 纯 Go + SQLite — 零依赖部署

  • 数据库: SQLite(通过 GORM,glebarez 纯 Go 驱动,Alpine 镜像可直接运行)
  • HTTP 框架: Gin(有成熟的 Streaming 中间件模式)
  • 零外部依赖,一个 Docker 镜像搞定

技术架构

在这里插入图片描述

为什么要用 Go

  1. 并发模型 — Go 的 goroutine 天生适合代理大量长连接 SSE 流
  2. 生态成熟one-apinew-api 两个参考项目都是 Go + Gin,社区问题已经被解决
  3. 单二进制//go:embed 把 React Portal 直接编译进 Go 可执行文件,部署极简
  4. Streaming 原生httputil.ReverseProxy + FlushInterval: -1 直接处理 SSE

为什么要用 SQLite

  1. 零运维 — 单文件数据库,不用跑 MySQL/Postgres 容器
  2. 纯 Go 驱动glebarez/sqlite 不需要 CGo,Alpine 镜像直接运行
  3. 足够用了 — 单实例部署,SQLite 写入锁不是瓶颈(使用统计是异步写)

快速开始

1. 下载或构建

git clone https://github.com/ChrisZhangJin/one-codingplan.git
cd one-codingplan
make build

2. 配置

cp config.yaml.example config.yaml

编辑 config.yaml

server:
  port: 9189
  admin_key: "你的管理密码"

database:
  path: "./ocp.db"

upstreams:
  - name: minimax
    base_url: https://api.minimaxi.com/anthropic
    api_key: "sk-你的minimax密钥"
    enabled: true

  - name: kimi
    base_url: https://api.kimi.com/coding
    api_key: "你的kimi密钥"
    enabled: true

  # 其他 provider...

3. 启动

OCP_ENCRYPTION_KEY=16位加密密钥 ./ocp serve

注:OCP_ENCRYPTION_KEY 用于加密存储在数据库中的 API Key,必须是 16/24/32 字符。

4. 访问管理 Portal

打开浏览器访问 http://localhost:9189,用 admin_key 登录。


使用示例

配合 Claude Code

export ANTHROPIC_BASE_URL=http://localhost:9189
export ANTHROPIC_API_KEY=ocp-xxxxxxxx
claude

配合 Codex CLI

export OPENAI_BASE_URL=http://localhost:9189/v1
export OPENAI_API_KEY=ocp-xxxxxxxx
codex

直接调用 API

curl http://localhost:9189/v1/messages \
  -H "Authorization: Bearer ocp-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "用 Go 写一个 Hello World"}]
  }'

下一步规划

目前 v1.1 已发布, Roadmap 上正在开发:

  • v1.2 — Codex Responses API 支持 + Portal UX 优化
  • v1.3 — 多租户支持(可选)
  • v1.4 — Prometheus 监控指标

结语

one-codingplan 解决的是一个很朴素的问题:能不能让我只配一个地方,然后用上所有 AI 编程工具?

如果你也有多账号管理困难、用到一半余额告急、国内访问不稳定等困扰,欢迎试试这个项目。

GitHub: https://github.com/ChrisZhangJin/one-codingplan

如果觉得有用,欢迎 ⭐ Star,如果有问题欢迎提 Issue/PR。


本文同步发布于 GitHub

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐