Models for Copilot
把 Friday 当前可用模型和 OpenRouter 的 GPT-5.6 Luna 注册为两个独立的 VS Code Language Model Provider,并直接用于 GitHub Copilot Chat / Agent。安装扩展后不再需要维护 chatLanguageModels.json。
已包含模型
| Provider |
模型 / API ID |
上下文 |
最大输出 |
Tools |
Vision |
思考控制 |
| Friday |
GPT-5.6 Terra |
1,050,000 |
128,000 |
✓ |
✓ |
none / low / medium / high / xhigh |
| Friday |
GPT-5.6 Luna |
1,050,000 |
128,000 |
✓ |
✓ |
none / low / medium / high / xhigh |
| Friday |
GLM-5.3 |
1,000,000 |
131,072 |
✓ |
— |
low / high / max,不能关闭 |
| Friday |
Gemini 3.7 Flash |
1,048,576 |
65,536 |
✓ |
✓ |
low / medium / high |
| Friday |
DeepSeek V4 Flash |
1,000,000 |
393,216 |
✓ |
— |
none / low / high / max |
| Friday |
DeepSeek V4 Flash Vision Exp |
1,000,000 |
393,216 |
✓ |
✓ |
none / low / high / max |
| Friday |
Kimi K3 |
1,048,576 |
1,048,576 |
✓ |
✓ |
low / high / max,不能关闭 |
| OpenRouter |
openai/gpt-5.6-luna |
1,050,000 |
128,000 |
✓ |
✓ |
none / low / medium / high / xhigh / max |
这里列出的能力和参数不是从原有 JSON 复制而来,而是先按照各厂商官方文档构造请求,再通过 Friday 真实接口逐项验证。
安装与配置
- 安装打包后的
.vsix。
- Friday:从命令面板运行 Friday: Configure API Key,输入 Friday 接入申请得到的 AppId。
- OpenRouter 默认不出现在模型列表;运行 OpenRouter: Configure API Key 并保存 API Key 后才会显示。清除密钥后会再次隐藏。
- 两类密钥分别写入 VS Code
SecretStorage,不会保存到 settings 或日志。
- 打开 Chat,在模型选择器的 Other Models → Friday / OpenRouter 中选择模型。模型名称旁可选 Reasoning Effort / Thinking Level。
也可以通过启动 VS Code 时的 FRIDAY_API_KEY、OPENROUTER_API_KEY 环境变量提供密钥。对应的 Open Model Settings 命令可查看参数。
参数设计
Friday 模型使用同一个 endpoint,但请求由模型专属适配器生成:
- GPT-5.6 使用
max_completion_tokens、reasoning_effort、verbosity、单一 sampling 参数、并行 tools、JSON mode 和 logprobs。
- GLM-5.3 强制发送
thinking.type=enabled,并支持 reasoning_effort、do_sample、tool_stream、clear_thinking、stop 和 JSON mode。
- Gemini 3.7 Flash 使用原生
extra_body.google.thinking_config,支持 thought summaries、单一 sampling 参数、stop 和实验性 JSON mode。
- DeepSeek V4 Flash 支持 thinking 开关、effort、非思考模式 sampling、stop、JSON mode 和 logprobs。
- DeepSeek V4 Flash Vision Exp 复用 DeepSeek 参数适配,并支持
image_url.detail=auto/low/high/original;模型目前是官方实验版本。
- Kimi K3 使用
max_completion_tokens 和顶层 reasoning_effort,支持 required tools、vision、stop 和 JSON mode;固定采样参数不会发送。
OpenRouter 是完全独立的 provider,目前只注册 openai/gpt-5.6-luna。插件依据 OpenRouter 实时 GET /api/v1/models 能力表,仅发送它声明支持的参数:
reasoning:effort 支持 none / low / medium / high / xhigh / max,并提供 exclude、GPT-5.6 reasoning context 和 standard/pro mode。
- 输出限制:默认发送当前字段
max_completion_tokens;也可改用仍受支持但已弃用的 max_tokens,用于匹配不同上游 endpoint。
- 输出控制:可选
seed、JSON object 与完整 JSON Schema structured output。
- Copilot Agent 的
tools / tool_choice 直接透传;图片以 OpenAI-compatible data URL 发送。
- OpenRouter 路由设置包括 provider order、fallback、
require_parameters、data collection 与 ZDR。默认开启 require_parameters,避免上游静默忽略参数。
- 未暴露 temperature、top_p、stop、verbosity、logprobs 或 parallel tools,因为当前 OpenRouter 模型元数据没有声明它们。
Sampling 默认使用模型自身默认值。厂商建议不要同时修改 temperature 和 top_p,所以设置里通过 samplingMode 保证每次只发送一个。
GPT 工具调用限制
Friday 当前只开放 /v1/openai/native/chat/completions;对应的 /responses 路径实测返回 404。GPT-5.6 Chat Completions 在 function tools 与非 none reasoning 同时出现时会返回 400。因此:
- 普通聊天使用用户选择的 effort。
- Copilot 发送 tools 时,扩展自动将 GPT effort 调整为
none,确保 Agent 工具链可用。
DeepSeek 工具调用限制
DeepSeek thinking 模式拒绝 tool_choice=required,但 auto 能正常产生工具调用。扩展只在 thinking 模式把 Copilot 的 required 映射为 auto;关闭 thinking 后保留 required。
未暴露或谨慎暴露的参数
- GPT-5.6 官方已有
max effort,但 Friday 当前只接受到 xhigh,所以未暴露 max。
- GPT 的旧
max_tokens 被 Friday 接受但不限制输出,扩展改用已验证生效的 max_completion_tokens。
- GPT-5.6 明确拒绝
stop,因此设置中不提供。
- Gemini
thinking_budget 已被 Google 标记为不推荐,而且 Friday 测试中没有可验证的预算效果,因此不提供。
- Gemini JSON mode 在重复测试中有不稳定结果,保留为实验性设置且默认关闭。
- Kimi K3 的 temperature=1、top-p=0.95、n=1 和 penalties=0 是官方固定值;Friday 会拒绝修改,因此不提供设置。Friday 对部分非官方 effort/超大输出值会宽松返回 200,扩展仍按 Moonshot 官方枚举和上界限制。
- Kimi K3 的 logprobs 请求被 Friday 接受但不返回 logprobs,非法
top_logprobs=21 也未被校验,判定为代理忽略,因此不暴露。
- 当前 VS Code 1.134 的 Language Models 管理页会把同一自定义 provider 的
vision 能力错误地显示到全部模型。扩展只为 GPT/Gemini/Kimi/DeepSeek Vision 声明图片能力,并在 GLM/普通 DeepSeek 收到图片时主动拒绝。
- 请求 ID、最终用户 ID、缓存资源 ID、服务等级和供应商内置工具等并非 Copilot Language Model Provider 的通用生成控制项,不由此扩展伪造或代管。
验证
npm install
npm test
npm run probe
npm run probe:openrouter
npm run package
- 15 项单元测试覆盖两个 provider 的模型目录、Friday 五种请求适配、OpenRouter 请求适配、DeepSeek vision detail、tool fallback 和 SSE。
- 151 项真实参数探测覆盖正常值、非法边界、思考档位、最大输出、stop、JSON、logprobs、tools、并行 tools 和真实图片输入。
- 12 项由编译后插件请求构造器生成的真实烟测覆盖六个模型的文本流和工具调用,全部通过。
- 9 项 OpenRouter 真实探测全部通过,覆盖 reasoning、exclude、context、pro mode、
max_completion_tokens / max_tokens、seed、JSON、JSON Schema、完整 tool call → tool result → final answer 循环和真实 PNG 图片;请求由编译后的插件构造器生成。
deepseek-v4-flash-vision-exp 已按 DeepSeek 官方契约配置;2026-08-24 Friday 实测遇到持续 429,按使用者要求跳过限流等待,未将 429 误记为模型不支持。
完整结果见 artifacts/friday-probe-results.json、artifacts/friday-focused-probe-results.json、artifacts/friday-kimi-k3-probe-results.json、artifacts/friday-kimi-k3-logprobs-results.json、artifacts/friday-built-request-smoke.json 和 artifacts/openrouter-gpt-5.6-luna-probe-results.json。这些文件不包含 API Key、提示正文、回答正文或 reasoning 正文。
发布
# 完整测试后生成 .release/models-for-copilot-<version>.vsix
npm run release
# 要求 Git 工作区干净;打包后发布到 package.json 中的 publisher
VSCE_PAT=... npm run release:publish
发布脚本从 package.json 读取扩展名称、版本和 publisher,先运行完整测试,再生成唯一确定的 VSIX。没有 PAT 时,也可以把 npm run release 生成的同一个文件上传到 VS Code Marketplace 管理页。
官方参数依据
VS Code API 稳定性
Provider 注册、模型发现、文本流、tools 和 image input 使用 VS Code 正式 API。模型选择器里的自定义 effort schema 和 Thinking block 仍是运行时兼容能力;扩展未声明 enabledApiProposals,会先检测再使用。缺少这些能力时,基础模型调用仍然工作,并回退到 Settings 中的默认 effort。
安全
- API Key 按 provider 分开保存在 VS Code SecretStorage,或从各自进程环境变量读取。
- 只有选中相应模型并发送消息时,提示、选中上下文、工具定义、工具结果和附件才会发到配置的 Friday 或 OpenRouter endpoint。
- 扩展不收集 telemetry。
License
MIT