Skip to content

uzhao/claude-code-direct

Repository files navigation

Claude Code Direct (ccd)

一个为 Claude Code 用户提供的命令行工具和反向代理服务,允许拥有 Claude Pro 订阅的用户直接访问 Anthropic API,同时保持与 Claude Code Router (CCR) 的兼容性。

功能特性

  • 直接模式 (Direct Mode): 直接将请求转发到 Anthropic 官方 API,充分利用您的 Claude Pro 订阅
  • CCR 模式: 兼容 Claude Code Router,可以使用其他 provider 模型
  • 运行时切换: 无需重启服务即可在两种模式之间动态切换
  • 后台服务: 作为后台进程运行,不影响您的工作流程
  • 简单易用: 通过简洁的 CLI 命令管理代理服务
  • 完整的请求转发: 保留所有原始请求头和请求体,确保完整的 API 兼容性

为什么需要 CCD?

如果您拥有 Claude Pro 订阅并使用 Claude Code,您可能希望直接使用 Anthropic 的官方 API 而不是通过 Claude Code Router。CCD 提供了这种灵活性,让您可以:

  1. 在需要时直接使用您的 Claude Pro 订阅
  2. 在需要其他模型时切换到 CCR
  3. 无需修改 Claude Code 的配置即可切换模式

安装

前置要求

  • Node.js >= 18.0.0
  • npm >= 8.0.0

全局安装

npm install -g claude-code-direct

安装完成后,ccd 命令将在全局可用。

使用指南

启动代理服务

# 以默认的 direct 模式启动
ccd start

# 以 CCR 模式启动
ccd start -m ccr

# 使用自定义端口启动
ccd start -p 3455

启动成功后,服务将在后台运行,您会看到类似以下的输出:

✓ Service started successfully
  Mode: direct
  Port: 3455
  Target: https://api.anthropic.com

停止服务

ccd stop

查看服务状态

ccd status

输出示例:

✓ Service is running
  Mode: direct
  Port: 3455
  Target: https://api.anthropic.com
  PID: 12345

切换模式

在服务运行时,您可以动态切换模式:

ccd switch

该命令会自动在 direct 和 ccr 模式之间切换,无需重启服务。

与 Claude Code 集成

配置步骤

  1. 确保已安装 Claude Code Router (CCR)

  2. 启动 CCD 服务:

    ccd start
  3. 在 Claude Code 的设置中,将 API 端点配置为:

    http://localhost:3455
    
  4. CCD 会自动从 CCR 的配置文件读取端口信息(~/claude-code-router/config.json

工作原理

Claude Code → CCD Proxy → Anthropic API (direct 模式)
                       → CCR → 其他 Provider (ccr 模式)

CCD 作为中间代理层,根据当前模式将请求转发到相应的目标端点。

配置文件

CCR 配置文件

CCD 会读取 CCR 的配置文件来确定端口和目标地址:

路径: ~/claude-code-router/config.json

{
  "HOST": "127.0.0.1",
  "PORT": 3456
}

在 CCR 模式下,CCD 会使用 PORT - 1 作为监听端口,并将请求转发到 http://{HOST}:{PORT}

PID 文件

CCD 使用 PID 文件来管理后台进程:

路径: ~/.claude-code-router/ccd.pid

该文件包含进程 ID、端口、模式等信息,由 CCD 自动管理。

日志文件

日志文件位置: ~/.claude-code-router/ccd.log

您可以查看该文件来排查问题或了解服务运行情况。

命令参考

ccd start [options]

启动代理服务。

选项:

  • -m, --mode <mode>: 指定启动模式 (direct 或 ccr),默认为 direct
  • -p, --port <port>: 指定监听端口,默认从 CCR 配置读取

示例:

ccd start
ccd start -m ccr
ccd start -p 3455

ccd stop

停止正在运行的代理服务。

示例:

ccd stop

ccd status

查看服务状态和配置信息。

示例:

ccd status

ccd switch

在 direct 和 ccr 模式之间切换。

示例:

ccd switch

常见问题

Q: 服务启动失败,提示端口已被占用

A: 检查是否有其他服务占用了该端口。您可以:

  1. 使用 ccd start -p <其他端口> 指定不同的端口
  2. 停止占用该端口的其他服务

Q: 切换到 CCR 模式时提示配置文件不存在

A: 确保已正确安装和配置 Claude Code Router,配置文件应位于 ~/claude-code-router/config.json

Q: 如何查看详细的错误信息?

A: 查看日志文件 ~/.claude-code-router/ccd.log,其中包含详细的错误信息和调试日志。

Q: 服务已启动但无法转发请求

A: 检查以下几点:

  1. 使用 ccd status 确认服务正在运行
  2. 确认 Claude Code 的 API 端点配置正确
  3. 在 direct 模式下,确保网络可以访问 Anthropic API
  4. 在 ccr 模式下,确保 CCR 服务正在运行

Q: 如何卸载 CCD?

A: 使用以下命令:

# 先停止服务
ccd stop

# 卸载全局包
npm uninstall -g claude-code-direct

Q: CCD 支持哪些操作系统?

A: CCD 支持 Linux、macOS 和 Windows。在 Windows 上,某些功能(如进程管理)使用了平台特定的实现。

Q: CCD 会记录我的 API 密钥或请求内容吗?

A: 不会。CCD 只是一个透明的代理,不会记录、修改或存储任何敏感信息。所有请求和响应都直接转发,不做任何处理。

故障排除

服务无法启动

  1. 检查 Node.js 版本是否 >= 18.0.0
  2. 确认端口未被占用
  3. 查看日志文件获取详细错误信息

请求转发失败

  1. 使用 ccd status 确认服务状态
  2. 检查网络连接
  3. 在 ccr 模式下,确认 CCR 服务正在运行
  4. 查看日志文件了解具体错误

模式切换不生效

  1. 确认服务正在运行
  2. 在 ccr 模式下,确认 CCR 配置文件存在且有效
  3. 使用 ccd status 验证当前模式

开发

从源码运行

# 克隆仓库
git clone <repository-url>
cd claude-code-direct

# 安装依赖
npm install

# 运行
node src/cli.js start

运行测试

npm test

代码检查

npm run lint

技术架构

CCD 基于以下技术构建:

  • Node.js: 运行时环境
  • Express.js: Web 框架
  • http-proxy-middleware: HTTP 代理中间件
  • Commander.js: CLI 框架
  • Chalk: 终端输出美化

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT

相关链接

更新日志

v1.0.0

  • 初始版本发布
  • 支持 direct 和 ccr 两种模式
  • 运行时模式切换
  • 后台服务管理
  • 完整的 CLI 命令支持

About

Passthrough supporrt for claude-code-router user.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published