85 Commits
Author SHA1 Message Date
JefferyandClaude Opus 4.8 feae0d91de chore(ai-review 狀態): 還原被覆蓋的 108 條排除規則並清空 findings
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 42s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 17:32:49 +08:00
JefferyandClaude Opus 4.8 ec8773d54d test(usage 剩餘百分比): 補 rate.remaining 為 null/undefined 時不計算百分比的測試
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 17:32:49 +08:00
JefferyandClaude Opus 4.8 fcde1b0bc9 fix(ai-review exclusions): 修正追加排除規則時讀寫目錄顛倒導致既有規則被覆蓋
appendExclusions 原以 WORKSPACE 為主、repoDir 為鏡像,與 loadExclusions 相反,
會讀到空的 WORKSPACE 後把僅含本次新增的結果鏡像覆蓋掉 repoDir 既有規則,
改為以 repoDir 為主、WORKSPACE 為鏡像,順序與 loadExclusions 一致。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 17:32:49 +08:00
JefferyandClaude Opus 4.8 bd9a3111fa fix(usage 剩餘百分比): 抽出 calculatePercent 共用函式並修正剩餘值缺失時誤算 0%
剩餘值為 null/undefined 時原本經 Number() 轉成 0 而算出 0%,
改由 calculatePercent 統一檢查有效性,無效值一律落到「無法計算」。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 17:32:49 +08:00
Jeffery 0d0298b005 chore(ai-review 狀態): 排除 3 條誤報(測試已涵蓋/風格/isFinitePositive 已安全),清空 findings.json
AI / 計算版本號 (pull_request) Successful in 3s
AI / Code Review (pull_request) Failing after 45s
2026-06-23 17:24:13 +08:00
Jeffery 0aee3459e6 chore(ai-review 狀態): 解決邊界數值 findings、排除唯讀 fixture 誤報,清空 findings.json
AI / Code Review (pull_request) Failing after 35s
AI / 計算版本號 (pull_request) Successful in 1s
2026-06-23 16:44:43 +08:00
Jeffery 791449161f test(ai-review 使用量): 補 quota/rate 上限為 0/負數/Infinity/NaN 與剩餘非有限的邊界測試 2026-06-23 16:44:43 +08:00
Jeffery 6259cd4398 fix(ai-review 使用量): resolveRemainingPercent 要求有限正數上限,避免 Infinity 上限算出 NaN%/負百分比 2026-06-23 16:44:43 +08:00
Jeffery 1ff74297ce chore(ai-review 狀態): 補 NaN 測試、排除 recordRateLimit 微優化誤報,清空 findings.json
AI / Code Review (pull_request) Failing after 31s
AI / 計算版本號 (pull_request) Successful in 2s
2026-06-23 16:36:42 +08:00
Jeffery 6398d4a193 test(ai-review 使用量): 補 formatUsageStatsLine 對 NaN/異常數字輸出安全文字測試 2026-06-23 16:36:42 +08:00
Jeffery e770952238 Revert "test: 提前清理成品"
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 50s
This reverts commit b0b8560090.
2026-06-23 16:27:02 +08:00
Jeffery b0b8560090 test: 提前清理成品
AI / 計算版本號 (pull_request) Successful in 19s
AI / Code Review (pull_request) Failing after 1s
2026-06-23 16:24:21 +08:00
Jeffery 0583681678 chore(ai-review 狀態): 補測試與排除已涵蓋/誤報 findings,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 2s
2026-06-23 15:50:41 +08:00
Jeffery 1919433df1 test(ai-review): 補 judgeConversations 空陣列回應視為 open 的邊界測試 2026-06-23 15:50:41 +08:00
Jeffery 0eda059c4a chore(ai-review 狀態): findings 已由測試涵蓋,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 3s
AI / Code Review (pull_request) Failing after 53s
2026-06-23 15:44:44 +08:00
Jeffery 0f7ec5c3db test(ai-review): 補 usageSection 結構、resolveMissingLineNumbers 例外與誤報混合平行測試 2026-06-23 15:44:44 +08:00
Jeffery 892a79c9bc chore(ai-review 狀態): 解決行號相關 findings、排除 extractUsage 誤報,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 33s
2026-06-23 15:36:35 +08:00
Jeffery 86b343bec9 docs(ai-review): 補 location 行號強制與反問定位流程說明 2026-06-23 15:36:35 +08:00
Jeffery d03f08e19d test(ai-review): 補行號定位、誤報裁決邊界、統計與 appendExclusions 測試 2026-06-23 15:36:35 +08:00
Jeffery fbf83f1cbb feat(ai-review 行號): 角色 prompt 強制行號,缺行號時反問原角色依 diff 定位(重試上限) 2026-06-23 15:36:35 +08:00
Jeffery ccd830234e chore(ai-review 狀態): findings 已由測試涵蓋,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 38s
2026-06-23 15:15:24 +08:00
Jeffery 756b2cd4ef test(ai-review): 補日誌 input/output/result helper 與誤報裁決、usage 解析、parseBot 健壯性測試 2026-06-23 15:15:24 +08:00
Jeffery 374bb4ec75 refactor(pipeline 日誌): 步驟連號單一任務、輸入輸出與成敗訊息更明確、清除 bot-check 雜訊 2026-06-23 15:15:24 +08:00
Jeffery 590a2db641 chore(ai-review 狀態): findings 已由測試涵蓋,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 58s
2026-06-23 14:58:15 +08:00
Jeffery 4c6c69b862 docs(ai-review): 更新對話收斂為關閉所有未解決 comment 的說明 2026-06-23 14:58:15 +08:00
Jeffery 4a0f8bcc36 test(ai-review): 補關閉所有 comment、部分 resolve 失敗、百分比邊界與 usageSection 排版測試 2026-06-23 14:58:15 +08:00
Jeffery 0cb6ffde3e fix(ai-review 對話收斂): 改為關閉所有未解決 comment id,確保每個 thread 都被關閉 2026-06-23 14:58:15 +08:00
Jeffery 6d79bddc85 fix(角色提示): 修正角色描述檔以符合 action 工作流(防守方改 JSON 兩分類、攻擊方對應 JSON 欄位) 2026-06-23 14:58:15 +08:00
Jeffery 00f9f92b62 chore(ai-review 狀態): findings 已由測試涵蓋,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 1m3s
2026-06-23 14:26:06 +08:00
Jeffery 024f1c623b docs(ai-review): 更新對話收斂三分類與防守方誤報裁決說明 2026-06-23 14:26:06 +08:00
Jeffery 33c5cf8201 test(ai-review): 補對話三分類、誤報平行裁決與 appendExclusions 測試 2026-06-23 14:26:06 +08:00
Jeffery 98c60541c4 feat(ai-review 對話收斂與誤報裁決): 對話一律關閉並三分類,誤報改由防守方角色平行 sub-agent 裁決 2026-06-23 14:26:06 +08:00
Jeffery c9ea41ecdb chore(ai-review 狀態): 解決 header helper finding 並排除風格類誤報
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 50s
2026-06-23 13:51:36 +08:00
Jeffery aeb3e74036 docs(ai-review): 更新 comment 標註與對話收斂三段式處置說明 2026-06-23 13:51:36 +08:00
Jeffery cadfaff31d test(ai-review): 補 comment 只標註新問題與對話收斂 duplicate 分支測試 2026-06-23 13:51:36 +08:00
Jeffery fb2624a215 refactor(ai-review 使用量): 抽出 lowerCaseKeys 簡化 header 正規化 2026-06-23 13:51:36 +08:00
Jeffery c6544ce2cc feat(ai-review 對話收斂): 未修復但已在舊問題者改為解決對話、不重複加回 2026-06-23 13:51:36 +08:00
Jeffery f170c36fc8 feat(ai-review comment): 行內 comment 只標註新問題,舊問題僅計入統計 2026-06-23 13:51:36 +08:00
Jeffery a3472119e1 chore(ai-review 狀態): 測試已涵蓋 findings,清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 1m16s
2026-06-23 13:34:41 +08:00
Jeffery 1f9e0d906c test(ai-review): 補非整數 idx、空 apiKeys 與 limit 為 0 的邊界測試 2026-06-23 13:34:41 +08:00
Jeffery cd2c9d5aed chore(ai-review 狀態): 解決並排除 usage.js findings
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 52s
2026-06-23 13:15:58 +08:00
Jeffery 72c773abef docs(ai-review 統計): 更新統計表為四欄新舊兩列說明 2026-06-23 13:15:58 +08:00
Jeffery 55bd14e480 test(ai-review): 更新統計四欄、OpenRouter 精確比對與 codeWindow 邊界測試 2026-06-23 13:15:58 +08:00
Jeffery e73e18f2c3 fix(ai-review 使用量): OpenRouter 額度查詢改為精確 hostname 比對 2026-06-23 13:15:58 +08:00
Jeffery 348036aea3 feat(ai-review 統計): 統計表改為四欄(含無法標示)並分新舊兩列 2026-06-23 13:15:58 +08:00
Jeffery 3bf9255a0d chore(ai-review 狀態): 解決 usage.js findings 並補 SRP 誤報排除
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 51s
2026-06-23 13:07:27 +08:00
Jeffery 54f268c81b test(ai-review 使用量): 補偽造 hostname 不洩 key 與 total token 0 測試 2026-06-23 13:07:27 +08:00
Jeffery 983efeb13f fix(ai-review 使用量): 修正額度查詢 hostname 精確比對與 total token 為 0 的邊界 2026-06-23 13:07:27 +08:00
Jeffery 3ea75d5136 chore(ai-review 狀態): 解決 resolve.js findings 並補誤報排除
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 48s
2026-06-23 12:58:43 +08:00
Jeffery 5f468c0d03 docs(ai-review 使用量): 補使用量統計流程與階段十四說明 2026-06-23 12:58:43 +08:00
Jeffery a27555b35a test(ai-review): 補使用量統計與 resolve 安全與邊界測試 2026-06-23 12:58:43 +08:00
Jeffery f23d015e62 fix(ai-review 對話收斂): 補路徑穿越防護、提示詞注入防護與正則預編譯 2026-06-23 12:58:43 +08:00
Jeffery 1151535161 feat(ai-review 使用量): 新增多平台 AI 助理使用量統計與剩餘可用百分比 2026-06-23 12:58:43 +08:00
Jeffery 0cddd0976f 將 AI 助理改為 OpenCode
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 39s
2026-06-23 11:37:27 +08:00
Jeffery e492ea5447 chore(ai-review 狀態): 解決 resolve.js findings 後清空 findings.json
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 2m40s
2026-06-23 11:30:21 +08:00
Jeffery 9e3f7afee2 test(ai-review 對話收斂): 補解析預設、AI 判斷過濾與收斂失敗路徑測試 2026-06-23 11:30:21 +08:00
Jeffery 5bee498e4b fix(ai-review 對話收斂): 並行取檔與 resolve、處理單檔失敗與無路徑留言 2026-06-23 11:30:21 +08:00
Jeffery 374253d4cf docs(ai-review 對話收斂): 補階段十三 PR 對話收斂流程與驗收說明
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 2m46s
2026-06-23 11:09:50 +08:00
Jeffery 7a29a5be1c test(ai-review 對話收斂): 補對話收斂與 Gitea review comment API 測試 2026-06-23 11:09:50 +08:00
Jeffery a99163468b feat(ai-review 對話收斂): 讀 PR review 留言判斷解決狀態並收斂 findings 2026-06-23 11:09:50 +08:00
Jeffery 97888f8b22 chore(ai-review): 清空 findings
AI / 計算版本號 (pull_request) Successful in 3s
AI / Code Review (pull_request) Successful in 2m11s
2026-06-16 17:00:36 +08:00
Jeffery fa95a463f8 test(roles): 補 focus/personality 缺漏時的輸出防護測試 2026-06-16 17:00:29 +08:00
Jeffery 60001499da fix(腳色載入器): 壞角色檔改記錄警告並略過、快取解析結果並補 focus/personality 缺漏防護 2026-06-16 17:00:24 +08:00
Jeffery 9e3c7f61bf chore(ai-review): 遷移 exclusions 舊腳色名並清空 findings
AI / 計算版本號 (pull_request) Successful in 3s
AI / Code Review (pull_request) Failing after 1m17s
2026-06-16 16:41:42 +08:00
Jeffery d8b681e63b test(roles 與 comments): 新增腳色載入器測試與嚴重問題 comment 的邊界/多筆案例 2026-06-16 16:41:40 +08:00
Jeffery 1602853c99 feat(腳色系統): 改用 skill RPG 攻防腳色、新增 Mage 邏輯角色並讓 Step3/4 套上 Paladin 裁決人設 2026-06-16 16:41:28 +08:00
Jeffery f047b4473e chore(ai-review): 三條 preflight 測試誤判寫入 exclusions 並清空 findings
AI / 計算版本號 (pull_request) Successful in 4s
AI / Code Review (pull_request) Successful in 1m17s
2026-06-16 16:00:17 +08:00
JefferyandClaude Opus 4.8 caebd2b112 feat: 嚴重問題改用 Gitea 行內 review comment 標註檔案行數
AI / 計算版本號 (pull_request) Successful in 4s
AI / Code Review (pull_request) Successful in 1m35s
每個新的嚴重問題改以行內 review comment 標註在問題所在的檔案與行數上,
留言內容為等級/審查員/建議;無法解析出行號(未標行號或一次列出多個
檔案),或行內留言失敗(該行不在 diff 範圍)時,降級為原本的一般 PR comment。

- gitea.js:新增 postPullReviewComment,呼叫 pull reviews API,以 new_position
  對應新版檔案行號、commit_id 帶 PR_HEAD_SHA
- comments.js:新增 parseLocation(支援 file:19 / file:70-82,取起始行)與
  行內留言內容組裝;postNewCriticalComments 先試行內、失敗降級,deps 可注入
- 補 11 個測試(API payload、parseLocation 各情境、行內成功與兩種降級路徑)
- README 更新流程第 7 步說明

app/ 測試 123 pass。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 14:40:36 +08:00
JefferyandClaude Opus 4.8 33f1291a0f chore: triage preflight TLS finding 為誤報並寫入 exclusions
AI / 計算版本號 (pull_request) Successful in 4s
AI / Code Review (pull_request) Successful in 4m16s
Maya critical(app/preflight.js:107):verifyLLM 的 axios.post 未帶
httpsAgent,認為 GITEA_SKIP_TLS_VERIFY 未套用到 LLM 請求。

判定為誤報並移入 exclusions:
- GITEA_SKIP_TLS_VERIFY 為 Gitea 端(內網自簽憑證)專用設定,外部 LLM
  服務(Gemini/OpenAI/Claude)應維持 TLS 驗證,套用此 flag 屬安全降級
- 與既有 app/llm.js 排除一致(已刻意移除 rejectUnauthorized:false 還原
  TLS 驗證)

findings.json 清空(已排除)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 14:15:00 +08:00
JefferyandClaude Opus 4.8 9d780788e9 test: 補齊 runPreflight 測試並 triage preflight findings
AI / 計算版本號 (pull_request) Successful in 4s
AI / Code Review (pull_request) Failing after 1m42s
triage 6 筆 review findings:1 筆修正、5 筆移入 exclusions。

修正(Maya, warning):runPreflight 僅測過 env 缺失早退,缺成功路徑與
各失敗點覆蓋。將其驗證步驟改為可注入的 deps 參數(預設沿用原函式,
行為不變),並補上完整成功、comment 略過、各失敗點早停、workspace
傳遞共 8 個測試。

移入 exclusions(誤報,保留原文):
- Rex critical:GITEA_SKIP_TLS_VERIFY 為預設開啟驗證的 opt-in 設定,
  與既有 gitea.js 排除一致,非漏洞
- Leo warning:verifyLLM 內聚清楚,拆分屬主觀重構
- Zara warning:每把 key 30s timeout 為刻意的可靠性下限,僅失敗時累積
- Rex info:axios 錯誤訊息不含認證標頭/內容
- Aria info:預設參數引用 config 常數為刻意且利於測試的 pattern

findings.json 清空(全部已修正或排除)。app/ 測試 112 pass。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 13:49:30 +08:00
JefferyandClaude Opus 4.8 7339145641 fix: withAskpass 等待非同步 callback 完成才清理 askpass 腳本
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 2m24s
commitAndPush 傳入 async callback,但 withAskpass 是同步 try/finally,
會在第一個 await(LLM 合併指令檔)時就刪除 .git-askpass.sh,導致後續
git push 因 GIT_ASKPASS 指向已刪除腳本而失敗(cannot exec .git-askpass.sh /
could not read Username)。前置驗證的 verifyRemoteAccess 用同步 callback
所以 ls-remote 通過,造成前置驗證過但 push 失敗的落差。

改為當 callback 回傳 thenable 時以 result.finally(cleanup) 延後清理,
同步 callback 維持立即清理與原樣回傳,不影響 verifyRemoteAccess / cloneRepo。

新增回歸測試斷言 git push 執行當下 askpass 腳本仍存在。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 11:40:58 +08:00
JefferyandClaude Opus 4.8 40ebfe99a8 feat: 前置驗證納入 git push 認證檢查
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 1m28s
git push 走 askpass + HTTP 認證,與 Gitea REST API 是兩套機制,API token
有效不代表 push 能用(曾出現 askpass 無法執行、could not read Username 而
push 失敗)。新增 git.js verifyRemoteAccess() 以相同 askpass + remote URL
跑唯讀 git ls-remote,preflight 呼叫並在失敗時 exit 1,提前攔下設定問題。

新增 git.test.js 對 verifyRemoteAccess 的測試(成功、失敗不丟例外、token
不外洩、askpass 清理)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:39:04 +08:00
Jeffery 00f5bc7dae fix: update GITEA_COMMENT_TOKEN to use RUNNER_TOKEN for code review action
AI / 計算版本號 (pull_request) Successful in 3s
AI / Code Review (pull_request) Failing after 1m6s
2026-06-15 11:57:02 +08:00
Jeffery 69371eb993 feat: update GEMINI_API_KEY configuration for AI Code Review
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 2s
2026-06-15 10:44:19 +08:00
JefferyandClaude Opus 4.8 766f2ddf40 feat: 啟動時前置驗證所有驗證相關設定
AI / 計算版本號 (pull_request) Failing after 1s
AI / Code Review (pull_request) Has been skipped
新增 app/preflight.js,在 action 啟動(Step1 之後、其餘步驟之前)集中
檢查必要環境變數、GITEA_TOKEN 讀 repo、GITEA_COMMENT_TOKEN、以及 LLM
provider/API Key(多把只要一把通過即可,Ollama 改檢查 base URL 連線)。
任一項失敗即印出原因並 exit 1,避免分析到一半或發 comment 時才失敗。

main.js 在 Step1 後呼叫 runPreflight();新增 preflight.test.js 覆蓋
成功、缺環境變數、token 無效、所有 LLM key 失敗、Ollama 等情境。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:41:40 +08:00
JefferyandClaude Opus 4.8 1b34298d4b docs: 規劃 action 啟動前置驗證所有驗證相關設定
在 README 流程新增第 0 點與設計第 11 點,並在 TODO 新增階段十二,
說明 action 啟動時集中驗證 Gitea token、comment token 與 LLM API Key
是否可用,任一失敗即 exit 1。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:37:11 +08:00
Jeffery fbff9b3a86 chore: initialize ai-review exclusion and findings configuration files 2026-05-21 11:52:18 +08:00
Jeffery 097b6fb721 feat: implement Git integration for automated repository instruction syncing and commit management 2026-05-21 11:36:11 +08:00
Jeffery e99236b893 feat: implement git repository synchronization and automated commit functionality for AI review findings 2026-05-21 10:17:01 +08:00
Jeffery 43ebc81f1d feat: add triage-findings agent skill and documentation for issue resolution workflow 2026-05-21 09:34:47 +08:00
Jeffery 0d4776888f feat: add SKILL.md for triage-findings documentation 2026-05-20 17:09:11 +08:00
Jeffery e80a462d96 feat: 將 ANTIGRAVITY 加入程式 2026-05-20 10:49:34 +08:00
Jeffery d818baffa7 feat: 複製 triage-findings 給 ANTIGRAVITY 使用 2026-05-20 10:33:59 +08:00
Jeffery c24f2e00e2 feat: 同步所有平台的技能 2026-05-20 10:31:59 +08:00
Jeffery d95213334b feat: add concurrency settings and branch ignore for pull request workflows 2026-05-12 18:17:14 +08:00