copilot BYOK UI
通过图形界面管理 VS Code 的 Custom Endpoint BYOK 模型,避免手写 chatLanguageModels.json。
功能
- 在 Activity Bar 提供
copilot BYOK UI 侧栏入口。
- 侧栏显示当前 Custom Endpoint Provider、模型数量和配置文件状态。
- 在完整管理面板中增删改 Provider 与模型。
- 支持 Chat Completions、Responses、Anthropic Messages 三种 API 类型。
- 支持工具调用、多模态视觉、深度思考(Thinking)、流式传输、零数据保留五个能力开关,以及 Token 上限、推理 effort、编辑工具、请求头和
modelOptions。
- 视觉能力由模型卡片上的
vision(“👁 多模态视觉”)开关控制,界面上没有独立的 imageInput 开关;imageInput 只在原文件已存在该字段时随 vision 回写,否则不会新增。
- 管理面板右上角提供“预览 JSON ⌘”按钮,可在保存前查看将要写入
chatLanguageModels.json 的内容;预览只列出本扩展管理的字段,文件里未识别的字段不会出现在预览中,但会原样保留。
- 默认只保存
${input:变量名} 形式的 API Key 引用,不在配置文件、扩展日志或 Webview 状态中保存明文密钥。
- 保存前自动生成带时间戳的备份文件(
chatLanguageModels.json.bak-<时间>,最多保留最近 10 份),并保留未知 Provider 与未识别字段。
- 只写入与文件默认值不同的能力位:不会被本扩展打开过的模型,保存后依然不会凭空多出
toolCalling / vision / streaming 字段。
- 检测配置文件被外部修改,避免静默覆盖。
使用
- 在扩展开发主机中运行
BYOK: 管理 Custom Endpoint 模型,或点击 Activity Bar 的 copilot BYOK UI 图标。
- 点击侧栏的“+ 新建 Provider”(管理面板左侧栏的按钮是“+ 新建”,也可直接运行命令
BYOK: 新建 Provider),填写 Provider 显示名称、默认协议 API 类型和 Key 变量名。
- 在 Provider 卡片的“模型清单”中点击“+ 添加模型”,填写模型 ID、显示名称和 Endpoint 完整 URL。
- 按需勾选模型卡片上的能力开关(🔧 工具调用、👁 多模态视觉、🧠 深度思考、⚡ 流式传输、🛡 零数据保留)。API 协议覆盖、最大输入/输出 Tokens、全上下文窗口限制、编辑工具、Reasoning Effort、自定义请求头和
modelOptions 都收在同一个折叠区里,其标题为“高级设置:Token 窗口、推理等级与自定义请求头”,按需展开。
- 需要核对结果时,点击右上角“预览 JSON ⌘”,可在保存前查看将要写入
chatLanguageModels.json 的内容;预览只列出本扩展管理的字段,文件里未识别的字段不会出现在预览中,但仍会原样保留。
- 点击右上角或页面底部固定条中的“保存所有配置 ✓”。
- 回到 Chat 的模型选择器;如果模型没有立即出现,请执行一次
Developer: Reload Window。
API Key 安全说明
VS Code 官方 Custom Endpoint 格式支持:
"apiKey": "${input:myApiKey}"
本扩展的 API Key 字段只接受变量名,例如 myApiKey,不会把真实密钥写入 chatLanguageModels.json。首次使用模型时,VS Code 会按照 ${input:...} 引用处理密钥输入。请求头中可以使用官方支持的 ${apiKey} 占位符,例如:
{
"Authorization": "Bearer ${apiKey}"
}
开发
项目统一使用 pnpm 管理依赖和运行脚本。
pnpm install
pnpm run compile
pnpm run test:unit
pnpm run package
生成的 copilot-byok-ui.vsix 文件可以通过 VS Code 命令 Extensions: Install from VSIX... 安装。
配置文件位置
扩展会根据当前 VS Code 发行版在用户数据目录中查找 User/chatLanguageModels.json,并优先使用已经存在的文件。当前支持常见的 Code、Code - Insiders、VSCodium 和 portable user-data 路径。
设计边界
扩展只修改 vendor 为 customendpoint 的 Provider,其他 Provider 会原样保留。chatLanguageModels.json 是 VS Code 的用户数据文件,并非稳定的扩展公共 API;因此扩展提供原文件打开入口和冲突检测,遇到 VS Code 格式变化时不会自动覆盖文件。
| |