这又是一个重复造轮子系列,目的是解决一些公益站不支持 CC、模型不支持工具调用的问题,该项目可以让不支持工具调用的模型获得工具调用的能力
在佬友项目B4U2CC:让 B4U 支持 Claude Code+思考的基础上进行大量的迭代更新,

  • 支持了多组配置,可以配置多个站点,使用渠道+模型名称的形式进行分流
  • 支持的密钥透传
  • 支持使用 firecrawl 来模拟官方 api 才有的的 web searchweb fetch 功能 (目前仅 Preview 分支,测试镜像 ghcr.io/passerby1011/cc-proxy:preview
  • 在 b4u2cc 的基础上改用了 @curaalizm 佬友项目的随机字符标识 感觉更稳定? 好像?
  • 增加了远端 pg 数据库存储配置(hugging face 部署,冲!!!)
  • 增加了工具内部重试 (测试 ing)
  • 增加了 web 管理界面 (/admin),配置更方便
┌─────────────┐
│ Claude Code │ ──① Claude API 请求──▶
└─────────────┘    (包含 tools 定义)

┌──────────────────────────────────────┐
│           cc-proxy 代理层             │
│                                      │
│  ② 提示词注入 (prompt_inject.ts)       │
│     • 工具定义 → XML 格式提示词         │
│     • 注入到 system prompt            │
│     • 生成唯一分隔符                   │
│                                      │
│  ③ 协议转换 (map_claude_to_openai.ts) │
│     • Claude Messages API            │
│       → OpenAI Chat Completions      │
│     • 保持流式兼容                     │
│                                      │
│  ④ 上游转发 (upstream.ts)             │
│     • 支持 OpenAI 协议                │
│     • 支持 Anthropic 协议             │
│     • SSE 流式处理                    │
└──────────────────────────────────────┘
                    │
                    ▼
         ┌──────────────────┐
         │   上游 AI 服务    │ ──⑤ 返回 XML 格式的工具调用──▶
         │ (GPT-4/Claude等)  │
         └──────────────────┘

┌──────────────────────────────────────┐
│           cc-proxy 代理层             │
│                                      │
│  ⑥ 智能解析 (parser.ts)               │
│     • 识别 XML 工具调用块              │
│     • 识别 <thinking> 块              │
│     • 提取工具名称和参数                │
│                                      │
│  ⑦ 标准化输出 (claude_writer.ts)       │
│     • 生成标准 Claude SSE 事件         │
│     • tool_use 消息块                 │
│     • thinking 消息块                 │
└──────────────────────────────────────┘
                    │
                    ▼
         ┌─────────────┐
         │ Claude Code │ ◀── 标准 Claude API 响应
         └─────────────┘
Tip

使用 firecrawl 来模拟官方 api 才有的的 web searchweb fetch,这个思路可以引入到哪些能力更健全逆向模型上,更好的支持 cc
这个项目所有的工具调用都是用提示词来实现的,感觉还是太勉强

测试截图,模型来自 elysiver 的 claude-4.5-sonnet
吐槽:这数据从哪来的,编的和真一样


致谢:

Danger

部署者能看到您的部分聊天上下文推荐自行部署以保证数据安全

Tip

可能有非常多的 bug,代码都来自 claude,anthropic 公司对此负全责,有问题也可以找它修改


📌 转载信息
原作者:
passerby
转载时间:
2026/1/10 19:22:01

标签: 工具调用, Claude API, API 代理, cc-proxy, OpenAI 协议

添加新评论