GCMP - 提供多个国内原生大模型提供商支持的扩展
English | 中文
通过集成国内主流原生大模型提供商,为开发者提供更加丰富、更适合本土需求的 AI 编程助手选择。 目前已内置支持 智谱AI、MiniMax、MoonshotAI、DeepSeek、阿里云百炼、快手万擎、火山方舟、腾讯云、Xiaomi MiMo、百度千帆、阶跃星辰、蚂蚁百灵、讯飞星辰、LongCat 等原生大模型提供商。 此外,扩展插件已适配支持 OpenAI 与 Anthropic 的 API 接口兼容模型,支持自定义接入任何提供兼容接口的第三方云服务模型。
🚀 快速开始
1. 安装扩展
在VS Code扩展市场搜索 GCMP 并安装,或使用扩展标识符:vicanent.gcmp
2. 开始使用
- 打开
VS Code的GitHub Copilot Chat面板 - 在模型选择器的底部选择
管理模型,从弹出的模型提供商列表中选择所需的提供商 - 若第一次使用,选择提供商后会要求设置 ApiKey,根据提示完成API密钥配置后,即可返回模型选择器添加并启用模型
- 在模型选择器中选中目标模型后,即可开始与AI助手进行对话
3. 配置 VS Code 后台实用模型与 GCMP 辅助模型(推荐)
VS Code 1.128+:启动时将自动检测
chat.utilityModel与chat.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) 切换设置。
- 搜索功能:集成
联网搜索MCP及Web 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 套餐使用。
- 搜索功能:集成 Token Plan 联网搜索工具,支持通过
MoonshotAI
- 模型列表:详见 config/moonshot.json(会员权益 / 按量计费)。
- 套餐类型:会员权益,Kimi
会员计划套餐附带的Kimi For Coding编程模型权益。- 搜索功能:集成 Kimi Search 联网搜索工具,支持通过
#kimiWebSearch进行联网搜索。 - 用量查询:已支持状态栏显示周期剩余用量、加油包钱包余额与到期时间,可查看套餐的剩余用量及限频重置时间。
- 搜索功能:集成 Kimi Search 联网搜索工具,支持通过
- 余额查询:已支持状态栏显示当前账户额度,可查看账户余额状况。
DeepSeek
- 模型列表:详见 config/deepseek.json。
- 余额查询:已支持状态栏显示当前账户额度,可查看账户余额详情。
阿里云百炼 - AliDashScope
- 模型列表:详见 config/dashscope.json(Coding Plan / Token Plan 团队版 / Token Plan 个人版 / 按量计费)。
- 搜索功能:集成 联网搜索MCP 工具(2000次/月),支持通过
#bailianWebSearch进行联网搜索。(使用阿里云百炼ApiKey而非编程套餐的ApiKey)
快手万擎 - StreamLake
- 模型列表:详见 config/streamlake.json(KwaiKAT Coding Plan / KAT-Coder 系列)。
火山方舟 - Volcengine
- 模型列表:详见 config/volcengine.json(Coding Plan / Agent Plan / 豆包系列 / 按量计费)。
- 密钥配置:支持设置 Coding Plan API Key 与 Agent Plan 专用 API Key 分别设置,配置向导引导选择套餐类型。
腾讯云 - Tencent
- 模型列表:详见 config/tencent.json(Coding Plan / Token Plan / Token Plan 企业版 / TokenHub)。
- 密钥配置:腾讯云API密钥分为 Coding Plan 专用 API Key、Token Plan 专用 API Key、Token Plan 企业版 API Key、TokenHub 付费 API Key,需要进入正确的密钥获取界面生成密钥。
Xiaomi MiMo
- 模型列表:详见 config/xiaomimimo.json(按量计费 / Token Plan)。
- 套餐类型:Token Plan。
- 密钥配置:支持设置 Xiaomi MiMo API Key 与 Token Plan 专用 API Key 分别设置。
百度千帆 - Baidu Qianfan
- 模型列表:详见 config/baidu.json(按量计费 / Coding Plan 编程套餐 / Token Plan / Token Plan 企业版)。
- 密钥配置:支持设置 百度千帆 API Key、Coding Plan 专用 API Key、Token Plan 专用 API Key 与 Token Plan 企业专用 API Key 分别设置。
阶跃星辰 - StepFun
- 模型列表:详见 config/stepfun.json(Step Plan / 按量计费)。
- 搜索功能:集成
#stepfunWebSearchMCP 联网搜索工具,支持 category 参数过滤。- Step Plan 套餐可使用 MCP 调用,非订阅套餐使用标准按次计费接口。
蚂蚁百灵 - Ant Ling
蚂蚁集团开源的 MoE 架构大语言模型家族,采用 Anthropic 模式接入。
- 模型列表:详见 config/antling.json。
- 免费额度:每日赠送 50 万免费 token(输入输出共享)。
讯飞星辰 - XunFei Astron
科大讯飞旗下大模型服务平台,采用 Anthropic SDK 模式接入,支持双套餐密钥管理。
- 模型列表:详见 config/xfyun.json(Coding Plan 编程套餐 / Token Plan)。
- 密钥配置:支持 Coding Plan 专用密钥 与 Token Plan 专用密钥 分别配置,配置向导引导选择套餐类型。
LongCat - LongCat
LongCat API 开放平台的 Agentic 模型,采用 Anthropic SDK 模式接入。
- 模型列表:详见 config/longcat.json。
CLI 编程工具 API 提供商
以下提供商本身是开源或商业的 AI 编程 CLI 工具(类似 Claude Code),开放了 API 接口供第三方调用其聚合的模型能力。
OpenCode
- 模型列表:详见 config/opencode.json(Go / Zen)。
Hyper - Charm Hyper
- 模型列表:详见 config/hyper.json。
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- 支持模型:详见 config/grok.json。
⚙️ 高级配置
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.enabled、gcmp.vision.model、gcmp.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.proxy→gcmp.providerOverrides.<provider>.proxy→gcmp.providerOverrides.compatible.proxy(仅非内置 provider) →gcmp.proxy→ VS Codehttp.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 配置项来覆盖提供商的默认设置,包括 baseUrl、proxy、customHeader 等。
支持范围因提供商类型而异:
| 提供商类型 | 支持覆盖的字段 | models[] |
|---|---|---|
| 内置提供商(deepseek/zhipu 等) | baseUrl、customHeader、proxy、retry、models[] | ✅ 支持新增和覆盖模型 |
| 已知提供商(aihubmix/openrouter 等) | customHeader、proxy、retry | ❌ 不支持(走 gcmp.compatibleModels) |
| 自定义提供商(compatibleModels 中自定义 provider) | customHeader、proxy、retry | ❌ 不支持(走 gcmp.compatibleModels) |
| compatible 自身 | customHeader、proxy、retry | ❌ 不支持(走 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 Codehttp.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 配置,您可以完全自定义模型参数,包括扩展请求参数。
- 通过
GCMP: Compatible Provider 设置命令启动配置向导。 - 在
settings.json设置中编辑gcmp.compatibleModels配置项。
展开查看自定义模型配置说明
自定义模型内置已知提供商ID及显示名称列表
聚合转发类型的提供商可提供内置特殊适配,不作为单一提供商提供。
若需要内置或特殊适配的请通过 Issue 提供相关信息。
已知提供商支持通过gcmp.providerOverrides.{providerId}覆盖customHeader、proxy。
| 提供商ID | 提供商名称 | 提供商描述 | 余额查询 |
|---|---|---|---|
| aiping | AI Ping | 用户账户余额 | |
| aihubmix | AIHubMix | 可立享 10% 优惠 | ApiKey余额 |
| openrouter | OpenRouter | 用户账户余额 | |
| 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-sse、openai-responses、anthropic。
自定义 provider 余额/用量查询示例:usage + usages 智能合并
对于 Compatible 自定义 provider,可在 gcmp.providerOverrides.{providerId} 下配置:
usage:可选;单一余额查询时只配置它即可,也可作为usages的公共默认值usages:可选;仅在需要多个命名金额/余额查询模式时使用,每个条目都可在usage基础上增量覆盖
也就是说:
- 只配置
usage:就是单一余额查询 - 需要多个查询模式时:再通过
usages做多金额/多余额覆盖查询 usage和usages都不配置:就不会注册该自定义 provider 的余额/用量查询
内置已知 provider 的 usage / usages 参考配置方式,可直接查看源码 src/utils/knownProviders.ts。
注意:
gcmp.providerOverrides的 provider key 必须与gcmp.compatibleModels[*].provider完全一致,包括大小写。
例如,下面这个更贴近实际 settings.json 的 NekoCode 相关配置片段表示:
gcmp.compatibleModels下有多个模型共用同一个provider: "NekoCode"gcmp.providerOverrides.NekoCode.usage提供默认查询 URLhttps://api2.nekoapi.ai/v1/usage和公共字段路径balancegcmp.providerOverrides.NekoCode.usages.pay与usage的最终查询配置等价,只额外提供显示名称余额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"- 因为
pay与usage解析出的查询配置等价,所以不会再额外生成一个重复的default模式
最终状态栏会按两个命名模式进行查询与展示:
NekoCode / 余额NekoCode / 订阅
💡 FIM / NES 内联补全建议功能
- FIM:根据上下文预测并补全光标处缺失的代码,适合单行/短片段补全。
- NES:基于编辑上下文提供智能代码建议,支持多行代码生成。
使用前必读:需先在对话模型中配置并验证 ApiKey;在输出面板选择
GitHub Copilot Inline Completion via GCMP可查看调试信息。接入的是通用大模型,未针对代码补全专门训练,效果可能不及 Copilot 原生 Tab 补全。
展开查看详细配置说明
FIM / NES 内联补全建议模型配置
FIM 和 NES 补全都使用单独的模型配置,可以分别通过 gcmp.fimCompletion.modelConfig 和 gcmp.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 |
工作流程:
- 请求连续失败达到
failureThreshold后,熔断器从 Closed → Open - Open 状态下所有请求被立即拒绝,等待
cooldownSeconds秒冷却 - 冷却结束后首次
allowRequest()进入 HalfOpen,发放一次探测请求 - 探测成功(
recordSuccess())→ 回到 Closed,恢复服务 - 探测失败(
recordFailure())→ 回到 Open,重新冷却。每冷却周期只重试一次(默认每 30 秒一次),直到成功或用户手动「立即重试」 - 请求被用户取消(
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.json、yarn.lock、pnpm-lock.yaml、bun.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.localsecrets/**:匹配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: 新增提交消息生成
- 自动识别本次变更的关键 diffemoji: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设为copilot,model设为 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
- 每条密钥加密时使用独立的随机盐值和初始向量,相同明文每次加密结果不同
- 加密后的数据包包含
Salt、IV、Tag(认证标签)和密文,全部以十六进制字符串编码 - 解密依赖于 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 文件了解详情。