者指南:五層測試體系與 Monorepo 開發(fā)環(huán)境完整上手教程)
【免費下載鏈接】optioWorkflow orchestration for AI agent swarms.項目地址https://gitcode.com/gh_mirrors/opt/optio點擊查看免費下載Optio 是一個自托管的 AI Agent 編排平臺讓 Claude Code、Codex、Copilot 等編碼智能體像 CI/CD 流水線一樣在你的 Kubernetes 集群上運行。本文面向首次參與開發(fā)的貢獻者帶你快速搭好 Monorepo 開發(fā)環(huán)境并掌握它引以為傲的五層測試體系——從毫秒級的單元測試到真實 LLM 運行的冒煙測試層層遞進、互不干擾。 Monorepo 結(jié)構(gòu)一覽先看懂代碼怎么組織Optio 采用Turborepo pnpm 10管理的 Monorepo所有子包通過 pnpm-workspace.yaml 聲明分為apps/*應(yīng)用和packages/*共享庫兩大區(qū)目錄職責(zé)技術(shù)棧apps/apiFastify API 服務(wù)器 14 個 BullMQ 后臺 workerFastify 5、Drizzle ORM、Redisapps/webNext.js 15 Web UITailwind CSS v4、Zustand、Playwrightapps/ios原生 iOS 客戶端SwiftUIapps/android原生 Android 客戶端Kotlin Jetpack Composeapps/clioptio命令行工具含 Optio Local 守護進程TypeScriptpackages/shared類型定義、狀態(tài)機、工作規(guī)范等共享代碼被所有應(yīng)用依賴packages/container-runtime容器運行時抽象K8s / Docker /fake測試的關(guān)鍵拼圖packages/agent-adapters六種 Agent 運行時的協(xié)議適配—理解這個布局的好處是當(dāng)你改動某個包時能立刻知道該跑哪一層測試。 開發(fā)環(huán)境搭建三步跑起全套前置依賴安裝清單按 CONTRIBUTING.md 的要求你需要準備Node.js 22pnpm 10npm install -g pnpmDocker Desktop并啟用 Kubernetes一鍵部署本地集群git clone https://gitcode.com/gh_mirrors/opt/optio cd optio pnpm install ./scripts/setup-local.shsetup-local.sh會構(gòu)建全部鏡像并通過 Helm 部署到本地 K8s 集群配置文件見 helm/optio/values.local.yaml。完成后打開http://localhost:30310即可完成首次設(shè)置API 監(jiān)聽在http://localhost:30400。之后日常開發(fā)只需熱重載模式pnpm dev # 啟動 API Web 雙服務(wù) pnpm turbo typecheck # 對全部 6 個包做類型檢查 pnpm turbo test # 跑所有單元測試Vitest全 mock、無基礎(chǔ)設(shè)施 五層測試體系Optio 的質(zhì)量護城河這是理解 Optio 工程文化的核心。官方規(guī)則寫得很直白一個改動在覆蓋它的測試層全部通過之前就不算完成。前四層是確定性的——無集群、無 LLM 調(diào)用、零成本全部跑在 CI 里第五層只在本地執(zhí)行。層級命令覆蓋內(nèi)容何時運行1. 單元測試pnpm turbo test純邏輯、mock 掉服務(wù)的 API 路由任何改動必跑2. 集成測試pnpm --filter optio/api test:integration服務(wù)層 真實 Postgres Redis狀態(tài)機、協(xié)調(diào)器 CAS、觸發(fā)器、密鑰加密改了 DB schema / 服務(wù) / worker3. 流水線 e2epnpm --filter optio/api test:e2e真實 API 服務(wù)器全部 14 個 worker經(jīng) HTTP 驅(qū)動容器運行時換成 fake改了 worker / 路由 / 啟動流程4. Web e2epnpm --filter optio/web test:e2ePlaywright 驅(qū)動瀏覽器遍歷所有頂層頁面改了 Web UI5. Live 冒煙bash scripts/smoke-e2e.sh真實 K8s Pod 真實 Agent 認證 一次真實 LLM 運行約 $0.01改了 Pod 生命周期 / 鏡像 / Helm僅本地絕不進 CI下面逐層拆解每層的機制與文件位置。第一層單元測試——全 mock、毫秒級反饋單元測試文件命名為*.test.ts散布在packages/shared和apps/api/src各處。Vitest 配置見 apps/api/vitest.config.ts注意它顯式排除了*.int.test.ts和e2e/**防止有人在單測層意外拉起真實基礎(chǔ)設(shè)施。CI 環(huán)境下會自動開啟 v8 覆蓋率并強制執(zhí)行閾值行 50%、分支 65%。pnpm turbo test第二層集成測試——真實數(shù)據(jù)庫隔離到文件粒度集成測試命名*.int.test.ts獨立配置在 apps/api/vitest.integration.config.ts。它的精妙之處在于隔離模型通過 scripts/test-infra.sh 自動拉起一次性容器optio-test-postgres端口 54329和optio-test-redis端口 63790外加一個三節(jié)點 Redis Cluster 供集群模式測試使用每個測試文件都獲得一個從已遷移模板克隆的私有數(shù)據(jù)庫 一個租用的 Redis 邏輯庫——因此并發(fā)運行互不干擾globalSetup還會清掃崩潰殘留pool: forks讓每個文件跑在獨立進程中模塊級單例數(shù)據(jù)庫池、Redis 連接天然綁定到該文件自己的私有庫。典型范例是 apps/api/src/db/harness.int.test.ts行工廠在 apps/api/src/test-utils/integration/fixtures.ts。第三層流水線 e2e——真實服務(wù)器 假 Pod這一層是性價比最高的設(shè)計。e2e/*.e2e.test.ts會完整啟動真實 API 服務(wù)器vitest.e2e.config.ts 將maxWorkers限制為 2避免 4 核 CI 跑機資源饑餓覆蓋 HTTP API → BullMQ → worker → 日志流 → 協(xié)調(diào)器 → 終態(tài)的整條流水線但容器運行時被替換為 fake 實現(xiàn)packages/container-runtime/src/fake.ts。Fake runtime 通過提示詞指令扮演智能體你可以在測試提示詞里寫入[[mock:pr]]—— 輸出 PR URL推進到pr_opened[[mock:fail]]/[[mock:silent]]/[[mock:hang]]/[[mock:sleep:MS]][[mock:cost:X]]—— 模擬費用這讓任務(wù)/Job/持久智能體的完整生命周期測試既免費又確定。29 個 e2e 用例覆蓋啟動遷移、WebSocket 日志流、RBAC、預(yù)算等入口在 apps/api/e2e/。第四層Web e2e——Playwright 驅(qū)動真實 UIpnpm --filter optio/web test:e2e會調(diào)用 apps/web/e2e/launch-stack.ts它先拉起測試 Postgres/Redis 容器、克隆私有數(shù)據(jù)庫再以 hermetic 模式啟動真實 APIAPI 4931 端口、Web 3131 端口避開開發(fā)默認端口同時next dev代理到它并預(yù)置好倉庫、任務(wù)、Job 運行等數(shù)據(jù)讓每個頁面都有非空狀態(tài)可斷言。27 個 Playwright 用例覆蓋終端渲染、工作表單、側(cè)邊欄等全部頂層頁面。首次運行記得cd apps/web npx playwright install chromium第五層Live 冒煙——真實集群 真實 LLMbash scripts/smoke-e2e.sh對已部署的棧做最終驗證scripts/smoke-e2e.shAPI 健康檢查 → Web 頁面可達 → 創(chuàng)建一個一行提示詞的真實 Job → 走完 K8s Pod 流水線 → 等待完成并刪除。真實 LLM 運行只花大約一美分可用--no-llm跳過。改了 Pod 生命周期、鏡像或 Helm 配置后這是提交前的最后關(guān)。 開發(fā)工作流約定提交之前必過四關(guān)項目用Husky lint-staged commitlint把質(zhì)量門禁自動化提交前l(fā)int-staged對暫存的.ts/.tsx跑 ESLint Prettier隨后全局執(zhí)行pnpm format:check和pnpm turbo typecheck見 package.json 的lint-staged字段提交信息強制 Conventional Commitsfeat:/fix:/refactor:等由 commitlint 校驗數(shù)據(jù)庫改動修改 apps/api/src/db/schema.ts 后手寫新遷移 SQLUnix 時間戳前綴用bash scripts/check-migration-prefixes.sh檢查前綴重復(fù)移動端模型生成iOS / Android 的類型文件由pnpm gen:swift/pnpm gen:kotlin從packages/shared生成禁止手改CI 會校驗同步。 產(chǎn)品全貌測試守護的是什么五層測試守護的對象就是這套覆蓋 Web、iOS、Android 的完整工作臺任務(wù)生命周期、觸發(fā)器派發(fā)、日志實時流、持久智能體、本地終端……測試體系與功能矩陣一一對應(yīng)這正是改動什么就跑哪層能夠成立的原因。? 上手檢查清單pnpm install完成./scripts/setup-local.sh部署成功pnpm turbo test全部通過第一層pnpm --filter optio/api test:integration通過第二層Docker 需在運行pnpm --filter optio/api test:e2e通過第三層改 UI 時pnpm --filter optio/web test:e2e通過第四層后端改動后重建鏡像、重部署本地集群并跑bash scripts/smoke-e2e.sh第五層按這個清單走一遍你就已經(jīng)具備了向 Optio 提交高質(zhì)量 PR 的全部能力。贊分享【免費下載鏈接】optioWorkflow orchestration for AI agent swarms.項目地址https://gitcode.com/gh_mirrors/opt/optio點擊查看免費下載相關(guān)推薦AlterSend 開發(fā)者入門從零搭建 monorepo 開發(fā)環(huán)境完整教程AlterSend 開發(fā)者入門從零搭建 monorepo 開發(fā)環(huán)境完整教程 AlterSend 是一個開源的 P2P 文件傳輸應(yīng)用——文件直接在設(shè)備之間點對點Black 貢獻者上手指南開發(fā)環(huán)境搭建、測試體系與風(fēng)格變更規(guī)范Black 貢獻者上手指南開發(fā)環(huán)境搭建、測試體系與風(fēng)格變更規(guī)范 本文基于 Black 倉庫官方貢獻文檔 docs/contributing/the_basic開發(fā)工具格式化代碼質(zhì)量CLILlamaIndex 開發(fā)者貢獻指南基于 uv 的 Monorepo 開發(fā)環(huán)境、測試與 Lint 工具鏈LlamaIndex 開發(fā)者貢獻指南基于 uv 的 Monorepo 開發(fā)環(huán)境、測試與 Lint 工具鏈 本篇指南基于 LlamaIndex 倉庫根目錄的 C人工智能大模型AI 應(yīng)用RAGAI Agent創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考