@unifan/pi-review-zh 1.0.15 → 1.0.16
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 +21 -11
- package/package.json +1 -1
package/index.ts
CHANGED
|
@@ -200,6 +200,12 @@ type ReviewTarget =
|
|
|
200
200
|
| { type: "folder"; paths: string[] };
|
|
201
201
|
|
|
202
202
|
// 针对不同审查目标的中文提示词
|
|
203
|
+
const LITE_REVIEW_PROMPT =
|
|
204
|
+
"【极速体检模式】请直接运行 `git diff` 快速排查当前未提交改动中的高危逻辑缺陷与安全漏洞。只抓严重级别最高的问题,快速输出审查结论。严禁输出任何步骤清单。所有输出必须使用纯正中文。";
|
|
205
|
+
|
|
206
|
+
const FULL_REVIEW_PROMPT =
|
|
207
|
+
"【全量深度审查模式】请对当前代码改动展开全方位的深度审查。直接运行 `git diff` 全量审阅代码改动,深入排查潜在的业务逻辑隐患、边界异常、并发安全、性能GC开销与架构合规性,直接给出按优先级排序的详尽审查清单。严禁输出任何步骤清单。所有输出必须使用纯正中文。";
|
|
208
|
+
|
|
203
209
|
const UNCOMMITTED_PROMPT =
|
|
204
210
|
"请审查当前代码的所有改动(包含暂存区、未暂存区以及新增文件)。直接运行 `git diff` 与 `git status` 查看代码差异,并直接输出审查发现。严禁输出任何步骤清单或待办列表。所有输出必须使用纯正中文。";
|
|
205
211
|
|
|
@@ -425,9 +431,15 @@ async function getDefaultBranch(pi: ExtensionAPI): Promise<string> {
|
|
|
425
431
|
return "main";
|
|
426
432
|
}
|
|
427
433
|
|
|
428
|
-
async function buildReviewPrompt(
|
|
434
|
+
async function buildReviewPrompt(
|
|
435
|
+
pi: ExtensionAPI,
|
|
436
|
+
target: ReviewTarget,
|
|
437
|
+
reviewStyle: "lite" | "full" | "standard" = "standard",
|
|
438
|
+
): Promise<string> {
|
|
429
439
|
switch (target.type) {
|
|
430
440
|
case "uncommitted":
|
|
441
|
+
if (reviewStyle === "lite") return LITE_REVIEW_PROMPT;
|
|
442
|
+
if (reviewStyle === "full") return FULL_REVIEW_PROMPT;
|
|
431
443
|
return UNCOMMITTED_PROMPT;
|
|
432
444
|
|
|
433
445
|
case "baseBranch": {
|
|
@@ -916,6 +928,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
916
928
|
target: ReviewTarget,
|
|
917
929
|
useFreshSession: boolean,
|
|
918
930
|
runtimeSettings?: Partial<ReviewSettings>,
|
|
931
|
+
reviewStyle: "lite" | "full" | "standard" = "standard",
|
|
919
932
|
): Promise<void> {
|
|
920
933
|
if (reviewOriginId) {
|
|
921
934
|
ctx.ui.notify("当前已有正在进行的审查会话。请先使用 /end-review 结束。", "warning");
|
|
@@ -964,29 +977,26 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
964
977
|
pi.appendEntry(REVIEW_STATE_TYPE, { active: true, originId: lockedOriginId });
|
|
965
978
|
}
|
|
966
979
|
|
|
967
|
-
const prompt = await buildReviewPrompt(pi, target);
|
|
980
|
+
const prompt = await buildReviewPrompt(pi, target, reviewStyle);
|
|
968
981
|
const hint = getUserFacingHint(target);
|
|
969
982
|
const projectGuidelines = await loadProjectReviewGuidelines(ctx.cwd);
|
|
970
983
|
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
let fullPrompt = `${MANDATORY_CHINESE_HEADER}\n\n${REVIEW_RUBRIC}`;
|
|
984
|
+
let fullPrompt = REVIEW_RUBRIC;
|
|
974
985
|
|
|
975
986
|
if (settings.mode === "subagents") {
|
|
976
987
|
fullPrompt += `\n\n---\n\n${buildSubagentOrchestrationPrompt(settings.concurrency, settings.gateEnabled)}`;
|
|
977
988
|
}
|
|
978
989
|
|
|
979
|
-
fullPrompt += `\n\n---\n\n##
|
|
990
|
+
fullPrompt += `\n\n---\n\n## 本次审查任务指示\n\n${prompt}`;
|
|
980
991
|
|
|
981
992
|
if (projectGuidelines) {
|
|
982
993
|
fullPrompt += `\n\n## 本项目附加规范指南\n\n${projectGuidelines}`;
|
|
983
994
|
}
|
|
984
995
|
|
|
985
|
-
|
|
986
|
-
|
|
996
|
+
const styleTag = reviewStyle === "lite" ? "[极速]" : reviewStyle === "full" ? "[全量]" : "";
|
|
987
997
|
const modeLabel = settings.mode === "single" ? "单模型模式" : `多Subagent并发(${settings.concurrency}专家)`;
|
|
988
998
|
const modeHint = useFreshSession ? " (独立审查分支)" : "";
|
|
989
|
-
ctx.ui.notify(
|
|
999
|
+
ctx.ui.notify(`正在启动代码审查 ${styleTag}: ${hint}${modeHint} [${modeLabel}]`, "info");
|
|
990
1000
|
|
|
991
1001
|
pi.sendUserMessage(fullPrompt);
|
|
992
1002
|
}
|
|
@@ -1186,7 +1196,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1186
1196
|
return;
|
|
1187
1197
|
}
|
|
1188
1198
|
|
|
1189
|
-
await executeReview(ctx, { type: "uncommitted" }, false);
|
|
1199
|
+
await executeReview(ctx, { type: "uncommitted" }, false, undefined, "lite");
|
|
1190
1200
|
},
|
|
1191
1201
|
});
|
|
1192
1202
|
|
|
@@ -1223,7 +1233,7 @@ export default function reviewExtension(pi: ExtensionAPI) {
|
|
|
1223
1233
|
}
|
|
1224
1234
|
}
|
|
1225
1235
|
|
|
1226
|
-
await executeReview(ctx, finalTarget, false, settingsOverride);
|
|
1236
|
+
await executeReview(ctx, finalTarget, false, settingsOverride, "full");
|
|
1227
1237
|
},
|
|
1228
1238
|
});
|
|
1229
1239
|
|