LAI Compatible Provider for Copilot
让 VS Code Copilot 接入本地模型(llama.cpp / Ollama / vLLM)和云端模型(OpenAI / Anthropic / Gemini 等)的扩展,支持完整的工具调用、视觉理解与思考能力。
| 📥 安装 | 🏠 本地模型:llama.cpp · Ollama · vLLM | ☁️ 云端模型:OpenAI · Anthropic · Gemini | 🔧 工具调用 | 👁️ 视觉理解 | 🤔 思考模式(Reasoning Models) |
这个工具有什么用?
VS Code 内置的 Copilot Chat 默认只能使用 GitHub 官方的模型。本扩展把 Copilot Chat 变成通用的 AI 聊天入口,让你可以在同一个界面上使用:
- 本地模型:llama.cpp、Ollama、vLLM 等本地服务
- 云端模型:OpenAI、Anthropic、Gemini、DeepSeek 等 OpenAI 兼容接口
支持的功能:
- ✅ 工具调用 — 自动调用 Copilot 的工具(读文件、搜索代码、执行命令等)
- ✅ 视觉理解 — 直接发送图片给支持视觉的模型
- ✅ 思考/推理 — 支持带推理能力的模型,显示思考过程
- ✅ 多轮对话 — 正确处理工具结果与上下文
- ✅ 上下文管理 — 可配置历史消息数量、系统提示长度、上下文压缩
快速开始(以本地模型为例)
1. 启动本地模型服务
llama.cpp(推荐 Qwen 模型加 --jinja 参数):
llama-server \
--model /path/to/qwen3.6.gguf \
--mmproj /path/to/mmproj-f16.gguf \
--host 0.0.0.0 \
--port 8080 \
--n-gpu-layers 999 \
--ctx-size 131072 \
--jinja \
--api-key sk-xxx
Ollama:
ollama serve
vLLM:
vllm serve Qwen/Qwen3-35B-A3B --port 11000
2. 在 VS Code 中配置模型
在 .vscode/settings.json(或用户设置)中添加:
{
"laicopilot.models": [
{
"id": "qwen3.6",
"owned_by": "llamacpp",
"apiMode": "llamacpp",
"displayName": "llama Model",
"baseUrl": "http://localhost:8080",
"vision": true,
"context_length": 131072,
"max_tokens": 65536,
"thinking_budget": 1024,
"extra": { "reasoning_watchdog_ms": 90000 }
}
]
}
各字段含义:
| 字段 |
说明 |
id |
模型 ID,显示在 Copilot 模型列表中 |
owned_by |
模型归属(llamacpp / ollama / vllm / openai 等),决定使用哪个 API Key |
apiMode |
API 模式:openai / openai-responses / ollama / anthropic / gemini / llamacpp / vllm |
baseUrl |
模型服务地址 |
vision |
是否支持图片输入 |
context_length |
上下文长度 |
temperature |
采样温度(0-1,默认 0.5) |
3. 开始使用
- 在 Copilot Chat 的模型下拉框中选择配置好的模型
- 开始提问 — 模型会自动调用工具(读文件、搜索代码、分析项目等)
云端模型配置示例
{
"laicopilot.models": [
{
"id": "gpt-4o",
"owned_by": "openai",
"baseUrl": "https://api.openai.com/v1",
"apiMode": "openai",
"temperature": 0.7
}
]
}
云端模型的 API Key 会在首次使用时弹出输入框,安全地存储在 VS Code 的密钥存储中。
其他设置
| 设置项 |
说明 |
|
|
|
laicopilot.baseUrl |
全局默认 Base URL,模型配置中未设 baseUrl 时使用此值(仅当 apiMode="openai") |
|
|
|
laicopilot.delay |
请求间隔(毫秒),避免本地模型过载。设为 0 禁用延迟 |
|
|
|
laicopilot.logLevel |
日志级别:debug / info / warn / error;设为 debug 可追踪详细诊断信息 |
|
|
|
laicopilot.models[].max_history_messages |
只发送最近 N 条消息(含系统提示);0 = 全部,默认不限制。本地模型建议设一个值以避免上下文溢出 |
|
|
|
laicopilot.models[].context_length |
重要:覆盖扩展对服务器上下文的假设。设为服务器的真实 --ctx-size / n_ctx_train,避免自适应 max_tokens 偏保守导致"无可见输出" |
|
|
|
laicopilot.models[].max_system_message_length |
系统提示最大字符数;VS Code Copilot 发送的系统提示通常很大(5000+),本地模型建议截断至合理值。超出时保留开头部分(含重要指令) |
|
|
|
laicopilot.models[].compress_context |
启用智能上下文压缩:提取系统消息关键段落、首尾截断长工具结果、去重连续相同工具调用;零延迟无需额外 API 调用,本地模型强烈推荐设为 true |
|
|
|
laicopilot.autoCompact |
自动上下文压缩(Cline 风格):当上下文接近模型窗口 90% 时,自动用一次额外 LLM 调用把旧消息摘要为续写笔记,保留最近上下文原样。默认 false(关闭)。与 compress_context 不同,此功能会发起一次额外的模型请求 |
|
|
|
laicopilot.autoCompactPreserveRecentTokens |
自动压缩时保留的最近 token 数(原样保留,不摘要)。默认 20000 |
|
|
|
laicopilot.models[].max_tokens |
单次回复的最大 token 数。默认按 context_length * 0.25(最低 32768)自适应计算;显式设置可覆盖默认值。注意:该值是思考+回答的总预算,对 reasoning model 尤为重要 |
|
|
|
laicopilot.models[].thinking_budget |
Reasoning model(如 Qwen-Think、o4-mini-like)的思考 token 上限。设为 -1 禁用推理;0 = 立即结束思考;正数 = 最大思考 token。默认自适应计算为 max_tokens × 12.5%(最低 512,最高 2048)。注意:该值会覆盖服务器的 --reasoning-budget |
|
|
|
laicopilot.models[].temperature / top_p / top_k |
采样参数,直接透传给 API。默认 temperature=0.6、top_p=1、top_k=50(llamacpp)或 top_p=1、无 top_k(ollama/vllm/openai/anthropic/gemini)。覆盖服务器的默认值时建议保持一致以避免冲突 |
|
|
|
laicopilot.models[].apiMode |
API 模式:openai / openai-responses / ollama / anthropic / gemini / llamacpp / vllm。决定使用哪个 provider 类与认证逻辑(如 Anthropic prompt caching) |
|
|
|
laicopilot.models[].owned_by |
模型归属,决定使用的 API Key:openai → laicopilot.apiKey.openai;anthropic → laicopilot.apiKey.anthropic; gemini → laicopilot.apiKey.gemini。本地模型(llamacpp/ollama/vllm)无需设置此字段 |
|
|
|
laicopilot.models[].cache_control |
仅 Anthropic 模式有效:启用 prompt caching breakpoints,将 system message 和最后一个 tool 标记为缓存点;默认 true。上游 provider 拒绝时设为 false |
|
|
|
laicopilot.models[].vision |
是否支持图片输入(用于 Copilot Chat 的视觉理解)。设为 true 后用户可在对话中直接发送图片给模型 |
|
|
|
laicopilot.models[].reasoning_effort |
Reasoning model 推理强度:"none" = 禁用该请求的所有思考过程;其他值透传给 API。设为 "none" 时扩展同时发 thinking_budget_tokens: -1,跳过自适应预算计算 |
|
|
|
laicopilot.models[].extra.reasoning_watchdog_ms |
Reasoning model "卡住"看门狗:流式响应中如果思考超过此毫秒数仍无可见文本输出(仅 reasoning_content),扩展会 POST /v1/chat/completions/control 提前结束推理块,把模型踢到回答阶段。默认 60000ms;设为 0 禁用 |
|
laicopilot.models[].apiKey |
可选:每个模型的独立 API Key(存储在 VS Code Secret Storage)。如果未设置则使用全局密钥 ID(如 laicopilot.apiKey.openai / .anthropic) |
laicopilot.models[].headers |
自定义 HTTP Headers,与默认 headers (Authorization, Content-Type, User-Agent) 合并发送。例如:{"X-API-Version": "v1", "X-Custom-Header": "value"} |
|
|
|
laicopilot.models[].family |
模型家族(如 "gpt-4" / "claude-3" / "gemini"),启用该家族的特定优化行为。默认不指定时使用通用配置 (lai-compatible) |
|
|
|
可视化配置界面 (ConfigView)
本扩展内置了 VS Code Webview UI,提供图形化的模型管理体验:
- 打开方式:在 VS Code 命令面板中搜索
LAI: Open Configuration View
- 功能:
- 📋 添加/编辑/删除模型配置 — 无需手动编辑 JSON,通过表单完成所有设置项的填写与验证
- 🔑 API Key 管理 — 在 UI 中直接输入和存储密钥(不写入配置文件),支持每个模型的独立 API Key
- 🧪 一键测试连接 — 添加模型后点击
Test 按钮,扩展会发送一个简单请求并显示响应结果、延迟与 token 消耗
- 配置视图在 VS Code Webview 中渲染 HTML/CSS/JS UI(位于
src/views/configView.ts),支持实时预览和表单验证
Git Commit Message Generation (GitLens)
本扩展集成了 GitLens 的 commit message generation API:在 VS Code 命令面板中执行 LAI: Generate Commit Message with Copilot,使用你配置的本地或云端模型自动生成 git commit message。支持自定义生成语言(默认英文)和 system prompt。
Retry Mechanism (自动重试)
对于 OpenAI / Anthropic / Gemini 等云模型的 API 错误(如 429, 500, 502, 503),扩展内置了指数退避的重试机制:
- 默认:最多尝试 3 次,间隔 1s;可自定义最大重试次数 (
max_attempts)、间隔时间 (interval_ms)、以及需要合并的 HTTP status codes(如添加 "429", "503")
Thinking Configuration (Zai Provider)
对于支持 Zai thinking mode 的模型:
thinking.type = "enabled" — 启用链式思考模式,输出包含 reasoning_content 和思考过程文本;reasoning_effort: "none" / enable_thinking: false → 禁用该请求的所有思考过程。设为 "disabled" 时扩展同时发 thinking_budget_tokens: -1,跳过自适应预算计算
include_reasoning_in_request = true — 开启后模型会在回复中包含 reasoning_content(如 deepseek-v3.2)
API Key Management (密钥管理)
云端模型的 API Key 不会硬编码在配置中。首次使用时 VS Code Copilot Chat 会弹出输入框,Key 安全存储在 VS Code Secret Storage(OS keychain / Windows Credential Manager):
API Key 管理
云端模型的 API Key 不会硬编码在配置中。首次使用时 VS Code Copilot Chat 会弹出输入框,Key 安全存储在 VS Code Secret Storage(OS keychain / Windows Credential Manager):
| Provider |
存储密钥 ID |
OpenAI (openai / openai-responses) |
laicopilot.apiKey.openai (全局默认;模型级可覆盖为 "laicopilot.apiKey.{provider}") |
Anthropic (anthropic) |
laicopilot.apiKey.anthropic(同上,支持 provider 级别存储) |
Gemini / DeepSeek / Qwen 等 OpenAI 兼容云端 (openai, openai-responses) |
laicopilot.apiKey.openai (全局默认;模型级可覆盖为 "laicopilot.apiKey.{provider}",如 Anthropic provider 级别存储) |
注意:本地服务(llama.cpp / Ollama / vLLM)不需要 API Key。若你的服务器启用了 --api-key sk-xxx,请在模型配置中设置 apiKey: "sk-xxx"。