概述
本文记录如何在 OpenClaw 中让 github-copilot/gpt-5.4 模型正常工作。如果该模型在 OpenCode 中可用但在 OpenClaw 中失败,通常是因为配置未完全对接以及运行时路由问题。
最终解决方案需要两步:
- 修改
~/.openclaw/openclaw.json配置文件 - 对已安装的 OpenClaw 运行包进行运行时补丁
这是因为问题不仅在于模型注册,还涉及 OpenClaw 对 GitHub Copilot Responses API 流量的传输路由处理。
症状表现
调试过程中可能出现以下错误:
症状一:模型被拒绝
github-copilot/gpt-5.4 ... not allowed
症状二:IDE 认证头缺失
HTTP 400: bad request: missing Editor-Version header for IDE auth
症状三:不支持的提供者模式
No API provider registered for api: github-copilot
症状四:端点错误
HTTP 400: model "gpt-5.4" is not accessible via the /chat/completions endpoint
症状五:网关不稳定
gateway disconnected: closed | idle
根本原因分析
主要存在四个独立的问题:
1. 模型配置与白名单不匹配
OpenClaw 虽然能看到提供者,但 github-copilot/gpt-5.4 并未完全接入 Agent 默认使用的活动模型配置路径。
2. 缺少 GitHub Copilot IDE 请求头
GitHub Copilot 需要 IDE 风格的请求头进行认证。OpenClaw 此前通过通用的 OpenAI 兼容路径发送请求,导致缺少必要头信息。
必需的头信息如下:
User-Agent: GitHubCopilotChat/0.35.0
Editor-Version: vscode/1.107.0
Editor-Plugin-Version: copilot-chat/0.35.0
Copilot-Integration-Id: vscode-chat
缺少这些头信息时,Copilot 会返回:
missing Editor-Version header for IDE auth
3. GPT-5.4 不是 Chat Completions 模型
gpt-5.4 必须使用 Responses API,而不是 /chat/completions。
因此,针对 gpt-5.4 使用以下配置是错误的:
{"api":"openai-completions"}
正确的配置应该是:
{"api":"openai-responses"}
4. OpenClaw 传输路由仅支持 openai
即使将 gpt-5.4 改为 openai-responses,OpenClaw 仍可能回退到通用流路径,因为其嵌入式 Runner 仅对 openai 提供者激活了 Responses 传输。
这导致 OpenClaw 继续向 GitHub Copilot GPT-5.4 发送 /chat/completions 请求。
涉及文件
配置文件
~/.openclaw/openclaw.json
已安装的 OpenClaw 运行时包
~/.nvm/versions/node/v22.x.x/lib/node_modules/openclaw/dist/reply-*.js
重新应用脚本
~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs
步骤一:修复 OpenClaw 配置
更新 ~/.openclaw/openclaw.json 中的 GitHub Copilot 提供者块。
提供者级别要求
使用以下配置:
{
"baseUrl": "https://api.individual.githubcopilot.com",
"api": "openai-completions"
}
为什么保持提供者 API 为 openai-completions?
- OpenClaw 运行时期望提供者保持在支持的通用适配器路径上
- 将整个提供者切换到
github-copilot会导致运行时/提供者注册失败
GPT-5.4 模型级别要求
将 gpt-5.4 模型条目设置为:
{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000}
Agent 模型注册
确保包含以下内容:
{"agents":{"defaults":{"models":{"github-copilot/gpt-5.4":{}}}}}
步骤二:修补 OpenClaw 以注入 Copilot IDE 头
OpenClaw 需要在发送提供者请求前附加 Copilot IDE 头。
在运行时包中找到合适位置(通常在其它提供者包装器附近),添加如下包装器:
const GITHUB_COPILOT_IDE_HEADERS = {
"User-Agent": "GitHubCopilotChat/0.35.0",
"Editor-Version": "vscode/1.107.0",
"Editor-Plugin-Version": "copilot-chat/0.35.0",
"Copilot-Integration-Id": "vscode-chat"
};
function createGitHubCopilotHeadersWrapper(baseStreamFn) {
const underlying = baseStreamFn ?? streamSimple;
return (model, context, options) => {
return underlying(model, context, {
...options,
headers: {
...GITHUB_COPILOT_IDE_HEADERS,
...options?.headers
}
});
};
}
然后在提供者逻辑内部应用它:
if (provider === "github-copilot") agent.streamFn = createGitHubCopilotHeadersWrapper(agent.streamFn);
步骤三:修补 OpenClaw 以正确路由 GitHub Copilot Responses
找到决定使用哪个流传输分支的代码。
原始行为:
} else if (params.model.api === "openai-responses" && params.provider === "openai") {
将其替换为:
} else if (params.model.api === "openai-responses" && (params.provider === "openai" || params.provider === "github-copilot")) {
为什么要这样做?
- 修补前,
github-copilot从未进入 Responses 传输分支 - OpenClaw 回退到
streamSimple streamSimple命中/chat/completions- GPT-5.4 拒绝该端点
修补后:
github-copilot+openai-responses使用正确的 Responses 传输- GPT-5.4 不再回退到 Chat Completions
步骤四:验证并重启
验证配置 JSON
node -e "JSON.parse(require('fs').readFileSync('~/.openclaw/openclaw.json', 'utf8')); console.log('OK')"
验证修补后的包语法
node --check "~/.nvm/versions/node/v22.x.x/lib/node_modules/openclaw/dist/reply-*.js"
重启网关
openclaw gateway restart
验证流程
- 将模型设置为
github-copilot/gpt-5.4 - 发送简单提示词如
hi - 确认网关保持连接
- 确认不再出现以下错误:
missing Editor-Version header for IDE auth model "gpt-5.4" is not accessible via the /chat/completions endpoint No API provider registered for api: github-copilot
更新后重新应用
由于运行时修复直接打补丁到已安装的 OpenClaw 包,升级或重装可能会覆盖它。
使用重新应用脚本:
node ~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs openclaw gateway restart
设计思路说明
为什么不将整个提供者切换到 api: "github-copilot"?
这看起来很诱人,但 OpenClaw 的运行时路径在此设置中没有兼容的已注册流式提供者,会导致运行时/提供者注册失败。
为什么不保持 GPT-5.4 在 openai-completions?
因为 GitHub Copilot GPT-5.4 无法通过 /chat/completions 访问。必须通过 Responses API。
为什么之前 OpenCode 能工作?
OpenCode 已经正确处理了 GitHub Copilot 传输路径,包括所需的 Copilot 头和正确的 API 模式,而 OpenClaw 需要配置和运行时双重修复。
维护建议
- 将此指南与重新应用脚本路径一起保存
- 每次 OpenClaw 升级后,重新运行修补脚本
- 如果 OpenClaw 更改了包文件名,请相应更新脚本路径目标
- 如果 GitHub Copilot 更改了所需 IDE 头版本,请同时更新运行时补丁和重新应用脚本
快速恢复命令
node ~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs openclaw gateway restart openclaw status
最终状态
配置修复和运行时补丁到位后,github-copilot/gpt-5.4 可在 OpenClaw 中正常工作,且网关保持稳定。

