Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

GCMP - 提供多个国内原生大模型提供商支持的扩展

English | 中文

CI License

通过集成国内主流原生大模型提供商,为开发者提供更加丰富、更适合本土需求的 AI 编程助手选择。 目前已内置支持 智谱AI、MiniMax、MoonshotAI、DeepSeek、阿里云百炼、快手万擎、火山方舟、腾讯云、Xiaomi MiMo、百度千帆、阶跃星辰、蚂蚁百灵、讯飞星辰、LongCat 等原生大模型提供商。 此外,扩展插件已适配支持 OpenAI 与 Anthropic 的 API 接口兼容模型,支持自定义接入任何提供兼容接口的第三方云服务模型

🚀 快速开始

1. 安装扩展

在VS Code扩展市场搜索 GCMP 并安装,或使用扩展标识符:vicanent.gcmp

2. 开始使用

  1. 打开 VS CodeGitHub Copilot Chat 面板
  2. 在模型选择器的底部选择 管理模型,从弹出的模型提供商列表中选择所需的提供商
  3. 若第一次使用,选择提供商后会要求设置 ApiKey,根据提示完成API密钥配置后,即可返回模型选择器添加并启用模型
  4. 在模型选择器中选中目标模型后,即可开始与AI助手进行对话

3. 配置 VS Code 后台实用模型与 GCMP 辅助模型(推荐)

VS Code 1.128+:启动时将自动检测 chat.utilityModelchat.utilitySmallModel 是否已配置。若两者均未配置,会弹窗引导设置。使用非官方 Copilot 模型(BYOK/自定义提供商)时,缺少配置的辅助模型会触发 "No utility model is configured" 报错。

VS Code 在后台使用轻量级模型执行标题生成、提交信息创建、搜索、意图检测等实用任务;GCMP 的提交消息生成、视觉分析等功能也需要独立指定模型。若未手动配置,VS Code 会回退到 Copilot 内置模型,这会消耗月度额度(尤其是免费用户的有限配额);将这些任务指向 GCMP 提供的模型可节省 Copilot 额度给更重要的用途。

💡 快速配置入口:悬停状态栏的 Token 消耗图标,在弹出的每日统计底部文本菜单点击「设置辅助工具模型」,即可打开可视化面板统一配置下列全部模型;也可通过命令面板执行 GCMP: 设置辅助工具模型

展开查看各参数详细说明
{
    // 通用实用任务:标题生成、摘要、意图分类、重命名建议、终端命令/修复/解释、搜索助手、VS Code 问答
    "chat.utilityModel": "gcmp.deepseek/gcmp.deepseek:::deepseek-v4-pro",
    // 轻量实用任务:提交信息、分支名生成、进度消息、待办跟踪(建议用快速低成本模型)
    "chat.utilitySmallModel": "gcmp.deepseek/gcmp.deepseek:::deepseek-v4-flash",
    // 内联聊天(Inline Chat)默认模型
    "inlineChat.defaultModel": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    // Agent 模式中的探索/规划子 Agent(如代码库搜索、方案规划)
    "chat.exploreAgent.defaultModel": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    "chat.planAgent.defaultModel": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    // GitHub Copilot Chat 各专用 Agent(Ask / Implement / Explore)
    "github.copilot.chat.askAgent.model": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    "github.copilot.chat.implementAgent.model": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    "github.copilot.chat.exploreAgent.model": "GLM-4.7 (CodingPlan) (gcmp.zhipu)",
    // GCMP 内置 Commit 消息生成模型
    "gcmp.commit.model": {
        "provider": "zhipu",
        "model": "glm-4.7"
    },
    // GCMP 内置视觉分析模型(必须支持图像输入)
    "gcmp.vision.model": {
        "provider": "zhipu",
        "model": "glm-4.6v"
    }
}

推荐规格:utilitySmallModel 选择响应快的模型(如 deepseek-v4-flash),可配合 maxInputTokens: 16384 等低规格满足快捷任务即可。通用任务(标题生成、摘要等)使用 chat.utilityModel

settings.json 中编辑时,将光标置于值位置,使用 VS Code 智能提示从已注册的模型中选择即可。若未配置这些设置,VS Code 会使用 Copilot 内置模型执行实用任务,这可能会消耗免费用户的 Copilot 月度额度。推荐配置为 GCMP 模型,可避免实用任务占用 Copilot 配额。

也可通过命令面板执行 GCMP: 设置辅助工具模型,在可视化面板中统一配置上述所有模型。

入口快捷方式:悬停状态栏的 Token 消耗图标,在弹出的每日统计底部文本菜单中点击「设置辅助工具模型」即可进入同一面板。

  • chat.utilitySmallModel:轻量实用任务模型(默认 gpt-4o-mini)。覆盖 chat-title(标题)、git-commit-message(提交信息)、git-branch-name(分支名)、inline-progress-message(进度消息)、prompt-categorizer(意图分类)、todo-tracker(待办跟踪)、rename-suggestions(重命名建议)、terminal-command/quickfix/explain(终端命令/修复/解释)、workspace-search(搜索助手)。
  • chat.utilityModel:通用实用任务模型(默认 CAPI fallback)。覆盖 settings-resolver(设置搜索)、explain-code(代码解释)、vscode-qa(VS Code 问答)。
  • inlineChat.defaultModel:内联聊天(Inline Chat)默认模型,用于编辑器内联对话(Ctrl+I / 右键 "在行内聊天")。
  • chat.exploreAgent.defaultModel:Explore 子 Agent 默认模型,用于 search-subagent 代码库探索与搜索。
  • chat.planAgent.defaultModel:Plan 子 Agent 默认模型,用于 Agent 模式中的方案规划与任务拆解。
  • github.copilot.chat.askAgent.model:Ask Agent 默认模型,用于 Ask 模式问答。
  • github.copilot.chat.implementAgent.model:Implement Agent 默认模型,用于 Implement 模式代码实现。
  • github.copilot.chat.exploreAgent.model:Explore Agent 默认模型,用于 Explore 模式代码库探索。
  • gcmp.commit.model:GCMP 内置提交消息生成模型。
  • gcmp.vision.model:GCMP 内置视觉分析模型,必须选择支持图像输入的模型。

🤖 内置的AI大模型提供商

本扩展仅预置存在自有模型的一线大模型提供商(如具备模型自研能力的主流云厂商),第三方模型接入请使用「OpenAI / Anthropic Compatible」兼容模式。

智谱AI - ZhipuAI

  • 模型列表:详见 config/zhipu.json(Coding Plan / 按量计费 / 免费模型)。
  • 套餐类型Coding Plan
    • 用量查询:已支持状态栏显示周期剩余用量,可查看 GLM Coding Plan 用量信息。
  • 国际站点:已支持 国际站(z.ai) 切换设置。
  • 搜索功能:集成 联网搜索MCPWeb Search API,支持 #zhipuWebSearch 进行联网搜索。
    • 默认启用 联网搜索MCP 模式,编程套餐支持:Lite(100次/月)、Pro(1000次/月)、Max(4000次/月)。
    • 可通过设置关闭 联网搜索MCP 模式以使用 Web Search API 按次计费。

MiniMax

  • 模型列表:详见 config/minimax.json(Token Plan 套餐 / 按量计费)。
  • 套餐类型Token Plan
    • 搜索功能:集成 Token Plan 联网搜索工具,支持通过 #minimaxWebSearch 进行联网搜索。
    • 用量查询:已支持状态栏显示周期剩余用量,可查看 Token Plan 套餐用量信息。
    • 国际站点:已支持国际站 Token Plan 套餐使用。

MoonshotAI

  • 模型列表:详见 config/moonshot.json(会员权益 / 按量计费)。
  • 套餐类型会员权益,Kimi 会员计划 套餐附带的 Kimi For Coding 编程模型权益。
    • 搜索功能:集成 Kimi Search 联网搜索工具,支持通过 #kimiWebSearch 进行联网搜索。
    • 用量查询:已支持状态栏显示周期剩余用量、加油包钱包余额与到期时间,可查看套餐的剩余用量及限频重置时间。
  • 余额查询:已支持状态栏显示当前账户额度,可查看账户余额状况。

DeepSeek

  • 模型列表:详见 config/deepseek.json
  • 余额查询:已支持状态栏显示当前账户额度,可查看账户余额详情。

阿里云百炼 - AliDashScope

快手万擎 - StreamLake

火山方舟 - Volcengine

腾讯云 - Tencent

Xiaomi MiMo

百度千帆 - Baidu Qianfan

阶跃星辰 - StepFun

  • 模型列表:详见 config/stepfun.jsonStep Plan / 按量计费)。
  • 搜索功能:集成 #stepfunWebSearch MCP 联网搜索工具,支持 category 参数过滤。
    • Step Plan 套餐可使用 MCP 调用,非订阅套餐使用标准按次计费接口。

蚂蚁百灵 - Ant Ling

蚂蚁集团开源的 MoE 架构大语言模型家族,采用 Anthropic 模式接入。

讯飞星辰 - XunFei Astron

科大讯飞旗下大模型服务平台,采用 Anthropic SDK 模式接入,支持双套餐密钥管理。

LongCat - LongCat

LongCat API 开放平台的 Agentic 模型,采用 Anthropic SDK 模式接入。

CLI 编程工具 API 提供商

以下提供商本身是开源或商业的 AI 编程 CLI 工具(类似 Claude Code),开放了 API 接口供第三方调用其聚合的模型能力。

OpenCode

Hyper - Charm Hyper

ClinePass - Cline 官方推出的模型订阅服务

  • 模型列表:详见 config/clinepass.json
  • 用量查询:已支持状态栏显示周期剩余用量、重置时间及总利用率。

OAuth 认证编程助手提供商

⚠️ 风险警告:以下提供商通过模拟官方 CLI 工具的 OAuth 身份验证方式来实现对应的 API 访问,可能涉嫌滥用第三方服务条款,存在被官方检测封禁账号的风险。请仅在确保知情并自愿承担风险的前提下使用。

Codex CLI - OpenAI Codex

OpenAI 官方编程助手 Codex 的命令行工具,支持通过 codex CLI 进行身份验证(需要本地安装 codex CLI)。

npm install -g @openai/codex@latest
  • 支持模型:详见 config/codex.json
  • 用量查询:已支持状态栏显示 ChatGPT 订阅周期剩余用量,可查看订阅余量信息。
  • 独立代理设置:Codex CLI 使用自己的代理配置(与扩展全局代理 gcmp.proxy 独立)。可通过 gcmp.providerOverrides.codex.proxy 单独指定 Codex 请求的代理地址。
{
    "gcmp.providerOverrides": {
        "codex": {
            "proxy": "http://127.0.0.1:10808"
        }
    }
}

Grok Build - xAI Grok Build

xAI 官方 Grok Build 编程助手命令行工具,支持通过 grok CLI 进行 OAuth 身份验证(需要本地安装 Grok Build CLI)。

# macOS / Linux
curl -fsSL https://x.ai/cli/install.sh | bash

# Windows PowerShell
irm https://x.ai/cli/install.ps1 | iex

⚙️ 高级配置

GCMP 支持通过 VS Code 设置来自定义AI模型的行为参数,让您获得更个性化的AI助手体验。

📝 提示settings.json 所有参数修改会立即生效。

展开查看高级配置说明

通用模型参数 及 额外支持功能 配置

{
    "gcmp.retry.enabled": true, // 启用自动重试(默认 true),关闭后请求失败直接停止
    "gcmp.retry.maxAttempts": 3 // 1-10,仅对可重试错误生效
}
  • gcmp.retry.enabled 默认值为 true,开启后自动重试 429 限流、503 服务繁忙等可重试错误。设为 false 可完全禁用重试,请求失败立即停止。
  • gcmp.retry.maxAttempts 默认值为 3,用于控制 429 限流、502/503/504 服务端错误、网络中断等可重试错误的最大自动重试次数。
  • 重试延迟按累加序列递增(1s → 3s → 6s → 10s → 15s),上限 15s。
  • 重试期间状态栏会显示重试进度(如 模型名 retry #2/3 in 3s),模型开始返回数据时自动清除。
  • gcmp.maxTokens 已弃用:此设置不再生效,各模型现在自动使用自身的 maxOutputTokens 配置。

提供商级别重试配置覆盖

通过 gcmp.providerOverrides.{provider}.retry 可为每个提供商独立设置重试策略,覆盖全局 gcmp.retry.* 行为。maxAttempts 不受全局 1-10 上限约束,允许设置为任意正整数或 -1(无限重试)。

{
    "gcmp.providerOverrides": {
        "xfyun": {
            "retry": {
                "enabled": true,
                "maxAttempts": 15, // 不受 1-10 上限约束
                "maxDelayMs": 30000 // 最大延迟上限 30s
            },
            "retry.xfyun-coding": {
                // 子 provider 独立策略(优先级更高)
                "enabled": true,
                "maxAttempts": 20,
                "maxDelayMs": 60000
            }
        }
    }
}

合并优先级(字段级合并,每个字段独立回退):

providerOverrides["retry.{subProvider}"] → providerOverrides.retry → 内置预置 → 全局默认

特殊语义

字段值含义
maxAttempts = -1无限重试(仅由可重试错误判断决定退出)
maxAttempts = 0禁止重试(override 路径,等价于 enabled: false
preset.maxAttempts = 0不会压低全局 maxAttempts;若需强制禁用应使用 override
enabled = false按 enabled 字段合并优先级生效

各功能专属设置(如 gcmp.commit.enabledgcmp.vision.modelgcmp.zhipu.search.enableMCP)分别在其对应的功能章节中说明,不在此处展开。

调试与 HAR 录制

{
    "gcmp.debug.captureHar": false, // 是否将所有 HTTP 请求记录为 HAR 文件(默认关闭)
    "gcmp.debug.harRetentionCount": 7 // 每个 VS Code 进程保留的最近 HAR 文件数量(0 表示仅禁用按数量清理,2 小时硬删除仍生效)
}
  • 开启 gcmp.debug.captureHar 后,GCMP 会在 globalStorage/har/ 目录下按 VS Code 实例和日期生成 HAR 1.2 文件,方便排查兼容性与网关问题。
  • FIM / NES 补全、Gist 同步、CLI OAuth 刷新等敏感或高频请求默认不录制,避免敏感凭据和大量重复请求落盘。
  • 写入前会对敏感请求头、URL 查询参数及重定向 URL 中的凭据进行脱敏,但请求体和响应体仍会按原样保存,请妥善保管 HAR 文件。
  • HAR 文件最长每 30 分钟轮换一次;超过 2 小时的旧文件会在新录制或文件轮换时强制删除。
  • harRetentionCount 控制每个进程按数量保留的最近文件数;设为 0 时仅禁用按数量清理,2 小时硬删除仍会继续执行。

代理与系统证书配置

{
    "gcmp.proxy": "http://127.0.0.1:7890", // 全局代理(可选),推荐使用完整 URL
    "gcmp.tls.useSystemCertificates": true // 追加系统根证书(默认开启)
}
  • gcmp.proxy 会作为扩展内所有网络请求的默认代理,包括:聊天请求、FIM / NES 补全、联网搜索、MCP 客户端、状态栏余额/用量查询、Compatible Provider 的"获取模型"请求,以及 CLI OAuth 刷新请求。
  • 代理优先级为:model.proxygcmp.providerOverrides.<provider>.proxygcmp.providerOverrides.compatible.proxy(仅非内置 provider) → gcmp.proxy → VS Code http.proxy → 环境变量(HTTPS_PROXY / HTTP_PROXY)→ 系统代理(自动检测)
  • 代理地址支持 host:port 简写(如 127.0.0.1:7890),但推荐使用完整 URL,如 http://127.0.0.1:7890
  • 填写 noproxy 可显式绕过所有代理(包括系统代理和已配置代理),且在代理链路上任一层次设为 noproxy 时立即短路,不再继续回退。
  • 当无显式代理配置时,扩展会自动检测 Windows 注册表或 macOS scutil 中的系统代理设置并自动沿用。
  • ⚠️ 不支持 PAC (Proxy Auto-Config) 代理协议。若系统代理设为 PAC,扩展将忽略该配置,需要时请改为显式代理地址。

  • gcmp.tls.useSystemCertificates 用于将操作系统信任的根证书追加到 Node.js 默认 CA 列表,适合企业代理、内网网关或本地安装自签根证书场景。
  • 支持带认证的代理 URL,日志中会自动脱敏用户名和密码。

提供商配置覆盖

GCMP 支持通过 gcmp.providerOverrides 配置项来覆盖提供商的默认设置,包括 baseUrlproxycustomHeader 等。

支持范围因提供商类型而异

提供商类型支持覆盖的字段models[]
内置提供商(deepseek/zhipu 等)baseUrlcustomHeaderproxyretrymodels[]✅ 支持新增和覆盖模型
已知提供商(aihubmix/openrouter 等)customHeaderproxyretry❌ 不支持(走 gcmp.compatibleModels
自定义提供商(compatibleModels 中自定义 provider)customHeaderproxyretry❌ 不支持(走 gcmp.compatibleModels
compatible 自身customHeaderproxyretry❌ 不支持(走 gcmp.compatibleModels

已知/自定义/compatible 提供商不支持 models[],模型定义统一通过 gcmp.compatibleModels 配置。

配置优先级

模型自身设置 > providerOverrides.{provider} > providerOverrides.compatible
  • providerOverrides.compatible 作为全局默认值,对所有 Compatible Provider 下的模型生效
  • 代理地址:model.proxy > providerOverrides.{provider}.proxy > providerOverrides.compatible.proxy(仅非内置 provider) > gcmp.proxy > VS Code http.proxy > 环境变量
  • 自定义 HTTP 头:providerOverrides.{provider}.customHeader > 模型自身 customHeader > providerOverrides.compatible.customHeader
  • 重试配置:providerOverrides["retry.{subProvider}"] > providerOverrides.retry > 内置预置 > 全局 gcmp.retry.*

配置示例

{
    "gcmp.providerOverrides": {
        "dashscope": {
            "proxy": "http://127.0.0.1:7890", // 可选:提供商级默认代理
            "models": [
                {
                    "id": "deepseek-v3.2", // 增加额外模型:不在提示可选选项,但允许自定义新增
                    "name": "Deepseek-V3.2 (阿里云百炼)",
                    "tooltip": "DeepSeek-V3.2是引入DeepSeek Sparse Attention(一种稀疏注意力机制)的正式版模型,也是DeepSeek推出的首个将思考融入工具使用的模型,同时支持思考模式与非思考模式的工具调用。",
                    // "sdkMode": "openai", // 阿里云百炼已默认继承提供商设置,其他提供商模型可按需设置
                    // "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
                    "maxInputTokens": 128000,
                    "maxOutputTokens": 16000,
                    "capabilities": {
                        "toolCalling": true,
                        "imageInput": false
                    }
                }
            ]
        },
        "aihubmix": {
            "proxy": "http://127.0.0.1:7890", // 已知或自定义提供商也支持代理覆盖
            "customHeader": { "X-Custom": "value" },
            "retry": {
                // 提供商级重试覆盖
                "enabled": true,
                "maxAttempts": 5,
                "maxDelayMs": 30000
            }
        },
        "compatible": {
            "proxy": "http://127.0.0.1:7890" // 全局默认代理,所有 Compatible Provider 模型生效
        }
    }
}

🔌 Compatible 自定义模型支持

GCMP 提供 Compatible Provider,用于支持任何 OpenAI 或 Anthropic 兼容的 API。通过 gcmp.compatibleModels 配置,您可以完全自定义模型参数,包括扩展请求参数。

  1. 通过 GCMP: Compatible Provider 设置 命令启动配置向导。
  2. settings.json 设置中编辑 gcmp.compatibleModels 配置项。
展开查看自定义模型配置说明

自定义模型内置已知提供商ID及显示名称列表

聚合转发类型的提供商可提供内置特殊适配,不作为单一提供商提供。
若需要内置或特殊适配的请通过 Issue 提供相关信息。
已知提供商支持通过 gcmp.providerOverrides.{providerId} 覆盖 customHeaderproxy

提供商ID提供商名称提供商描述余额查询
aipingAI Ping用户账户余额
aihubmixAIHubMix可立享 10% 优惠ApiKey余额
openrouterOpenRouter用户账户余额
siliconflow硅基流动用户账户余额

配置示例

{
    "gcmp.compatibleModels": [
        {
            "id": "glm-4.6",
            "name": "GLM-4.6",
            "provider": "zhipu",
            "model": "glm-4.6",
            "sdkMode": "openai",
            "baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4",
            // "proxy": "http://127.0.0.1:7890", // 可选:仅对该模型生效,也用于“获取模型”探测请求
            // "sdkMode": "anthropic",
            // "baseUrl": "https://open.bigmodel.cn/api/anthropic",
            "maxInputTokens": 128000,
            "maxOutputTokens": 4096,
            "capabilities": {
                "toolCalling": true, // Agent模式下模型必须支持工具调用
                "imageInput": false
                // "editTools": ["multi-find-replace", "find-replace", "code-rewrite"] // 可选:模型偏好的编辑工具,对应 VS Code LanguageModelChatCapabilities.editTools
            },
            // customHeader 和 extraBody 可按需设置
            "customHeader": {
                "X-Model-Specific": "value",
                "X-Custom-Key": "${APIKEY}"
            },
            "extraBody": {
                "temperature": 0.1,
                "top_p": 0.9,
                // "top_p": null, // 部分提供商不支持同时设置 temperature 和 top_p
                "thinking": { "type": "disabled" }
            }
            // "webSearchTool": true, // 可选:启用联网搜索(仅 sdkMode=anthropic / openai-responses 生效)
            // "nativeTools": [{ "type": "web_search" }] // 可选:注入原生工具(仅 sdkMode=openai-responses 生效)
        }
    ]
}
  • gcmp.compatibleModels[*].proxy 仅作用于当前自定义模型;在填写 baseUrl 后点击“获取模型”时,也会使用同一代理设置进行探测。

sdkMode

gcmp.compatibleModels[*].sdkMode 指定请求/流式解析方式,可选值:openai(默认)、openai-sseopenai-responsesanthropic

自定义 provider 余额/用量查询示例:usage + usages 智能合并

对于 Compatible 自定义 provider,可在 gcmp.providerOverrides.{providerId} 下配置:

  • usage:可选;单一余额查询时只配置它即可,也可作为 usages 的公共默认值
  • usages:可选;仅在需要多个命名金额/余额查询模式时使用,每个条目都可在 usage 基础上增量覆盖

也就是说:

  • 只配置 usage:就是单一余额查询
  • 需要多个查询模式时:再通过 usages 做多金额/多余额覆盖查询
  • usageusages 都不配置:就不会注册该自定义 provider 的余额/用量查询

内置已知 provider 的 usage / usages 参考配置方式,可直接查看源码 src/utils/knownProviders.ts

注意:gcmp.providerOverrides 的 provider key 必须与 gcmp.compatibleModels[*].provider 完全一致,包括大小写。

例如,下面这个更贴近实际 settings.jsonNekoCode 相关配置片段表示:

  • gcmp.compatibleModels 下有多个模型共用同一个 provider: "NekoCode"
  • gcmp.providerOverrides.NekoCode.usage 提供默认查询 URL https://api2.nekoapi.ai/v1/usage 和公共字段路径 balance
  • gcmp.providerOverrides.NekoCode.usages.payusage 的最终查询配置等价,只额外提供显示名称 余额
  • gcmp.providerOverrides.NekoCode.usages.sub 复用 usage.fields.balance,但把查询 URL 覆盖为 https://api2.nekoapi.ai/v1/user/balance
{
    "gcmp.compatibleModels": [
        {
            "id": "nekocode:gpt-5.5",
            "name": "GPT-5.5 (NekoCode)",
            "provider": "NekoCode",
            "model": "gpt-5.5",
            "sdkMode": "openai-responses",
            "baseUrl": "https://api2.nekoapi.ai/v1",
            "proxy": "noproxy",
            "maxInputTokens": 272000,
            "maxOutputTokens": 128000,
            "capabilities": {
                "toolCalling": true,
                "imageInput": true
            },
            "reasoningDefault": "xhigh",
            "reasoningEffort": ["none", "low", "medium", "high", "xhigh"],
            "extraBody": {
                "store": false,
                "reasoning": {
                    "effort": "xhigh",
                    "summary": "auto"
                }
            },
            "useInstructions": true,
            "customHeader": {
                "version": "0.134.0",
                "user-agent": "codex-tui/0.134.0 (Windows 10.0.26200; x86_64) unknown (codex-tui; 0.134.0)",
                "originator": "codex-tui"
            }
        }
    ],
    "gcmp.providerOverrides": {
        "NekoCode": {
            "usage": {
                "url": "https://api2.nekoapi.ai/v1/usage",
                "fields": {
                    "balance": "balance"
                }
            },
            "usages": {
                "pay": {
                    "displayName": "余额",
                    "url": "https://api2.nekoapi.ai/v1/usage"
                },
                "sub": {
                    "displayName": "订阅",
                    "url": "https://api2.nekoapi.ai/v1/user/balance",
                    "fields": {
                        "balance": "remaining"
                    }
                }
            }
        }
    }
}

该配置的实际效果是:

  • providerOverrides.NekoCode 会同时作用于所有 provider: "NekoCode" 的兼容模型,例如上面的 GPT-5.4 (NekoCode)GPT-5.5 (NekoCode)
  • pay 会继承 usage.fields.balance = "balance"
  • sub 也会继承 usage.fields.balance = "balance"
  • 因为 payusage 解析出的查询配置等价,所以不会再额外生成一个重复的 default 模式

最终状态栏会按两个命名模式进行查询与展示:

  • NekoCode / 余额
  • NekoCode / 订阅

💡 FIM / NES 内联补全建议功能

  • FIM:根据上下文预测并补全光标处缺失的代码,适合单行/短片段补全。
  • NES:基于编辑上下文提供智能代码建议,支持多行代码生成。

使用前必读:需先在对话模型中配置并验证 ApiKey;在输出面板选择 GitHub Copilot Inline Completion via GCMP 可查看调试信息。接入的是通用大模型,未针对代码补全专门训练,效果可能不及 Copilot 原生 Tab 补全。

展开查看详细配置说明

FIM / NES 内联补全建议模型配置

FIM 和 NES 补全都使用单独的模型配置,可以分别通过 gcmp.fimCompletion.modelConfiggcmp.nesCompletion.modelConfig 进行设置。

代理配置:FIM 和 NES 支持通过 proxy 字段单独设置代理地址(如 http://127.0.0.1:7890),方便在不同网络环境下调试。支持带认证的代理,日志中会自动脱敏用户凭据。

  • 启用 FIM 补全模式(推荐 DeepSeek、Qwen 等支持 FIM 的模型):
    • 已测试支持 DeepSeek硅基流动,特殊支持 阿里云百炼
{
    "gcmp.fimCompletion.enabled": true, // 启用 FIM 补全功能
    "gcmp.fimCompletion.debounceMs": 500, // 自动触发补全的防抖延迟
    "gcmp.fimCompletion.timeoutMs": 5000, // FIM 补全的请求超时时间
    "gcmp.fimCompletion.modelConfig": {
        "provider": "deepseek", // 提供商ID,其他请先添加 OpenAI Compatible 自定义模型 provider 并设置 ApiKey
        "baseUrl": "https://api.deepseek.com/beta", // ⚠️ DeepSeek FIM 必须使用 beta 端点才支持
        // "baseUrl": "https://api.siliconflow.cn/v1", // 硅基流动(provider:`siliconflow`)
        // "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1", // 阿里云百炼(provider:`dashscope`)
        // "proxy": "http://127.0.0.1:7890", // 可选:单独设置代理地址
        "model": "deepseek-chat",
        "maxTokens": 100
        // "extraBody": { "top_p": 0.9 }
    }
}
  • 启用 NES 手动补全模式
{
    "gcmp.nesCompletion.enabled": true, // 启用 NES 补全功能
    "gcmp.nesCompletion.debounceMs": 500, // 自动触发补全的防抖延迟
    "gcmp.nesCompletion.timeoutMs": 10000, // NES 补全请求超时时间
    "gcmp.nesCompletion.manualOnly": true, // 启用手动 `Alt+/` 快捷键触发代码补全提示
    "gcmp.nesCompletion.modelConfig": {
        "provider": "zhipu", // 提供商ID,其他请先添加 OpenAI Compatible 自定义模型 provider 并设置 ApiKey
        "baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4", // OpenAI Chat Completion Endpoint 的 BaseUrl 地址
        // "proxy": "http://127.0.0.1:7890", // 可选:单独设置代理地址
        "model": "glm-4.6", // 推荐使用性能较好的模型,留意日志输出是否包含 ``` markdown 代码符
        "maxTokens": 200,
        "extraBody": {
            // GLM-4.6 默认启用思考,补全场景建议关闭思考以加快响应
            "thinking": { "type": "disabled" }
        }
    }
}
  • 混合使用 FIM + NES 补全模式
  • 自动触发 + manualOnly: false:根据光标位置智能选择提供者
    • 光标在行尾 → 使用 FIM(适合补全当前行)
    • 光标不在行尾 → 使用 NES(适合编辑代码中间部分)
    • 如果使用 NES 提供无结果或补全无意义,则自动回退到 FIM
  • 自动触发 + manualOnly: true:仅发起 FIM 请求(NES 需手动触发)
  • 手动触发(按 Alt+/):直接调用 NES,不发起 FIM
  • 模式切换(按 Shift+Alt+/):在自动/手动间切换(仅影响 NES)

MistralAI Coding FIM 配置示例

{
    "gcmp.compatibleModels": [
        {
            "id": "codestral-latest",
            "name": "codestral-latest",
            "provider": "mistral",
            "baseUrl": "https://codestral.mistral.ai/v1",
            "sdkMode": "openai",
            "maxInputTokens": 32000,
            "maxOutputTokens": 4096,
            "capabilities": {
                "toolCalling": true,
                "imageInput": false
            }
        }
    ],
    "gcmp.fimCompletion.enabled": true,
    "gcmp.fimCompletion.debounceMs": 500,
    "gcmp.fimCompletion.timeoutMs": 5000,
    "gcmp.fimCompletion.modelConfig": {
        "provider": "mistral",
        "baseUrl": "https://codestral.mistral.ai/v1/fim",
        // "proxy": "http://127.0.0.1:7890", // 可选:单独设置代理地址
        "model": "codestral-latest",
        "extraBody": { "code_annotations": null },
        "maxTokens": 100
    }
}

熔断器(Circuit Breaker)

FIM 与 NES 补全请求连续失败时,熔断器会暂时停止请求,避免无限重试浪费资源和费用。

三态模型

状态说明
Closed正常通行,请求通过并累计失败次数
Open熔断断开,拒绝所有请求,进入冷却倒计时
HalfOpen冷却结束后允许一次探测请求,成功则恢复 Closed,失败则重新熔断 Open

工作流程

  1. 请求连续失败达到 failureThreshold 后,熔断器从 Closed → Open
  2. Open 状态下所有请求被立即拒绝,等待 cooldownSeconds 秒冷却
  3. 冷却结束后首次 allowRequest() 进入 HalfOpen,发放一次探测请求
  4. 探测成功(recordSuccess())→ 回到 Closed,恢复服务
  5. 探测失败(recordFailure())→ 回到 Open,重新冷却。每冷却周期只重试一次(默认每 30 秒一次),直到成功或用户手动「立即重试」
  6. 请求被用户取消(recordCancellation())→ 不消耗 HalfOpen 探测名额,可重新探测

熔断通知:Open 状态首次触发时弹出通知提示(30 秒内不重复),支持「立即重试」恢复服务或「查看设置」跳转配置页。

配置项

{
    // FIM 熔断器配置(默认启用)
    "gcmp.fimCompletion.circuitBreaker": {
        "enabled": true, // 启用熔断
        "failureThreshold": 10, // 默认 10,范围 2-60
        "cooldownSeconds": 30 // 默认 30,范围 10-300
    },
    // NES 熔断器配置(默认启用)
    "gcmp.nesCompletion.circuitBreaker": {
        "enabled": true, // 启用熔断
        "failureThreshold": 5, // 默认 5,范围 2-20
        "cooldownSeconds": 30 // 默认 30,范围 10-300
    }
}

配置修改即时生效,无需重启 VS Code。

快捷键与操作

快捷键操作说明
Alt+/手动触发补全建议(NES 模式)
Shift+Alt+/切换 NES 手动触发模式

🪟 上下文窗口占用比例状态栏

GCMP 提供上下文窗口占用比例状态栏显示功能,以饼图图标直观反映当前会话的上下文窗口占用比例。

展开主要特性说明

主要特性

  • 实时监控:状态栏以饼图图标实时显示当前会话的上下文窗口占用比例(0/1/8 ~ 8/8)
  • 悬停详情:鼠标悬停可查看模型名称、占用百分比、Token 用量及请求来源类型
  • 增量预估:支持基于上一轮 API 实际用量做增量预估,WebView 详细视图中会显示"本次新增"(~+xx)列,帮助追踪长会话中每轮请求的新增 Token 消耗

📊 Token 消耗统计功能

GCMP 内置了完整的 Token 消耗统计功能,帮助您追踪和管理 AI 模型的使用情况。

展开查看详细功能说明

主要特性

  • 持久化记录:基于文件系统的日志记录,无存储限制,支持长期数据保存
  • 用量统计:记录每次 API 请求的模型和用量信息,包括:
    • 模型信息(提供商、模型 ID、模型名称)
    • Token 用量(预估输入、实际输入、输出、缓存、推理等)
    • 请求状态(预估/完成/失败)
  • 多维度统计:按日期、提供商、模型、小时等多维度查看统计数据
    • 小时统计详情:支持按小时、提供商、模型三层嵌套显示
      • ⏰ 小时级别:显示该小时的总计数据
      • 📦 提供商级别:显示该提供商在该小时的汇总数据
      • ├─ 模型级别:显示该模型在该小时的详细数据
      • 提供商和模型按请求数降序排列,无有效请求的提供商和模型不显示
  • 实时状态栏:状态栏实时显示今日 Token 用量,30秒自动刷新
  • 可视化视图:WebView 详细视图支持查看历史记录、分页显示请求记录
  • 请求来源分类:记录并显示每次请求的 Copilot 请求类型(如主 Agent、标题生成、提交消息、搜索子 Agent、视觉识别等),便于追踪后台实用任务的实际消耗
  • 实时请求指标:流式阶段实时展示首流延迟(TTFT)与输出耗时(TPOT),完成后由真实 usage 自然刷新
  • 实时输出 token 估算:流式阶段基于 tokenizer 实时估算输出 token 与输出速度(tokens/s),输出列以"最近一次接收的预估增量"(+xx tks)形式展示,完成后由真实 usage 覆盖
  • 缓存命中率可视化:输入列合并展示缓存命中数与输入总数,并显示缓存命中率,帮助判断缓存策略效果
  • 客户端成本估算:支持峰谷分档定价、服务等级(serviceTier)计费和上下文大小条件分档,Token 数量下方内联显示预估成本,状态栏、详情页、多日趋势页均集成展示
  • 双币种成本展示:定价配置支持 USD/RMB 双币种并列,按模型原生结算币种标记展示;状态栏(中文环境)、详情页、侧边栏日期列表与会话记录、多日趋势页均支持成本双币显示,并新增 USD/RMB 货币切换视图
  • 多日成本视图:多日趋势图新增成本趋势折线图与成本卡片汇总

使用方式

  • 查看统计:点击状态栏的 Token 用量显示,或通过命令面板执行 GCMP: 查看今日 Token 消耗统计详情 命令
  • 历史记录:在详细视图中可查看任意日期的统计记录
  • 数据管理:支持打开日志存储目录进行手动管理

配置选项

{
    "gcmp.usages.retentionDays": 100 // 历史数据保留天数(0表示永久保留)
}

📝 Commit 生成提交消息功能

GCMP 支持在提交前自动读取当前仓库的改动(已暂存/未暂存/新文件),提取关键 diff 片段并结合相关历史提交与仓库整体提交风格(auto 模式下)来生成更贴合你项目习惯的提交信息。

为避免将无关噪音或潜在敏感内容发送给模型,Commit 消息生成功能会在分析 diff 前做一层过滤:

  • 自动省略 lockfile / snapshot 的大段 diff 内容,例如 package-lock.jsonyarn.lockpnpm-lock.yamlbun.lockb*.snap
  • 自动跳过常见敏感文件,例如 .env*、证书/私钥文件、.aws / .ssh / .gnupg / .docker 目录下的文件
  • 支持通过 gcmp.commit.sensitiveFiles 追加你自己的敏感文件匹配规则
展开查看详细使用说明

系统要求

  • vscode.git 扩展:该功能依赖 VS Code 内置的 vscode.git 扩展来访问 Git 仓库信息
    • 扩展会自动检测 Git 可用性,当 Git 不可用时相关按钮将自动隐藏
    • 如果你的环境中禁用了 vscode.git 扩展,Commit 消息生成功能将不可用

使用入口:Git仓库管理视图

  • 仓库标题栏按钮:生成提交消息
  • 更改分组栏按钮:
    • 在“暂存的更改”上生成:生成提交消息 - 暂存的更改
    • 在“更改”上生成 生成提交消息 - 未暂存的更改

生成范围说明(staged / working tree)

  • 生成提交消息:默认行为,同时分析 staged + working tree(tracked + untracked)。
  • 生成提交消息 - 暂存的更改:仅分析 staged,适合“分步提交/拆分提交”。
  • 生成提交消息 - 未暂存的更改:仅分析 working tree(tracked + untracked),不包含 staged。

多仓库工作区:如果当前工作区包含多个 Git 仓库,GCMP 会尝试根据你点击的 SCM 区域推断仓库;无法推断时会弹出仓库选择。

模型选择与配置

该功能基于 VS Code Language Model API 调用模型。

  • 第一次使用或未配置模型时,会自动引导选择模型(也可手动运行 GCMP: 选择 Commit 消息生成模型)。
  • 相关配置项:
{
    "gcmp.commit.enabled": true, // 启用内置提交消息生成功能(默认 true,将在下个主版本移除)
    "gcmp.commit.language": "chinese", // 生成语言:chinese / english(auto 模式语言不明确时的回退值)
    "gcmp.commit.format": "auto", // 提交消息格式:auto(默认) / 见下方 format 说明
    "gcmp.commit.customInstructions": "", // 自定义指令(仅当 format=custom 时生效)
    "gcmp.commit.sensitiveFiles": ["*.pem", "**/.env.local", "secrets/**"], // 额外排除在 diff 分析之外的敏感文件路径模式
    "gcmp.commit.model": {
        "provider": "zhipu", // 生成模型的提供商(providerKey,例如 zhipu / minimax / compatible)
        "model": "glm-4.6" // 生成模型的 ID(对应 VS Code Language Model 的 model.id)
    }
}

gcmp.commit.sensitiveFiles 过滤规则说明

gcmp.commit.sensitiveFiles 用于补充内置敏感文件过滤规则。它接收一组简单的类 glob 字符串:

  • *.pem:匹配任意 .pem 文件
  • **/.env.local:匹配任意目录下的 .env.local
  • secrets/**:匹配 secrets/ 目录下的所有文件
  • **/private/*.key:匹配任意 private 目录下的 .key 文件

命中后,该文件不会参与 Commit diff 分析,也不会被发送给模型用于生成提交消息。

gcmp.commit.format 格式说明与示例

说明:以下示例仅用于展示格式形态;实际内容会根据你的 diff 自动生成。

  • auto:自动推断(会参考仓库历史的语言/风格;不明确时回退为 plain + gcmp.commit.language),默认推荐。

  • plain:简洁一句话,不含 type/scope/emoji(适合快速提交)。

  • custom:完全由你的自定义指令控制(gcmp.commit.customInstructions)。

  • conventional:Conventional Commits(可带 scope,常见写法是“标题 + 可选正文要点”)。

feat(commit): 新增提交消息生成

- 支持 staged / 未暂存分别生成
- 自动补充相关历史提交作为参考
  • angular:Angular 风格(type(scope): summary,语义上接近 conventional)。
feat(commit): 新增 SCM 入口

- 在仓库标题栏与更改分组栏增加入口
  • karma:Karma 风格(偏“单行”,保持短小)。
fix(commit): 修复多仓库选择
  • semantic:语义化 type: message(不带 scope;也可以带正文要点)。
feat: 新增提交消息生成

- 自动识别本次变更的关键 diff
  • emoji:Emoji 前缀(不带 type)。
✨ 新增提交消息生成
  • emojiKarma:Emoji + Karma(emoji + type(scope): msg)。
✨ feat(commit): 新增提交消息生成

- 更贴合仓库既有提交习惯
  • google:Google 风格(Type: Description)。
Feat: 新增提交消息生成

- 支持按仓库风格自动选择语言与格式
  • atom:Atom 风格(:emoji: message)。
:sparkles: 新增提交消息生成

👁️ 视觉分析工具

GCMP 内置一组专用视觉分析工具,用于把图片/截图转换为可直接落地的开发产物、提取文字、诊断错误、理解技术图纸、分析数据可视化以及对比 UI 差异。所有视觉分析完全委托给原生支持多模态的 GCMP 模型,不依赖第三方 MCP 后端。

展开查看视觉分析工具详细说明

工具列表

工具引用用途
#gcmpUiToArtifact将 UI 截图转换为前端代码、AI 提示词、设计规范或自然语言描述
#gcmpExtractTextFromScreenshot从截图中提取和识别文字(OCR),支持代码、终端输出、文档等
#gcmpDiagnoseErrorScreenshot分析错误弹窗、堆栈和异常截图,定位根因并给出修复建议
#gcmpUnderstandTechnicalDiagram分析架构图、流程图、UML、ER 图和系统设计图
#gcmpAnalyzeDataVisualization从图表、图形和仪表盘中提取趋势、异常和可操作建议
#gcmpUiDiffCheck对比预期/参考 UI 截图与实际实现截图,识别视觉差异和实现偏差
#gcmpAnalyzeImage通用图像分析,适配未被专项工具覆盖的视觉内容

使用方式

视觉工具通过 # 引用调用,例如 #gcmpUiToArtifact。调用时可直接粘贴图片、截图或引用图片文件路径,模型会基于图片内容生成对应产物或分析结果。所有工具共用同一个视觉分析模型配置。

配置视觉分析模型

视觉工具依赖 gcmp.vision.model 指定的多模态模型。首次调用视觉工具时若未配置,会自动拉起选择向导;也可手动运行命令 GCMP: 选择视觉分析模型,或通过 GCMP: 设置辅助工具模型 面板统一配置。

{
    "gcmp.vision.model": {
        "provider": "zhipu",
        "model": "glm-4.6v"
    }
}
  • 所选模型必须支持图像输入能力(capabilities.imageInput: true)。
  • 支持选择内置提供商模型、已配置图像输入能力的 Compatible Provider 模型,也支持选择 GitHub Copilot 原生多模态模型(将 provider 设为 copilotmodel 设为 Copilot 模型 ID)。
  • 未配置时首次调用会自动引导选择模型,无需提前手动填写 JSON。

🔑 API Key 跨设备同步

GCMP 提供基于 GitHub Secret Gist 的 API Key 跨设备同步功能,支持在同一 GitHub 账号的不同设备之间同步 API 密钥,无需手动逐一配置。

如何使用

鼠标悬停状态栏 Token 消耗图标,点击 tooltip 底部的「管理/同步 API Key」快速进入,或通过 VS Code 命令面板执行 GCMP: 管理/同步 API Key

分组操作
同步操作上传到 Gist — 加密上传至 GitHub Gist / 从 Gist 下载 — 恢复到本地
密钥管理管理本地密钥 — 查看和删除本地 API Key / 管理云端密钥 — 查看和删除 Gist 中的 API Key
安全设置设置/更改口令 / 清除口令 — 管理自定义加密口令

上传 / 下载时支持按提供商选择并显示一致性状态(新增/更新/无需变更)。上传时新增和待更新的默认勾选;下载时与本地一致的项默认不勾选。部分上传不会覆盖远端未选中的密钥。

查看详细加密原理与安全说明

存储原理

层级说明
远端存储GitHub Secret Gist(私有 Gist),文件名为 gcmp-sync.json
加密算法AES-256-GCM(认证加密,保证机密性 + 完整性)
密钥派生scrypt(N=16384, r=8, p=1),输入为 GitHub 用户 ID + 固定 pepper + 可选自定义口令
认证方式VS Code 内置 GitHub OAuth,通过 vscode.authentication API 获取 token
认证复用首次授权 gist scope;后续操作静默复用已授权 session

加密流程

GitHub 数字ID + pepper + [自定义口令] → scrypt(N=16384, r=8, p=1) → AES-256 密钥
                                                                       ↓
 每个 API Key → 随机 Salt(32B) + 随机 IV(16B) → AES-256-GCM 加密 → Salt+IV+Tag+密文 → JSON
  • 每条密钥加密时使用独立的随机盐值和初始向量,相同明文每次加密结果不同
  • 加密后的数据包包含 SaltIVTag(认证标签)和 密文,全部以十六进制字符串编码
  • 解密依赖于 GitHub 用户数字 ID:同一 GitHub 账号在不同设备上登录,派生出的加密密钥相同,因此可以互相解密

自定义加密口令

由于扩展是开源项目,加密方式(pepper、scrypt 参数等)均可在源码中直接查看。如果希望额外加强保护,可以设置自定义加密口令。

  • 在同步菜单中选择「设置加密口令」即可添加,输入两次确认
  • 口令与 GitHub 用户 ID、pepper 共同参与密钥派生,三者缺一不可(最少 8 个字符)
  • 口令更改后,之前用旧口令加密的数据将无法再解密(派生密钥不同)
  • 口令通过 VS Code SecretStorage 存储在本地(操作系统级加密),不会上传到任何服务器
  • 同一 GitHub 账号的不同设备需设置相同的口令才能互相解密

下载时的口令验证

下载时如果本地口令与上传时不匹配,会自动弹出提示:

  • 已设置口令但无法解密 → 提示口令可能已更改,引导输入之前使用的口令
  • 未设置口令但数据无法解密 → 提示数据可能在其他设备上用口令加密过,引导输入
  • 输入口令后自动验证:解密成功则自动存储正确口令,后续下载无需再次输入
  • 若只有部分密钥能解密,会提示数量不匹配

跨设备提示

设置口令时会弹出提示,告知多设备同步需要所有设备使用相同口令:

  • 首次设置:提示请牢记口令并在所有设备上设置
  • 更改口令:提示更改后需在所有设备上同步更新

数据兼容性

  • 已有 Gist 数据时设置/更改口令,可选择**「设置并重新上传」**直接进入上传流程,避免遗漏
  • 清除口令时需确认,清除后现有加密数据将无法再解密

安全说明

  • Gist 会暴露在用户的 Gist 列表中,但内容经过 AES-256-GCM 加密,未经解密不可读
  • 加密密钥不在网络中传输
  • 本地 API Key 通过 VS Code SecretStorage 存储,操作系统级加密保护
  • 所有网络请求均通过 HTTPS

🤝 贡献指南

我们欢迎社区贡献!无论是报告bug、提出功能建议还是提交代码,都能帮助这个项目变得更好。

开发环境设置

# 克隆项目
git clone https://github.com/VicBilibily/GCMP.git
cd GCMP
# 安装依赖
npm install
# 在 VsCode 打开后按下 F5 开始扩展调试

💰 赞助

如果您觉得这个项目对您有帮助,欢迎通过 查看赞助二维码 支持项目的持续开发。

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

关于 About

通过集成国内主流原生大模型提供商,为开发者提供更加丰富、更适合本土需求的 AI 编程助手选择。 目前已内置支持 智谱AI、MiniMax、MoonshotAI、DeepSeek、阿里云百炼、快手万擎、火山方舟、腾讯云、Xiaomi MiMo、百度千帆、阶跃星辰、蚂蚁百灵 等原生大模型提供商。 此外,扩展插件已适配支持 OpenAI 与 Anthropic 的 API 接口兼容模型,支持自定义接入任何提供兼容接口的第三方云服务模型。

语言 Languages

TypeScript97.6%
Less1.8%
JavaScript0.6%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
656
Total Commits
峰值: 51次/周
Less
More

核心贡献者 Contributors