gitlab-ai-review 3.2.2 → 3.2.4
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/lib/prompt-tools.js +49 -68
- package/package.json +1 -1
package/lib/prompt-tools.js
CHANGED
|
@@ -84,7 +84,7 @@ export function buildFileReviewPrompt(fileName, meaningfulChanges) {
|
|
|
84
84
|
2. **优先检查"类型: 删除"的代码**,确认是否有其他地方仍在使用
|
|
85
85
|
3. **只对有问题的行提出审查意见**,没有问题的行不需要评论
|
|
86
86
|
4. **必须使用中文**返回审查意见
|
|
87
|
-
5.
|
|
87
|
+
5. **必须返回标准 JSON 格式**,不要用其他格式,结构如下:
|
|
88
88
|
|
|
89
89
|
\`\`\`json
|
|
90
90
|
{
|
|
@@ -92,24 +92,25 @@ export function buildFileReviewPrompt(fileName, meaningfulChanges) {
|
|
|
92
92
|
{
|
|
93
93
|
"lineNumber": 15,
|
|
94
94
|
"hasIssue": true,
|
|
95
|
-
"comment": "
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"lineNumber": 20,
|
|
99
|
-
"hasIssue": false
|
|
95
|
+
"comment": "这里填写审查意见内容"
|
|
100
96
|
}
|
|
101
97
|
]
|
|
102
98
|
}
|
|
103
99
|
\`\`\`
|
|
104
100
|
|
|
105
|
-
**
|
|
101
|
+
**🚨 重要:外层必须是标准 JSON**
|
|
102
|
+
- 整个响应必须是合法的 JSON 对象
|
|
103
|
+
- 不要在最外层使用【】、emoji 或其他特殊格式
|
|
106
104
|
- lineNumber 必须是数字
|
|
107
|
-
- hasIssue
|
|
108
|
-
-
|
|
109
|
-
|
|
105
|
+
- hasIssue 必须是布尔值(true/false)
|
|
106
|
+
- comment 必须是字符串
|
|
107
|
+
|
|
108
|
+
**comment 字段的内容:**
|
|
109
|
+
- 如果"项目特定的审查规则"中定义了 comment 格式(如包含 emoji、评分等),请在 comment 字符串内使用该格式
|
|
110
|
+
- 如果没有定义特殊格式,使用中文简洁描述即可
|
|
110
111
|
|
|
111
112
|
6. 如果所有代码都没有问题,返回空的 reviews 数组:\`{"reviews": []}\`
|
|
112
|
-
7.
|
|
113
|
+
7. **只返回 JSON**,不要在 JSON 外面添加任何文字说明
|
|
113
114
|
|
|
114
115
|
**再次强调:**
|
|
115
116
|
- 看到 "类型: 删除" 和 "-" → 代码被移除了
|
|
@@ -285,43 +286,28 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
|
|
|
285
286
|
|
|
286
287
|
**🔥 关于代码修改的重要理解:**
|
|
287
288
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
-
|
|
291
|
-
|
|
292
|
-
```
|
|
289
|
+
如果在**同一位置**看到以下情况(删除旧代码,添加新代码):
|
|
290
|
+
- 第一行以 "-" 开头(删除)
|
|
291
|
+
- 第二行以 "+" 开头(新增)
|
|
292
|
+
- 修改的是同一个变量/属性/函数
|
|
293
293
|
|
|
294
294
|
这是**修改(替换)**,不是"重复定义"或"两次定义"!
|
|
295
295
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
❌
|
|
299
|
-
|
|
300
|
-
- const name = 'old';
|
|
301
|
-
+ const name = 'new';
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
-
|
|
308
|
-
+
|
|
309
|
-
|
|
310
|
-
|
|
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"
|
|
296
|
+
**常见错误理解:**
|
|
297
|
+
|
|
298
|
+
❌ 错误示例 1:
|
|
299
|
+
看到:
|
|
300
|
+
- const name = 'old';
|
|
301
|
+
+ const name = 'new';
|
|
302
|
+
错误理解:❌ "代码中定义了两次 name 变量,违反唯一性"
|
|
303
|
+
正确理解:✅ "将 name 的值从 'old' 修改为 'new',这是正常的代码变更"
|
|
304
|
+
|
|
305
|
+
❌ 错误示例 2:
|
|
306
|
+
看到:
|
|
307
|
+
- all: [...addedSymbols, ...deletedSymbols],
|
|
308
|
+
+ all: [...addedSymbols, ...allDeleted],
|
|
309
|
+
错误理解:❌ "返回对象中存在两个 all 属性"
|
|
310
|
+
正确理解:✅ "修改了 all 属性的值,从 deletedSymbols 改为 allDeleted"
|
|
325
311
|
|
|
326
312
|
**核心原则:**
|
|
327
313
|
- **"-"** 的代码已经**不存在**了(被删除)
|
|
@@ -343,7 +329,7 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
|
|
|
343
329
|
7. 如果发现其他文件使用了**被删除/修改**的符号,需要提醒可能的影响
|
|
344
330
|
8. **只对有问题的行提出审查意见**,没有问题的行不需要评论
|
|
345
331
|
9. **必须使用中文**返回审查意见
|
|
346
|
-
10.
|
|
332
|
+
10. **必须返回标准 JSON 格式**,不要用其他格式,结构如下:
|
|
347
333
|
|
|
348
334
|
\`\`\`json
|
|
349
335
|
{
|
|
@@ -351,42 +337,37 @@ export function buildFileReviewWithImpactPrompt(fileName, meaningfulChanges, imp
|
|
|
351
337
|
{
|
|
352
338
|
"lineNumber": 15,
|
|
353
339
|
"hasIssue": true,
|
|
354
|
-
"comment": "
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
"lineNumber": 20,
|
|
358
|
-
"hasIssue": false
|
|
340
|
+
"comment": "这里填写审查意见内容"
|
|
359
341
|
}
|
|
360
342
|
]
|
|
361
343
|
}
|
|
362
344
|
\`\`\`
|
|
363
345
|
|
|
364
|
-
**🚨
|
|
365
|
-
-
|
|
346
|
+
**🚨 JSON 格式的关键规则:**
|
|
347
|
+
- **整个响应必须是合法的 JSON 对象**
|
|
348
|
+
- **不要在最外层使用【】、emoji 或其他特殊格式**
|
|
349
|
+
- lineNumber 必须是上面"代码变更"中列出的行号
|
|
350
|
+
- lineNumber 必须是数字,不能是 null、undefined
|
|
366
351
|
- **不要使用其他文件的行号**,即使发现其他文件受影响
|
|
367
|
-
- 如果发现其他文件受影响,在当前变更行的 comment
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
-
|
|
352
|
+
- 如果发现其他文件受影响,在当前变更行的 comment 字符串中说明
|
|
353
|
+
|
|
354
|
+
**comment 字段的内容:**
|
|
355
|
+
- 如果"项目特定的审查规则"中定义了 comment 格式(如包含【严重程度评分】、emoji、分点说明等),**请在 comment 字符串内**使用该格式
|
|
356
|
+
- comment 是一个字符串,可以包含换行符 \\n 来格式化内容
|
|
357
|
+
- 如果没有定义特殊格式,使用中文简洁描述即可
|
|
371
358
|
|
|
372
359
|
**示例:**
|
|
373
|
-
如果删除了第 15
|
|
374
|
-
|
|
375
|
-
{
|
|
376
|
-
"lineNumber": 15,
|
|
377
|
-
"hasIssue": true,
|
|
378
|
-
"comment": "删除函数 fetchData 会导致以下文件调用失败:components/UserList.vue (第 45 行)、pages/Dashboard.vue (第 78 行)。建议保留该函数或提供替代方案。"
|
|
379
|
-
}
|
|
380
|
-
\`\`\`
|
|
360
|
+
如果删除了第 15 行的函数,且发现其他文件在使用,comment 内容可以是:
|
|
361
|
+
"【严重程度评分:8/10】\\n\\n📋 问题描述:\\n删除了函数 fetchData 但该函数仍被多处使用\\n\\n🔍 影响分析:\\n• 当前文件:函数定义被完全移除\\n• 受影响的其他文件:components/UserList.vue (第 45 行)\\n\\n💡 改进建议:\\n1. 恢复此函数或提供替代方案\\n2. 先标记为 @deprecated"
|
|
381
362
|
|
|
382
363
|
11. 如果所有代码都没有问题,返回空的 reviews 数组:\`{"reviews": []}\`
|
|
383
|
-
12.
|
|
384
|
-
13. comment 字段必须使用中文,要简洁明了,重点指出影响范围
|
|
364
|
+
12. **只返回 JSON**,不要在 JSON 外面添加任何文字说明
|
|
385
365
|
|
|
386
366
|
**最后再次确认:**
|
|
387
367
|
- 看到 **"类型: 删除"** 和 **"-"** → 代码**被移除了**,需要检查影响
|
|
388
368
|
- 看到 **"类型: 新增"** 和 **"+"** → 代码**是新的**,检查代码质量
|
|
389
|
-
-
|
|
369
|
+
- **千万不要把删除理解成新增!**
|
|
370
|
+
- **返回的必须是标准 JSON,不要在最外层使用特殊字符!**`;
|
|
390
371
|
|
|
391
372
|
return prompt;
|
|
392
373
|
}
|