在 VS Code 中使用 GenStudio 模型
VS Code 可以使用 GenStudio API Key 接入模型,不要求订阅 GitHub Copilot。请根据当前站点提供的接入方式选择以下路径;语义搜索、行内代码补全以及依赖嵌入模型的功能是否可用,仍取决于 GitHub 账户和 Copilot 服务。
- InfiniAI 扩展会自动发现当前账号可用的模型、为模型选择兼容协议,并在多轮对话中保留模型继续推理所需的内容。使用 Agent、Claude 或需要跨轮保留思考内容的模型时,优先选择此方式。
- VS Code Custom Endpoint无需安装提供方扩展,但需要在
chatLanguageModels.json中逐个维护模型 ID、协议、能力和 Token 限制。适合只需维护少量模型,且模型不要求跨轮保留思考内容的场景。
获取 API Key 和端点
创建以 sk- 开头的 GenStudio API Key。密钥只在 VS Code 的密钥输入框中填写,不要把真实密钥写入工作区文件、文档示例或分组名称。
VS Code 接入使用以下端点:
| 用途 | 地址 |
|---|---|
| 发现模型 | https://cloud.infini-ai.com/maas/v1/models |
| OpenAI Chat Completions | https://cloud.infini-ai.com/maas/v1/chat/completions |
| Anthropic Messages | https://cloud.infini-ai.com/maas/v1/messages |
模型 ID、上下文窗口、最大输出长度、多模态和工具调用能力会随模型变化。配置 Custom Endpoint 前,请先在模型广场查看模型卡片,或调用模型发现端点,确认当前账号可用的模型及其能力。
通过 InfiniAI 扩展接入
安装 InfiniAI Provider for VS Code 后,可以直接在 VS Code Chat 和 Agent 中选择 GenStudio 模型。请使用 VS Code 1.130.0 或更高版本;配置 Agent 可用性需要扩展 0.6.10 或更高版本。
安装扩展
- 在 VS Code 中安装 InfiniAI Provider for VS Code。
- 升级扩展后,如果 扩展 视图提示需要重启,请选择 Restart Extensions 或运行 Developer: Reload Window。
安装成功后,活动栏会显示 InfiniAI,其中包含 模型 和 用量 视图。
添加提供方分组并保存 API Key
- 按 Cmd+Shift+P / Ctrl+Shift+P 打开命令面板,运行 InfiniAI: 添加提供方分组。
- 阅读分组名称说明,选择 打开语言模型。
- 在 Language Models 窗口中选择 Add Models > InfiniAI。
- 输入分组名称。只有一个 API Key 时保留默认名称
InfiniAI;有多个 API Key 时使用Work、Personal等用途名称区分。不要把 API Key 或其他秘密写入分组名称。 - 在随后出现的 API 密钥 输入框中粘贴 GenStudio API Key。
分组名称仅用于在 VS Code 中区分不同的 API Key,不会发送给 GenStudio。API Key 会保存到该分组的凭据存储中,在 VS Code 重启和扩展升级后继续有效。需要轮换、重命名或删除分组时,运行 InfiniAI: 打开 VS Code 管理模型,使用分组的操作菜单。
注意
同一模型 ID 同时存在于多个 InfiniAI 分组时,普通 Chat 会保留所选模型与分组的凭据关系;Agents 窗口只保留其中一个分组。需要在同名模型之间切换 API Key 时,请使用普通 Chat,并在选择模型时确认分组。
让模型出现在模型选择器和 Agent 模式中
模型出现在普通 Chat 模型选择器中需要同时通过两层控制:InfiniAI 模型 视图中的提供方筛选(可运行 InfiniAI: 重置 InfiniAI 提供方模型筛选 重新包含全部模型),以及 InfiniAI: 打开 VS Code 管理模型 中的眼睛图标。
Agent 模型选择器只显示支持工具调用的模型,因此模型可以在普通 Chat 中可见,但不出现在 Agent 模式中。扩展 0.6.10 或更高版本默认在 Agent 中启用 claude-* 模型和其他已确认支持工具调用的模型。如果模型没有自动显示,但模型卡片确认其支持工具调用,请运行 InfiniAI: 配置 Agent 可用性,为该模型选择 Enable for Agent。此设置只控制模型是否出现在 Agent 模型选择器中,不能为模型增加工具调用能力。
如果使用 Agents 窗口,还需要启用 chat.agentHost.byokModels.enabled 并重启 Agent Host。VS Code 1.130 的 Agents 窗口不显示 InfiniAI 的逐模型配置控件;请先在普通 Language Models 窗口中保存思考强度、思考开关和输出限制,再启动 Agent 会话。
为 Claude 模型选择 Anthropic 协议
发送 Claude 请求前,在 InfiniAI 模型 视图中确认有效协议为 Anthropic Messages。如果显示其他协议,运行 InfiniAI: 切换模型协议,选择目标 Claude 模型,再选择 Anthropic Messages。协议选择会全局应用于相同的模型 ID,且与 Agent 可用性互不影响。
保留多轮思考内容
部分 Kimi、DeepSeek、GLM、MiniMax、MiMo 和 Claude 模型要求后续请求同时包含前面轮次的思考内容。InfiniAI 扩展会保留并重新发送 OpenAI reasoning_content、MiniMax reasoning_details 或 Anthropic thinking 内容,使多轮对话和连续工具调用可以继续。
infiniai.thinkingReplayStore 默认为 localPlaintext,会把需要重新发送的思考内容以明文保存在本机扩展存储中,并在 VS Code 重载或重启后继续用于原会话。如果组织策略不允许在磁盘上保存这些内容,请设置为 memory;重载或重启后,请开始新会话。
运行 InfiniAI: 清除思考回放缓存 会立即删除已保存的思考内容,且不能撤销。清除后请开始新会话;依赖这些内容的旧会话无法继续。
检查模型发现和连接
- 运行 InfiniAI: 刷新模型列表。刷新失败时,模型列表会保留上次成功结果;请使用错误通知中的管理模型或打开日志操作继续检查。
- 在 Chat 中运行
@infiniai /doctor,检查提供方分组、发现端点、缓存状态和最近一次已脱敏错误;需要查看模型的有效协议和 Token 限制时运行@infiniai /models refresh,需要测试连通性时运行@infiniai /test。
诊断输出默认不记录 API Key、提示词或完整响应正文;分享日志前仍应检查组织专用端点名和模型 ID。
更多配置
逐模型请求控件(Max output tokens、Reasoning effort、Thinking mode)、图片输入覆盖、分组重命名与密钥轮换、思考回放缓存的保留设置等更多配置项,请参见扩展的 README。全部命令均可通过在命令面板中输入 InfiniAI: 查找。
通过 VS Code Custom Endpoint 接入
VS Code 的 Bring Your Own Key(BYOK)功能可以连接兼容的 Chat Completions、Responses 或 Messages 端点。以下步骤使用 Custom Endpoint 手动添加 GenStudio 模型,无需安装提供方扩展。
注意
组级只写 url、不写 models 数组时,VS Code 会查询 {url}/models 自动发现模型,但发现结果中的能力和 Token 限制是启发式推测值。生产使用建议在 models 数组中显式填写模型 ID、协议、能力和 Token 限制。
确认 VS Code 和组织策略
- 使用 VS Code
1.130.0或更高版本。 - 准备 GenStudio API Key 和目标模型 ID。
- 如果使用 Copilot Business 或 Enterprise,请确认组织管理员没有禁用 BYOK。
- 如果使用 Agents 窗口,请启用
chat.agentHost.byokModels.enabled,然后重启 Agent Host。
添加 OpenAI Chat Completions 模型
在 Chat 模型选择器中选择管理模型齿轮,或从命令面板运行 Chat: Manage Language Models。
选择 Add Models > Custom Endpoint。
输入分组名称,例如
GenStudio OpenAI。这是本地显示标签,不会发送给 GenStudio。输入显示名称和 API Key,API 类型选择 Chat Completions。
VS Code 打开
chatLanguageModels.json后,按模型卡片修改以下配置并保存:language-json[ { "name": "GenStudio OpenAI", "vendor": "customendpoint", "apiKey": "${input:genstudioApiKey}", "apiType": "chat-completions", "models": [ { "id": "kimi-k3", "name": "Kimi K3", "url": "https://cloud.infini-ai.com/maas/v1/chat/completions", "toolCalling": true, "vision": true, "thinking": true, "supportsReasoningEffort": ["low", "high", "max"], "contextWindow": 1048576, "maxOutputTokens": 65536 } ] } ]
此处的模型和 Token 数值只是配置示例。保存前,请将模型 ID、contextWindow、maxOutputTokens、toolCalling 和 vision 改为当前账号模型卡片中显示的值。
thinking: true 不会向请求体发送 thinking 参数,它只做两件事:让 VS Code 在后续请求中把历史思考内容以 reasoning_content 回传,以及自动从请求中移除 temperature。kimi-k3 的思考始终开启且不接受 thinking.type/thinking.keep 等请求参数,同时要求多轮对话原样回传 reasoning_content,因此该字段必须保留;VS Code 在 Chat Completions 协议下本来就不发送 thinking 参数,两者不冲突。所选模型不支持思考时,请删除 thinking 和 supportsReasoningEffort 字段。
kimi-k3 的推理强度取值为 low、high、max(服务端默认 max)。声明 supportsReasoningEffort 后,模型配置中会出现 "Thinking Effort" 控件,选中的值以顶层 reasoning_effort 参数发送,与 kimi-k3 的参数约定一致;不选择时不发送该参数,由服务端使用默认值。
添加 Anthropic Messages 模型
Claude 模型使用 GenStudio Anthropic Messages 端点时,必须把 API 类型设置为 Messages,并使用完整的 /v1/messages 地址。
再次选择 Add Models > Custom Endpoint。
输入分组名称,例如
GenStudio Anthropic。输入显示名称和 API Key,API 类型选择 Messages。
在
chatLanguageModels.json中按模型卡片修改并保存:language-json[ { "name": "GenStudio Anthropic", "vendor": "customendpoint", "apiKey": "${input:genstudioApiKey}", "apiType": "messages", "models": [ { "id": "claude-sonnet-4-6", "name": "Claude Sonnet 4.6", "url": "https://cloud.infini-ai.com/maas/v1/messages", "toolCalling": true, "vision": true, "contextWindow": 200000, "maxOutputTokens": 64000 } ] } ]
只有在模型卡片确认支持工具调用和图片输入时,才保留 toolCalling: true 和 vision: true。Agent 模型选择器会隐藏未声明工具调用能力的模型,但把字段改为 true 不会为模型增加该能力。
配置认证请求头
VS Code 按 API 类型自动选择认证头:Chat Completions 发送 Authorization: Bearer <API Key>,Messages 发送 x-api-key: <API Key> 和 anthropic-version。多数兼容端点使用默认行为即可,无需额外配置。
如果端点要求不同的认证方式(例如 Messages 端点也要求 Bearer Token,或经过网关需要自定义头),在模型的 requestHeaders 中覆盖,可用 ${apiKey} 引用已保存的密钥:
{
"id": "claude-sonnet-4-6",
"requestHeaders": {
"Authorization": "Bearer ${apiKey}"
}
}requestHeaders 是模型级字段。设置了 Authorization、x-api-key、api-key 等常见认证头后,VS Code 会停止发送默认认证头,避免重复凭据。不要把真实密钥写进 chatLanguageModels.json,始终通过 ${apiKey} 引用。
校正 Context Size 和模型能力
contextWindow 表示输入与输出共享的总上下文窗口,maxOutputTokens 表示一次请求允许的最大输出。VS Code 会用 contextWindow - maxOutputTokens 计算输入预算。如果改用 maxInputTokens,请分别填写输入和输出上限,不要把完整的共享窗口同时填入两个字段。
不建议只填 maxInputTokens 而不填 contextWindow:此时 VS Code 会把 maxInputTokens + maxOutputTokens 之和当作总窗口,同时用于界面显示的 Context Size 和多轮对话的自动压缩预算。例如为 kimi-k3 填写 maxInputTokens: 1032192 和 maxOutputTokens: 1048576,界面会显示约 2M 的窗口;设置 contextWindow: 1048576 可以同时修正显示值和压缩预算。
本文示例按 kimi-k3 的 1,048,576 Token 共享窗口配置。配置 Custom Endpoint 时,使用 contextWindow: 1048576,并根据任务选择小于该窗口的 maxOutputTokens;如果模型广场显示不同值,请以当前模型卡片为准。
以下字段直接影响 VS Code 的模型展示和筛选:
toolCalling:是否允许模型出现在 Agent 模型选择器中。vision:是否允许附加图片输入。contextWindow:输入和输出共享的总窗口。maxOutputTokens:单次请求的输出上限。
配置思考和推理强度
Custom Endpoint 模型默认不启用思考能力。模型卡片确认支持思考或推理强度时,按协议添加以下字段:
thinking:设为true启用思考,并在 Language Models 中显示思考开关。Responses 协议中,只有thinking: true时才会发送推理相关字段。supportsReasoningEffort:声明支持的推理强度列表(如["low", "medium", "high"]),模型选择器会显示 "Thinking Effort" 控件。reasoningEffortFormat:推理强度参数的发送格式,需与apiType匹配——"messages"发送output_config.effort,"chat-completions"发送顶层reasoning_effort,"responses"发送reasoning.effort。不设置时默认值跟随apiType,一般无需显式填写。adaptiveThinking:仅 Messages 协议生效。设为true后由模型自行决定是否思考及思考预算,可用minThinkingBudget和maxThinkingBudget限制预算范围。这些字段对其他协议无效,会被静默忽略。
启用思考后,VS Code 会按协议保留跨轮思考内容,无需额外配置:Chat Completions 协议在 thinking: true 时把历史思考以 reasoning_content 回传(Kimi、DeepSeek 等模型要求该行为);Messages 协议回放带签名的 thinking block;Responses 协议通过 previous_response_id 链式关联(zeroDataRetentionEnabled: true 时关闭)。三种协议都支持跨轮思考保留,不存在必须切换到 Responses 才能保留思考的限制。
Messages 协议示例:
{
"id": "claude-sonnet-4-6",
"thinking": true,
"adaptiveThinking": true,
"supportsReasoningEffort": ["low", "medium", "high", "max"],
"reasoningEffortFormat": "messages"
}启用模型并开始对话
- 保存
chatLanguageModels.json。如果新模型没有立即出现,重启 VS Code。 - 打开 Language Models,确认目标模型的眼睛图标为可见。
- 从 Chat 模型选择器中选择该模型。
- 如果普通 Chat 可见但 Agent 模式不可见,请检查
toolCalling,并在模型卡片中确认该模型支持工具调用。
BYOK 可用于 Chat、编辑和具备相应能力的 Agent 流程,但不提供标准行内代码补全。需要为编辑器 Inline Chat 指定默认模型时,设置 inlineChat.defaultModel。
配置后台任务模型
VS Code 使用轻量模型生成标题、提交信息和意图分类。未登录 GitHub、只使用 BYOK 时,内置后台模型不可用,可配置:
chat.utilityModel:标题、摘要、设置搜索和 Git review 等通用任务。chat.utilitySmallModel:提交信息、重命名、分支名和意图检测等轻量任务。chat.byokUtilityModelDefault:选择 BYOK 主 Agent 模型时,决定后台任务默认使用主模型、GitHub Copilot 模型或不使用默认模型。
排查 VS Code 接入问题
InfiniAI 模型列表为空或刷新失败
- 运行 InfiniAI: 打开 VS Code 管理模型,确认至少存在一个 InfiniAI 提供方分组。
- 在分组操作菜单中选择 Update API Key,确认密钥有效。
- 运行 InfiniAI: 刷新模型列表。刷新失败时,使用错误通知中的管理模型或打开日志操作检查 API Key 和错误信息,然后重试。
- 运行
@infiniai /doctor,检查发现地址是否为https://cloud.infini-ai.com/maas/v1/models。 - 清空
infiniai.modelDiscoveryUrl,除非您明确需要自定义发现端点。 - 检查 InfiniAI 提供方筛选和 VS Code 可见性两个独立层。
刷新超时后,VS Code 仍会显示上次成功获取的模型列表。请查看 InfiniAI 日志并重试;无需删除提供方分组或重新安装扩展。
模型没有出现在 Agent 模式中
- 先确认模型在普通 Chat 模型选择器中可见。
- 在 Language Models 中使用
@capability:agent或@capability:tools检查能力。 - 使用 Custom Endpoint 时,确认
toolCalling为true且模型实际支持工具调用。 - 使用 Agents 窗口时,确认
chat.agentHost.byokModels.enabled已启用并重启 Agent Host。
把所有模型设为可见只会通过可见性筛选,不会绕过 Agent 的工具调用能力筛选。
使用 InfiniAI 扩展检查 Agent 可用性
运行 InfiniAI: 配置 Agent 可用性,查看当前能力来源。只有在模型卡片确认支持工具调用时,才选择 Enable for Agent。
Claude 请求返回协议或认证错误
- 使用 Custom Endpoint 时,确认
apiType为messages,URL 为https://cloud.infini-ai.com/maas/v1/messages。 - 在 Language Models 中更新当前提供方或 Custom Endpoint 的 API Key。
使用 InfiniAI 扩展检查 Claude 协议
在 Language Models 中更新 InfiniAI 提供方分组的 API Key;infiniai.* 设置不保存提供方分组的 API Key。在模型悬停信息中确认有效协议为 Anthropic。如果不是,请运行 InfiniAI: 切换模型协议,选择 Anthropic 或恢复自动选择。
kimi-k3 显示约 2M Context Size
VS Code 1.130 可能把 kimi-k3 的 Context Size 显示为约 2M。请求仍应遵循模型卡片中的共享上下文窗口,不要把界面显示的约 2M 直接用作请求预算。
使用 InfiniAI 扩展时,请确保输入与请求输出之和不超过模型卡片中的窗口上限。使用 Custom Endpoint 时,如果模型卡片显示 1,048,576 Token,请设置 contextWindow: 1048576,并另行设置较小的 maxOutputTokens。设置 contextWindow 后,界面 Context Size 和对话自动压缩预算都会以共享窗口为准;推导规则见校正 Context Size 和模型能力。
升级扩展后仍看到旧行为
- 在 扩展 视图确认已安装版本,并完成 Restart Extensions。
- 运行
code --list-extensions --show-versions,确认drewzhao.infiniai-copilot的版本。 - 运行
@infiniai /doctor和@infiniai /models refresh。
如果仍看到旧行为,请不要手动删除扩展目录。请在 Language Models 中检查提供方分组、模型协议和可见性;问题仍未解决时,请打开 InfiniAI 日志并将检查后的诊断信息提供给支持人员。
Custom Endpoint 模型没有出现
VS Code 的 Custom Endpoint 不提供连接诊断工具,配置错误时不会给出具体的连通性报错,请按以下清单逐项排查:
- 保存
chatLanguageModels.json后重启 VS Code。 - 确认
vendor为customendpoint,apiType与完整 URL 匹配。 - 确认
maxOutputTokens已设置,并且同时设置了contextWindow或maxInputTokens。 - 运行 Chat: Manage Language Models,检查配置语法错误和眼睛图标可见性。