@unifan/pi-review-zh 1.0.21 → 1.0.23
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/index.ts +44 -32
- package/package.json +1 -1
package/index.ts
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
*
|
|
17
17
|
* 会话分支隔离:
|
|
18
18
|
* - 默认支持在新分支 (Empty branch) 中开启审查,保持主会话干净
|
|
19
|
-
* - 审查过程中常驻黄色横幅提醒,完成后敲 /end
|
|
20
|
-
* - /end
|
|
19
|
+
* - 审查过程中常驻黄色横幅提醒,完成后敲 /review-end
|
|
20
|
+
* - /review-end 自动将审查发现 (P0~P3) 结构化汇总并一键跳回原会话位置,自动填入修复指令
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
@@ -156,7 +156,7 @@ function setReviewWidget(ctx: ExtensionContext, active: boolean) {
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
ctx.ui.setWidget("review", (_tui, theme) => {
|
|
159
|
-
const text = new Text(theme.fg("warning", "🔍 代码审查分支进行中,审查完毕后输入 /end
|
|
159
|
+
const text = new Text(theme.fg("warning", "🔍 代码审查分支进行中,审查完毕后输入 /review-end 返回主对话"), 0, 0);
|
|
160
160
|
return {
|
|
161
161
|
render(width: number) {
|
|
162
162
|
return text.render(width);
|
|
@@ -932,7 +932,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
932
932
|
reviewStyle: "lite" | "full" | "standard" = "standard",
|
|
933
933
|
): Promise<void> {
|
|
934
934
|
if (reviewOriginId) {
|
|
935
|
-
ctx.ui.notify("当前已有正在进行的审查会话。请先使用 /end
|
|
935
|
+
ctx.ui.notify("当前已有正在进行的审查会话。请先使用 /review-end 结束。", "warning");
|
|
936
936
|
return;
|
|
937
937
|
}
|
|
938
938
|
|
|
@@ -1097,7 +1097,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1097
1097
|
}
|
|
1098
1098
|
|
|
1099
1099
|
if (reviewOriginId) {
|
|
1100
|
-
ctx.ui.notify("当前已有正在进行的审查。请先输入 /end
|
|
1100
|
+
ctx.ui.notify("当前已有正在进行的审查。请先输入 /review-end 完成审查并返回。", "warning");
|
|
1101
1101
|
return;
|
|
1102
1102
|
}
|
|
1103
1103
|
|
|
@@ -1187,7 +1187,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1187
1187
|
}
|
|
1188
1188
|
|
|
1189
1189
|
if (reviewOriginId) {
|
|
1190
|
-
ctx.ui.notify("当前已有正在进行的审查。请先输入 /end
|
|
1190
|
+
ctx.ui.notify("当前已有正在进行的审查。请先输入 /review-end 完成审查并返回。", "warning");
|
|
1191
1191
|
return;
|
|
1192
1192
|
}
|
|
1193
1193
|
|
|
@@ -1211,7 +1211,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1211
1211
|
}
|
|
1212
1212
|
|
|
1213
1213
|
if (reviewOriginId) {
|
|
1214
|
-
ctx.ui.notify("当前已有正在进行的审查。请先输入 /end
|
|
1214
|
+
ctx.ui.notify("当前已有正在进行的审查。请先输入 /review-end 完成审查并返回。", "warning");
|
|
1215
1215
|
return;
|
|
1216
1216
|
}
|
|
1217
1217
|
|
|
@@ -1257,14 +1257,12 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1257
1257
|
- 修复:最小修复建议
|
|
1258
1258
|
`;
|
|
1259
1259
|
|
|
1260
|
-
// 注册 /end-review 结束审查并返回命令
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
return;
|
|
1267
|
-
}
|
|
1260
|
+
// 注册 /review-end (及向后兼容的 /end-review) 结束审查并返回命令
|
|
1261
|
+
const handleReviewEnd = async (_args: string | undefined, ctx: ExtensionCommandContext) => {
|
|
1262
|
+
if (!ctx.hasUI) {
|
|
1263
|
+
ctx.ui.notify("review-end 需要交互式终端环境", "error");
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1268
1266
|
|
|
1269
1267
|
if (!reviewOriginId) {
|
|
1270
1268
|
const state = getReviewState(ctx);
|
|
@@ -1287,7 +1285,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1287
1285
|
]);
|
|
1288
1286
|
|
|
1289
1287
|
if (summaryChoice === undefined) {
|
|
1290
|
-
ctx.ui.notify("已取消。输入 /end
|
|
1288
|
+
ctx.ui.notify("已取消。输入 /review-end 可再次返回。", "info");
|
|
1291
1289
|
return;
|
|
1292
1290
|
}
|
|
1293
1291
|
|
|
@@ -1351,7 +1349,17 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1351
1349
|
ctx.ui.notify(`返回失败: ${error instanceof Error ? error.message : String(error)}`, "error");
|
|
1352
1350
|
}
|
|
1353
1351
|
}
|
|
1354
|
-
|
|
1352
|
+
};
|
|
1353
|
+
|
|
1354
|
+
pi.registerCommand("review-end", {
|
|
1355
|
+
description: "完成代码审查并一键返回主会话位置 (自动汇总待办并回填修复指令)",
|
|
1356
|
+
handler: handleReviewEnd,
|
|
1357
|
+
});
|
|
1358
|
+
|
|
1359
|
+
// 向后兼容保留 /end-review
|
|
1360
|
+
pi.registerCommand("end-review", {
|
|
1361
|
+
description: "完成代码审查并一键返回主会话位置 (/review-end 别名)",
|
|
1362
|
+
handler: handleReviewEnd,
|
|
1355
1363
|
});
|
|
1356
1364
|
|
|
1357
1365
|
// 针对【代码开发会话·修复方】的提示词模板
|
|
@@ -1365,23 +1373,24 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1365
1373
|
{content}
|
|
1366
1374
|
---
|
|
1367
1375
|
|
|
1368
|
-
##
|
|
1369
|
-
1.
|
|
1370
|
-
2.
|
|
1371
|
-
3.
|
|
1372
|
-
4. 在最终回复末尾,整理一份简明报告供复核:
|
|
1376
|
+
## 核心处理原则:
|
|
1377
|
+
1. **有道理的就修改,并总结修改了啥**:结合代码上下文逐条仔细核验。确实存在缺陷或隐患的,直接修改代码并保证逻辑自洽;在总结中明确说明修改了哪些文件、函数及具体改了什么。
|
|
1378
|
+
2. **没有道理的就在总结里解释**:若某些意见属于误报、不符合实际业务场景或既有架构已有防护,请在总结中清晰解释为什么没有道理,无需修改。
|
|
1379
|
+
3. **输出整改报告**(供复核人员查验):在最终回复末尾,严格按以下格式总结:
|
|
1373
1380
|
|
|
1374
1381
|
### 🛠️ 整改与回复报告
|
|
1375
|
-
- **[已修复] [问题标题]
|
|
1376
|
-
-
|
|
1382
|
+
- **[已修复] [问题标题]**
|
|
1383
|
+
- **修改了什么**:说明修改的文件、函数及具体改动内容
|
|
1384
|
+
- **[无需修改/已说明] [问题标题]**
|
|
1385
|
+
- **为何没有道理**:清晰解释为什么该条意见不适用或为什么无需修改
|
|
1377
1386
|
|
|
1378
1387
|
### 📝 整改总结
|
|
1379
|
-
|
|
1388
|
+
一句话总结本次代码变动。
|
|
1380
1389
|
`;
|
|
1381
1390
|
|
|
1382
1391
|
// 针对【审查复核会话·审查方】的提示词模板
|
|
1383
1392
|
const REVIEWER_RECHECK_PROMPT_TEMPLATE = `> 语言要求:全流程使用纯正中文。
|
|
1384
|
-
>
|
|
1393
|
+
> 提示:当前为只读复核模式,请勿修改代码或执行提交。
|
|
1385
1394
|
|
|
1386
1395
|
# 复核开发者的代码修复与整改说明
|
|
1387
1396
|
|
|
@@ -1390,12 +1399,15 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1390
1399
|
{content}
|
|
1391
1400
|
---
|
|
1392
1401
|
|
|
1393
|
-
##
|
|
1394
|
-
1.
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
-
|
|
1398
|
-
-
|
|
1402
|
+
## 核心复核原则:
|
|
1403
|
+
1. **不要只听信总结报告,必须实际去看改了啥**:
|
|
1404
|
+
- 绝不能因为报告声称“已修复”就盲目相信。必须立即运行 \`git diff\` 亲眼核对实际改动代码,并按需使用 \`read\` 查看改动前后的完整方法与类上下文。
|
|
1405
|
+
2. **逐项实事求是核验**:
|
|
1406
|
+
- 对照开发者声称“已修复”的项,检查实际 diff 是否真正彻底解决了缺陷,且未引入新的逻辑隐患或并发风险。
|
|
1407
|
+
- 对照开发者声称“无需修改”的解释,客观评估其理由是否合乎技术事实。
|
|
1408
|
+
3. **给出复核结论**:
|
|
1409
|
+
- 若实测代码已全部妥善修复且质量良好:输出 **## ✅【审核通过,可以提交代码】**
|
|
1410
|
+
- 若实际代码未修改、改动不彻底或引入新问题:输出 **## ❌【仍有阻塞问题需继续修改】** 并指出具体代码缺陷与修改要求。
|
|
1399
1411
|
`;
|
|
1400
1412
|
|
|
1401
1413
|
function detectReviewSyncRole(
|