gitlab-ai-review 3.2.0 → 3.2.2

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.
Files changed (2) hide show
  1. package/lib/prompt-tools.js +97 -17
  2. package/package.json +1 -1
@@ -67,12 +67,24 @@ export function buildFileReviewPrompt(fileName, meaningfulChanges) {
67
67
  prompt += `\`\`\`\n`;
68
68
  });
69
69
 
70
- prompt += `\n## 审查要求
70
+ prompt += `\n## ⚠️ 重要说明:如何区分删除和新增
71
+
72
+ **请务必注意以下标记:**
73
+ - 标记为 **"类型: 删除"** 且代码以 **"-"** 开头的,是**被删除的代码**(不再存在)
74
+ - 标记为 **"类型: 新增"** 且代码以 **"+"** 开头的,是**新增的代码**(新添加的)
75
+
76
+ **特别注意:**
77
+ - 如果看到 **"类型: 删除"** 和 **"-"**,这意味着该代码已被移除,不存在了
78
+ - 不要把"删除"理解成"存在"或"新增"
79
+ - 删除的代码需要重点关注是否仍被其他地方使用
80
+
81
+ ## 审查要求
71
82
 
72
83
  1. 仔细审查每一行变更,判断是否存在问题
73
- 2. **只对有问题的行提出审查意见**,没有问题的行不需要评论
74
- 3. **必须使用中文**返回审查意见
75
- 4. 返回 JSON 格式的结果,格式如下:
84
+ 2. **优先检查"类型: 删除"的代码**,确认是否有其他地方仍在使用
85
+ 3. **只对有问题的行提出审查意见**,没有问题的行不需要评论
86
+ 4. **必须使用中文**返回审查意见
87
+ 5. 返回 JSON 格式的结果,格式如下:
76
88
 
77
89
  \`\`\`json
78
90
  {
@@ -80,7 +92,7 @@ export function buildFileReviewPrompt(fileName, meaningfulChanges) {
80
92
  {
81
93
  "lineNumber": 15,
82
94
  "hasIssue": true,
83
- "comment": "这里用中文描述具体的问题和改进建议"
95
+ "comment": "请按照项目审查规则中定义的格式填写审查意见"
84
96
  },
85
97
  {
86
98
  "lineNumber": 20,
@@ -90,9 +102,19 @@ export function buildFileReviewPrompt(fileName, meaningfulChanges) {
90
102
  }
91
103
  \`\`\`
92
104
 
93
- 5. 如果所有代码都没有问题,返回空的 reviews 数组:\`{"reviews": []}\`
94
- 6. 只返回 JSON,不要包含其他文字说明
95
- 7. comment 字段必须使用中文,要简洁明了`;
105
+ **JSON 格式要求:**
106
+ - lineNumber 必须是数字
107
+ - hasIssue 必须是布尔值
108
+ - **comment 字段的内容格式:请严格遵循"项目特定的审查规则"中定义的格式**
109
+ - 如果项目规则中没有定义特殊格式,使用中文简洁描述即可
110
+
111
+ 6. 如果所有代码都没有问题,返回空的 reviews 数组:\`{"reviews": []}\`
112
+ 7. 只返回 JSON,不要包含其他文字说明
113
+
114
+ **再次强调:**
115
+ - 看到 "类型: 删除" 和 "-" → 代码被移除了
116
+ - 看到 "类型: 新增" 和 "+" → 代码是新加的
117
+ - 不要混淆删除和新增!`;
96
118
 
97
119
  return prompt;
98
120
  }
@@ -255,18 +277,70 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
255
277
  prompt += `\`\`\`\n`;
256
278
  });
257
279
 
258
- prompt += `\n## 审查要求
280
+ prompt += `\n## ⚠️ 重要说明:如何区分删除和新增
259
281
 
260
- 1. 仔细审查每一行变更,判断是否存在问题
261
- 2. **🚨 最高优先级**:检查是否有符号被删除但仍被使用(文件内部或其他文件)
282
+ **请务必正确理解以下标记:**
283
+ 1. **"类型: 删除"** + 代码以 **"-"** 开头 = **代码已被移除**(不存在了)
284
+ 2. **"类型: 新增"** + 代码以 **"+"** 开头 = **代码是新加的**(新存在的)
285
+
286
+ **🔥 关于代码修改的重要理解:**
287
+
288
+ 如果在**同一位置**看到:
289
+ ```
290
+ - old code // 删除旧代码
291
+ + new code // 添加新代码
292
+ ```
293
+
294
+ 这是**修改(替换)**,不是"重复定义"或"两次定义"!
295
+
296
+ **正确理解示例:**
297
+
298
+ ❌ **错误理解**:
299
+ ```
300
+ - const name = 'old';
301
+ + const name = 'new';
302
+ ```
303
+ 错误:❌ "代码中定义了两次 name 变量,违反唯一性"
304
+
305
+ ✅ **正确理解**:
306
+ ```
307
+ - const name = 'old';
308
+ + const name = 'new';
309
+ ```
310
+ 正确:✅ "将 name 的值从 'old' 修改为 'new',这是正常的代码变更"
311
+
312
+ ❌ **错误理解**:
313
+ ```
314
+ - all: [...addedSymbols, ...deletedSymbols],
315
+ + all: [...addedSymbols, ...allDeleted],
316
+ ```
317
+ 错误:❌ "返回对象中存在两个 all 属性"
318
+
319
+ ✅ **正确理解**:
320
+ ```
321
+ - all: [...addedSymbols, ...deletedSymbols],
322
+ + all: [...addedSymbols, ...allDeleted],
323
+ ```
324
+ 正确:✅ "修改了 all 属性的值,从 deletedSymbols 改为 allDeleted"
325
+
326
+ **核心原则:**
327
+ - **"-"** 的代码已经**不存在**了(被删除)
328
+ - **"+"** 的代码是**新存在**的(被添加)
329
+ - 如果同一个变量/属性有 "-" 又有 "+",这是**修改**,不是重复定义
330
+ - 在最终代码中,只有 "+" 的版本会保留
331
+
332
+ ## 审查要求
333
+
334
+ 1. **首先确认变更类型**:看清楚是"删除"还是"新增"
335
+ 2. **🚨 最高优先级**:检查"类型: 删除"的符号是否仍被使用(文件内部或其他文件)
262
336
  3. **特别关注**:
263
- - 删除的函数/类/组件是否在其他地方被调用
337
+ - **删除的函数/类/组件**是否在其他地方被调用(这会导致错误)
264
338
  - 修改的函数签名是否会导致现有调用失效
265
- - 新增的代码是否会影响其他文件的正常运行
339
+ - 新增的代码质量是否符合规范
266
340
  4. 检查函数签名是否改变,所有调用方式是否需要更新
267
341
  5. 检查是否有潜在的 API 不兼容问题
268
- 6. 如果发现文件内部使用了被删除的符号,这是**严重错误**
269
- 7. 如果发现其他文件使用了被删除/修改的符号,需要提醒可能的影响
342
+ 6. 如果发现文件内部使用了**被删除**的符号,这是**严重错误**
343
+ 7. 如果发现其他文件使用了**被删除/修改**的符号,需要提醒可能的影响
270
344
  8. **只对有问题的行提出审查意见**,没有问题的行不需要评论
271
345
  9. **必须使用中文**返回审查意见
272
346
  10. 返回 JSON 格式的结果,格式如下:
@@ -277,7 +351,7 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
277
351
  {
278
352
  "lineNumber": 15,
279
353
  "hasIssue": true,
280
- "comment": "这里用中文描述具体的问题和改进建议"
354
+ "comment": "请按照项目审查规则中定义的格式填写审查意见"
281
355
  },
282
356
  {
283
357
  "lineNumber": 20,
@@ -293,6 +367,7 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
293
367
  - 如果发现其他文件受影响,在当前变更行的 comment 中说明影响范围
294
368
  - lineNumber 必须是数字,不能是 null、undefined 或其他值
295
369
  - 如果某个变更没有问题,可以不在 reviews 中包含它
370
+ - **comment 字段的内容格式:请严格遵循"项目特定的审查规则"中定义的格式**(如果有定义)
296
371
 
297
372
  **示例:**
298
373
  如果删除了第 15 行的函数,且发现其他文件在使用:
@@ -306,7 +381,12 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
306
381
 
307
382
  11. 如果所有代码都没有问题,返回空的 reviews 数组:\`{"reviews": []}\`
308
383
  12. 只返回 JSON,不要包含其他文字说明
309
- 13. comment 字段必须使用中文,要简洁明了,重点指出影响范围`;
384
+ 13. comment 字段必须使用中文,要简洁明了,重点指出影响范围
385
+
386
+ **最后再次确认:**
387
+ - 看到 **"类型: 删除"** 和 **"-"** → 代码**被移除了**,需要检查影响
388
+ - 看到 **"类型: 新增"** 和 **"+"** → 代码**是新的**,检查代码质量
389
+ - **千万不要把删除理解成新增!**`;
310
390
 
311
391
  return prompt;
312
392
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitlab-ai-review",
3
- "version": "3.2.0",
3
+ "version": "3.2.2",
4
4
  "description": "GitLab AI Review SDK with Impact Analysis - 支持影响分析、删除符号检测、注释代码识别、文件内部冲突检查、智能文件过滤的智能代码审查工具",
5
5
  "main": "index.js",
6
6
  "type": "module",