@routerhub/agent-rules 1.5.71 → 1.5.73

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/AGENTS.base.md CHANGED
@@ -118,15 +118,25 @@ Closes #456
118
118
  1. 打开 PR 页面,逐一查看 Copilot review 提出的每一条问题。
119
119
  2. 逐条判断问题是否有道理:确实存在的代码缺陷、逻辑错误、安全风险、性能问题等 → 必须修复;误报、与需求不符、风格偏好无实质影响等 → 在评论中回复解释为何不改,然后 Resolve。
120
120
  3. 对于有道理的问题,直接修改代码、提交并推送到该 PR 分支。
121
- 4. ⚠️ **强制步骤:修改代码并推送后,必须在 GitHub PR 页面上逐条点击 Resolve conversation。** 此步骤不可跳过——即使已回复评论、已推送修复代码,只要未点 Resolve,该条评论仍处于”未解决”状态,reviewer 无法判断是否已处理完毕。每修复一条,立即 Resolve 一条,不要等所有问题修完再批量操作。
122
- 5. 所有问题处理完毕后,重新请求 Copilot review
123
- 6. 重复以上步骤,直到 Copilot review 不再提出新问题为止。
124
- - 每一条 Copilot review 评论处理完毕后,必须点击 **Resolve conversation**,不能只回复不 Resolve。不点 Resolve 会导致该评论一直处于未解决状态,无法判断是否已完成处理。
121
+ 4. ⚠️ **强制步骤:所有问题处理完毕后,重新请求 Copilot review。**
122
+ 5. ⚠️ **Resolve 规则:必须等下一轮 Copilot review 确认改对了再点 Resolve,禁止 push 后立刻 Resolve。** 具体做法:
123
+ - 本轮修复了问题 A → push → 请求下一轮 review → 查看新一轮 review 结果:
124
+ - Copilot **未再提及问题 A**(说明已改对)→ 回到上轮 review 的对应评论,点击 **Resolve conversation**。
125
+ - 若 Copilot **再次提出问题 A**(说明没改对或改法有问题)→ 不点 Resolve,继续修改并 push,再请求新一轮 review,直到该问题不再出现为止。
126
+ - 这样做的好处:每条 conversation 的 Resolve 状态真正代表「该问题已修复且通过 reviewer 验证」,而不是「我改了一下但不知道对不对」。
127
+ 6. 重复以上步骤,直到满足以下任一终止条件为止。
128
+ - ⚠️ **Resolve 时机:必须等下一轮 Copilot review 确认该问题不再出现后,才能点击 Resolve conversation。** 禁止 push 修复代码后立刻 Resolve——此时尚不知道修复是否正确。只有新一轮 review 未再提及该问题时,才能确认改对了并 Resolve。
125
129
  - 每次修改后提交的 commit 信息必须中文,格式:`修复 Copilot review 问题:[简要描述]`。
126
- - 如果 Copilot review 连续两轮提出同一问题但实际已修复或无道理,需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
130
+ - 如果 Copilot review 连续两轮对同一问题提出类似建议,但代码实际上已正确修复(或该建议本身无道理/属于误报),需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
131
+ - ⚠️ **循环终止条件(满足任意一条即停止)**:
132
+ 1. **无新问题**:Copilot review 本轮未提出任何新问题 → 自然终止,循环结束。
133
+ 2. **仅剩可忽略级别建议**:本轮 Copilot review 提出的所有问题均标注了 `nit:`、`optional:`、`question:` 或建议将配置项写入 `.env` 等可忽略类型,无任何 `Request changes` 级别的问题 → 逐条回复说明原因并 Resolve,然后终止循环,无需再请求新一轮 review。
134
+ 3. **衰减到底**:连续两轮 review 的新问题数量均 ≤ 2 个,且均为风格偏好或可争议建议,无实质 bug 或安全风险 → 逐条处理并 Resolve,然后终止循环。
135
+ 4. **硬上限**:循环已达到 5 轮仍无法满足上述条件 → 暂停循环,弹出通知告知用户当前状态(已跑 N 轮、剩余未解决问题数量及摘要),由用户决定是否继续。禁止在用户未确认的情况下自动跑第 6 轮。
136
+ - **核心原则:Copilot review 的目标是发现真正的代码缺陷,不是追求零评论。** 经过几轮修复后,剩余的 nit/optional 级别建议或可争议的风格偏好属于正常现象,直接标记处理即可,不应无限追逐”零评论”状态。
127
137
  - PR 图片文件检查:在 Copilot review 循环中(建议放在开始处理 review 问题之前,或所有 review 问题处理完毕之后),必须检查当前 PR 中是否存在未被引用的图片文件(PNG、JPG、JPEG、GIF、SVG、WebP 等)。检查方式:搜索代码库中是否有任何文件引用了该图片的文件名或路径,若没有任何引用 → 该图片为冗余文件。处理方式:若图片内容需要保留(如截图佐证),则将其转为 base64 data URI 内嵌到对应的 HTML 文档中,然后删除原图片文件;若图片内容无需保留,则直接删除。处理完毕后提交并推送。
128
138
  - 可忽略的 review 建议:如果 Copilot review 建议将配置项(API 地址、数据库连接、第三方服务地址等)写入 `.env` 文件,必须直接忽略并在评论中回复说明原因后 Resolve。说明内容:「本项目 `.env` 仅允许配置端口号(如 `PORT`、`API_PORT`),其余配置项一律写死在代码中,敏感信息统一放入 Nacos 配置中心,不放 `.env`。」
129
- - ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。不可无限等待,最多检查 3 次(约 6–9 分钟),若仍无回复则告知用户当前状态。
139
+ - ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。⚠️ **这里的「最多检查 3 次」仅指每轮 review 请求后的轮询等待次数上限(约 6–9 分钟),与 review 循环的迭代轮数无关——循环轮数由上方终止条件控制,不受此限制。** 等待超时后若仍无回复,告知用户当前状态。
130
140
 
131
141
  ## 安全
132
142
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routerhub/agent-rules",
3
- "version": "1.5.71",
3
+ "version": "1.5.73",
4
4
  "description": "Shared Copilot agent rules and guidelines for RouterHub projects",
5
5
  "main": "AGENTS.base.md",
6
6
  "bin": {
package/rules/global.md CHANGED
@@ -120,15 +120,25 @@ Closes #456
120
120
  1. 打开 PR 页面,逐一查看 Copilot review 提出的每一条问题。
121
121
  2. 逐条判断问题是否有道理:确实存在的代码缺陷、逻辑错误、安全风险、性能问题等 → 必须修复;误报、与需求不符、风格偏好无实质影响等 → 在评论中回复解释为何不改,然后 Resolve。
122
122
  3. 对于有道理的问题,直接修改代码、提交并推送到该 PR 分支。
123
- 4. ⚠️ **强制步骤:修改代码并推送后,必须在 GitHub PR 页面上逐条点击 Resolve conversation。** 此步骤不可跳过——即使已回复评论、已推送修复代码,只要未点 Resolve,该条评论仍处于”未解决”状态,reviewer 无法判断是否已处理完毕。每修复一条,立即 Resolve 一条,不要等所有问题修完再批量操作。
124
- 5. 所有问题处理完毕后,重新请求 Copilot review
125
- 6. 重复以上步骤,直到 Copilot review 不再提出新问题为止。
126
- - 每一条 Copilot review 评论处理完毕后,必须点击 **Resolve conversation**,不能只回复不 Resolve。不点 Resolve 会导致该评论一直处于未解决状态,无法判断是否已完成处理。
123
+ 4. ⚠️ **强制步骤:所有问题处理完毕后,重新请求 Copilot review。**
124
+ 5. ⚠️ **Resolve 规则:必须等下一轮 Copilot review 确认改对了再点 Resolve,禁止 push 后立刻 Resolve。** 具体做法:
125
+ - 本轮修复了问题 A → push → 请求下一轮 review → 查看新一轮 review 结果:
126
+ - Copilot **未再提及问题 A**(说明已改对)→ 回到上轮 review 的对应评论,点击 **Resolve conversation**。
127
+ - 若 Copilot **再次提出问题 A**(说明没改对或改法有问题)→ 不点 Resolve,继续修改并 push,再请求新一轮 review,直到该问题不再出现为止。
128
+ - 这样做的好处:每条 conversation 的 Resolve 状态真正代表「该问题已修复且通过 reviewer 验证」,而不是「我改了一下但不知道对不对」。
129
+ 6. 重复以上步骤,直到满足以下任一终止条件为止。
130
+ - ⚠️ **Resolve 时机:必须等下一轮 Copilot review 确认该问题不再出现后,才能点击 Resolve conversation。** 禁止 push 修复代码后立刻 Resolve——此时尚不知道修复是否正确。只有新一轮 review 未再提及该问题时,才能确认改对了并 Resolve。
127
131
  - 每次修改后提交的 commit 信息必须中文,格式:`修复 Copilot review 问题:[简要描述]`。
128
- - 如果 Copilot review 连续两轮提出同一问题但实际已修复或无道理,需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
132
+ - 如果 Copilot review 连续两轮对同一问题提出类似建议,但代码实际上已正确修复(或该建议本身无道理/属于误报),需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
133
+ - ⚠️ **循环终止条件(满足任意一条即停止)**:
134
+ 1. **无新问题**:Copilot review 本轮未提出任何新问题 → 自然终止,循环结束。
135
+ 2. **仅剩可忽略级别建议**:本轮 Copilot review 提出的所有问题均标注了 `nit:`、`optional:`、`question:` 或建议将配置项写入 `.env` 等可忽略类型,无任何 `Request changes` 级别的问题 → 逐条回复说明原因并 Resolve,然后终止循环,无需再请求新一轮 review。
136
+ 3. **衰减到底**:连续两轮 review 的新问题数量均 ≤ 2 个,且均为风格偏好或可争议建议,无实质 bug 或安全风险 → 逐条处理并 Resolve,然后终止循环。
137
+ 4. **硬上限**:循环已达到 5 轮仍无法满足上述条件 → 暂停循环,弹出通知告知用户当前状态(已跑 N 轮、剩余未解决问题数量及摘要),由用户决定是否继续。禁止在用户未确认的情况下自动跑第 6 轮。
138
+ - **核心原则:Copilot review 的目标是发现真正的代码缺陷,不是追求零评论。** 经过几轮修复后,剩余的 nit/optional 级别建议或可争议的风格偏好属于正常现象,直接标记处理即可,不应无限追逐”零评论”状态。
129
139
  - PR 图片文件检查:在 Copilot review 循环中(建议放在开始处理 review 问题之前,或所有 review 问题处理完毕之后),必须检查当前 PR 中是否存在未被引用的图片文件(PNG、JPG、JPEG、GIF、SVG、WebP 等)。检查方式:搜索代码库中是否有任何文件引用了该图片的文件名或路径,若没有任何引用 → 该图片为冗余文件。处理方式:若图片内容需要保留(如截图佐证),则将其转为 base64 data URI 内嵌到对应的 HTML 文档中,然后删除原图片文件;若图片内容无需保留,则直接删除。处理完毕后提交并推送。
130
140
  - 可忽略的 review 建议:如果 Copilot review 建议将配置项(API 地址、数据库连接、第三方服务地址等)写入 `.env` 文件,必须直接忽略并在评论中回复说明原因后 Resolve。说明内容:「本项目 `.env` 仅允许配置端口号(如 `PORT`、`API_PORT`),其余配置项一律写死在代码中,敏感信息统一放入 Nacos 配置中心,不放 `.env`。」
131
- - ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。不可无限等待,最多检查 3 次(约 6–9 分钟),若仍无回复则告知用户当前状态。
141
+ - ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。⚠️ **这里的「最多检查 3 次」仅指每轮 review 请求后的轮询等待次数上限(约 6–9 分钟),与 review 循环的迭代轮数无关——循环轮数由上方终止条件控制,不受此限制。** 等待超时后若仍无回复,告知用户当前状态。
132
142
 
133
143
  ## 安全
134
144