♻️ refactor(vscode): PR 文件说明改为一句话概述改动
已缓存的 `.spx/pr-file-summaries.json` 旧长文不会自动刷新,需重新点 ✨ 生成。
This commit is contained in:
@@ -243,9 +243,8 @@ export async function handleSetPrReviewConfirmed(
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成说明的 prompt:只问「为什么改 + 不改的后果」,明令禁止复述代码做了什么——
|
||||
* 文件干了什么用户看代码即知,价值在意图与代价。首条垫入 PR 描述当背景并立下问法,
|
||||
* 续会话只发新文件,复用已有 PR 理解、省 token。
|
||||
* 生成说明的 prompt:只要一句「这个文件改了什么」,给审查者扫一眼用。
|
||||
* 首条垫入 PR 描述当背景并立下问法;续会话只发新文件,复用已有 PR 理解、省 token。
|
||||
*/
|
||||
function buildSummaryPrompt(prNumber: number, prBody: string, filePath: string, patch: string, isFirst: boolean): string {
|
||||
if (isFirst) {
|
||||
@@ -253,13 +252,13 @@ function buildSummaryPrompt(prNumber: number, prBody: string, filePath: string,
|
||||
const prContext = body
|
||||
? `我在逐个审查 PR #${prNumber} 的改动,本 PR 的说明如下:\n${body}\n\n`
|
||||
: `我在逐个审查 PR #${prNumber} 的改动。`
|
||||
return `${prContext}针对下面这个文件的改动,用一两句简短中文回答两点:① 为什么要做这个改动——它要解决什么问题、达成什么目的;② 不做这个改动会缺什么、有什么后果。不要复述代码做了什么、不要罗列函数或结构(这些我看代码就知道)。只输出这一两句结论。\n\n文件: ${filePath}\n\n\`\`\`diff\n${patch}\n\`\`\``
|
||||
return `${prContext}针对下面这个文件的改动,用一句简短中文说明改了什么 / 改了哪些东西。只输出这一句话,不要分点、不要 ①②、不要 markdown 加粗,不要解释为什么改、不要写不做的后果,不要复述整段代码或罗列函数/结构。\n\n文件: ${filePath}\n\n\`\`\`diff\n${patch}\n\`\`\``
|
||||
}
|
||||
return `下一个文件,同样只回答两点:① 为什么改、要解决什么问题或达成什么目的;② 不做的后果。不要复述代码做了什么。\n文件: ${filePath}\n\`\`\`diff\n${patch}\n\`\`\``
|
||||
return `下一个文件,同样只用一句简短中文说明改了什么,不要分点、不要 ①②、不要解释为什么或后果。\n文件: ${filePath}\n\`\`\`diff\n${patch}\n\`\`\``
|
||||
}
|
||||
|
||||
/**
|
||||
* 用 deepseek 给单个文件生成「为什么改 + 不改的后果」的改动说明。增量复用同一会话:首个文件开新会话并把
|
||||
* 用 deepseek 给单个文件生成「一句话说明改了什么」的改动说明。增量复用同一会话:首个文件开新会话并把
|
||||
* sessionId 记到 `.spx/pr-file-summaries.json`,后续文件 `--resume` 接上去,省去每次重新理解
|
||||
* PR 的开销。说明也落盘,重载后仍显示。
|
||||
*
|
||||
@@ -333,7 +332,12 @@ export async function handleGeneratePrFileSummary(
|
||||
})
|
||||
}
|
||||
|
||||
const summary = result.resultText.trim().replace(/\s+/g, ' ')
|
||||
// 模型偶发仍加 **①**/**②** → 轻量去标记;一句话约束主要靠 prompt
|
||||
const summary = result.resultText
|
||||
.trim()
|
||||
.replace(/\s+/g, ' ')
|
||||
.replace(/(?:\*{0,2}[①②]\*{0,2}\s*)+/g, '')
|
||||
.trim()
|
||||
await writeFileSummary(workspaceRoot, issueNumber, filePath, summary)
|
||||
await writeSummarySession(workspaceRoot, issueNumber, result.sessionId)
|
||||
panel.postMessage({ type: 'pr-file-summary/show', issueNumber, path: filePath, summary })
|
||||
|
||||
Reference in New Issue
Block a user