npm.io
0.5.0 • Published 2d agoCLI

claude-code-openai-proxy

Licence
MIT
Version
0.5.0
Deps
6
Size
1.1 MB
Vulns
7
Weekly
0
Stars
5

Claude Code OpenAI Proxy

面向 Claude Code 和其他 AI Agent 客户端的多供应商 Web 代理。CCOP 对外提供 Anthropic Messages、OpenAI Chat Completions 和 OpenAI Responses 接口,对内连接 Anthropic 或 OpenAI-compatible 上游,并通过桌面浏览器管理端维护供应商、模型路由、Key、配额和运行策略。

项目地址:https://github.com/wph989/claude-code-openai-proxy

主要能力

  • Anthropic Messages 与 OpenAI Chat Completions 双向转换,支持 Responses API。
  • 多供应商、多模型别名、路由优先级与权重分流。
  • 多 Key 调度、并发限制、429 冷却、分类重试、自动停用与独立用量统计。
  • Provider 熔断、半开恢复、流式超时及 Anthropic/OpenAI SSE 修复。
  • 单个 SQLite 数据库 ccop.db 保存配置、状态、用量、租约和配置历史。
  • 桌面 Web 管理端提供配置热更新、历史回滚、活动日志和按日消耗曲线。
  • 管理配置默认脱敏,完整 Key 仅在管理员主动导出时返回。
  • 存活、就绪和 Prometheus 指标端点,以及可选的脱敏 Webhook 告警。

本次更新

  • 运行时数据统一迁移到 ccop.db,支持多 Worker 事务协调。
  • 旧 JSON 配置可在首次启动时自动迁移,停用资源和源文件均会保留。
  • 管理端重构为概览、供应商、模型路由、策略和活动日志五个视图。
  • 配额规则统一配置在供应商,Key 仍独立累计和重置用量。
  • 完善流式协议处理、模型日志信息和 2xx 空响应错误累计。

环境要求

  • Node.js 22.5 或更高版本。
  • pnpm。
  • 本项目只提供 Web 服务和桌面浏览器管理端,不包含原生桌面应用或移动端界面。

安装

全局安装:

pnpm add --global claude-code-openai-proxy

也可以无需安装直接运行:

pnpm dlx claude-code-openai-proxy start

快速开始

# 启动服务
ccop start

# 打开管理端
ccop ui

默认地址:

  • 管理端:http://127.0.0.1:8765/admin
  • 代理入口:http://127.0.0.1:8765
  • 存活检查:http://127.0.0.1:8765/livez
  • 就绪检查:http://127.0.0.1:8765/readyz
  • Prometheus 指标:http://127.0.0.1:8765/metrics

生产模式首次启动会创建 ~/.ccop/.env~/.ccop/ccop.db。随机管理口令写入 ~/.ccop/.envADMIN_AUTH_TOKEN,不会直接输出到日志。

进入管理端后,依次完成以下配置:

  1. 添加供应商及 API Key。
  2. 添加客户端模型别名与上游模型映射。
  3. 按需设置默认客户端模型和代理鉴权 Token。
  4. 使用供应商列表中的连接测试检查 /models 能力。

接入 Claude Code

PowerShell:

$env:ANTHROPIC_BASE_URL = 'http://127.0.0.1:8765'
$env:ANTHROPIC_AUTH_TOKEN = '管理端配置的代理鉴权 Token'
claude

如果未配置代理鉴权 Token,代理接口不会要求 Token;生产环境建议始终配置。Claude Code 请求中的模型名应与管理端的客户端模型别名一致。

CLI 命令

命令 说明
ccop start 前台启动生产模式服务
ccop start --dev 使用当前项目目录的 .envccop.db 启动
ccop start --port 8766 使用指定端口启动
ccop start --sqlite-file <path> 使用指定 SQLite 数据库
ccop start -d 后台守护模式启动
ccop start -c 4 使用 4 个 Worker 启动集群模式
ccop stop 停止由 CLI 启动的服务
ccop status 查看运行状态和端口
ccop ui 打开管理端
ccop init-config 在 SQLite 中初始化默认配置
ccop migrate --config <path> 将旧 JSON 数据迁移到 SQLite
ccop --version 查看版本

开发与生产模式

模式 启动方式 配置和数据库 日志与 PID
开发 pnpm devccop start --dev 项目目录 .envccop.db 项目目录 logs/pids/
生产 ccop start ~/.ccop/.env~/.ccop/ccop.db ~/.ccop/logs/~/.ccop/pids/

pnpm dev 通过 tsx 直接执行源码,但不会自动监听文件变化。完整的源码运行、独立开发数据库、测试和调试流程见 本地开发指南

环境配置

常用环境变量:

HOST=0.0.0.0
PORT=8765
ADMIN_AUTH_TOKEN=change-me-random-admin-token
SQLITE_FILE=./ccop.db

LOG_LEVEL=info
LOG_FORMAT=text
LOG_DETAILED=false
LOG_FILE=./logs/app.log

KEY_AUTO_DISABLE=true
KEY_MAX_ERRORS=5
CLUSTER_WORKERS=1

ALERT_WEBHOOK_URL=
ALERT_BUDGET_THRESHOLD=0.85
ALERT_COOLDOWN_SECONDS=300

完整模板见 .env.example。供应商、模型、Key、配额和代理 Token 由管理端写入 SQLite,不再使用 JSON 作为日常配置来源。

公开接口

方法 路径 说明
POST /v1/messages Anthropic Messages
POST /v1/messages/count_tokens Anthropic Token 统计
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/responses OpenAI Responses,需供应商显式启用能力
GET /v1/models 当前可用客户端模型
GET /livez 进程存活检查
GET /readyz 配置就绪检查
GET /metrics Prometheus 指标

代理 Token 可通过 Authorization: Bearer <token>x-api-key 发送。管理端使用独立的 HttpOnly Cookie 会话。

JSON 自动迁移

旧安装升级时,程序仅在目标 ccop.db 尚未初始化时检查约定的 runtime_models.jsonconfig.json。迁移会一并读取同目录下存在的 runtime_state.jsonruntime_usage.jsonruntime_history.json,并保留已启用和已停用的供应商、模型及 Key。

显式预检和迁移:

ccop migrate --config .\runtime_models.json --sqlite-file .\ccop.db --dry-run
ccop migrate --config .\runtime_models.json --sqlite-file .\ccop.db

迁移成功后源 JSON 不会删除或修改;数据库已经初始化时不会重复迁移。日常运行只使用 SQLite。

数据备份

停止服务后备份配置目录即可:

ccop stop
Copy-Item "$HOME\.ccop\ccop.db" "$HOME\.ccop\ccop.db.backup"
Copy-Item "$HOME\.ccop\.env" "$HOME\.ccop\.env.backup"

不要提交 .envccop.db、真实 API Key、日志或导出的 Key 文件。

开发与发布文档

License

MIT

Keywords