CCProxy 是一款跑在手机上的协议转换器。它在本地起一个 HTTP 服务,
把 /v1/messages
请求翻译成 OpenAI 格式转发出去,再把结果翻回 Claude 格式。
客户端一个字节都不用改。
不是简单的字段改名。工具调用、流式事件、多轮对话状态机,每一项都按两边协议的语义对齐。
请求侧:system 提位、content 数组降级、 image 转 image_url、 input_schema 转 parameters。 响应侧:finish_reason 双向映射,token 计数对齐。
tool_use ⇄ tool_calls 双向映射, tool_result 转独立 role:"tool" 消息, 空名调用自动剔除。多轮工具往返不会断链。
不是逐字蹦,也不是憋完再说。攒够设定字符数或超时即发一个 text_delta,形成连续而稳定的吐字节奏,可调粒度。
strict 走标准证书校验; lenient 信任自签证书但保留主机名校验。 不提供"全放行",因为那会把密钥暴露给中间人。
服务绑定在 127.0.0.1,局域网和公网都摸不到。 所有配置、密钥、请求体都留在你自己设备上。
不用 OkHttp、不用 Gson、不引入 AndroidX。HTTP 服务器自己手写 ServerSocket,JSON 用系统内置 org.json。包体小,行为可控。
不需要 root,不需要改客户端。装好、填三个框、点启动、把客户端指过来。
安装 APK 后打开应用。首次启动会请求通知权限,用于显示前台服务常驻状态。
主界面有三个必填项。Base URL 填到 /v1 为止即可,多填的 /chat/completions 会被自动剥掉。
先点「保存配置」,再点「启动转换器」。状态变绿、通知栏出现常驻通知即表示服务已在 127.0.0.1:8799 监听。
在 Claude 客户端里把 API 地址改成 http://127.0.0.1:8799,Key 随便填(由 CCProxy 转发时替换成上游 Key)。
轻量、直接、可预期。以下为构建与运行环境。
下载后直接安装。若系统提示"未知来源",在安装界面允许即可—— 这是所有非应用商店 APK 的通用流程。
下载 CCProxy_1.0.0.apkCCProxy_1.0.0.apk 放到 Pages 项目根目录(与
index.html 同级)后重新部署即可,页面会自动检测到。
/v1/messages 协议,而绝大多数自建网关和模型服务提供的是 OpenAI 的 /v1/chat/completions。
两者在字段名、消息结构、流式事件、工具调用格式上都不一样。改客户端意味着重新编译甚至逆向,而中间加一层转换器,两边都不用动。
127.0.0.1,只有本机进程能连上。请求直接转发到你自己填写的上游地址,
不经任何第三方中转。配置和密钥存在应用私有目录里。
0.0.0.0 会让同网络的任何设备都能调用你的接口,而你填在上游配置里的密钥也就跟着暴露了。
如果确实需要跨设备使用,建议自行加一层带认证的反向代理,而不是把裸服务暴露到局域网。
min_chunk_chars(每块最少字符数,调小更丝滑)和
max_chunk_wait_ms(最长等待毫秒数,调小更及时)。
也可以把 stream_mode 设为 off 关闭分块细化——注意这只影响吐字节奏,仍会以 SSE 返回,不会让客户端卡住。
strict 改成 lenient。该模式信任任何证书,但依然校验主机名,
不是完全放行。如果你的上游是公网 HTTPS 且证书正常,保持 strict 即可。
ccproxy-android.log。
排查连接问题时,先确认日志末尾出现监听成功的那一行,再看请求是否到达。