將 AI 審查結果集中到單一 Pull Review #27

Closed
jiantw83 wants to merge 5 commits from ai-review-resolve/20260622094109 into develop
Member

變更摘要

  • 將 AI code review 的角色介紹、問題摘要與行內註解集中發布成同一筆 Pull Review。
  • 新增 Pull Review 建立 helper,支援一次送出 review body 與 comments[]。
  • 可解析到單一檔案行號的舊問題、新非嚴重問題與新嚴重問題都會進入同一筆 review 的行內 comments;無法行內標註或批次送出失敗時,會降級放入同一筆 review body。
  • 補齊 Pull Review payload、Gitea API helper、OpenCode TLS skip 邊界值與 preflight 明確 true 的測試。
  • 清空已解決的 .gitea/ai-review/findings.json。

影響範圍

  • app/main.js:Step1 改為準備 Review 角色介紹內容,Step5 統一發布 Pull Review。
  • app/comments.js:新增 review payload 組裝與 fallback 行為。
  • app/gitea.js:新增 createPullReview API helper。
  • app/*test.js:補齊新行為與 TLS 設定測試。
  • README.md:同步說明新的單一 Pull Review 流程。

驗證

  • npm test
  • 結果:154 tests passed

風險與注意事項

  • Gitea 的 Pull Review comments[] 需要可對應 diff 的 path 與 new_position;若任一批次行內 comment 被拒絕,目前會整批降級到 review body,避免產生多筆 PR comment。
## 變更摘要 - 將 AI code review 的角色介紹、問題摘要與行內註解集中發布成同一筆 Pull Review。 - 新增 Pull Review 建立 helper,支援一次送出 review body 與 comments[]。 - 可解析到單一檔案行號的舊問題、新非嚴重問題與新嚴重問題都會進入同一筆 review 的行內 comments;無法行內標註或批次送出失敗時,會降級放入同一筆 review body。 - 補齊 Pull Review payload、Gitea API helper、OpenCode TLS skip 邊界值與 preflight 明確 true 的測試。 - 清空已解決的 .gitea/ai-review/findings.json。 ## 影響範圍 - app/main.js:Step1 改為準備 Review 角色介紹內容,Step5 統一發布 Pull Review。 - app/comments.js:新增 review payload 組裝與 fallback 行為。 - app/gitea.js:新增 createPullReview API helper。 - app/*test.js:補齊新行為與 TLS 設定測試。 - README.md:同步說明新的單一 Pull Review 流程。 ## 驗證 - npm test - 結果:154 tests passed ## 風險與注意事項 - Gitea 的 Pull Review comments[] 需要可對應 diff 的 path 與 new_position;若任一批次行內 comment 被拒絕,目前會整批降級到 review body,避免產生多筆 PR comment。
jiantw83 added 4 commits 2026-06-22 09:41:42 +00:00
admin reviewed 2026-06-22 09:43:06 +00:00
admin left a comment
Owner

🤖 AI Code Review 團隊

👤 角色 🎯 面向 🧠 個性
🗡️ Assassin security 多疑偏執、以攻擊者視角看世界,假設每筆輸入都是惡意的,每個信任都會被濫用
🎼 Bard style 唯美龜毛、追求優雅,把可讀性與一致性當作旋律,最受不了走調的命名與排版
🧰 Leo maintainability 有遠見、重視長期維護成本,凡事先問「六個月後的自己還看得懂嗎?」,討厭把債留給未來
🔮 Mage logic 嚴謹冷靜、滴水不漏,凡事推演到最壞情況,深信「沒驗證過的假設都是 bug」
🧪 Maya testing 對測試覆蓋率有執念,深信「沒有測試的程式碼等於沒寫完」,溫和但堅持,最在意邊界與失敗路徑
Rogue efficiency 急性子、講求速度,最痛恨被浪費的 CPU 週期與記憶體,凡事先問「這能不能更快、更省」

🔍 服務:gemini 模型:gemini-2.5-flash

💬 行內標註問題(1 筆)

詳見本 review 底下的行內 comments。

## 🤖 AI Code Review 團隊 | 👤 角色 | 🎯 面向 | 🧠 個性 | |--------|--------|--------| | **🗡️ Assassin** | security | 多疑偏執、以攻擊者視角看世界,假設每筆輸入都是惡意的,每個信任都會被濫用 | | **🎼 Bard** | style | 唯美龜毛、追求優雅,把可讀性與一致性當作旋律,最受不了走調的命名與排版 | | **🧰 Leo** | maintainability | 有遠見、重視長期維護成本,凡事先問「六個月後的自己還看得懂嗎?」,討厭把債留給未來 | | **🔮 Mage** | logic | 嚴謹冷靜、滴水不漏,凡事推演到最壞情況,深信「沒驗證過的假設都是 bug」 | | **🧪 Maya** | testing | 對測試覆蓋率有執念,深信「沒有測試的程式碼等於沒寫完」,溫和但堅持,最在意邊界與失敗路徑 | | **⚡ Rogue** | efficiency | 急性子、講求速度,最痛恨被浪費的 CPU 週期與記憶體,凡事先問「這能不能更快、更省」 | > 🔍 服務:gemini 模型:gemini-2.5-flash ## 💬 行內標註問題(1 筆) 詳見本 review 底下的行內 comments。
@@ -199,6 +199,23 @@ describe('verifyLLM', () => {
assert.equal(agents[1].options.rejectUnauthorized, false);
});
Owner

分類:新嚴重問題
等級🔴 嚴重
審查員:Assassin
建議:此測試進一步確認了 OPENCODE_SKIP_TLS_VERIFY = 'true' 會導致 HTTPS 代理設定為 rejectUnauthorized: false,即跳過 TLS 憑證驗證。這是一個嚴重的「不安全預設」或「不安全配置」問題。

雖然這是一個明確的設定,但跳過 TLS 驗證會使應用程式容易受到中間人(MITM)攻擊。攻擊者可以在應用程式與 OpenCode 服務之間偽造伺服器身份,攔截、竊聽或篡改所有通訊內容,進而竊取機密資訊或注入惡意指令。

建議除非在極端受控的環境下,否則應避免跳過 TLS 驗證。如果確實需要此功能,應確保其使用受到嚴格的審查和限制,並在文件上明確標示其安全風險。更安全的做法是配置正確的憑證信任鏈,而不是禁用驗證。

**分類**:新嚴重問題 **等級**:🔴 嚴重 **審查員**:Assassin **建議**:此測試進一步確認了 `OPENCODE_SKIP_TLS_VERIFY = 'true'` 會導致 HTTPS 代理設定為 `rejectUnauthorized: false`,即跳過 TLS 憑證驗證。這是一個嚴重的「不安全預設」或「不安全配置」問題。 雖然這是一個明確的設定,但跳過 TLS 驗證會使應用程式容易受到中間人(MITM)攻擊。攻擊者可以在應用程式與 OpenCode 服務之間偽造伺服器身份,攔截、竊聽或篡改所有通訊內容,進而竊取機密資訊或注入惡意指令。 建議除非在極端受控的環境下,否則應避免跳過 TLS 驗證。如果確實需要此功能,應確保其使用受到嚴格的審查和限制,並在文件上明確標示其安全風險。更安全的做法是配置正確的憑證信任鏈,而不是禁用驗證。
admin added 1 commit 2026-06-22 09:43:07 +00:00
chore: update ai-review findings [ai-review-bot][failure]
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Failing after 6s
c9c6cf11e5
jiantw83 closed this pull request 2026-06-22 10:02:38 +00:00
jiantw83 deleted branch ai-review-resolve/20260622094109 2026-06-22 10:02:41 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: old-actions/code-review#27