job51-gitlab-cr-node-jt-1 2.6.9 → 2.7.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.
@@ -204,31 +204,31 @@
204
204
  # New Start: 29 <-- 元数据行,忽略,直接跳过
205
205
  # Diff Content Below
206
206
  @@ -28,8 +29,10 @@ <-- @@ 行,不编号!从下一行开始行号=29(new_start)
207
- public void method() { <-- 空格开头,行号 = 29(new_start)
208
- + Object obj = getXxx(); <-- + 开头,行号 = 30(29+1)← 问题在这,new_line=30
209
- + obj.toString(); <-- + 开头,行号 = 31(30+1)← 问题在这,new_line=31
210
- } <-- 空格开头,行号 = 32(31+1)
207
+ [代码行 1] <-- 空格开头,行号 = 29(new_start)
208
+ + [代码行 2] <-- + 开头,行号 = 30(29+1)← 问题在这,new_line=30
209
+ + [代码行 3] <-- + 开头,行号 = 31(30+1)← 问题在这,new_line=31
210
+ [代码行 4] <-- 空格开头,行号 = 32(31+1)
211
211
  ```
212
212
  > - **示例 1:新增文件** `@@ -0,0 +1,58 @@`(new_start=1)
213
213
  ```
214
214
  @@ -0,0 +1,58 @@
215
- +package com.job51.dev.bbs.service.impl; // 行号 = 1(new_start)
216
- + // 行号 = 2
217
- +import com.job51.dev.bbs.mapper.ForumMapper; // 行号 = 3
215
+ + [代码行 1] // 行号 = 1(new_start)
216
+ + [代码行 2] // 行号 = 2
217
+ + [代码行 3] // 行号 = 3
218
218
  ...
219
- +public class TestMultiIssuesService { // 行号 = 17
220
- + public Map<String, Object> getTestData(String forumId, String userId) { // 行号 = 27
221
- + Object forum = forumMapper.selectById(forumId); // 行号 = 28
222
- + String forumName = forum.toString(); // 行号 = 30 ← 问题在这,new_line = 30
223
- + Object firstPost = posts.get(0); // 行号 = 38 ← 问题在这,new_line = 38
219
+ + [代码行 17] // 行号 = 17
220
+ + [代码行 27] // 行号 = 27
221
+ + [代码行 28] // 行号 = 28
222
+ + [代码行 30] // 行号 = 30 ← 问题在这,new_line = 30
223
+ + [代码行 38] // 行号 = 38 ← 问题在这,new_line = 38
224
224
  ```
225
225
  > - **示例 2:已有文件修改** `@@ -42,3 +43,5 @@`(new_start=43)
226
226
  ```
227
227
  @@ -42,3 +43,5 @@
228
- public void method() { // 行号 = 43(new_start)
229
- + Object obj = service.getData(); // 行号 = 44(43+1)
230
- + obj.toString(); // 行号 = 45(44+1)← 问题在这,new_line = 45
231
- } // 行号 = 46(45+1)
228
+ [代码行 1] // 行号 = 43(new_start)
229
+ + [代码行 2] // 行号 = 44(43+1)
230
+ + [代码行 3] // 行号 = 45(44+1)← 问题在这,new_line = 45
231
+ [代码行 4] // 行号 = 46(45+1)
232
232
  ```
233
233
  > - **⚠️ 验证方法**(强制执行,输出前必须检查):
234
234
  > 1. **查看 diff 头的 new_start 和 new_count 值**:
@@ -36,10 +36,10 @@ description: 代码审查技能,审查变更代码并输出 REPORT 和 LINE_IN
36
36
  # New Start: 29 <-- 元数据行,忽略,不编号
37
37
  # Diff Content Below
38
38
  @@ -28,8 +29,10 @@ <-- @@ 行,不编号!从下一行才开始计数
39
- public void method() { <-- 空格开头,行号 = 29(new_start)
40
- + Object obj = getXxx(); <-- + 开头,行号 = 30(29+1)
41
- + obj.toString(); <-- + 开头,行号 = 31(30+1)
42
- } <-- 空格开头,行号 = 32(31+1)
39
+ [代码行 1] <-- 空格开头,行号 = 29(new_start)
40
+ + [代码行 2] <-- + 开头,行号 = 30(29+1)
41
+ + [代码行 3] <-- + 开头,行号 = 31(30+1)
42
+ [代码行 4] <-- 空格开头,行号 = 32(31+1)
43
43
  ```
44
44
  - **⚠️ 强制验证步骤**(输出前必须执行):
45
45
  1. 从 diff 头提取 `new_start` 和 `new_count`,计算行号范围:`[new_start, new_start + new_count - 1]`
@@ -97,8 +97,8 @@ description: 代码审查技能,审查变更代码并输出 REPORT 和 LINE_IN
97
97
  \`\`\`
98
98
  **修改建议**:添加空值检查
99
99
  \`\`\`java
100
- if (forum != null) {
101
- String forumName = forum.toString();
100
+ if ([变量] != null) {
101
+ [方法调用];
102
102
  }
103
103
  \`\`\`
104
104
  \`\`\`
@@ -1,7 +1,7 @@
1
1
  # GitLab Code Review AI Tool 技术文档
2
2
 
3
3
  **项目名称**: job51-gitlab-cr-node
4
- **当前版本**: 2.6.8
4
+ **当前版本**: 2.6.10
5
5
  **作者**: tao.jing
6
6
  **最后更新**: 2026-04-16
7
7
  **项目地址**: https://gitdev.51job.com/51jobweb/ai-agent
@@ -27,16 +27,26 @@
27
27
 
28
28
  ## 版本历史
29
29
 
30
- ### v2.6.8 (2026-04-16)
30
+ ### v2.6.10 (2026-04-16)
31
+
32
+ **优化**:
33
+ - **添加临时文件格式调试日志**:输出临时文件前 10 行预览,用于确认元数据格式是否正确
34
+ - 可以在日志中看到临时文件的实际格式,确认 AI 是否正确忽略元数据行
35
+ - 帮助诊断行号计算偏移问题
36
+
37
+ ### v2.6.9 (2026-04-16)
31
38
 
32
39
  **Bug 修复**:
33
- - **修复 SKILL.md 中临时文件格式描述不一致问题**:将 `=== File Information ===` 更新为 `# File Information`
34
- - 问题现象:v2.6.7 修复行号偏移后,AI 仍不能正确计算行号
35
- - 根本原因:SKILL.md 2 行仍描述从 `=== File Information ===` 提取信息,但临时文件格式已改为 `# File Information`
36
- - 修复方案:更新 SKILL.md 中的格式描述,使其与临时文件实际格式一致
37
- - 修复文件:`.claude/skills/simple-code-review/SKILL.md`
40
+ - **优化行号计算规则说明**:改用更直观的「直接从 new_start 开始递增」方法
41
+ - 问题现象:AI 仍不能正确计算行号,偏移 8 行
42
+ - 根本原因:之前的规则使用「先编号再转换」方法(编号 + new_start - 1),容易出错
43
+ - 修复方案:
44
+ - 改用「直接从 new_start 开始递增」方法:从 @@ 之后第一行开始,行号=new_start,每往下一行行号 +1
45
+ - 更新示例中的行号标注,直接使用「行号 = X」而非「编号=X → 绝对行号=...」
46
+ - 移除容易引起误解的「编号」概念,直接用行号递增加示例
47
+ - 修复文件:`.claude/skills/simple-code-review/SKILL.md`、`.claude/rules/code-review-rules.md`
38
48
 
39
- ### v2.6.7 (2026-04-16)
49
+ ### v2.6.8 (2026-04-16)
40
50
 
41
51
  **Bug 修复**:
42
52
  - **修复行号计算偏移问题**:修改临时文件格式,元数据行改为以 `# ` 开头,方便 AI 识别并忽略
package/index.js CHANGED
@@ -98,6 +98,10 @@ ${diffObject.diff}`;
98
98
  // 将diff内容写入临时文件
99
99
  fs.writeFileSync(tmpFileName, diffContentWithMetadata);
100
100
 
101
+ // 输出临时文件前 10 行用于调试(确认元数据格式)
102
+ const tmpFileLines = diffContentWithMetadata.split('\n').slice(0, 10).join('\n');
103
+ debugLog(`临时文件前 10 行预览:\n${tmpFileLines}`);
104
+
101
105
  // 审核当前块(传入临时的文件而不是直接的diff内容)
102
106
  const blockStartTime = Date.now();
103
107
  const review_result = await this.reviewDiffWithClaudeUsingFile(tmpFileName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job51-gitlab-cr-node-jt-1",
3
- "version": "2.6.9",
3
+ "version": "2.7.0",
4
4
  "description": "GitLab merge request code review tool with AI-powered analysis and project context support",
5
5
  "main": "index.js",
6
6
  "bin": {