# Code Review 接 Codex 與 Gitea 推版優化藍圖 | 項目 | 內容 | |------|------| | 狀態 | 規劃完成,尚未開始實作 | | 日期 | 2026-05-06 | | 範圍 | Code Review、Codex coding 接力、Gitea/GitHub CI/CD 邊界、AI Agent 資安分工 | | 原則 | 長期以 GitHub 作為雲端主控面,Gitea 保留本地 mirror / fallback,先盤點與同步,再逐步切換 | | AwoooP 同步 | `docs/security/AWOOOP-SECURITY-SUPPLYCHAIN-INTEGRATION-HANDOFF.md` | ## 背景 過去使用 GitHub 作為主要 CI/CD 與 Claude Code 工作入口時,曾發生兩類問題: 1. Code Review 後需要 coding 的工作沒有穩定接力,導致修補、推版、部署流程變得耗時且複雜。 2. Claude Code 或 GitHub Actions 工作流使用 GitHub-hosted runner 時,容易消耗 GitHub 免費額度。 本專案已依 ADR-039 遷移為: ```text Gitea 作為主倉與 CI/CD 執行面 GitHub 作為只讀備份 ``` 但從長期可用性角度看,Gitea 部署在本地端,會受到 110 重開機、Docker/Gitea runner、內網服務與儲存狀態影響。若 Git repository、PR、Code Review 與 Codex 接力全部依賴本地 Gitea,開發控制面會跟著本地機房狀態一起中斷。 因此本輪修訂長期方向為: ```text GitHub 作為雲端主控面:主 repo、PR、Code Review、Codex / Codex Security 接力 本地 runner / deployment plane:build、Harbor push、K8s deploy、內網驗證 Gitea 作為本地 mirror / fallback:保留完整版本與緊急離線備援 ``` 這不是回到舊的「GitHub-hosted runner 全包 CI/CD」模式,而是把穩定的協作與審查控制面放回 GitHub,同時把高耗時、內網依賴、production deploy 的工作留在 self-hosted runner 與本地部署面。 ## 官方事實基線 ### GitHub Actions 額度 依 GitHub 官方文件: - self-hosted runner 使用 GitHub Actions 不消耗 GitHub-hosted runner minutes。 - public repository 使用標準 GitHub-hosted runner 通常免費。 - private repository 使用 GitHub-hosted runner 會消耗帳號方案內的免費 minutes、artifact storage、cache storage,超額後可能被阻擋或計費。 - larger runner 另計,不應視為免費額度。 官方來源:[GitHub Actions billing](https://docs.github.com/en/billing/managing-billing-for-your-products/about-billing-for-github-actions)。 因此統帥的理解是正確的:GitHub 可以正常使用,但要避免把私有 repo 的日常 CI/CD 跑在 GitHub-hosted runner 上。若必須在 GitHub 跑 workflow,優先使用 self-hosted runner 或只保留極短、手動、低頻的檢查。 ### Codex 費用與接法 依 OpenAI 官方文件: - Codex 是可讀取、修改、執行程式碼的 coding agent,可在雲端、CLI、IDE、SDK 等不同介面使用。 - Codex 可用於 code review、bug fix、測試補齊、資安弱點修補等工作。 - Codex app / CLI / cloud 會受到使用者方案、credits、rate limits 與工作環境設定影響。 - 若使用 OpenAI API / Responses API / Codex coding model 自建流程,則走 API token 費用與 API rate limit。 官方來源:[Codex cloud docs](https://platform.openai.com/docs/codex/overview)、[Using Codex with your ChatGPT plan](https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan%252525252525252525252525252525252525252525252525252525252528.pdf)、[OpenAI API Pricing](https://openai.com/api/pricing/)。 因此結論是:可以把 Code Review 後的 coding 工作串接到 Codex,但要分成「使用 Codex 產品額度」與「自建 API 工作流費用」兩種路線管理。 ## 決策 1. 長期目標改為 GitHub primary:GitHub 作為 AWOOOI 的雲端主 repo、PR、Code Review、Codex / Codex Security 接力入口。 2. Gitea 降級為本地 mirror / fallback / 離線保險,不再長期承擔唯一主控面。 3. Code Review 後的 coding 工作可以串接 Codex,但第一階段採半自動、人工批准,不直接自動合併或部署。 4. Claude Code 不作為推版主控;可保留為開發輔助或審查席位,但不得讓它觸發高頻 GitHub-hosted workflow。 5. Codex 若透過 API 深度整合,需在實作前另外確認費用、token 上限、資料外送與權限邊界。 6. NemoTron 值得作為資安深度分析與工具調用候選升級,但不取代 OpenClaw 主控。 7. 所有目前只存在於 Gitea 的專案、分支、tag、release、workflow 版本與部署相關 commit,都必須完整盤點並轉移或同步到 GitHub;完成前不得切換主控面。 ## 目標流程 ```text GitHub push / PR -> GitHub Code Review / Codex Security / deterministic review -> deterministic review report -> coding_task envelope -> OpenClaw 分派與風險分級 -> Codex 產生修補分支或 patch -> 測試與 diff 證據 -> ElephantAlpha / vuln-verifier 複核 -> 人工批准 -> GitHub merge -> self-hosted runner / 本地 deployment plane -> Harbor / K8s / Prometheus 驗證 -> Gitea mirror 同步 -> LOGBOOK / AI Governance Event / Memory 摘要 ``` 第一階段只允許 `suggest-only` 與 `patch-only`,不允許自動 merge、force push、production deploy、secret rotation、RBAC/NetworkPolicy/firewall 修改。 ## Code Review 到 Coding Task 的資料契約 建議新增 `coding_task` envelope,承接目前 `.gitea/workflows/code-review.yaml` 與 `scripts/ci_code_review.py` 的 review report。 ```json { "schema_version": "coding_task_v1", "source": "github_code_review", "repo": "awoooi", "branch": "main", "base_sha": "string", "head_sha": "string", "risk": "LOW|MEDIUM|HIGH|CRITICAL", "summary": "繁體中文摘要", "findings": [ { "id": "string", "severity": "LOW|MEDIUM|HIGH|CRITICAL", "file": "string", "reason": "繁體中文原因", "recommended_action": "繁體中文建議" } ], "allowed_actions": [ "create_patch", "add_tests", "open_draft_pr" ], "blocked_actions": [ "auto_merge", "production_deploy", "force_push", "secret_rotation", "network_policy_change" ], "required_reviewers": [ "critic", "vuln-verifier" ] } ``` ## Codex 串接策略 ### 第一階段:Codex 半自動接力 適用情境: - Code Review 發現格式、測試、低中風險程式問題。 - 需要補測試、修小 bug、整理型別或錯誤處理。 - 不涉及 production secret、K8s 權限、資料庫破壞性 migration。 建議做法: 1. GitHub / Gitea Code Review 產生 `coding_task_v1`。 2. 由 OpenClaw 或人工把 task 交給 Codex CLI / Codex app。 3. Codex 在隔離 worktree 產生 patch。 4. 本機或 Gitea runner 跑測試。 5. 人工確認後再進 GitHub merge,並由 self-hosted runner / 本地 deployment plane 接續驗證。 優點:最快落地,費用與權限較容易控管。 限制:仍需要人工觸發或人工接力,不是全自動。 ### 第二階段:Codex SDK / API 工作流 適用情境: - 需要把 Code Review finding 自動轉成修補分支。 - 需要整合 AWOOOI approval、AOL、AI governance event、Telegram。 - 需要精準記錄 token、費用、工具呼叫與安全審批。 建議做法: 1. 新增 `code_review_to_coding_task` job。 2. 新增 `codex_patch_runner`,僅允許寫入臨時 worktree。 3. 產生 patch、測試報告與 rollback note。 4. 只建立 draft PR 或 Gitea branch,不自動合併。 5. `HIGH/CRITICAL` 一律需要 `vuln-verifier` 與人工批准。 優點:可追蹤、可治理、可接進 AWOOOI 飛輪。 限制:可能產生額外 API token 費用;需先設 budget、rate limit、資料遮罩與權限範圍。 ## GitHub / Gitea 長期優化原則 ### GitHub 長期主控用途 - 主 repo 與分支保護。 - PR、Code Review、Codex / Codex Security 接力入口。 - GitHub Issues / Pull Requests 作為可被 Codex cloud 與第三方工具穩定消費的協作面。 - 低頻、短時、非部署型 workflow。 - self-hosted runner 入口,讓 workflow 控制面在 GitHub,但實際執行可回到本地或專用 runner。 ### GitHub 避免用途 - 私有 repo 高頻 `ubuntu-latest` workflow。 - push 到 main 後自動跑完整 CI/CD。 - 長時間 LLM / Claude Code / e2e workflow。 - artifact/cache 大量保存。 - 與 Gitea 同時觸發部署,造成雙主控。 ### Gitea 長期保留用途 - 本地 mirror,保留 GitHub 不可用時的離線保險。 - 內網備援與災難復原。 - 必要時保留本地只讀查閱與 emergency branch fallback。 - 轉移完成前,暫時保留現有 Gitea CI/CD,避免一次切換造成 release 中斷。 ## Gitea 全量轉移到 GitHub 清單 這是長期切換的前置工作,必須納入本次資安網工作項目,並以「完整性」作為驗收標準。 | 範圍 | 轉移要求 | 驗收證據 | |------|----------|----------| | Repositories | 所有 Gitea repositories 都要在 GitHub 建立對應 repo 或明確標記封存 | repo 對照表、GitHub URL、owner | | Branches | 所有仍有用途的 branches 完整同步 | branch count diff、最新 commit SHA 比對 | | Tags | release tag、deploy tag、rollback tag 完整同步 | tag count diff、tag SHA 比對 | | Commit history | 不得只複製 main snapshot;需要完整 Git history | `git fsck`、遠端 SHA 比對 | | Releases / artifacts | 若 Gitea release 有檔案或說明,需要搬遷或標記替代來源 | release inventory | | Issues / PR | 若仍有未結事項,需要匯出或轉成 GitHub issue | open item mapping | | Secrets | 不直接搬 secret value;只建立 secret inventory 與 GitHub Actions secret 名稱 | secret 名稱清單、owner、rotation plan | | Workflows | `.gitea/workflows` 需盤點並決定改寫、停用或保留本地 fallback | workflow migration matrix | | Webhooks | Gitea webhook 轉 GitHub webhook 或 AwoooP event adapter | webhook endpoint mapping | | Deploy markers | deploy-marker commits 與 GitOps revision 要能在 GitHub 追溯 | GitHub commit / tag trace | | Permissions | GitHub teams、branch protection、required checks、CODEOWNERS | permission review 記錄 | 轉移過程中,Gitea 不應被直接刪除或停用;至少保留一段並行 mirror 期,直到 GitHub primary、self-hosted runner、Harbor/K8s deploy、rollback 都被驗證。 此遷移屬於 supply chain security,必須 mirror 到 AwoooP governance。AwoooP 初期只接收 `source_control_migration_event_v1` 作為 evidence,不直接觸發主控切換或部署。 ## 建議遷移階段 | 階段 | 目標 | 狀態 | |------|------|------| | Phase G0 | 盤點所有 Gitea repos、branches、tags、workflows、webhooks、secrets 名稱 | 未開始 | | Phase G1 | 建立 GitHub repo / team / branch protection / CODEOWNERS | 未開始 | | Phase G2 | 全量 mirror Git history、branches、tags,不搬 secret value | 未開始 | | Phase G3 | 將 Code Review / Codex 接力接到 GitHub PR,但 deploy 仍走本地 runner | 未開始 | | Phase G4 | self-hosted runner 與本地 deployment plane 驗證 Harbor/K8s/Prometheus 全鏈路 | 未開始 | | Phase G5 | Gitea 改為 mirror / fallback,主開發入口切到 GitHub | 未開始 | | Phase G6 | 30 天觀察與 rollback drill 後,再移除多餘 Gitea 主控 workflow | 未開始 | ## AI Agent 分工 | 角色 | 建議定位 | |------|----------| | OpenClaw | 主控與分派,負責任務路由、權限邊界、approval gate | | Codex | coding worker,負責修補、測試、refactor、資安 patch 草稿 | | Codex Security | 程式碼弱點 identification / validation / remediation 候選 | | NemoTron | 資安深度分析、工具調用、finding triage、風險摘要 | | Hermes | 知識沉澱、SOP、LOGBOOK、長期脈絡 | | ElephantAlpha | 反駁、誤判挑戰、修補風險審查 | | vuln-verifier | secrets、RBAC、NetworkPolicy、K8s、資安邊界複核 | | migration-engineer | Gitea、Webhook、CI/CD、GitOps、回滾路徑 | | critic | 架構審查、規範稽核、回歸風險 | 本專案不建議由單一 Agent 全包。建議採「OpenClaw 主控 + Codex coding + NemoTron 資安分析 + ElephantAlpha 挑戰 + Hermes 記錄」。 ## NemoTron 更新評估 2026-05-12 官方來源校準後,NVIDIA Nemotron / NeMo 的方向確實值得列入 AWOOOI 資安網候選: - NVIDIA 已推出 Nemotron 3 family,主打 Nano / Super / Ultra 尺寸與 agentic AI 應用效率。 - Nemotron 3 Super 是面向 agentic AI 的 MoE / hybrid Mamba-Transformer 模型,官方定位在多步推理與 agent workflow。 - NVIDIA NeMo 產品線已把 agent toolkit、資料治理、模型最佳化與監控納入 enterprise agent 建置方向。 官方來源:[NVIDIA Nemotron 3 family](https://nvidianews.nvidia.com/news/nvidia-debuts-nemotron-3-family-of-open-models)、[Nemotron 3 Super](https://blogs.nvidia.com/blog/nemotron-3-super-agentic-ai/)、[NVIDIA NeMo](https://www.nvidia.com/en-us/ai-data-science/products/nemo/)。 但更新策略應為: 1. 先做官方模型清單與授權確認。 2. 新增候選模型設定,不直接改 production 預設。 3. 對歷史 incident / code review / security finding 做 shadow benchmark。 4. 比較 tool call schema 正確率、誤判率、延遲、費用、繁中品質、secret redaction。 5. 只在 `suggest-only` 風險分析席位 canary。 6. 7-14 天指標穩定後再決定是否升級預設模型。 ## 風險與防護 | 風險 | 防護 | |------|------| | Codex 自動修出不安全 patch | 第一階段只允許 patch-only,必須人工批准 | | GitHub 免費額度再次耗盡 | GitHub workflows 避免私有 repo 高頻 GitHub-hosted runner;長任務改 self-hosted | | Gitea / GitHub 雙主控部署 | 切換前明確指定唯一 deploy controller;GitHub primary 期由 self-hosted runner / 本地 deployment plane 觸發,Gitea 只 mirror | | Gitea 專案版本漏轉 | 先做 repo/branch/tag/release/workflow/webhook inventory;SHA 比對通過前不切主控 | | 本地 deployment plane 仍會因重開中斷 | GitHub 只解決控制面可用性;Harbor/K8s/DB/內網 runner 必須另有 cold-start gate | | LLM 洩漏 secrets | review report 不輸出原始敏感行;送模型前做 redaction | | Agent 權限過大 | coding task 明列 allowed/blocked actions | | API 成本失控 | API 化前先設 budget、rate limit、usage metrics、AOL | | 高風險修補被自動合併 | `HIGH/CRITICAL` 強制 `vuln-verifier` + 人工批准 | ## 第一波實作清單 尚未開始實作。未來若統帥批准,建議順序如下: 1. 文件與契約:新增 `coding_task_v1` schema。 2. Gitea/GitHub 版本盤點:列出所有 Gitea repos、branches、tags、workflows、webhooks、secrets 名稱與 GitHub 對應目標。 3. Gitea Code Review:把 `scripts/ci_code_review.py` 報告轉成 `coding_task_v1`。 4. 儲存層:將 coding task 寫入既有 AI governance / AOL / artifact 位置。 5. Codex 半自動:產出可交給 Codex CLI / app 的 task prompt。 6. 權限閘門:`HIGH/CRITICAL` 必須人工批准,不得自動修補。 7. 測試證據:Codex patch 必須附測試指令、結果、diff summary。 8. Draft branch:只建立修補分支或 draft PR,不自動 merge。 9. 指標:記錄 task 數、成功率、重試率、token/credit、平均修補時間。 10. GitHub primary ADR:新增或修訂 ADR,明確取代 ADR-039 的長期方向與 rollback plan。 ## 不在第一波做的事 - 不直接串 production deploy。 - 不自動合併 Codex patch。 - 不啟用 Codex API 自動長任務。 - 不讓 Claude Code 觸發 GitHub-hosted 高頻 workflow。 - 不自動修改 secrets、RBAC、NetworkPolicy、firewall、資料庫破壞性 migration。 - 不在完成 Gitea 全量版本轉移與 self-hosted runner 驗證前,把 GitHub 切成唯一主控。 ## 參考來源 - [ADR-039: GitHub → Gitea CI/CD 遷移](/Users/ogt/awoooi/docs/adr/ADR-039-gitea-cicd-migration.md) - [12-Agent 新遊戲規則](/Users/ogt/awoooi/docs/12-agent-game-rules.md) - [Kali 資訊安全網藍圖](/Users/ogt/awoooi/docs/security/KALI-SECURITY-MESH-BLUEPRINT.md) - [GitHub Actions billing](https://docs.github.com/en/billing/managing-billing-for-your-products/about-billing-for-github-actions) - [OpenAI Codex cloud](https://platform.openai.com/docs/codex/overview) - [Using Codex with your ChatGPT plan](https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan%252525252525252525252525252525252525252525252525252525252528.pdf) - [OpenAI API Pricing](https://openai.com/api/pricing/) - [OpenAI Code generation / Codex models](https://platform.openai.com/docs/guides/code-generation) - [NVIDIA Nemotron 3 family](https://nvidianews.nvidia.com/news/nvidia-debuts-nemotron-3-family-of-open-models) - [NVIDIA Nemotron 3 Super](https://blogs.nvidia.com/blog/nemotron-3-super-agentic-ai/) - [NVIDIA NeMo](https://www.nvidia.com/en-us/ai-data-science/products/nemo/)