Skip to content

設計參考 ​

Bridge 要求設計遵循開源生態的既有做法,不符合者視為設計失敗。每項設計都須能指出參考對象,並以原始碼或官方文件為依據;僅閱讀 README 或參考專案星號數並不足夠。本頁整理各項設計的參考來源與採用方式。

VoidZero 生態的參考做法 ​

Bridge 以 Vue 生態為技術方向,並以 VoidZero 旗下的 Vite、Vitest、Rolldown 與 Oxc 作為目前及後續設計的參考。

參考做法來源Bridge 的採用方式
CLI 結構:每個指令負責一項工作,以 --help 作為指令文件來源,由 <cmd> --help 列出選項Vite、Vitest 的 CLI16 個指令;指令參考保留 --help 原始輸出;README 的指令段落由腳本依指令表產生,CI 檢查文件是否過期
設定優先順序:旗標高於設定檔,設定檔高於預設值,並記錄各值的來源Vite 的 config 解析由 policy limits 提供預設,再依序套用 priority 表、工單與終端機旗標;卡片列出各值的來源
一個介面、多個 provider 模組Vitest 的 coverage provider以 agentCli/calls.mjs 為共用入口,由 claude.mjs 與 codex.mjs 分別處理各自的旗標與輸出
連接埠被占用時,依序尋找下一個可用埠Vite dev server本機頁面從 8080、資料庫從 5432 開始尋找可用埠
使用 VitePress,將三語文件存放於儲存庫的 docs/Vite、Vitest、VueUse本站
後續規劃:驗證加入 oxlint,以 Rust 處理高負載運算,保留 npm 上的 JavaScript 入口Oxc、Rolldown 的 napi-rs 做法規劃方向,見架構與里程碑

其他對照 ​

各項設計決定的參考來源彙整如下。

設計項目參考來源Bridge 的採用方式
以 Markdown 撰寫工單,將 frontmatter 解析為 YAMLAstro content collectionsfrontmatter 由第一行 --- 延伸至下一個 ---;欄位皆可省略,未知欄位會被拒絕
工單必填項Jira 的 issue 必填欄位工作內容與驗收清單必填,標題選填;缺陷工單另提供環境、重現步驟、實際結果、預期結果與發生頻率
儲存計畫後依該版本套用,不採用後續設定修改Terraform plan -out → applystart 的授權卡片與人工確認;upgrade --plan-out → --plan --approve <sha>
修改工單後重新執行,停止被取代的舊執行GitHub Actions concurrency + cancel-in-progress被取代的版本採用與 stop 相同的停止流程;新執行建立時補上 superseded_by
各次執行具有獨立的時間上限GitHub Actions job timeout-minutesbudget.run_timeout,逾時後以 timed_out 結束
伺服器指派序號,客戶端依目前位置取得增量資料Temporal sticky cache事件檔作為快取:落後時重建,超前時拒絕讀取,內容分歧時以資料庫為準
斷線後補寫資料,核對不符便拒絕Kafka idempotent producer本機暫編「最後已知序號+1」,補寫時資料庫核對
執行端不另存權威狀態GitHub Actions、Prefect、Inngest以資料庫為唯一權威來源
每張工單使用獨立的結果資料夾Playwright test-results/<test>/.review-bridge/results/<工單>/,每次執行一個檔案,永不覆寫
統一管理服務的停止與啟動docker compose down/up、brew servicesnpx review-bridge down/up:up 先起資料庫再起頁面,down 反過來;有工作在跑時 down 拒絕
孤兒資料庫程序的處理zonky embedded-postgres 的 cleanOldDataDirectories先 pg_ctl stop -m fast 再重試;僅處理屬於該資料目錄的程序
保留無法辨識的檔案git checkout 對未追蹤檔的規則upgrade 僅在目的地存在同名但內容不同的檔案時拒絕遷移,並列出檔名
寫入 .vscode/ 前詢問使用者npm create vue@latestinit 的最後一項確認
修改 tasks.json 時保留其他內容與註解VS Code 自己的 jsonc-parsernpx review-bridge vscode、uninstall
使用者層級的 agent 入口Claude Code ~/.claude/commands/、Codex ~/.agents/skills/(ext/skills/src/host_roots.rs)/review-bridge、$review-bridge
工作階段的唯讀與隔離選項Claude Code --permission-mode plan/--tools/--strict-mcp-config;Codex exec --sandbox read-only、--disable apps --disable plugins、mcp_servers.<name>.enabledreviewer 唯讀檢查與連接器隔離
執行紀錄存放於作業系統標準目錄,並定期輪替env-paths 的 data/log 慣例%LOCALAPPDATA%\ReviewBridge、~/Library/Logs/ReviewBridge、$XDG_STATE_HOME/review-bridge
資料庫備份PostgreSQL 檔案層級備份npx review-bridge backup:停止資料庫,複製完整資料夾,再重新啟動
工具在使用者專案裡的資料夾自帶只有 * 的 .gitignorepytest 的 .pytest_cache、ruff 的 .ruff_cache、uv 的 .venv.review-bridge/.gitignore;不碰專案自己的 .gitignore
依啟動它的套件管理器印出下一步指令create-vite 讀 npm_config_user_agent(pkgFromUserAgent)npx、pnpm dlx、yarn dlx、bun x、deno run -A npm:
文件的身分寫在 frontmatter 的 idDocusaurus、Astro 的 frontmatter id;Jira 把單號印在單上第一次按「好」時把工單 id 寫進 frontmatter;改名、搬移仍是同一張
判斷兩個路徑是不是同一個檔find -samefile、coreutils test -ef(同一個裝置與 inode)硬連結算同一張工單;檔案系統不給檔案編號時拒絕
把清單切成項目markdown-it 的清單規則(VitePress 使用)驗收清單的每一項是一條條件;「一、」「(1)」不算清單
資料庫狀態的結束碼pg_ctl status 的 exit code 4status 讀不到資料庫資料夾時以 4 結束

曾評估但未採用的做法包括:在使用者 rc 檔追加標記區塊(如 conda/pnpm/nvm),以及使用 Node 內建的 SQLite。Bridge 改採獨立檔案與 PostgreSQL。

如何查核參考依據 ​

  • 開源專案須查閱原始碼,記錄檔案與行號;若僅有文件可供參考,則記錄頁面與查閱日期。
  • 以實際程式行為為準,不僅依賴 README 的描述。
  • 找不到既有做法可供參考的設計,不予採用,並列入設計邊界。