deepclaude 远程控制揭秘:WebSocket 桥接与 DeepSeek API 双通道分流的原理
【免费下载链接】deepclaudeUse Claude Code's autonomous agent loop with DeepSeek V4 Pro, OpenRouter, or any Anthropic-compatible backend. Same UX, 17x cheaper.项目地址: https://gitcode.com/gh_mirrors/deepc/deepclaude
deepclaude 是一个开源的 Claude Code 加速省钱工具:它保留 Claude Code 完整的自主编码体验,把"大脑"换成 DeepSeek V4 Pro、OpenRouter 或任意 Anthropic 兼容后端,成本直接降到原来的 1/17。本文以--remote远程控制功能为主线,讲清楚 Anthropic WebSocket 桥接与 DeepSeek API 双通道分流的原理——为什么一条连接里要"劈成两半",以及本地代理是如何做到无感切换后端的。
双通道分流:远程控制为什么必须"劈开"
deepclaude --remote的卖点是:在任意浏览器(手机、平板都行)里打开一个 Claude Code 会话,用 DeepSeek 当大脑。运行后它会打印一条https://claude.ai/code/session_...链接。
要实现这件事,先要理解 Claude Code 远程控制的两条独立通道(详见 proxy/README.md):
| 通道 | 走向 | 特点 |
|---|---|---|
| 桥接(Bridge) | wss://bridge.claudeusercontent.com的 WebSocket | 地址硬编码,必须走 Anthropic OAuth 认证 |
| 模型 API | HTTP 请求发往ANTHROPIC_BASE_URL | 可配置,可指向任意兼容后端 |
关键矛盾在于:桥接通道要求 Anthropic 身份登录,而如果你直接把ANTHROPIC_AUTH_TOKEN换成 DeepSeek 的密钥,桥接认证立刻失效,远程控制整个崩掉。
deepclaude 的解法:桥接通道原封不动走 Anthropic,模型 API 通道则重定向到本地代理http://localhost:3200,由代理决定这些请求最终发给谁:
claude remote-control ├── Bridge WebSocket → wss://bridge.claudeusercontent.com(Anthropic,硬编码) └── 模型 API 调用 → http://localhost:3200(本地代理) ├── /v1/messages → api.deepseek.com(DeepSeek 密钥) └── 其他所有请求 → api.anthropic.com(透明透传)这就是"双通道分流"的全部含义:认证走贵的,思考走便宜的。
本地模型代理:分流发生在 localhost:3200
代理的核心逻辑全部在 proxy/model-proxy.js 中。它只做四件事:
1. 按路径分流。只有/v1/messages(模型调用)会被转发到 DeepSeek;其余所有请求透明透传给 Anthropic,桥接因此完全不受影响。
2. 模型名翻译。Claude Code 只会说 Anthropic 的"方言"。代理内置了一张映射表 MODEL_REMAP:claude-opus-4-6→deepseek-v4-pro、claude-sonnet-4-6/claude-haiku-4-5→deepseek-v4-flash,请求体里的模型名会被静默替换后再转发。
3. 兼容层修补。DeepSeek 的 SSE 流有时不带usage字段,会导致 Claude Code 直接崩溃。代理里的 UsageNormalizer 流式拦截每个事件并注入缺失的 token 统计;同时转发前会剥离历史消息中的 thinking 块(stripAllThinkingBlocks),因为 DeepSeek 会拒绝它自己没生成过的思考块。
4. 记账与实时切换。代理按各家价格(PRICING_PER_M)累计每个后端的 token 用量,并通过三个控制端点对外服务:
/_proxy/status— 当前模式、运行时长、请求数/_proxy/cost— token 消耗、实际花费、对比 Anthropic 省了多少钱POST /_proxy/mode— 免重启切换后端,并做了 Origin 白名单,只接受本机页面调用
实战:启动远程控制与免重启换脑
前提条件(README.md "Remote control" 一节):
- 已登录 Claude Code(
claude auth login) - 有 claude.ai 订阅(桥接是 Anthropic 的基础设施)
- Node.js 18+(运行代理)
然后一条命令搞定:
deepclaude --remote # 远程控制 + DeepSeek deepclaude --remote -b or # 远程控制 + OpenRouter deepclaude --remote -b anthropic # 远程控制 + 原生 Anthropic代理随会话自动启动、结束自动关闭,无需手动管理。启动脚本的完整逻辑在 deepclaude.sh 中:解析参数、按会话设置环境变量(退出后恢复原设置)、拉起代理并在进程退出时清理(cleanup_proxy)。
会话中途换脑:/deepseek 斜杠命令
最实用的特性是运行中切换后端,无需重启。把两个小文件放进~/.claude/commands/,之后在任意 Claude Code 会话里直接输入/deepseek或/anthropic即可。命令本质是让模型悄悄执行一次curl -X POST http://127.0.0.1:3200/_proxy/mode(配置模板见 README.md "Option 1: Slash commands" 一节)。
终端中执行 /deepseek 斜杠命令,模型代理即时切换到 DeepSeek 后端
同样的玩法也能嵌入 VS Code 的 Claude Code 扩展,一次思考后调用 Bash 完成切换:
VS Code 中 /deepseek 命令将请求路由切换至 DeepSeek
日常用法建议:80% 的常规任务用 DeepSeek(便宜),遇到需要强推理的 20% 复杂问题,一条/anthropic切回 Opus 硬扛,会话上下文全程不丢。
省钱效果:/cost 端点一键对账
切完之后,打开curl -s http://127.0.0.1:3200/_proxy/cost就能看到实打实的账单:每个后端各花了多少钱、等价的 Anthropic 价格是多少、savings省了多少钱。
原理小结
| 环节 | 作用 | 参考文件 |
|---|---|---|
| Bridge WebSocket | 远程控制通道,固定走 Anthropic OAuth | proxy/README.md |
ANTHROPIC_BASE_URL重定向 | 把模型调用引到本地 3200 端口 | deepclaude.sh |
路径分流/v1/messages | 模型调用→DeepSeek,其余透传 Anthropic | proxy/model-proxy.js |
| 模型名映射 + usage 修补 | 抹平两家 API 差异,保证 Claude Code 不报错 | model-proxy.js |
/_proxy/mode控制端点 | 免重启切换后端 | model-proxy.js |
一句话总结:deepclaude 用"一个只监听 127.0.0.1 的本地代理 + 环境变量重定向"把 Claude Code 的流量劈成两半——认证归 Anthropic,思考归 DeepSeek。同一套代理在普通终端模式和远程控制模式下通用,所以无论你在命令行还是浏览器里,都能享受 17 倍的价差。
【免费下载链接】deepclaudeUse Claude Code's autonomous agent loop with DeepSeek V4 Pro, OpenRouter, or any Anthropic-compatible backend. Same UX, 17x cheaper.项目地址: https://gitcode.com/gh_mirrors/deepc/deepclaude
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考