
SkillClaw协议桥接揭秘如何统一OpenAI Responses、Anthropic Messages与Chat Completions三大API【免费下载链接】SkillClawLet Skills Evolve Collectively with Agentic Evolver项目地址: https://gitcode.com/gh_mirrors/sk/SkillClawSkillClaw是一个让 AI Agent 技能集体进化的开源框架它内置了一个协议桥接API 服务器把OpenAI Chat Completions、OpenAI Responses、Anthropic Messages三大主流 API 统一到一个端点背后。无论你用的是 Hermes、Claude Code 还是 Codex 风格的客户端都可以通过同一个代理接入大模型并让技能进化在后台静默发生。为什么需要协议桥接现在主流的 AI Agent 客户端几乎各说各话Chat Completions/v1/chat/completions最经典的 OpenAI 对话接口几乎所有兼容端点都支持Responses API/v1/responsesOpenAI 新一代接口Codex 等客户端原生使用基于input字段而非messagesMessages API/v1/messagesAnthropic 的接口采用systemmessages分离、tool_use/tool_result块模型如果每接一个新客户端都要写一套转发逻辑维护成本会爆炸。SkillClaw 的解法是在 skillclaw/api_server.py 中同时注册三个端点用一层协议适配器互相翻译。三大端点一览端点面向的客户端内部处理方式POST /v1/chat/completions任何 OpenAI 兼容客户端原生透传作为基准格式POST /v1/responsesCodex 等 Responses 客户端翻译为 Chat 格式或按配置原生转发POST /v1/messagesClaude Code 等 Anthropic 客户端翻译为 Chat 格式再回译输出其中 Responses 端点还支持一个开关配置项llm_api_mode定义在 skillclaw/config.py设为responses时请求会原生转发给上游 Responses 端点完全绕过桥接默认的chat模式则走桥接翻译。桥接的核心protocols 适配器所有翻译逻辑集中在 skillclaw/protocols/ 目录下结构非常清晰skillclaw/protocols/ ├── common.py # 共享的 JSON 工具参数助手 ├── openai_responses.py # Responses ⇄ Chat 双向转换 └── anthropic_messages.py # Messages ⇄ Chat 双向转换Responses ⇄ Chat输入结构与工具调用的转换Responses API 用input数组input_text/output_text块表达对话而 Chat Completions 用messages列表。转换的关键函数to_openai_body()把 Responses 请求体转成 Chat 格式instructions会变成system消息见 openai_responses.pycontent_to_openai_chat_content()把input_text/image_url等块拍平成 Chat 的 content 结构tools_to_openai_tools()把 Responses 的 function 工具 schema 转成 Chat 的tools数组from_openai_chat_payload()反向转换把 Chat 响应还原成 Responses 客户端期望的response对象见 openai_responses.py还有一个细节Responses 端点会维护一个_responses_storeresponse_id → 历史记录支持客户端用previous_response_id续接多轮对话并提供GET/DELETE /v1/responses/{id}查询和删除接口。Messages ⇄ ChatAnthropic 的方言处理anthropic_messages.py 处理的是更复杂的方言差异工具名别名表内置了近百个别名映射如read_file、read-file→Readbash→Bash保证不同客户端传来的工具名都能对上 Claude Code 的标准工具集见 anthropic_messages.py参数归一化自动在file_path/path、old_string/oldString等命名风格之间互转让参数无感通行停止原因映射tool_calls → tool_use、length → max_tokens等把 Chat 的finish_reason翻译回 Anthropic 的stop_reason见 anthropic_messages.pyToken 用量换算把prompt_tokens/completion_tokens换算成 Anthropic 的input_tokens/output_tokens并保留缓存命中信息请求是怎么流动的以 Claude Code 客户端为例一次请求的旅程是客户端POST /v1/messages带上x-api-key或 Bearer 认证服务器把 Messages 请求体翻译成 Chat 格式并打上_skillclaw_protocol协议标记会话解析优先读X-Session-Id/X-Claude-Code-Session-Id请求头没有则按消息数启发式判断会话边界内部统一的_handle_request()处理——这里技能注入、轨迹记录等进化逻辑只写一份对三种协议完全无感响应时按协议标记回译Anthropic 客户端收到标准 Messages 流式/非流式响应入口代码见 api_server.py这就是桥接的价值会话管理、技能注入、请求录制这些核心能力全部建在统一内部格式之上新增一种客户端协议只需再写一个翻译器。上手与验证项目自带针对协议层的测试用例想了解行为细节可以直接看Responses 桥接tests/test_responses_codex.pyAnthropic 桥接tests/test_anthropic_messages.py原生 Messages 协议端点tests/test_anthropic_messages_api.py客户端环境配置示例可参考 client_env.example.sh把base_url指向 SkillClaw 的本地 API 服务器即可——Chat Completions 客户端、Responses 客户端、Anthropic 客户端可以同时接入同一个端点各说各的话共享同一条技能进化流水线。小结SkillClaw 的协议桥接用一个小目录 skillclaw/protocols/ 解决了三大 API 方言问题以 Chat Completions 为内部基准格式Responses 与 Messages 请求进来先翻译、响应出去再回译。对新手来说这意味着换客户端不再需要换后端对开发者来说这是内部格式统一 边界翻译这一架构模式教科书级的轻量实践。【免费下载链接】SkillClawLet Skills Evolve Collectively with Agentic Evolver项目地址: https://gitcode.com/gh_mirrors/sk/SkillClaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考