新增 OpenCode 自簽憑證略過設定 #20

Merged
admin merged 4 commits from ai-review-resolve/20260620131600 into develop 2026-06-20 13:18:17 +00:00
Member

變更摘要

  • 新增 OPENCODE_SKIP_TLS_VERIFY action input/env,讓 OpenCode server 使用自簽憑證時可明確選擇略過 TLS 驗證。
  • 將 OpenCode preflight 的 /global/health/config/providers 與實際 /session/message 呼叫統一套用 OpenCode 專用 HTTPS agent。
  • 補上 preflight 與 chat 的測試,確認啟用設定時會傳入 rejectUnauthorized: false
  • 更新 README 的 OpenCode Server 範例,標示自簽憑證時的設定方式。

影響範圍

  • 只影響 provider 為 opencode 的 HTTPS 呼叫。
  • 預設行為不變;未設定 OPENCODE_SKIP_TLS_VERIFY=true 時仍維持 TLS 憑證驗證。
  • Gitea 的 GITEA_SKIP_TLS_VERIFY 語意維持不變,未與 OpenCode 設定混用。

測試

  • npm test:144 個測試通過。

注意事項

  • OPENCODE_SKIP_TLS_VERIFY=true 僅建議用於內部或自簽憑證環境。正式公開服務仍應使用可信任 CA 簽發的憑證。
## 變更摘要 - 新增 `OPENCODE_SKIP_TLS_VERIFY` action input/env,讓 OpenCode server 使用自簽憑證時可明確選擇略過 TLS 驗證。 - 將 OpenCode preflight 的 `/global/health`、`/config/providers` 與實際 `/session`、`/message` 呼叫統一套用 OpenCode 專用 HTTPS agent。 - 補上 preflight 與 chat 的測試,確認啟用設定時會傳入 `rejectUnauthorized: false`。 - 更新 README 的 OpenCode Server 範例,標示自簽憑證時的設定方式。 ## 影響範圍 - 只影響 provider 為 `opencode` 的 HTTPS 呼叫。 - 預設行為不變;未設定 `OPENCODE_SKIP_TLS_VERIFY=true` 時仍維持 TLS 憑證驗證。 - Gitea 的 `GITEA_SKIP_TLS_VERIFY` 語意維持不變,未與 OpenCode 設定混用。 ## 測試 - `npm test`:144 個測試通過。 ## 注意事項 - `OPENCODE_SKIP_TLS_VERIFY=true` 僅建議用於內部或自簽憑證環境。正式公開服務仍應使用可信任 CA 簽發的憑證。
jiantw83 added 3 commits 2026-06-20 13:16:36 +00:00
Owner

🤖 AI Code Review 團隊

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

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

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

🔍 新發現問題(1 筆)

等級 審查員 位置 建議
🟡 警告 Mage app/preflight.js:23 app/llm.jsapp/preflight.js 中,opencodeAxiosOptions 函數的邏輯存在重複。雖然 timeout 參數在兩處有所不同,但處理 httpsAgent 的核心邏輯是相同的。建議將 httpsAgent 的建立邏輯抽象為一個共用函數或在 config.js 中定義,以避免未來修改時造成不一致,並提高程式碼的可維護性。

例如,可以將 httpsAgent 的邏輯移至 config.js

// app/config.js
export function getOpenCodeHttpsAgent() {
  return shouldSkipOpenCodeTLSVerify() ? new https.Agent({ rejectUnauthorized: false }) : undefined;
}

// app/llm.js
import { getOpenCodeHttpsAgent } from './config.js';
function opencodeAxiosOptions(headers) {
  return {
    headers,
    httpsAgent: getOpenCodeHttpsAgent(),
  };
}

// app/preflight.js
import { getOpenCodeHttpsAgent } from './config.js';
const opencodeAxiosOptions = (headers) => ({
  headers,
  timeout: 30000,
  httpsAgent: getOpenCodeHttpsAgent(),
});
``` |
## 🔍 新發現問題(1 筆) | 等級 | 審查員 | 位置 | 建議 | |------|--------|------|------| | 🟡 警告 | Mage | app/preflight.js:23 | 在 `app/llm.js` 與 `app/preflight.js` 中,`opencodeAxiosOptions` 函數的邏輯存在重複。雖然 `timeout` 參數在兩處有所不同,但處理 `httpsAgent` 的核心邏輯是相同的。建議將 `httpsAgent` 的建立邏輯抽象為一個共用函數或在 `config.js` 中定義,以避免未來修改時造成不一致,並提高程式碼的可維護性。 例如,可以將 `httpsAgent` 的邏輯移至 `config.js`: ```javascript // app/config.js export function getOpenCodeHttpsAgent() { return shouldSkipOpenCodeTLSVerify() ? new https.Agent({ rejectUnauthorized: false }) : undefined; } // app/llm.js import { getOpenCodeHttpsAgent } from './config.js'; function opencodeAxiosOptions(headers) { return { headers, httpsAgent: getOpenCodeHttpsAgent(), }; } // app/preflight.js import { getOpenCodeHttpsAgent } from './config.js'; const opencodeAxiosOptions = (headers) => ({ headers, timeout: 30000, httpsAgent: getOpenCodeHttpsAgent(), }); ``` |
admin added 1 commit 2026-06-20 13:17:38 +00:00
chore: update ai-review findings [ai-review-bot][success]
AI / 計算版本號 (pull_request) Successful in 2s
AI / Code Review (pull_request) Successful in 5s
7a79cd45be
admin merged commit c662a2e362 into develop 2026-06-20 13:18:17 +00:00
admin deleted branch ai-review-resolve/20260620131600 2026-06-20 13:18:17 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: actions/code-review#20