编码工具
Visual Studio Code
通过 Custom Endpoint 提供商在 VS Code 聊天中使用 TokenLab 模型
概览
VS Code 聊天可以通过 Custom Endpoint(自带 key,BYOK)接入你自己的模型提供商。本页通过 Chat Completions API 接入 TokenLab。
- 聊天不需要 Copilot 订阅。 VS Code 的 BYOK 模型无需登录 GitHub 即可使用。
- 部分功能仍需 GitHub: 行内建议(代码补全)、语义搜索以及其他基于 embedding 的功能不由 BYOK 模型提供,TokenLab key 不能替代它们。
- Copilot Business 或 Enterprise 用户:需要管理员允许 Bring Your Own Language Model Key in VS Code 策略。
准备
- 带 Chat 视图的最新稳定版 VS Code。
- 一个 TokenLab API key(获取)。
- 一个支持
openai_chat_completions且支持工具调用的模型(Agent 模式只列出支持工具调用的模型)。模型详情页会同时写明这两点:API 格式里有 Chat Completions API,能力里有 Tool use,例如 GPT-5.6 Luna。
添加 TokenLab
- 在 Chat 视图中打开模型选择器,选择 Manage Language Models(齿轮图标);或在命令面板中运行 Chat: Manage Language Models。
- 选择 Add Models → Custom Endpoint。
- VS Code 会要求填写 Group Name。输入框里默认填的是
Custom Endpoint,把它改成TokenLab,按回车。 - 随后直接弹出标题为 TokenLab: API Key 的输入框。粘贴你的 TokenLab API key,按回车。VS Code 会把 key 保存在它的密钥存储(secret storage)中。
- 如果 VS Code 询问 API 类型,选择 Chat Completions。这一步可能不会出现;下面文件里的
apiType同样会设定它。 - VS Code 会打开
chatLanguageModels.json。保留向导生成的apiKey一行(它指向密钥存储中的 key),确认apiType为chat-completions,并把models列表改成下面的样子,然后保存。
请在向导中填写 key。直接写进
chatLanguageModels.json的 key 不会被发送,请求会因缺少Authorization请求头而失败。
[
{
"name": "TokenLab",
"vendor": "customendpoint",
"apiKey": "${input:tokenlabApiKey}",
"apiType": "chat-completions",
"models": [
{
"id": "gpt-5.6-luna",
"name": "GPT-5.6 Luna (TokenLab)",
"url": "https://api.tokenlab.sh/v1/chat/completions",
"toolCalling": true,
"vision": true,
"maxInputTokens": 200000,
"maxOutputTokens": 32000
},
{
"id": "claude-sonnet-5-5",
"name": "Claude Sonnet 5.5 (TokenLab)",
"url": "https://api.tokenlab.sh/v1/chat/completions",
"toolCalling": true,
"vision": true,
"maxInputTokens": 200000,
"maxOutputTokens": 32000
},
{
"id": "gpt-6.1-sol",
"name": "GPT-6.1 Sol (TokenLab)",
"url": "https://api.tokenlab.sh/v1/chat/completions",
"toolCalling": true,
"vision": false,
"maxInputTokens": 200000,
"maxOutputTokens": 32000
}
]
}
]说明:
- URL 要写完整,包含
/chat/completions。带有明确 API 路径的 URL,VS Code 会原样使用。 - 使用 Chat Completions 类型时,VS Code 发送
Authorization: Bearer <key>,这正是 TokenLab 所需要的。不要再添加自定义鉴权请求头。 id是请求中发送的 TokenLab 模型 ID。任何accepted_request_formats包含openai_chat_completions的在售模型都可以使用。- Token 上限:VS Code 把
maxInputTokens + maxOutputTokens视为上下文窗口。上面的数值比较保守,你可以按模型详情页上的上限调高。上下文越大,每次请求的费用越高。 - 如果模型没有出现在选择器中,请重启 VS Code。
不登录 GitHub 时
标题生成、提交信息等后台“utility”任务默认使用 GitHub Copilot 模型。没有登录 Copilot 时,把 chat.utilityModel 和 chat.utilitySmallModel 设为 TokenLab 模型(small 选一个快速、便宜的模型),或者把 chat.byokUtilityModelDefault 设为 Main Agent Model。这些后台调用会从你的 TokenLab 余额扣费。
验证
- 在模型选择器中选择 GPT-5.6 Luna (TokenLab)(低成本模型,适合第一次测试)。
- 先问一个只读问题,例如:
Summarize the top-level structure of this workspace. Do not modify files. - 在运行 Agent 任务之前,核对回复以及对应的请求记录。
保存配置或列出模型并不能证明 key 可用。发送一次提示会消耗 TokenLab 余额。
故障排查
- 缺少 Authorization 请求头: key 不在密钥存储中。重新执行 Add Models → Custom Endpoint,在向导中填写 key,而不是写在 JSON 文件里。
- 401 / 认证失败: 在 Manage Language Models → TokenLab 分组旁的齿轮图标中重新填写 key。
- 找不到模型:
id必须是准确的 TokenLab 模型 ID;请查看模型详情页。 - Agent 模式中看不到模型: 设置
"toolCalling": true,并使用支持工具调用的模型。 - Messages 或 Responses API 类型: 本页暂未涵盖,请使用 Chat Completions。
不要把 API key 提交到 chatLanguageModels.json 或任何被 Git 跟踪的文件;文件中保留 ${input:...}。