wangzhy Git Commit Message
在 VS Code 的源代码管理标题栏点击 ✨ 生成中文提交信息,根据 Git 改动生成中文提交信息并填入当前仓库的提交框。
格式固定为单行:
<type>(<scope>): <subject>
例如 fix(auth): 修复登录状态过期后无法跳转的问题。type 和 scope 必填;subject 使用中文,可以保留英文技术名称;不生成正文、footer 或 ! 标记。插件不会自动暂存、提交或推送代码。
安装与首次使用
要求 VS Code 1.100.0 或更高版本、已启用内置 Git 扩展、已信任的本地或远程 Git 工作区。
- 在扩展面板菜单选择 从 VSIX 安装…,选择
wangzhy-git-commit-message-0.1.2.vsix。
- 打开 Git 仓库,建议先暂存本次准备提交的改动。
- 打开插件设置,在 Api Key 输入框填写密钥,再点击源代码管理标题栏的 ✨ 按钮。也可先点击生成,按提示输入密钥;输入后会同步显示在设置页。
- 检查填入提交框的结果,然后照常提交。
默认连接 https://api.deepseek.com,使用 deepseek-flash。模型名以 DeepSeek 官方文档 为依据,也可以自行更改。调用费用由所选 API 服务商收取。
选择自己的 LLM API
打开命令面板,运行 Git 提交助手: 配置 LLM API,选择 DeepSeek 或自定义接口,然后设置 API 地址、模型 ID 和认证方式。
支持 OpenAI 兼容的 Chat Completions 协议,例如 DeepSeek、提供该协议的云服务或本地模型网关。这里的“兼容”指 POST /chat/completions 请求及 choices[0].message.content 响应;原生 Anthropic Messages 和 OpenAI Responses 协议不在本版本范围内。
| 配置项 |
默认值 |
说明 |
wangzhyCommitMessage.apiBaseUrl |
https://api.deepseek.com |
基础地址或完整 /chat/completions 地址 |
wangzhyCommitMessage.model |
deepseek-flash |
所选接口支持的模型 ID |
wangzhyCommitMessage.apiKey |
空 |
当前接口的密钥,可在设置页直接查看、修改或清空 |
wangzhyCommitMessage.requireApiKey |
true |
本地无认证服务可关闭 |
wangzhyCommitMessage.timeoutSeconds |
90 |
请求总超时,包含一次格式修正 |
wangzhyCommitMessage.maxDiffChars |
60000 |
文件清单和 diff 内容的字符预算 |
例如,本地兼容服务的基础地址可填写 http://localhost:11434/v1,模型 ID 按本地已安装的模型填写。建议云服务使用 HTTPS。API 地址不能包含 URL 用户名、密码、查询参数或片段。
API 地址、模型和认证配置只允许在用户设置中设置,避免项目配置改变请求目的地。API Key 与当前 API 地址配套,手动切换网关时请同时更新密钥;配置向导会一并设置。API Key 明文保存在用户 settings.json 中,设置页可直接查看、编辑和清空。设置当前 API 的密钥 和 删除当前 API 的密钥 命令也会同步修改这一项;关闭 Require Api Key 后不发送认证头。
从 0.1.0 升级时,插件激活后会将当前接口的旧密钥导入此配置项,并移除对应的旧加密存储值。已有配置(包括手动填入的空值)不会被旧值覆盖。使用 Remote SSH、WSL 或容器时,请在相应的远程环境配置并确认接口可达。
Copilot 按钮的位置
本版本采用稳定版 VS Code 支持的 scm/title 菜单,按钮位于源代码管理标题栏。它不会自动禁用 GitHub Copilot,也不会修改 Copilot 的文件或命令。
如需隐藏 Copilot 的 Generate Commit Message 按钮,在该按钮上右键,选择隐藏。界面语言或版本不同,菜单文字可能略有区别;隐藏操作由 VS Code 保存。
截图中的提交框内部按钮属于提案 API contribSourceControlInputBoxMenu,普通稳定版扩展无法使用。当前 Copilot 的该按钮也没有独立的公开关闭设置,因此本版本不承诺自动原位替换。依据:VS Code 菜单定义、Copilot 菜单声明。
生成规则与边界
- 有暂存内容:只读取暂存区的 diff;同一文件的未暂存内容不混入本次提交。
- 无暂存内容:读取工作区改动和未跟踪文本文件,遵守 Git 的忽略规则。二进制文件仅提供改动说明,符号链接仅提供链接目标文字。
- 多仓库:点击仓库标题栏按钮时使用该仓库;从命令面板运行时选择目标仓库。
- 内容过大:按预算截断并提示。超长文件清单也可能截断,发送的数据会注明省略数量。需要更完整的结果时,可增大字符预算或分批暂存。
- 无改动、冲突、接口错误、取消或格式仍不合格:保留原提交内容。不合格结果会自动请求修正一次,最多调用两次 API。
- 等待期间手动修改提交框或完成其他提交:不覆盖新内容,可从通知查看本次生成结果。
只有点击生成时才会把所选仓库的文件路径和改动内容发送到配置的服务商。插件不收集遥测,日志不记录密钥、请求正文或返回的代码内容。请在使用前检查本次改动是否包含不应发送的内容。
开发与验证
npm ci
npm run check
npm test
npm run test:integration
npm run package
npm run test:integration 使用本机 VS Code,在临时用户目录、临时扩展目录和临时 Git 仓库中测试,调用本地模拟 API。macOS 默认检测 /Applications/Visual Studio Code.app;其他位置或系统请设置 CODE_EXECUTABLE。测试不会修改日常 VS Code 设置,不需要真实 API Key。
使用 VS Code 打开本项目后按 F5,可以在扩展开发窗口调试。运行时没有第三方依赖,@vscode/vsce 仅用于打包。
发布到 Marketplace 使用发布者 wangzhy。首次发布需在插件目录运行 npx vsce login wangzhy 完成登录;更新版本及 CHANGELOG.md、验证通过后执行 npm run publish:marketplace。发布前会自动运行语法检查和单元测试。凭据由 vsce 管理,不写入工程文件。private: true 防止误发到 npm,不影响扩展市场发布。
来源与许可
参考 AutismSuperman/git-commit-message-helper 的 AI 提交信息生成、Git 改动上下文和兼容 API 工作流程,针对 VS Code 重新实现。本版本仅移植中文 AI 生成和 API 配置需求,不包含原项目的 JetBrains 界面、Velocity 模板或手工结构化编辑器。
使用 Apache-2.0 许可,安装包附带 LICENSE 和 NOTICE。