AI 提交助手
wescode 的 AI 提交助手帮助你自动生成高质量的 commit message、PR 描述和变更摘要,提升代码提交效率。
功能概览
| 能力 | 说明 |
|---|---|
| 自动生成 commit message | 基于 diff 分析生成规范化提交信息 |
| 代码变更摘要 | 用自然语言总结代码变更内容 |
| PR 描述生成 | 自动填充 Pull Request 模板 |
| 变更影响分析 | 分析变更可能影响的模块和功能 |
| 规范检查 | 确保提交信息符合项目规范 |
自动生成 Commit Message
使用方式
- 在 Chat 面板中:完成代码修改后,输入
/commit或「帮我写 commit message」 - 通过快捷键:
Ctrl+Shift+G(或自定义快捷键)打开 Git 面板后触发 - AI 会分析当前 staged 和 unstaged 的变更,生成规范化的提交信息
示例
用户:/commit
AI:基于当前变更生成 commit message:
feat(auth): 添加 JWT refresh token 支持
- 新增 RefreshToken 生成和验证逻辑
- 添加 /api/auth/refresh 端点
- 配置 refresh token 过期时间为 7 天
- 更新 auth middleware 支持双 token 验证
变更文件:
M internal/auth/token.go
A internal/auth/refresh.go
M internal/handler/auth.go
M internal/config/config.go
是否使用此 message?[Y/n]
支持的 Commit 规范
| 规范 | 说明 |
|---|---|
| Conventional Commits | type(scope): description 格式 |
| Angular 风格 | feat / fix / docs / refactor 等 |
| Gitmoji | 使用 emoji 前缀(可选) |
| 自定义模板 | 在 .wescode/commit-template.md 中定义 |
配置提交规范
在 config.yaml 或项目 .wescode/config.yaml 中配置:
commit:
style: conventional # conventional | angular | gitmoji | custom
language: zh-CN # commit message 语言
scope_required: true # 是否要求 scope
max_subject_length: 72
body_required: false
代码变更摘要
生成变更摘要
在完成一组修改后,可以让 AI 生成可读的变更摘要:
用户:总结一下我今天的修改
AI:今日变更摘要:
📝 共修改 8 个文件,新增 245 行,删除 67 行
主要变更:
1. 用户认证模块重构
- 将 session-based 认证迁移到 JWT
- 新增 refresh token 机制
- 修复 token 过期后的静默刷新
2. 订单 API 新增批量查询
- 添加 GET /api/orders/batch 端点
- 支持按日期范围和状态筛选
- 添加分页参数验证
3. 数据库迁移
- 新增 refresh_tokens 表
- 为 orders 表添加复合索引
按时间范围生成
用户:总结最近一周的变更
用户:总结这个分支上的所有修改
用户:对比 main 分支的变更
PR 描述生成
自动填充 PR 模板
当你准备提交 Pull Request 时,AI 可以自动生成完整的 PR 描述:
用户:帮我生成 PR 描述
AI:
## 标题
feat: 实现 JWT 认证和 refresh token 机制
## 概述
将用户认证从 session-based 迁移到 JWT,新增 refresh token
支持,提升 API 的无状态性和可扩展性。
## 变更内容
- 新增 JWT access token 生成和验证(15分钟过期)
- 新增 refresh token 生成和轮换(7天过期)
- 更新 auth middleware 支持 Bearer token
- 新增 /api/auth/refresh 端点
- 添加 refresh_tokens 数据库表和迁移
## 测试
- [x] 单元测试:token 生成和验证
- [x] 集成测试:完整的登录-刷新-登出流程
- [x] 边界测试:过期 token 处理
## 影响范围
- 所有需要认证的 API 端点
- 前端需要更新 token 存储和刷新逻辑
- 部署时需要运行数据库迁移
## 截图/日志
N/A(纯后端变更)
自定义 PR 模板
在 .github/pull_request_template.md 中定义模板,AI 会按照模板结构填充内容。
变更影响分析
分析变更影响
AI 通过 CKG(代码知识图谱)分析代码变更的影响范围:
用户:分析这次修改的影响
AI:变更影响分析:
直接影响:
├── internal/auth/token.go(修改)
│ → 影响 3 个调用方:
│ - handler/auth.go:Login()
│ - handler/auth.go:Refresh()
│ - middleware/auth.go:Authenticate()
│
└── internal/model/user.go(修改)
→ 影响 5 个调用方:
- service/user.go:GetUser()
- service/user.go:UpdateUser()
- handler/user.go:GetProfile()
- handler/admin.go:ListUsers()
- repository/user.go:FindByID()
间接影响:
├── 所有使用 Authenticate 中间件的路由(约 20 个端点)
└── 前端的 auth 模块(需要同步更新 token 处理)
⚠ 建议:
- 在 staging 环境验证所有认证相关的 API
- 通知前端团队同步更新 token 逻辑
- 检查 CI 中的集成测试是否覆盖 token 刷新场景
回归风险评估
用户:这次修改有回归风险吗?
AI:回归风险评估:
风险等级:中等
⚠ 高风险区域:
1. middleware/auth.go — 认证中间件修改影响所有受保护路由
→ 需确保旧 session token 的过渡期处理
✓ 低风险区域:
1. 新增文件 — 不影响现有功能
2. 数据库迁移 — 仅新增表,不修改现有表
建议测试重点:
- 登录 → 访问受保护资源 → token 过期 → 刷新 → 继续访问
- 并发刷新场景(多个请求同时刷新 token)
- 旧 token 在过渡期内的行为
规范检查
提交信息规范检查
AI 会自动检查 commit message 是否符合项目规范:
✓ 类型正确:feat
✓ scope 有效:auth
✓ 标题长度:42/72 字符
✓ 使用祈使语气
✗ body 缺少变更原因说明
→ 建议添加 "Why" 段落解释迁移到 JWT 的原因
常见问题修正
| 问题 | AI 建议 |
|---|---|
| 标题过长 | 自动缩短,详细内容移到 body |
| 缺少 type | 根据变更内容推断合适的 type |
| scope 不一致 | 参考项目历史 commit 建议统一的 scope |
| 混合变更 | 建议拆分为多个原子 commit |
批量 commit 拆分建议
用户:这些修改应该分几次提交?
AI:建议拆分为 3 次提交:
1. refactor(auth): 重构 token 生成逻辑
文件:internal/auth/token.go
原因:纯重构,不改变行为
2. feat(auth): 添加 refresh token 支持
文件:internal/auth/refresh.go, internal/handler/auth.go
原因:新功能,独立于重构
3. chore(db): 添加 refresh_tokens 表迁移
文件:migrations/003_refresh_tokens.sql
原因:数据库变更独立提交
最佳实践
提交频率
- 每完成一个逻辑单元就提交一次
- 不要积攒大量修改一次性提交
- AI 会在检测到 staged 文件过多时提醒拆分
提交顺序
- 先提交基础设施变更(配置、迁移)
- 再提交核心逻辑变更
- 最后提交上层适配代码(handler、UI)
注意事项
- AI 生成的 commit message 是建议,你应该审阅并调整
- 变更影响分析依赖 CKG 索引的完整性,索引未完成时结果可能不全
- 敏感信息(密钥、Token)不会出现在生成的提交信息中
- 所有 Git 操作由你主动触发,AI 不会自动 commit 或 push