Stack

git.yihua.app:AI Lab 內部 AI Agents 程式碼管控

比較 GitHub、GitLab 與 Forgejo,並說明我為什麼以 Forgejo 建立 git.yihua.app,管理 AI Lab 內部 Agents 的程式碼與變更流程。

包含工具
github、 gitlab、 forgejo
最後審閱
2026/7/15

我的應用情境

git.yihua.app 是 AI Lab 內部使用的 Git 服務,主要讓 AI Agents 有一個受控的程式碼協作與版本管理入口。

我的需求不是單純找一個地方放 Git repository,而是要回答:

  • 哪一個 Agent 建立了這次 commit 或 Pull Request?
  • Agent 可以讀寫哪些 repository,權限能否單獨撤銷?
  • 變更是否先經過測試、review 與 branch protection?
  • 失敗實驗、issue、討論與決策是否能留在 repository context 中?
  • 內部程式碼與 credential 是否能留在自己的基礎設施?
  • 哪些成果可以安全地發布或同步到外部 GitHub?

因此我選擇 Forgejo 建立 git.yihua.app。它不是因為功能最多,而是對目前 AI Lab 而言,提供了足夠的 Git governance,同時保留自架控制與較小的維運範圍。

GitHub、GitLab、Forgejo 比較

面向GitHubGitLabForgejo
核心定位大型雲端開發平台與開源協作生態一體化 DevSecOps platform自主託管、精簡的 software forge
主要部署模式GitHub.com SaaS;另有 Enterprise ServerGitLab.com 或 Self-ManagedSelf-hosted
公開社群與曝光最強有公開社群,但規模較小以自架與 federation 社群為主
Pull / Merge 流程Pull RequestMerge RequestPull Request
CI/CDGitHub ActionsGitLab CI/CDForgejo Actions 或外部 CI
功能整合深度Apps、Actions 與 Marketplace 生態強CI/CD、registry、security 整合最完整核心 Git collaboration 足夠且較精簡
自架成本Enterprise 產品與 appliance 維運能力完整,但基礎資源與元件較多適合小型自架環境
Agent 工具相容性多數工具優先支援API 與自動化成熟Git/API 可用,但部分工具需自行設定
資料控制GitHub.com 由外部 SaaS 託管Self-Managed 可自行控制預設就是自行控制
我的用途公開成果與外部協作未來需要完整 DevSecOps 時再評估AI Lab 內部程式碼 control plane

為什麼 AI Lab 選 Forgejo

1. 內部程式碼先留在內部

AI Agents 會產生大量中間版本、實驗 branch、log 與尚未審查的內容。這些資料不必預設進入外部 SaaS。Forgejo 讓 repository metadata、token 與變更紀錄先留在自己的網路與備份範圍。

2. 每個 Agent 都能有可控身分

Agent 不應共用一把全域 SSH key 或 administrator token。Forgejo 可以讓不同 automation identity 使用不同的 repository access、token scope 與 team permission;出現問題時能撤銷單一 Agent,而不是全面更換所有憑證。

3. 用 Git workflow 約束 Agent

AI Agent 可以產生程式碼,但不應因此直接取得 production merge 權限。工作 branch、Pull Request、required check、review 與 protected branch 把「能寫程式碼」和「能決定進入主要 branch」分開。

4. 維運範圍符合目前規模

GitLab 能提供更完整的 DevSecOps platform,但目前 AI Lab 首先需要的是可靠 Git、permission、Pull Request、issue、webhook 與 automation。Forgejo 的較小系統範圍更符合這個階段。

建議的 Agent 變更流程

Task / Issue
    │
    ▼
Agent 建立工作 branch
    │
    ▼
Commit + Push 到 git.yihua.app
    │
    ▼
Pull Request
    ├── tests / lint / security checks
    ├── diff 與 Agent 身分紀錄
    └── human 或受控 reviewer
    │
    ▼
Merge 到 protected main
    │
    ├── 留在 AI Lab 內部
    └── 經發布檢查後 mirror / push 到 GitHub

這個流程的重點不是要求每個小改動都變得官僚,而是讓高速度的 Agent 產出仍然可追蹤、可回滾、可審查。

git.yihua.app 不應做的事

  • 不讓所有 Agents 共用 root 或 instance administrator 權限。
  • 不讓一般 coding Agent 直接管理使用者、runner 或備份。
  • 不因為是內網就關閉 branch protection、token rotation 或 secret scanning。
  • 不在 Forgejo server 主機直接執行來自任意 branch 的不受信任 CI job。
  • 不把「已 push」視為「已 review」或「可以公開發布」。

三套服務如何並存

這不是永久只選一套 Git service:

  • git.yihua.app / Forgejo:AI Lab 內部工作的 source of truth。
  • GitHub:公開專案、外部 contribution、社群可見性與第三方整合。
  • GitLab:若未來需要更完整的自架 DevSecOps、security 與大規模 pipeline governance,再針對需求評估。

目前選 Forgejo,是選擇最適合內部 AI Agent code governance 的邊界,而不是宣稱它在所有情境都勝過 GitHub 或 GitLab。

驗證清單

  • 每個 Agent 都有獨立且可撤銷的 token / SSH key
  • Agent 無法直接推送 protected main
  • Pull Request 能觸發實際 runner check
  • Runner 無法取得 Forgejo server 或其他 repository 的多餘憑證
  • Commit、Pull Request、merge 與 release 能追溯到明確身分
  • Repository、database、LFS、package、設定與 secrets 有定期備份及還原演練
  • 對 GitHub 的 mirror / publish credential 與內部 coding credential 分離

完成這些控制後,git.yihua.app 才不只是「能 push 的 Git server」,而是 AI Lab 真正可用的內部程式碼管控平台。