deepseek 代码和 git 补全
Github
警告:此仓库基本由 Deepseek 大人开发,请谨慎使用
~AI 编程太好用了,已经变成了离开 AI 大人就什么都不会的笨蛋了齁哦哦~
这是一个 VS Code 扩展,使用 Deepseek V4 提供 Git 提交信息生成和代码补全功能。
功能特性
智能 Git 提交信息生成
- 自动分析暂存区文件更改,生成规范的 Git 提交信息
- 支持 Conventional Commits 规范(feat, fix, refactor 等类型)
- 可配置提交信息的语言(中文/英文/自动)
- 支持 emoji 前缀(如 ✨, 🐛, 📝)
- 在源代码管理视图直接触发,一键生成
AI 代码补全
- 基于 DeepSeek 的智能代码补全建议
- 自动分析上下文代码,提供精准的补全
- 支持所有编程语言
- 可调节触发延迟,避免过度请求
提交解释
- 选择历史提交,DeepSeek 会为您详细解释其变更内容
使用
API 密钥
密钥通过 操作系统凭据管理器 加密存储(Windows 凭据管理器 / macOS Keychain),不会保存在 settings.json 中,也不会随 VS Code 设置同步。
在设置页中操作:
- 打开设置
Ctrl+,,搜索 deepseek-completion
- 在
Api Key Status 项中点击 🔑 设置 API 密钥 链接
生成提交信息
- 暂存更改(若无暂存则自动使用未暂存的更改)
- 在源代码管理视图(
Ctrl + Shift + G)的工具栏点击 ✨ 按钮
- 或使用快捷键
Ctrl + Shift + G 然后按 C
- 或者在命令面板(
Ctrl + Shift + P)中执行 DeepSeek: 生成 Git 提交信息
代码补全
只需正常编写代码,DeepSeek 会在您输入时自动提供补全建议,按 Tab 接受建议,或使用Alt+\手动触发。
命令
| 命令 |
描述 |
快捷键 |
DeepSeek: 生成 Git 提交信息 |
分析暂存更改并生成提交信息 |
Ctrl+Shift+G c |
DeepSeek: 为暂存更改生成提交信息 |
同上(显式命令) |
- |
技术实现
- 使用 VS Code 的
InlineCompletionItemProvider API 实现代码补全
- 使用 Git 扩展 API 获取暂存区更改和提交历史
- 流式 API 调用实现实时的提交信息生成体验
- 请求防抖和取消机制避免资源浪费
- 使用
SecretStorage API 安全存储 API 密钥(系统凭据管理器)
从源码构建
克隆仓库后,按以下步骤构建和打包:
前置要求
- Node.js >= 18.x
- npm >= 9.x
- VS Code >= 1.85.0
构建步骤
# 1. 安装依赖(使用 lock 文件确保版本一致)
npm ci
# 2. 编译 TypeScript
npm run compile
# 3. (可选)监视模式 - 源码变化时自动重新编译
npm run watch
# 4. 打包为 VSIX 安装包
npx @vscode/vsce package --allow-missing-repository
# 打包后会在根目录生成 .vsix 文件,直接拖入 VS Code 扩展面板即可安装
在 VS Code 中调试运行
- 在 VS Code 中打开本项目
- 按
F5 启动扩展开发调试模式
- 会打开一个新的 VS Code 窗口(扩展开发主机),DeepSeek 扩展已自动加载
- 在该窗口中进行测试
项目结构
deepseek-completion/
├── .vscode/ # VS Code 调试/任务配置
│ ├── launch.json # F5 调试配置
│ └── tasks.json # 构建任务
├── src/ # TypeScript 源码
│ ├── extension.ts # 扩展入口(激活/命令注册)
│ ├── config.ts # 配置管理(SecretStorage + Settings)
│ ├── deepseekApi.ts # DeepSeek API 客户端
│ ├── commitMessageProvider.ts # Git 提交信息生成
│ └── completionProvider.ts # 内联代码补全
├── out/ # 编译输出(已 gitignore)
├── package.json # 扩展清单
├── tsconfig.json # TypeScript 配置
└── package-lock.json # 锁定依赖版本(确保可复现)
构建产物清单
| 文件/目录 |
是否提交 |
说明 |
src/ |
✅ 是 |
TypeScript 源码 |
out/ |
❌ 否 |
编译输出,npm run compile 生成 |
node_modules/ |
❌ 否 |
依赖包,npm ci 安装 |
*.vsix |
❌ 否 |
安装包,vsce package 生成 |
package-lock.json |
✅ 是 |
锁定精确版本,保证可复现构建 |
可复现构建:克隆仓库后,只需依次执行 npm ci → npm run compile → npx @vscode/vsce package 即可从源码生成完全一致的 VSIX 安装包。
自动构建与发布(CI)
.github/workflows/release.yml 在向 release 分支推送提交信息以 bump version 开头的提交时自动执行:
- 安装依赖 → 打包 VSIX(
vsce package)
- 从
CHANGELOG.md 提取当前版本条目作为 Release 说明
- 在 GitHub 创建对应的 Release 并附带 VSIX 产物
工作流使用 Node 22(vsce 3.9+ 的基线要求)。
关于自动上架到插件市场
当前不自动发布到 VS Code 插件市场——三种自动化方案目前都缺少可用条件:
| 方案 |
现状 |
vsce publish --oidc(GitHub Actions 原生可信发布) |
Marketplace 端尚未上线配套的 trusted publishing 策略配置,调用直接返回 404 ... '/_apis/gallery/token' was not found(见 microsoft/vscode-vsce#1291) |
vsce publish --azure-credential(Entra ID + OIDC 联合身份) |
需要一个 Entra ID 租户;个人微软账号若从未注册过 Azure(名下无租户),登录 https://entra.microsoft.com 会报「所选的用户帐户在租户 Microsoft Services 中不存在…」,须先注册免费 Azure 账号 |
vsce publish -p <PAT> |
Azure DevOps 的 Global PAT 将于 2026-12-01 全部停用,而 Marketplace 发布要求 PAT 具备 “all accessible organizations” 权限 |
许可证
MIT License
| |