feat(ai-review 對話收斂): 讀 PR review 留言判斷解決狀態並收斂 findings #45
@@ -44,6 +44,7 @@
|
|||||||
- 帳號額度:`fetchAccountQuota` 依平台採不同策略——OpenRouter(`openai` slot 指向 openrouter.ai 時)以 `GET /auth/key` 取得 USD credits 已用/上限/剩餘;Ollama、OpenCode 為本地/自架服務回報「不適用」;OpenAI、Claude、Gemini、Amazon Q 的帳號額度需 org/admin 權限,API key 無法取得時誠實回報原因
|
- 帳號額度:`fetchAccountQuota` 依平台採不同策略——OpenRouter(`openai` slot 指向 openrouter.ai 時)以 `GET /auth/key` 取得 USD credits 已用/上限/剩餘;Ollama、OpenCode 為本地/自架服務回報「不適用」;OpenAI、Claude、Gemini、Amazon Q 的帳號額度需 org/admin 權限,API key 無法取得時誠實回報原因
|
||||||
- 兩種來源皆無法取得(例如帳號無上限且回應無速率 header)時,降級為「無法計算百分比」並附原因,不中斷流程;`formatUsageStats` 產生 Review 本文區塊,`formatUsageStatsLine` 產生單行 log 摘要
|
- 兩種來源皆無法取得(例如帳號無上限且回應無速率 header)時,降級為「無法計算百分比」並附原因,不中斷流程;`formatUsageStats` 產生 Review 本文區塊,`formatUsageStatsLine` 產生單行 log 摘要
|
||||||
14. 誤報判斷套用「防守方」角色:`app/findings.js` 的 `filterFalsePositivesWithAI` 以 `app/roles.js` 的 `loadRole('Paladin')` 載入防守方角色,並用 `buildVerdictPrompt(role, exclusionHint)` 組出帶其個性與裁決準則的 system prompt;對每一條 finding 各派一個防守方 sub-agent(`judgeFindingIsFalsePositive`)裁決 `confirmed`/`false_positive`,多條問題時以 `Promise.all` 平行處理;判為誤報者剔除、成立者保留,任一 sub-agent 失敗(含解析失敗)保守視為成立保留,不中斷流程。角色檔遺失時 `buildVerdictPrompt(null)` 退回通用裁判 prompt。
|
14. 誤報判斷套用「防守方」角色:`app/findings.js` 的 `filterFalsePositivesWithAI` 以 `app/roles.js` 的 `loadRole('Paladin')` 載入防守方角色,並用 `buildVerdictPrompt(role, exclusionHint)` 組出帶其個性與裁決準則的 system prompt;對每一條 finding 各派一個防守方 sub-agent(`judgeFindingIsFalsePositive`)裁決 `confirmed`/`false_positive`,多條問題時以 `Promise.all` 平行處理;判為誤報者剔除、成立者保留,任一 sub-agent 失敗(含解析失敗)保守視為成立保留,不中斷流程。角色檔遺失時 `buildVerdictPrompt(null)` 退回通用裁判 prompt。
|
||||||
|
15. location 行號強制:`buildAnalysisPrompt` 明確要求每條問題的 `location` 必須是 `檔案路徑:行號`(單一行號、不可只給檔名),否則該問題無法在 Review 行內標註、只剩統計數字。Step5 角色分析後由 `resolveMissingLineNumbers` 把關:對「只有檔名、缺行號」的新問題,用 `buildLocateLinePrompt(role)` 反問**原角色**、附該檔 diff 區段(`extractFileDiff`)請它回 `{"line": 數字}`,重複嘗試到取得有效行號為止(每條最多 `MAX_LOCATE_ATTEMPTS=3` 次,避免無限迴圈);成功補成 `檔案:行號`,連續失敗則記錄警告並保留檔名。
|
||||||
|
|
||||||
# 使用說明
|
# 使用說明
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user