Bernstein:一個確定性的 Python 協調器,在平行的 git worktree 中執行 44 個 CLI 編碼代理,並具備 HMAC 鏈式稽核日誌
— 次瀏覽
Bernstein 是一個 Apache-2.0 授權的 Python 排程器,它分解目標、將 CLI 編碼代理(Claude Code、Codex、Gemini CLI,外加 40 多個)生成至隔離的 git worktree 中、針對測試/lint/型別驗證每個 diff,並只合併通過者——全部由純 Python 協調,而非由 LLM,並附帶 HMAC-SHA256 稽核軌跡。
pipx install bernstein 它是什麼
Bernstein 是一個開源(Apache-2.0)的 Python 工具,它協調其他的 CLI 編碼代理,而非自己當一個代理。你給它一個目標;一次 LLM 呼叫將該目標分解成帶有專屬檔案與完成訊號的任務,而從那之後排程器就是純確定性的 Python。它生成代理——Claude Code、OpenAI Codex、GitHub Copilot CLI、Google Gemini CLI、Cursor、Aider、Continue 及其他(截至 v2.7.0 共 44 個轉接器,外加一個通用的 --prompt 包裝器)——各自進入自己的 git worktree,並行執行它們,然後一個「janitor」階段在任何成果合併到 main 之前檢查具體訊號(測試通過、lint 乾淨、型別正確)。失敗的任務會重試或被導向另一個模型。
讓它在擁擠的代理框架領域中與眾不同的賣點是稽核級的確定性:排程決策耗費零 LLM token,每一步都可重播,且每個決策都被寫入位於 .sdd/audit/YYYY-MM-DD.jsonl 的 HMAC-SHA256 稽核日誌。README 著重於合規性、簽署的代理卡、逐成品的譜系,以及氣隙/本地部署作為差異化要素。
安裝與執行
pipx install bernstein # also: pip install bernstein (Python >= 3.12)
cd your-project
bernstein init # creates the .sdd/ workspace
bernstein -g "Add rate limiting" # agents spawn, work in parallel, verify, exit
bernstein live # optional TUI dashboard to watch progress
文件中一個有代表性的執行摘要:
[manager] decomposed into 4 tasks
[agent-1] claude-sonnet: src/auth/middleware.py (done, 2m 14s)
[agent-2] codex: tests/test_auth.py (done, 1m 58s)
[verify] all gates pass. merging to main.
何時使用它
當你有一個跨越多個檔案、可並行化的變更,你想要在組合中加入不只一個模型/代理,並且你需要一份可驗證的「誰改了什麼」紀錄時(受監管的程式庫、前沿部署/氣隙工程,或只是不希望 LLM 把 token 燒在協調上的成本敏感團隊),就採用 Bernstein。它明確地不適合用來與單一的結對程式設計夥伴聊天,也不適合非編碼的 LLM 工作流程。
| 屬性 | 數值 |
|---|---|
| 最新發行版 | v2.7.0 (2026-05-24) |
| 語言/授權 | Python, Apache-2.0 |
| 作者 | Alex Chernysh (sipyourdrink-ltd) |
| 安裝 | pipx install bernstein |
| 支援的代理 | 44 個 CLI 轉接器 + 通用 —prompt 包裝器 |
注意事項
它是一個包裝器,而非自給自足的代理:底層的代理 CLI 必須已經安裝並在機器上完成驗證,且隔離是建立在 git worktree 之上,因此一個非 git 的專案根本無法執行。設計上沒有 SaaS 選項——它僅限於本地部署。
從業者註記:槓桿最高的旋鈕是任務分解,而非代理選擇。因為 Bernstein 確定性地將檔案指派給任務,並把每個任務隔離在一個 worktree 中,一個被措辭成讓各任務擁有不相交檔案的目標會乾淨且並行地合併;一個迫使兩個代理編輯同一模組的目標將會序列化,或產生任何稽核日誌都無法撫平的合併摩擦。
被考慮不足的角度:大多數「多代理」行銷暗示有一個 LLM 在針對協調進行推理,這會增加成本、延遲與不可重現性。Bernstein 的低調賭注恰恰相反——協調應該是無趣的、確定性的程式碼,而模型唯一的判斷呼叫是那一次的前置分解。那種框架把「多代理」從一個可靠性負債轉變成一個可稽核的建置步驟,而它是評估任何協調器的一個有用的視角:問問它的排程決策有多少是模型呼叫、有多少是程式碼,因為每一個模型在環的決策都是你的執行可能在兩次運行之間悄悄分歧的一處。