feat(ai-code-review): 建問題模式導向 issue,並整併流程調整、文件與 CI #6

Merged
admin merged 79 commits from ai-review-resolve/develop-20260717-185330 into develop 2026-07-21 09:39:48 +00:00
Showing only changes of commit 5ac73f290e - Show all commits
+9 -5
View File
@@ -13,6 +13,14 @@ const templates = require('./templates');
const PER_FILE_DIFF_LIMIT = 16_000; const PER_FILE_DIFF_LIMIT = 16_000;
const TOTAL_DIFF_LIMIT = 160_000; const TOTAL_DIFF_LIMIT = 160_000;
// AI CLI 失敗診斷輸出政策常數(agentFailureDetail 使用):與上方送審上限並列於模組頂層,
// 集中管理長度政策,避免藏在函式中段。
// INPUT_LIMIT:遮罩前先截去的輸入上限——先截再跑 redactSecrets,避免對數 MB 失敗輸出跑整份
// O(k×n) 正規掃描;2000 字已足以涵蓋跨界機密樣式。
const INPUT_LIMIT = 2_000;
// AGENT_DIAGNOSTIC_OUTPUT_LIMIT:每段診斷片段(stderr/stdout)寫入日誌的字元上限,兩段共用同一政策。
const AGENT_DIAGNOSTIC_OUTPUT_LIMIT = 500;
/** /**
* 遮罩單行診斷文字中的機密與控制字元,避免寫進 CI log 時外洩。 * 遮罩單行診斷文字中的機密與控制字元,避免寫進 CI log 時外洩。
* *
@@ -63,11 +71,7 @@ function agentFailureDetail(res) {
else if (err.code) parts.push(`code ${err.code}`); else if (err.code) parts.push(`code ${err.code}`);
else if (err.signal) parts.push(`signal ${err.signal}`); else if (err.signal) parts.push(`signal ${err.signal}`);
} }
// 先截去過長輸入再遮罩,避免對數 MB 的失敗輸出跑整份 O(k×n) 正規掃描; // 先截去過長輸入INPUT_LIMIT)再遮罩,最終仍截為 AGENT_DIAGNOSTIC_OUTPUT_LIMIT;長度政策常數見模組頂層。
// 2000 字上限已足以涵蓋跨界機密樣式,最終仍截為 500 字。
const INPUT_LIMIT = 2_000;
// 每段診斷片段(stderr/stdout)寫入日誌的字元上限,兩段共用同一政策,抽為具名常數避免兩處各寫一個魔術數字。
const AGENT_DIAGNOSTIC_OUTPUT_LIMIT = 500;
// 預設即附上「經 redactSecrets 遮罩+去控制字元+限長」的 stderr 與 stdout 片段——CLI 失敗時 // 預設即附上「經 redactSecrets 遮罩+去控制字元+限長」的 stderr 與 stdout 片段——CLI 失敗時
// 只印 exit code 幾乎無從除錯(見 test-claude 秒失敗案例);且部分 CLI(如 claude-code 的 // 只印 exit code 幾乎無從除錯(見 test-claude 秒失敗案例);且部分 CLI(如 claude-code 的
// -p 模式)會把錯誤寫到 stdout 而非 stderr,故兩者都輸出。redactSecrets 為盡力防線。 // -p 模式)會把錯誤寫到 stdout 而非 stderr,故兩者都輸出。redactSecrets 為盡力防線。