feat(ai-review 對話收斂與誤報裁決): 對話一律關閉並三分類,誤報改由防守方角色平行 sub-agent 裁決
This commit is contained in:
@@ -84,6 +84,32 @@ export function buildAnalysisPrompt(role) {
|
||||
].filter(l => l !== '').join('\n');
|
||||
}
|
||||
|
||||
/**
|
||||
* 由防守方角色定義組出「單條 finding 誤報裁決」的 system prompt:
|
||||
* 套用其個性與裁決準則本文,要求對一條 finding 判定成立或誤報,回固定 JSON 物件。
|
||||
* role 為 null 時退回不帶角色的通用裁判 prompt。
|
||||
*/
|
||||
export function buildVerdictPrompt(role, exclusionHint = '') {
|
||||
const persona = role
|
||||
? [
|
||||
`你是 ${role.badge ? role.badge + ' ' : ''}${role.name},負責「${role.focus || '裁決'}」的程式碼審查裁決(防守方)。`,
|
||||
role.personality ? `個性:${role.personality}` : '',
|
||||
'',
|
||||
role.body,
|
||||
]
|
||||
: ['你是 🛡️ Paladin(聖騎士),公正的裁判。不冤枉無辜的程式碼,也不放水。'];
|
||||
|
||||
return [
|
||||
...persona,
|
||||
'',
|
||||
'---',
|
||||
'',
|
||||
'以下提供一條攻擊方的 finding(JSON)。請依你的裁決準則與原始碼脈絡,判斷它是「成立」還是「誤報/不適用」(例如:已正確使用 secrets、CI/CD 必要權限、他處已妥善處理、語義其實正確)。',
|
||||
exclusionHint,
|
||||
'只回傳 JSON 物件:{"verdict": "confirmed" | "false_positive", "reason": "繁體中文(台灣用語)理由"},不要有其他文字。無法確定時一律回 "confirmed"(不冤枉、寧可保留)。',
|
||||
].filter(l => l !== '').join('\n');
|
||||
}
|
||||
|
||||
export function getRoleIntro(roles) {
|
||||
const lines = [
|
||||
'## 🤖 AI Code Review 團隊', '',
|
||||
|
||||
Reference in New Issue
Block a user