@zjex/git-workflow 0.2.24 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deploy-docs.yml +68 -0
- package/.github/workflows/test.yml +24 -4
- package/.husky/pre-commit +14 -0
- package/README.md +72 -1066
- package/dist/index.js +103 -13
- package/docs/.vitepress/cache/deps/_metadata.json +52 -0
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js +9719 -0
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js.map +7 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +12824 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +7 -0
- package/docs/.vitepress/cache/deps/package.json +3 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +583 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js +1813 -0
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
- package/docs/.vitepress/cache/deps/vue.js +347 -0
- package/docs/.vitepress/cache/deps/vue.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js +9719 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js +12824 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/package.json +3 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js +4505 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js +583 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js +1813 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js +347 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js.map +7 -0
- package/docs/.vitepress/config.ts +167 -0
- package/docs/.vitepress/theme/custom.css +39 -0
- package/docs/.vitepress/theme/index.ts +4 -0
- package/docs/README.md +82 -0
- package/docs/commands/branch.md +468 -0
- package/docs/commands/commit.md +554 -0
- package/docs/commands/config.md +346 -0
- package/docs/commands/index.md +312 -0
- package/docs/commands/interactive.md +384 -0
- package/docs/commands/release.md +300 -0
- package/docs/commands/stash.md +309 -0
- package/docs/commands/tag.md +278 -0
- package/docs/commands/update.md +347 -0
- package/docs/config/ai-config.md +160 -0
- package/docs/config/branch-config.md +133 -0
- package/docs/config/commit-config.md +185 -0
- package/docs/config/config-file.md +776 -0
- package/docs/config/examples.md +279 -0
- package/docs/config/index.md +478 -0
- package/docs/guide/ai-commit.md +576 -0
- package/docs/guide/basic-usage.md +522 -0
- package/docs/guide/best-practices.md +426 -0
- package/docs/guide/branch-management.md +712 -0
- package/docs/guide/getting-started.md +294 -0
- package/docs/guide/index.md +168 -0
- package/docs/guide/installation.md +449 -0
- package/docs/guide/release-management.md +744 -0
- package/docs/guide/stash-management.md +608 -0
- package/docs/guide/tag-management.md +614 -0
- package/docs/index.md +205 -0
- package/docs/public/favicon.svg +21 -0
- package/docs/public/hero-logo.svg +43 -0
- package/docs/public/logo.svg +20 -0
- package/package.json +11 -2
- package/scripts/publish.js +55 -8
- package/scripts/publish.sh +20 -2
- package/scripts/release.sh +20 -2
- package/scripts/update-test-count.js +55 -0
- package/src/ai-service.ts +101 -15
- package/src/commands/init.ts +18 -0
- package/src/config.ts +1 -0
- package/tests/ai-service.test.ts +237 -2
- package/tests/help.test.ts +134 -0
- package/tests/init.test.ts +582 -0
- package/tests/release.test.ts +333 -0
- package/tests/setup.ts +21 -0
- package/tests/stash.test.ts +376 -0
- package/tests/update.test.ts +402 -0
- package/vitest.config.ts +3 -0
- package/zjex-logo.svg +22 -0
- package/zjex-optimized.svg +34 -0
- package/zjex.svg +1 -0
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
# AI 智能提交
|
|
2
|
+
|
|
3
|
+
AI 智能提交是 Git Workflow 的核心功能之一,它能够自动分析代码变更并生成规范的 commit message,让你告别"词穷"的烦恼。
|
|
4
|
+
|
|
5
|
+
## 🤖 功能概述
|
|
6
|
+
|
|
7
|
+
### 核心特性
|
|
8
|
+
|
|
9
|
+
- **⚡️ 快速生成** - 2-3 秒内完成分析和生成
|
|
10
|
+
- **🎯 准确识别** - 自动识别 feat/fix/docs 等提交类型
|
|
11
|
+
- **📝 规范格式** - 符合 Conventional Commits 标准
|
|
12
|
+
- **🇨🇳 多语言支持** - 支持中文和英文
|
|
13
|
+
- **🔄 可预览可拒绝** - 生成后可预览,不满意可切换到手动模式
|
|
14
|
+
- **🛡️ 隐私保护** - 只分析 git diff,不上传完整代码
|
|
15
|
+
|
|
16
|
+
### 支持的 AI 提供商
|
|
17
|
+
|
|
18
|
+
| 提供商 | 费用 | 特点 | 推荐指数 |
|
|
19
|
+
| ------------- | ------ | ------------------------------ | -------- |
|
|
20
|
+
| GitHub Models | 免费 | 每天 150 次,需要 GitHub Token | ⭐⭐⭐⭐⭐ |
|
|
21
|
+
| OpenAI | 付费 | 质量高,速度快 | ⭐⭐⭐⭐ |
|
|
22
|
+
| Claude | 付费 | 理解能力强,适合复杂变更 | ⭐⭐⭐⭐ |
|
|
23
|
+
| Ollama | 免费 | 本地运行,完全私有 | ⭐⭐⭐ |
|
|
24
|
+
|
|
25
|
+
## 🚀 快速开始
|
|
26
|
+
|
|
27
|
+
### 1. 启用 AI Commit
|
|
28
|
+
|
|
29
|
+
如果还没有配置,运行初始化命令:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
gw init
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
选择启用 AI commit 功能:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
? 是否启用 AI commit 功能: 是
|
|
39
|
+
? 选择 AI 提供商: GitHub Models(免费,推荐)
|
|
40
|
+
|
|
41
|
+
💡 如何获取 GitHub Token:
|
|
42
|
+
1. 访问: https://github.com/settings/tokens/new
|
|
43
|
+
2. 勾选 'repo' 权限
|
|
44
|
+
3. 生成并复制 token
|
|
45
|
+
|
|
46
|
+
? 输入你的 GitHub Token: ghp_xxxxxxxxxxxx
|
|
47
|
+
? 选择语言: 中文
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. 使用 AI 提交
|
|
51
|
+
|
|
52
|
+
在有代码变更的项目中:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
gw c
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
选择 AI 模式:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
已暂存的文件:
|
|
62
|
+
src/auth.ts
|
|
63
|
+
src/login.ts
|
|
64
|
+
────────────────────────────────────────
|
|
65
|
+
? 选择 commit 方式:
|
|
66
|
+
❯ 🤖 AI 自动生成 commit message
|
|
67
|
+
✍️ 手动编写 commit message
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
AI 会自动分析变更并生成提交信息:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
✔ AI 生成完成
|
|
74
|
+
|
|
75
|
+
AI 生成的 commit message:
|
|
76
|
+
✨ feat(auth): 添加用户登录功能
|
|
77
|
+
|
|
78
|
+
- 实现用户名密码验证
|
|
79
|
+
- 添加登录状态管理
|
|
80
|
+
- 集成 JWT token 处理
|
|
81
|
+
────────────────────────────────────────
|
|
82
|
+
? 使用这个 commit message?
|
|
83
|
+
❯ ✅ 使用
|
|
84
|
+
❌ 不使用,切换到手动模式
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 🔧 配置详解
|
|
88
|
+
|
|
89
|
+
### 配置文件位置
|
|
90
|
+
|
|
91
|
+
AI commit 配置保存在:
|
|
92
|
+
|
|
93
|
+
- **全局配置**: `~/.gwrc.json`
|
|
94
|
+
- **项目配置**: `.gwrc.json`
|
|
95
|
+
|
|
96
|
+
### 完整配置示例
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"aiCommit": {
|
|
101
|
+
"enabled": true,
|
|
102
|
+
"provider": "github",
|
|
103
|
+
"apiKey": "ghp_xxxxxxxxxxxx",
|
|
104
|
+
"model": "gpt-4o-mini",
|
|
105
|
+
"language": "zh-CN",
|
|
106
|
+
"maxTokens": 200,
|
|
107
|
+
"temperature": 0.7,
|
|
108
|
+
"customPrompt": ""
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 配置项说明
|
|
114
|
+
|
|
115
|
+
| 配置项 | 类型 | 默认值 | 说明 |
|
|
116
|
+
| -------------- | --------- | ---------- | ---------------------------------------------------- |
|
|
117
|
+
| `enabled` | `boolean` | `true` | 是否启用 AI commit 功能 |
|
|
118
|
+
| `provider` | `string` | `"github"` | AI 提供商:`github` / `openai` / `claude` / `ollama` |
|
|
119
|
+
| `apiKey` | `string` | - | API key,留空使用内置 key(仅 GitHub Models) |
|
|
120
|
+
| `model` | `string` | 根据提供商 | 模型名称 |
|
|
121
|
+
| `language` | `string` | `"zh-CN"` | 生成语言:`zh-CN` / `en-US` |
|
|
122
|
+
| `maxTokens` | `number` | `200` | 最大 token 数 |
|
|
123
|
+
| `temperature` | `number` | `0.7` | 创造性参数(0-1) |
|
|
124
|
+
| `customPrompt` | `string` | - | 自定义提示词 |
|
|
125
|
+
|
|
126
|
+
## 🌟 各提供商详细配置
|
|
127
|
+
|
|
128
|
+
### GitHub Models(推荐)
|
|
129
|
+
|
|
130
|
+
**优势:**
|
|
131
|
+
- 完全免费,每天 150 次调用
|
|
132
|
+
- 无需信用卡,只需 GitHub 账号
|
|
133
|
+
- 模型质量高,速度快
|
|
134
|
+
- 支持多种模型
|
|
135
|
+
|
|
136
|
+
**配置步骤:**
|
|
137
|
+
|
|
138
|
+
1. 获取 GitHub Token:
|
|
139
|
+
- 访问:https://github.com/settings/tokens/new
|
|
140
|
+
- Token 名称:`git-workflow-ai`
|
|
141
|
+
- 勾选权限:`repo`(用于访问 GitHub Models API)
|
|
142
|
+
- 点击 "Generate token"
|
|
143
|
+
- 复制生成的 token(以 `ghp_` 开头)
|
|
144
|
+
|
|
145
|
+
2. 配置 Git Workflow:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"aiCommit": {
|
|
150
|
+
"enabled": true,
|
|
151
|
+
"provider": "github",
|
|
152
|
+
"apiKey": "ghp_your_token_here",
|
|
153
|
+
"model": "gpt-4o-mini",
|
|
154
|
+
"language": "zh-CN"
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**可用模型:**
|
|
160
|
+
- `gpt-4o-mini` - 快速,适合日常使用(推荐)
|
|
161
|
+
- `gpt-4o` - 质量更高,token 消耗更多
|
|
162
|
+
- `gpt-3.5-turbo` - 经典模型,平衡性能和质量
|
|
163
|
+
|
|
164
|
+
### OpenAI
|
|
165
|
+
|
|
166
|
+
**优势:**
|
|
167
|
+
- 模型质量最高
|
|
168
|
+
- 响应速度快
|
|
169
|
+
- 支持最新的 GPT 模型
|
|
170
|
+
|
|
171
|
+
**配置步骤:**
|
|
172
|
+
|
|
173
|
+
1. 获取 API Key:
|
|
174
|
+
- 访问:https://platform.openai.com/api-keys
|
|
175
|
+
- 创建新的 API Key
|
|
176
|
+
- 复制 API Key(以 `sk-` 开头)
|
|
177
|
+
|
|
178
|
+
2. 配置:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"aiCommit": {
|
|
183
|
+
"enabled": true,
|
|
184
|
+
"provider": "openai",
|
|
185
|
+
"apiKey": "sk-your-api-key-here",
|
|
186
|
+
"model": "gpt-4o-mini",
|
|
187
|
+
"language": "zh-CN"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**可用模型:**
|
|
193
|
+
- `gpt-4o-mini` - 性价比最高(推荐)
|
|
194
|
+
- `gpt-4o` - 最新最强模型
|
|
195
|
+
- `gpt-3.5-turbo` - 经济实惠
|
|
196
|
+
|
|
197
|
+
### Claude (Anthropic)
|
|
198
|
+
|
|
199
|
+
**优势:**
|
|
200
|
+
- 理解能力强,适合复杂变更
|
|
201
|
+
- 生成的描述更详细
|
|
202
|
+
- 对中文支持良好
|
|
203
|
+
|
|
204
|
+
**配置步骤:**
|
|
205
|
+
|
|
206
|
+
1. 获取 API Key:
|
|
207
|
+
- 访问:https://console.anthropic.com/
|
|
208
|
+
- 创建 API Key
|
|
209
|
+
- 复制 API Key
|
|
210
|
+
|
|
211
|
+
2. 配置:
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"aiCommit": {
|
|
216
|
+
"enabled": true,
|
|
217
|
+
"provider": "claude",
|
|
218
|
+
"apiKey": "sk-ant-your-api-key-here",
|
|
219
|
+
"model": "claude-3-haiku-20240307",
|
|
220
|
+
"language": "zh-CN"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**可用模型:**
|
|
226
|
+
- `claude-3-haiku-20240307` - 快速经济(推荐)
|
|
227
|
+
- `claude-3-sonnet-20240229` - 平衡性能
|
|
228
|
+
- `claude-3-opus-20240229` - 最高质量
|
|
229
|
+
|
|
230
|
+
### Ollama(本地)
|
|
231
|
+
|
|
232
|
+
**优势:**
|
|
233
|
+
- 完全免费,无限制
|
|
234
|
+
- 数据不离开本地,隐私性最高
|
|
235
|
+
- 支持多种开源模型
|
|
236
|
+
|
|
237
|
+
**配置步骤:**
|
|
238
|
+
|
|
239
|
+
1. 安装 Ollama:
|
|
240
|
+
- 访问:https://ollama.com/
|
|
241
|
+
- 下载并安装 Ollama
|
|
242
|
+
- 启动 Ollama 服务
|
|
243
|
+
|
|
244
|
+
2. 下载模型:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# 推荐模型
|
|
248
|
+
ollama pull llama3.2:3b
|
|
249
|
+
ollama pull qwen2.5:7b
|
|
250
|
+
ollama pull codellama:7b
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
3. 配置:
|
|
254
|
+
|
|
255
|
+
```json
|
|
256
|
+
{
|
|
257
|
+
"aiCommit": {
|
|
258
|
+
"enabled": true,
|
|
259
|
+
"provider": "ollama",
|
|
260
|
+
"model": "llama3.2:3b",
|
|
261
|
+
"language": "zh-CN",
|
|
262
|
+
"baseURL": "http://localhost:11434"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**推荐模型:**
|
|
268
|
+
- `llama3.2:3b` - 轻量快速,适合日常使用
|
|
269
|
+
- `qwen2.5:7b` - 中文支持更好
|
|
270
|
+
- `codellama:7b` - 专门针对代码优化
|
|
271
|
+
|
|
272
|
+
## 🎯 使用技巧
|
|
273
|
+
|
|
274
|
+
### 1. 提高生成质量
|
|
275
|
+
|
|
276
|
+
**暂存相关文件:**
|
|
277
|
+
```bash
|
|
278
|
+
# 只暂存相关的文件,避免混合不同功能的变更
|
|
279
|
+
git add src/auth.ts src/login.ts
|
|
280
|
+
gw c
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**分批提交:**
|
|
284
|
+
```bash
|
|
285
|
+
# 将大的变更拆分成多个小的、逻辑清晰的提交
|
|
286
|
+
git add src/auth.ts
|
|
287
|
+
gw c # 提交认证相关变更
|
|
288
|
+
|
|
289
|
+
git add src/ui/login.tsx
|
|
290
|
+
gw c # 提交 UI 相关变更
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 2. 自定义提示词
|
|
294
|
+
|
|
295
|
+
如果默认生成的提交信息不符合你的需求,可以自定义提示词:
|
|
296
|
+
|
|
297
|
+
```json
|
|
298
|
+
{
|
|
299
|
+
"aiCommit": {
|
|
300
|
+
"customPrompt": "请生成简洁的中文 commit message,格式为:类型(范围): 描述。类型使用中文,如:功能、修复、文档等。"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 3. 语言设置
|
|
306
|
+
|
|
307
|
+
根据团队需求选择合适的语言:
|
|
308
|
+
|
|
309
|
+
```json
|
|
310
|
+
{
|
|
311
|
+
"aiCommit": {
|
|
312
|
+
"language": "en-US" // 英文提交信息
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
生成效果对比:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# 中文 (zh-CN)
|
|
321
|
+
✨ feat(auth): 添加用户登录功能
|
|
322
|
+
|
|
323
|
+
# 英文 (en-US)
|
|
324
|
+
✨ feat(auth): add user login functionality
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 4. 调整创造性
|
|
328
|
+
|
|
329
|
+
通过 `temperature` 参数控制生成的创造性:
|
|
330
|
+
|
|
331
|
+
```json
|
|
332
|
+
{
|
|
333
|
+
"aiCommit": {
|
|
334
|
+
"temperature": 0.3 // 更保守,生成更一致的结果
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
- `0.0-0.3` - 保守,结果一致性高
|
|
340
|
+
- `0.4-0.7` - 平衡(推荐)
|
|
341
|
+
- `0.8-1.0` - 创造性高,结果多样
|
|
342
|
+
|
|
343
|
+
## 🔍 生成示例
|
|
344
|
+
|
|
345
|
+
### 功能开发
|
|
346
|
+
|
|
347
|
+
**代码变更:**
|
|
348
|
+
```diff
|
|
349
|
+
// src/auth.ts
|
|
350
|
+
+ export function validateUser(username: string, password: string) {
|
|
351
|
+
+ return username.length > 0 && password.length >= 6;
|
|
352
|
+
+ }
|
|
353
|
+
|
|
354
|
+
// src/login.tsx
|
|
355
|
+
+ const handleLogin = () => {
|
|
356
|
+
+ if (validateUser(username, password)) {
|
|
357
|
+
+ // 登录逻辑
|
|
358
|
+
+ }
|
|
359
|
+
+ }
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**AI 生成:**
|
|
363
|
+
```
|
|
364
|
+
✨ feat(auth): 添加用户登录验证功能
|
|
365
|
+
|
|
366
|
+
- 实现用户名和密码验证逻辑
|
|
367
|
+
- 添加登录表单处理函数
|
|
368
|
+
- 设置密码最小长度要求
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Bug 修复
|
|
372
|
+
|
|
373
|
+
**代码变更:**
|
|
374
|
+
```diff
|
|
375
|
+
// src/utils.ts
|
|
376
|
+
- return data.map(item => item.name);
|
|
377
|
+
+ return data?.map(item => item?.name) || [];
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**AI 生成:**
|
|
381
|
+
```
|
|
382
|
+
🐛 fix(utils): 修复数据为空时的崩溃问题
|
|
383
|
+
|
|
384
|
+
- 添加空值检查避免 TypeError
|
|
385
|
+
- 使用可选链操作符增强安全性
|
|
386
|
+
- 提供默认空数组作为兜底
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### 文档更新
|
|
390
|
+
|
|
391
|
+
**代码变更:**
|
|
392
|
+
```diff
|
|
393
|
+
// README.md
|
|
394
|
+
+ ## 安装
|
|
395
|
+
+
|
|
396
|
+
+ ```bash
|
|
397
|
+
+ npm install -g @zjex/git-workflow
|
|
398
|
+
+ ```
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**AI 生成:**
|
|
402
|
+
```
|
|
403
|
+
📝 docs: 添加安装说明文档
|
|
404
|
+
|
|
405
|
+
- 补充 npm 全局安装命令
|
|
406
|
+
- 完善项目使用指南
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### 重构代码
|
|
410
|
+
|
|
411
|
+
**代码变更:**
|
|
412
|
+
```diff
|
|
413
|
+
// src/api.ts
|
|
414
|
+
- function getUserData(id) {
|
|
415
|
+
- return fetch(`/api/users/${id}`).then(res => res.json());
|
|
416
|
+
- }
|
|
417
|
+
+ async function getUserData(id: string): Promise<User> {
|
|
418
|
+
+ const response = await fetch(`/api/users/${id}`);
|
|
419
|
+
+ return response.json();
|
|
420
|
+
+ }
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**AI 生成:**
|
|
424
|
+
```
|
|
425
|
+
♻️ refactor(api): 重构用户数据获取函数
|
|
426
|
+
|
|
427
|
+
- 使用 async/await 替代 Promise 链
|
|
428
|
+
- 添加 TypeScript 类型注解
|
|
429
|
+
- 提升代码可读性和类型安全
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
## 🛡️ 隐私与安全
|
|
433
|
+
|
|
434
|
+
### 数据处理
|
|
435
|
+
|
|
436
|
+
Git Workflow 在使用 AI 功能时:
|
|
437
|
+
|
|
438
|
+
- ✅ **只发送 git diff** - 仅发送代码变更差异,不发送完整文件
|
|
439
|
+
- ✅ **不存储数据** - AI 提供商不会存储你的代码变更
|
|
440
|
+
- ✅ **本地处理** - 敏感信息(如 API key)仅存储在本地
|
|
441
|
+
- ✅ **可选功能** - 可以随时禁用 AI 功能
|
|
442
|
+
|
|
443
|
+
### 安全建议
|
|
444
|
+
|
|
445
|
+
1. **使用项目配置** - 敏感项目可以禁用 AI 功能
|
|
446
|
+
2. **定期更新 Token** - 定期轮换 API key
|
|
447
|
+
3. **检查权限** - GitHub Token 只需要 `repo` 权限
|
|
448
|
+
4. **本地优先** - 对于高度敏感的项目,考虑使用 Ollama
|
|
449
|
+
|
|
450
|
+
### 禁用 AI 功能
|
|
451
|
+
|
|
452
|
+
如果不想使用 AI 功能,可以在配置中禁用:
|
|
453
|
+
|
|
454
|
+
```json
|
|
455
|
+
{
|
|
456
|
+
"aiCommit": {
|
|
457
|
+
"enabled": false
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
或者在使用时选择手动模式:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
gw c
|
|
466
|
+
# 选择 "✍️ 手动编写 commit message"
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
## 🔧 故障排除
|
|
470
|
+
|
|
471
|
+
### 常见问题
|
|
472
|
+
|
|
473
|
+
**1. API Key 无效**
|
|
474
|
+
|
|
475
|
+
```
|
|
476
|
+
❌ AI 生成失败: Invalid API key
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**解决方案:**
|
|
480
|
+
- 检查 API key 是否正确
|
|
481
|
+
- 确认 API key 有足够的权限
|
|
482
|
+
- 尝试重新生成 API key
|
|
483
|
+
|
|
484
|
+
**2. 网络连接问题**
|
|
485
|
+
|
|
486
|
+
```
|
|
487
|
+
❌ AI 生成失败: Network timeout
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
**解决方案:**
|
|
491
|
+
- 检查网络连接
|
|
492
|
+
- 尝试使用代理
|
|
493
|
+
- 切换到其他 AI 提供商
|
|
494
|
+
|
|
495
|
+
**3. 配额超限**
|
|
496
|
+
|
|
497
|
+
```
|
|
498
|
+
❌ AI 生成失败: Rate limit exceeded
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
**解决方案:**
|
|
502
|
+
- 等待配额重置(GitHub Models 每天重置)
|
|
503
|
+
- 切换到其他 AI 提供商
|
|
504
|
+
- 考虑升级到付费计划
|
|
505
|
+
|
|
506
|
+
**4. Ollama 连接失败**
|
|
507
|
+
|
|
508
|
+
```
|
|
509
|
+
❌ AI 生成失败: Connection refused
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
**解决方案:**
|
|
513
|
+
- 确认 Ollama 服务正在运行
|
|
514
|
+
- 检查端口配置(默认 11434)
|
|
515
|
+
- 确认模型已下载
|
|
516
|
+
|
|
517
|
+
### 调试模式
|
|
518
|
+
|
|
519
|
+
启用详细日志查看具体错误:
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
DEBUG=gw:ai gw c
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### 降级方案
|
|
526
|
+
|
|
527
|
+
如果 AI 功能不可用,Git Workflow 会自动降级到手动模式:
|
|
528
|
+
|
|
529
|
+
```
|
|
530
|
+
⚠️ AI 服务暂时不可用,已切换到手动模式
|
|
531
|
+
|
|
532
|
+
? 选择提交类型:
|
|
533
|
+
✨ feat 新功能
|
|
534
|
+
🐛 fix 修复 Bug
|
|
535
|
+
📝 docs 文档更新
|
|
536
|
+
...
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
## 📊 性能优化
|
|
540
|
+
|
|
541
|
+
### 提高响应速度
|
|
542
|
+
|
|
543
|
+
1. **选择合适的模型**:
|
|
544
|
+
- GitHub Models: `gpt-4o-mini`(推荐)
|
|
545
|
+
- OpenAI: `gpt-3.5-turbo`
|
|
546
|
+
- Claude: `claude-3-haiku`
|
|
547
|
+
- Ollama: `llama3.2:3b`
|
|
548
|
+
|
|
549
|
+
2. **减少 token 消耗**:
|
|
550
|
+
```json
|
|
551
|
+
{
|
|
552
|
+
"aiCommit": {
|
|
553
|
+
"maxTokens": 150, // 减少最大 token 数
|
|
554
|
+
"temperature": 0.3 // 降低创造性
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
3. **本地缓存**:
|
|
560
|
+
Git Workflow 会缓存相似的变更,避免重复请求。
|
|
561
|
+
|
|
562
|
+
### 批量操作
|
|
563
|
+
|
|
564
|
+
对于多个小的变更,可以分批暂存和提交:
|
|
565
|
+
|
|
566
|
+
```bash
|
|
567
|
+
# 脚本示例
|
|
568
|
+
for file in src/*.ts; do
|
|
569
|
+
git add "$file"
|
|
570
|
+
gw c --auto # 假设的自动模式
|
|
571
|
+
done
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
---
|
|
575
|
+
|
|
576
|
+
AI 智能提交功能让你告别"词穷"的烦恼,生成规范、准确的提交信息。选择适合的 AI 提供商,配置好参数,就能享受高效的提交体验!
|