Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>Kai CENew to Visual Studio Code? Get it now.
Kai CE

Kai CE

suisrc

|
2 installs
| (0) | Free
基于 customendpoint 模型供应商重构的对话模型供应商。模型配置与 API Key 明文保存在 settings.json(kaicustomendpoint.models)中,避免 Web 版本 chatLanguageModels.json 仅存于浏览器 IndexedDB 导致刷新后丢失的问题。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Kai CE

基于 VS Code customendpoint 模型供应商重构的对话模型供应商扩展。

解决的问题

Web 版本的 VS Code 将 chatLanguageModels.json 保存在浏览器的 IndexedDB 中,刷新页面或更换浏览器后配置即丢失;API Key 出于安全设计也只保存在内存中(刷新即丢)。

本扩展将模型配置与 API Key 明文保存在 settings.json(kaicustomendpoint.models),由 VS Code 原生持久化,并可随 Settings Sync 同步,刷新不再丢失。

⚠️ 安全提示:API Key 为明文存储。请勿将含密钥的 settings.json 提交到代码仓库或分享给他人,建议使用 [user-data] 在浏览器缓存中存储 kaicustomendpoint.secrets 内容, 服务器上只存储 kaicustomendpoint.models 信息。

然后在 VS Code 中通过「开发主机:重新加载窗口」或 F5 调试加载本扩展目录。

配置

在 settings.json 中配置 kaicustomendpoint.models,结构与 chatLanguageModels.json 保持一致(provider groups 数组),可直接迁移:

{
  // 密钥映射表,建议使用 user-data 存储,与 models 分开存储
  "kaicustomendpoint.secrets": {
    "alibaba": "sk-xxxxxxxxxxxx",
    "deepseek": "sk-xxxxxxxxxxxx",
    "bigmodel": "sk-xxxxxxxxxxxx"
  },
  // 模型配置中引用
  "kaicustomendpoint.models": [
    {
      "name": "alibaba",
      "vendor": "customendpoint",
      "apiKey": "${input:chat.lm.secret.alibaba}",
      "apiType": "messages",
      "models": [
        {
          "id": "qwen3.7-plus",
          "name": "kai-qwen3.7-plus",
          "url": "https://dashscope.aliyuncs.com/apps/anthropic",
          "toolCalling": true,
          "vision": true,
          "maxInputTokens": 256000,
          "maxOutputTokens": 16000,
          "supportsReasoningEffort": ["low", "medium", "high", "xhigh"]
        }
      ]
    },
    {
      "name": "deepseek",
      "vendor": "customendpoint",
      "apiKey": "${input:chat.lm.secret.deepseek}",
      "apiType": "messages",
      "models": [
        {
          "id": "deepseek-v4-flash",
          "name": "kai-deepseek-v4-flash",
          "url": "https://api.deepseek.com/anthropic",
          "toolCalling": true,
          "vision": false,
          "maxInputTokens": 1000000,
          "maxOutputTokens": 100000,
          "supportsReasoningEffort": ["low", "medium", "high", "xhigh"]
        },
        {
          "id": "deepseek-v4-pro",
          "name": "kai-deepseek-v4-pro",
          "url": "https://api.deepseek.com/anthropic",
          "toolCalling": true,
          "vision": false,
          "maxInputTokens": 1000000,
          "maxOutputTokens": 100000,
          "supportsReasoningEffort": ["low", "medium", "high", "xhigh"]
        }
      ]
    },
    {
      "name": "bigmodel",
      "vendor": "customendpoint",
      "apiKey": "${input:chat.lm.secret.bigmodel}",
      "apiType": "messages",
      "models": [
        {
          "id": "glm-5.2",
          "name": "kai-glm-5.2",
          "url": "https://open.bigmodel.cn/api/anthropic",
          "toolCalling": true,
          "vision": false,
          "maxInputTokens": 1000000,
          "maxOutputTokens": 100000,
          "supportsReasoningEffort": ["low", "medium", "high", "xhigh"]
        }
      ]
    }
  ]
}

从 chatLanguageModels.json 迁移

  1. 复制 chatLanguageModels.json 中的整个数组到 kaicustomendpoint.models
  2. vendor 保持 customendpoint 不变(致敬官方命名,零修改迁移)

字段说明

字段 说明
vendor 固定为 customendpoint(致敬官方命名;本扩展注册 ID 为 kaicustomendpoint)
name 分组名称,模型选择器中用于区分同供应商的多个分组
apiKey API Key,支持两种写法:明文(如 "sk-xxxx")或引用("${input:chat.lm.secret.<id>}",从 kaicustomendpoint.secrets 查找);留空则不带 Authorization 头
apiType chat-completions(默认)/ responses / messages(均完整支持)
url Base URL,支持显式 API 路径;自动拼接 /v1 + API 路径
models[] 模型列表,字段与 customendpoint 一致(id / name / url / apiType / maxInputTokens / maxOutputTokens / contextWindow / toolCalling / vision / thinking / streaming / requestHeaders / modelOptions)

如果不想将 API Key 直接写在模型配置中,可以使用引用语法将密钥分离到 kaicustomendpoint.secrets: 引用语法 ${input:chat.lm.secret.<id>} 与 VS Code Copilot 的 chatLanguageModels.json 兼容,迁移时无需修改 apiKey 引用。

自定义请求头

requestHeaders 可用于自定义网关的鉴权方式(如 x-api-key),并允许覆盖 authorization 与 api-key:

{
  "id": "my-model",
  "requestHeaders": {
    "x-api-key": "my-secret"
  }
}

当前支持范围

  • ✅ chat-completions API:文本、工具调用(tool calls)、图片输入(vision)、流式输出
  • ✅ responses API:文本、工具调用(function call)、图片输入(vision)、流式输出
  • ✅ messages API(Anthropic 兼容):文本、工具调用(tool use)、图片输入(vision)、流式输出
  • ✅ 内联补全(inline completion / ghost text):FIM(prompt+suffix)格式,独立于 Copilot 登录/订阅

内联补全配置

通过 kaicustomendpoint.inlineCompletion 配置补全(可选,未配置则不注册补全 provider):

{
  "kaicustomendpoint.inlineCompletion": {
    "pattern": "**",
    // 可选:限定语言(字符串或数组)
    // "language": ["typescript", "javascript"],
    // 可选:提示词模板,支持 {prefix} / {suffix} / {languageId};缺省为标准 FIM
    // "prompt": "/* {languageId} */\n{prefix}",
    "model": {
      "apiKey": "${input:chat.lm.secret.deepseek}",
      "id": "deepseek-v4-flash",
      "name": "fim-deepseek-v4",
      "url": "https://api.deepseek.com/beta/completions",
      "defaultReasoningEffort": ""
    }
  }
}

补全请求使用 FIM(Fill-in-the-Middle)格式,body 为 { model, prompt, suffix, max_tokens, stream }:

  • prompt 为光标前的文本(前缀),suffix 为光标后的文本(后缀)
  • url 必须是全地址(如 https://api.deepseek.com/beta/completions),不做路径拼接
  • 自定义 prompt 模板时,渲染结果写入 prompt 字段,suffix 字段置空
  • 前缀默认保留 2048 token、后缀 512 token(按完整行裁剪,保持代码结构)
  • 请求失败静默(不弹错误提示),与 Copilot 无订阅时行为一致

已知限制

  • API Key 明文存储(设计使然,解决 Web 刷新丢失问题);可通过 kaicustomendpoint.secrets + 引用语法分离密钥
  • editTools / Thinking Effort picker 依赖 proposed API(chatProvider),需通过 vsix 安装生效;发布到 Marketplace 时需移除 enabledApiProposals
  • 内联补全为一次性返回完整补全(stable API 不支持 AsyncIterable 渐进式渲染,那是 Copilot 内部私有通道)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft