Rsp4copilot
Cloudflare Worker that exposes an OpenAI-compatible /v1/chat/completions endpoint for GitHub Copilot via OpenAI Responses API, with Gemini and Claude support.
Install / Use
/learn @Andy963/Rsp4copilotQuality Score
Category
Customer SupportSupported Platforms
README
rsp4copilot (Cloudflare Worker)
在 Cloudflare Workers 上运行的 LLM API 互转 / 路由网关:同一套后端 provider 配置,同时暴露多种“前端协议”入口,方便 VS Code 等客户端按自己支持的协议接入。
主要用途:让 VS Code 的 OAI Compatible Provider for Copilot 插件可以使用 OpenAI Responses、Gemini、Claude 等上游(通过中转/Relay)。
友情推广:稳定靠谱codex中转: rightcode
入口协议(多选)
- OpenAI Chat Completions:
POST /v1/chat/completions - OpenAI Responses:
POST /v1/responses(兼容:/responses、/openai/v1/responses) - Claude Messages:
POST /claude/v1/messages、POST /claude/v1/messages/count_tokens - Gemini:
POST /gemini/v1beta/models/{model}:generateContent、POST /gemini/v1beta/models/{model}:streamGenerateContent?alt=sse
模型列表
- OpenAI 风格:
GET /v1/models(同样支持/openai/v1/models、/claude/v1/models、/models) - Gemini 风格:
GET /gemini/v1beta/models
统一模型命名(配置驱动)
请求里的 model 支持两种写法:
- 短 ID:直接写
modelName(推荐;前提是该名字在所有 provider 里唯一) - 完整 ID:写
providerId.modelName(显式指定 provider;当短 ID 有歧义时使用)
如果客户端会额外发送 provider 信息,本 Worker 也会尽量识别:
- JSON body 字段:
provider/owned_by/ownedBy - Gemini 兼容:
?provider=(或?owned_by=)
入站鉴权(必须)
所有请求都需要携带你的 Worker 访问密钥(不是上游模型 key):
- Worker 侧配置:
WORKER_AUTH_KEY或WORKER_AUTH_KEYS(逗号分隔) - 客户端传递方式:
Authorization: Bearer <key>或Authorization: <key>x-api-key: <key>- Gemini 兼容:
x-goog-api-key: <key>或?key=<key>(仅当路径以/gemini/开头) - Claude 兼容:
anthropic-api-key: <key>/x-anthropic-api-key: <key>
配置(RSP4COPILOT_CONFIG)
唯一必需的网关配置是 RSP4COPILOT_CONFIG(JSON/JSONC 字符串)。
注意:Worker 运行时只读取环境变量,不会从仓库读取
configs/*.jsonc;配置里的baseURL是「上游地址」(不要填本 Worker 的对外地址,否则会自我转发形成循环)。
示例见:
.dev.vars.examplewrangler.toml.exampleconfigs/rsp4copilot.config.example.jsonc
RSP4COPILOT_CONFIG 示例(单一 OpenAI Responses 上游)
{
"version": 1,
"providers": {
"openai": {
"apiMode": "openai-responses",
"baseURL": "https://your-relay.example/openai",
"apiKey": "REPLACE_ME",
"quirks": {
"noInstructions": false,
"noPreviousResponseId": false
},
"models": {
"gpt-5.2": { "upstreamModel": "gpt-5.2" }
}
}
}
}
provider.quirks(上游兼容开关)
noInstructions:仅对apiMode: "openai-responses"生效。有些中转/网关不接受 Responses 请求里的instructions字段;开启后会对非锚定请求(无previous_response_id/conversation)额外生成兼容变体:把instructions改写进input(system item)或压平成 prompt 再尝试。noPreviousResponseId:仅对apiMode: "openai-responses"生效。有些中转/网关不接受previous_response_id;开启后会跳过使用/发送previous_response_id,直接走全量历史。
常用 provider.apiMode
字段名兼容:推荐
apiMode,也支持api_mode/type(旧配置兼容)。
openai-responses:上游走 Responses API(支持 reasoning、tool calling、SSE 等)openai-chat-completions(或openai):上游走 Chat Completions API(/v1/chat/completions)gemini:上游走 GeminigenerateContent/streamGenerateContentclaude(或anthropic):上游走 Claude/v1/messages
本地运行(不部署)
npm install
cp .dev.vars.example .dev.vars
npx wrangler dev --local --port 8788
快速 curl
OpenAI Chat:
curl -sS http://127.0.0.1:8788/v1/chat/completions \
-H "Authorization: Bearer REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.2","messages":[{"role":"user","content":"hello"}]}'
OpenAI Responses:
curl -sS http://127.0.0.1:8788/v1/responses \
-H "Authorization: Bearer REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.2","input":[{"role":"user","content":[{"type":"input_text","text":"hello"}]}]}'
Claude Messages:
curl -sS http://127.0.0.1:8788/claude/v1/messages \
-H "Authorization: Bearer REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-6","max_tokens":64,"messages":[{"role":"user","content":"hello"}]}'
Gemini streaming:
curl -N "http://127.0.0.1:8788/gemini/v1beta/models/gemini-3.1-flash-lite-preview:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{"contents":[{"role":"user","parts":[{"text":"hello"}]}]}'
在 VS Code Copilot 插件中使用
settings.json 示例
重点:
id可以填短模型名(例如gpt-5.2),并把WORKER_AUTH_KEY作为 API Key 填给插件。 若出现同名模型(有歧义),再改用providerId.modelName。
{
"oaicopilot.baseUrl": "https://<your-worker-domain>/v1",
"oaicopilot.models": [
{ "id": "gpt-5.2", "owned_by": "openai", "context_length": 200000, "max_tokens": 8192, "temperature": 0, "top_p": 1 }
]
}
配置 API Key
- 打开 VS Code 命令面板(
Ctrl+Shift+P/Cmd+Shift+P) - 运行:
OAICopilot: Set OAI Compatible Multi-Provider Apikey - Provider 随便选(如
openai/google/anthropic),API Key 填WORKER_AUTH_KEY
在 VS Code Continue 插件中使用
Continue 的 OpenAI provider 可能会直接调用 POST /v1/responses;本 Worker 已兼容该路由。
配置要点:
apiBase填本 Worker 的对外地址(建议https://<your-worker-domain>/v1)apiKey填WORKER_AUTH_KEY(不是上游 key)model填短模型名(如gpt-5.2/claude-sonnet-4-6/gemini-3.1-pro-preview)
Thinking/思维链(透传)
- OpenAI Responses:
/v1/responses会尽量保持 OpenAI Responses 的输出结构;当上游是非 Responses 协议时,会把 Chat Completions 的reasoning_content映射为 Responses 的type:"reasoning"输出项,并在 SSE 中发送response.reasoning_text.delta/done,便于 oai-compatible-copilot 显示 Thinking。 - Gemini:当模型路由到
apiMode: "gemini"的 provider 时,/gemini/v1beta/models/...:streamGenerateContent?alt=sse会直接代理 Gemini 原生 SSE,保留thought: true的 thought summaries。
Legacy
已移除无配置的前缀路由/旧环境变量方式;请设置 RSP4COPILOT_CONFIG。
