處理 AI review findings 並改寫 Node.js entrypoint #1

Merged
jiantw83 merged 58 commits from ai-review-resolve/20260624102518 into develop 2026-06-24 14:09:27 +00:00
Showing only changes of commit af770b5d5c - Show all commits
+2 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -eo pipefail
if [[ -z "${OAUTH:-}" ]]; then if [[ -z "${OAUTH:-}" ]]; then
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Bard
問題:腳本中多次重複使用相同的錯誤訊息輸出模式 (echo ... >&2; exit 1),缺乏統一的風格與節奏。
建議:建議定義一個輕量的錯誤處理函數(例如 die()),將錯誤訊息處理統一化,讓腳本主體的旋律更為整齊。

**嚴重等級**:🟡 警告 **審查員**:Bard **問題**:腳本中多次重複使用相同的錯誤訊息輸出模式 (`echo ... >&2; exit 1`),缺乏統一的風格與節奏。 **建議**:建議定義一個輕量的錯誤處理函數(例如 `die()`),將錯誤訊息處理統一化,讓腳本主體的旋律更為整齊。
Outdated
Review

嚴重等級🟡 警告
審查員:Bard
問題:腳本中多次重複使用相同的錯誤訊息輸出模式 (echo ... >&2; exit 1),缺乏統一的風格與節奏。
建議:建議定義一個輕量的錯誤處理函數(例如 die()),將錯誤訊息處理統一化。

**嚴重等級**:🟡 警告 **審查員**:Bard **問題**:腳本中多次重複使用相同的錯誤訊息輸出模式 (`echo ... >&2; exit 1`),缺乏統一的風格與節奏。 **建議**:建議定義一個輕量的錯誤處理函數(例如 `die()`),將錯誤訊息處理統一化。
echo "OAUTH is required: provide base64 encoded Codex auth.json." >&2 echo "OAUTH is required: provide base64 encoded Codex auth.json." >&2
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Maya
問題:OAUTH 為必填參數,但缺少針對 OAUTH 為空字串或未定義時的行為測試。
建議:應在測試案例中模擬空 OAUTH 輸入,並驗證腳本是否正確拋出錯誤並以 exit 1 終止。

**嚴重等級**:🟡 警告 **審查員**:Maya **問題**:OAUTH 為必填參數,但缺少針對 OAUTH 為空字串或未定義時的行為測試。 **建議**:應在測試案例中模擬空 OAUTH 輸入,並驗證腳本是否正確拋出錯誤並以 exit 1 終止。
2
@@ -13,6 +13,7 @@ if [[ -z "${MODEL:-}" ]]; then
fi fi
CODEX_HOME="${CODEX_HOME:-/root/.codex}" CODEX_HOME="${CODEX_HOME:-/root/.codex}"
PROMPT="${PROMPT:-請自我介紹}"
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🔵 建議
審查員:Leo
問題:硬編碼了預設路徑 /root/.codex,這使得映像檔的可移植性受限,且如果在非 root 使用者環境下執行此容器,可能會因為權限問題而失敗。
建議:建議將 CODEX_HOME 的預設值改為環境變數設定,並在 Dockerfile 中將該目錄的擁有權設定給執行應用程式的使用者,提升環境適應力。

**嚴重等級**:🔵 建議 **審查員**:Leo **問題**:硬編碼了預設路徑 `/root/.codex`,這使得映像檔的可移植性受限,且如果在非 root 使用者環境下執行此容器,可能會因為權限問題而失敗。 **建議**:建議將 `CODEX_HOME` 的預設值改為環境變數設定,並在 Dockerfile 中將該目錄的擁有權設定給執行應用程式的使用者,提升環境適應力。
mkdir -p "$CODEX_HOME" mkdir -p "$CODEX_HOME"
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Mage
問題:直接將 OAUTH 環境變數內容透過 base64 -d 寫入 auth.json,未校驗該變數是否為合法的 Base64 編碼。若輸入非 Base64 或損壞的字串,會產生損壞的認證檔案。
建議:增加對 OAUTH 變數是否符合 Base64 格式的初步校驗,並在解碼失敗時明確報錯並終止。

**嚴重等級**:🟡 警告 **審查員**:Mage **問題**:直接將 `OAUTH` 環境變數內容透過 `base64 -d` 寫入 `auth.json`,未校驗該變數是否為合法的 Base64 編碼。若輸入非 Base64 或損壞的字串,會產生損壞的認證檔案。 **建議**:增加對 `OAUTH` 變數是否符合 Base64 格式的初步校驗,並在解碼失敗時明確報錯並終止。
Outdated
Review

嚴重等級🔴 嚴重
審查員:Leo
問題:敏感憑證 (OAUTH) 被直接以 base64 解碼後寫入檔案 (/root/.codex/auth.json),且未確保後續清理,導致憑證洩漏風險。
建議:確保該目錄權限封閉(chmod 600),並使用 trap 指令在腳本結束時自動清除該憑證檔案。

**嚴重等級**:🔴 嚴重 **審查員**:Leo **問題**:敏感憑證 (OAUTH) 被直接以 base64 解碼後寫入檔案 (`/root/.codex/auth.json`),且未確保後續清理,導致憑證洩漏風險。 **建議**:確保該目錄權限封閉(chmod 600),並使用 `trap` 指令在腳本結束時自動清除該憑證檔案。
Outdated
Review

嚴重等級🔴 嚴重
審查員:Mage
問題:代碼使用 base64 -d 解碼並直接寫入檔案,未校驗該變數是否為合法格式,若失敗則無法確保建置或執行狀態正確。
建議:在解碼操作後明確添加檢查機制,若失敗則報錯並中止。

**嚴重等級**:🔴 嚴重 **審查員**:Mage **問題**:代碼使用 `base64 -d` 解碼並直接寫入檔案,未校驗該變數是否為合法格式,若失敗則無法確保建置或執行狀態正確。 **建議**:在解碼操作後明確添加檢查機制,若失敗則報錯並中止。
Outdated
Review

嚴重等級🟡 警告
審查員:Mage
問題:直接將 OAUTH 環境變數內容解碼寫入,未校驗 Base64 格式,若格式錯誤會產生損壞的認證檔案。
建議:增加對 Base64 格式的初步校驗,明確報錯並終止。

**嚴重等級**:🟡 警告 **審查員**:Mage **問題**:直接將 `OAUTH` 環境變數內容解碼寫入,未校驗 Base64 格式,若格式錯誤會產生損壞的認證檔案。 **建議**:增加對 Base64 格式的初步校驗,明確報錯並終止。
Outdated
Review

嚴重等級🔴 嚴重
審查員:Assassin
問題:將 OAUTH 解碼後直接寫入 auth.json,未對內容進行結構化驗證,若內容受污染可導致注入惡意身份驗證設定。
建議:在寫入前應針對解碼後的內容進行 Schema Validation,確保其為符合預期的 JSON 格式。

**嚴重等級**:🔴 嚴重 **審查員**:Assassin **問題**:將 `OAUTH` 解碼後直接寫入 `auth.json`,未對內容進行結構化驗證,若內容受污染可導致注入惡意身份驗證設定。 **建議**:在寫入前應針對解碼後的內容進行 Schema Validation,確保其為符合預期的 JSON 格式。
Outdated
Review

嚴重等級🟡 警告
審查員:Mage
問題:直接將 OAUTH 環境變數內容透過 base64 -d 寫入 auth.json,未校驗該變數是否為合法的 Base64 編碼,導致可能產生損壞檔案。
建議:增加對 OAUTH 變數是否符合 Base64 格式的初步校驗,並在解碼失敗時明確報錯。

**嚴重等級**:🟡 警告 **審查員**:Mage **問題**:直接將 `OAUTH` 環境變數內容透過 `base64 -d` 寫入 `auth.json`,未校驗該變數是否為合法的 Base64 編碼,導致可能產生損壞檔案。 **建議**:增加對 `OAUTH` 變數是否符合 Base64 格式的初步校驗,並在解碼失敗時明確報錯。
printf '%s' "$OAUTH" | base64 -d > "$CODEX_HOME/auth.json" printf '%s' "$OAUTH" | base64 -d > "$CODEX_HOME/auth.json"
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🔴 嚴重
審查員:Maya
問題:修改了 entrypoint.sh 的核心邏輯以執行 codex exec,但缺乏驗證執行是否成功的測試案例(例如:當 OAUTH 錯誤、MODEL 無效或 codex exec 本身拋出錯誤時的處理)。
建議:應為 entrypoint.sh 補上單元測試,模擬各種環境變數設定及 codex exec 的成功與失敗路徑,並驗證對應的退出碼。

**嚴重等級**:🔴 嚴重 **審查員**:Maya **問題**:修改了 `entrypoint.sh` 的核心邏輯以執行 `codex exec`,但缺乏驗證執行是否成功的測試案例(例如:當 `OAUTH` 錯誤、`MODEL` 無效或 `codex exec` 本身拋出錯誤時的處理)。 **建議**:應為 `entrypoint.sh` 補上單元測試,模擬各種環境變數設定及 `codex exec` 的成功與失敗路徑,並驗證對應的退出碼。
Outdated
Review

嚴重等級🔴 嚴重
審查員:Maya
問題:核心邏輯(如 base64 解碼、codex exec)缺乏測試案例,無法確保在環境變數缺失、內容損壞或命令執行失敗時的錯誤處理正確。
建議:應為相關關鍵邏輯補上單元測試,模擬各種環境變數設定及 codex exec 的成功與失敗路徑,並驗證對應的退出碼與檔案處理。

**嚴重等級**:🔴 嚴重 **審查員**:Maya **問題**:核心邏輯(如 base64 解碼、`codex exec`)缺乏測試案例,無法確保在環境變數缺失、內容損壞或命令執行失敗時的錯誤處理正確。 **建議**:應為相關關鍵邏輯補上單元測試,模擬各種環境變數設定及 `codex exec` 的成功與失敗路徑,並驗證對應的退出碼與檔案處理。
Outdated
Review

嚴重等級🟡 警告
審查員:Assassin
問題:雖然有 chmod 600,但 auth.json 放在 /root/.codex/ 目錄下,若發生容器逃逸,該敏感金鑰極易被讀取。
建議:應使用外掛式秘密管理機制(如 Secret Store),而非將其寫入檔案。

**嚴重等級**:🟡 警告 **審查員**:Assassin **問題**:雖然有 `chmod 600`,但 `auth.json` 放在 `/root/.codex/` 目錄下,若發生容器逃逸,該敏感金鑰極易被讀取。 **建議**:應使用外掛式秘密管理機制(如 Secret Store),而非將其寫入檔案。
chmod 600 "$CODEX_HOME/auth.json" chmod 600 "$CODEX_HOME/auth.json"
14