本地 API Proxy: Anthropic / OpenAI Chat / Responses 互转,支持 DeepSeek

5 月 5 日
 jazzenchen

最近在深度试用几家国产大模型,但几乎清一色都还是 OpenAI Chat Completions 接口,导致在较新的 Codex CLI 里没法直接用。

于是在开源工具 VibeAround 的命令行一键启动功能上,加了一个 local API proxy ,主要解决 coding agent 和模型 provider 之间 API 格式不一致的问题。

现在可以在 Anthropic Messages / OpenAI Chat Completions / OpenAI Responses 之间做转换和适配,比如把 Claude 模型跑到 Codex CLI 里,或者把 OpenAI 模型跑到 Claude Code 里。

这次重点是 DeepSeek 。

它除了 Chat -> Responses 之外,还需要额外处理 thinking/reasoning content 和 tool call 合并。虽说是 vibe 出来的功能,但确实花了不少 token 。

现在配置过的 provider profile 都可以通过 VibeAround 暴露成本地 endpoint ,给 Codex CLI / Claude Code 或者其他工具比如 Cursor 使用。

理论上 Kimi 、MiniMax 、Z.AI/GLM ,以及自定义 OpenAI-compatible Chat Completions 都支持。

项目地址: https://github.com/jazzenchen/VibeAround

4063 次点击
所在节点    程序员
19 条回复
jazzenchen
5 月 5 日
比较好玩的是,在 Claude Code 里面跑着 openai/gpt-5.5 ,Codex CLI 里面挂着 anthropic/claude-opus-4.6 。

然后分别问它们: “你们里面都是啥模型?”

Claude Code 会老老实实回答: 我是 Claude Code ,但环境显示我由 openai/gpt-5.5 驱动。
但 Codex CLI 一脸认真地说: 我是 Codex ,模型是 GPT-5.5 。

也不知道是 Codex CLI 的系统提示词控制力强,还是 claude opus 的指令遵循能力更强?
longxk
5 月 5 日
咦,这个不是 LiteLLM Proxy 做的事情吗?
jazzenchen
5 月 5 日
@longxk 没错没错,不过我这个没那么重,本意是通过远程 IM 遥控 Codex / Claude 的时候,可以更灵活选择模型供应商,顺手就把这个能力给加上了。
xingheng
5 月 5 日
embeding 模型怎么做的
sommio
5 月 6 日
@longxk litellm 还没兼容 deepseek v4 ,我最近发个帖子讨论这个话题
cooli
5 月 6 日
厉害了,能解决新版本 Codex 接入 Aliyun Coding Plan 吧。
jazzenchen
5 月 6 日
@cooli 按说应该可以,但百炼的 Coding Plan 每次看都在补货,还没有实测过
chenzezeya
5 月 6 日
codex 的客户端可以支持吗
PowerDi
5 月 6 日
这个打开怎么是 agent 代理的工程,跟你说的是一个东西吗
jazzenchen
5 月 6 日
@chenzezeya codex 桌面应用要 codex 的改配置文件,工具里面开启 proxy 以后有说明,claude 也一样。codex cli 和 claude code 不需要改配置,我也不会去动原有的配置文件,直接从应用里启动就行了。
jazzenchen
5 月 6 日
@PowerDi 本地会起一个 web server ,用本地接口做中转,在 claude message / openai responses / openai chat 三种协议里做转换。
jiaqiliu
5 月 7 日
用 Chat -> Responses 的话, 是不是只能给 codex cli 用? 支持 codex 桌面版吗?
jazzenchen
5 月 8 日
@jiaqiliu deepseek 还不行,只能给 codex cli 用,这里不是简单转一个请求的问题,deepseek 要求装填历史思考内容,面向桌面端实现起来会比较麻烦。
slowman
5 月 8 日
profile 'custom-xxx' cannot launch 'claude'
十分令人困惑
V2PlusMax
5 月 14 日
cc-switch 也可以转发请求
jazzenchen
5 月 14 日
@slowman 添加 profile 的时候如果没有提供 anthropic 接口,默认是不能直接启动 claude 的,需要开启 proxy 请求转译。
jazzenchen
5 月 14 日
@V2PlusMax https://github.com/farion1231/cc-switch/issues/2463 目前看 deepseek 到 codex 还没有提供支持。
GiRLIn11
21 天前
jazzenchen
8 天前
@GiRLIn11 感谢,我看了下 llm-rosetta ,协议转换这层确实是类似方向,而且它作为 Python library / gateway 做得挺完整。

不过 VibeAround 的重点不太一样:我不是想单独做一个通用转换库,而是做一个桌面端入口,把 Coding Agent 的启动、模型 profile 、工作目录、历史会话和本地 bridge 串起来。

所以协议互转只是 VibeAround 里的一部分能力,真正日常用起来更像是“Agent 启动器 + Profile 管理 + 本地 Bridge + Web/手机远程控制”。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1210354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX