跳到正文
Hacker News (official RSS)(github.com)·· 3 天前精選AI 評分75

Spool:管理持久化 Claude Code 迴圈的工具

How I manage persistent Claude Code loops: Spool

AI 導讀

Spool 是一款開源工具,讓使用者能在單一控制室管理、啟動與協調 Claude Code 迴圈。

  • 功能:建立持久化迴圈、排程喚醒、可在 Web、Telegram 或 Slack 互動,並支援迴圈間直接通訊。
推薦理由

Spool 讓使用者可在單一介面下管理 Claude Code 迴圈,降低切換成本並提升工作流效率。

正文 · AI 翻譯

Spool

CI status Go version Apache 2.0 license Pre-1.0 status

您的 Claude Code 迴圈,協同工作並保持您參與對話。

Spool 讓您輕鬆建立、管理並與持久的 Claude Code 迴圈對話。給它們工作,讓它們協調,並透過聊天保持參與。

spool-demo.mp4

Spool 讓什麼變得更簡單?

  • 保持工作進行。 在一個地方建立並管理持久迴圈,並提供排程喚醒與可恢復的會話。
  • 保持參與。 在網頁控制室、Telegram 或 Slack 與您的迴圈對話,而不必坐在它們的終端會話中。
  • 協調工作。 讓迴圈直接在 fleet 頻道中溝通,您不必轉發每個問題、結果或交接。

減少在會話之間切換與在迴圈之間傳遞訊息的時間。您有更多時間決定它們應該做什麼,以及審核它們產出的內容。

Spool 尚未 1.0,並由一群 Claude Code 迴圈及其運營者在開源環境中開發。此倉庫問題與 PR 中的四個迴圈都在 Spool 上執行,並構建 Spool。提交由撰寫它們的模型共同署名;每一次變更都經由 CI 門檢的拉取請求並由審核者閱讀,最後由運營者合併。發現問題?CONTRIBUTING.md 說明如何回報以及由誰處理。

快速上手

您需要 Linux、macOS 或 Windows 並安裝 WSL2,以及正在執行的 Docker、git、Go 1.25+、Node 20.19+ 或 22.12+,以及在 Claude 訂閱上安裝 Claude Code(僅用於第 3 步生成令牌)。

  1. 取得 Spool 並編譯。

    git clone https://github.com/enes-alatas/spool && cd spool
    make build image

    這將構建 bin/spool、其內部的控制室,以及迴圈執行的兩個 Docker 映像。

  2. 啟動並登入。 執行 ./bin/spool。首次啟動時,它會為使用者 admin 輸出一次性密碼。開啟 http://127.0.0.1:8080,以 admin 身份使用該密碼登入,並自行設定密碼。錯過密碼?./bin/spool user reset admin 會印出新的密碼。

    控制室會顯示 設定您的 fleet:三張卡片,按下列順序。每張卡片會自行檢查並完成。

  3. Harness。 執行 claude setup-token,然後在卡片上選擇 Add token 並貼上它輸出的內容。您的迴圈將透過此令牌在您的 Claude 計畫中執行。

  4. Loops。 選擇 New loop,並為其命名與設定任務。首次喚醒會建立其工作站,第一次大約需要一兩分鐘;當該喚醒的第一次回合結束時,卡片即完成。

  5. 聊天介面。 選擇 Attach a bot,然後選擇 Attach Telegram 或 Attach Slack。

    • Telegram: 在 Telegram 中傳送 @BotFather /newbot,並貼上它給您的令牌。
    • Slack: 按照對話中的 Create app from manifest,然後貼上應用程式的兩個令牌。docs/SLACK.md 內有步驟說明。

    接著選擇 Get a link code,將程式碼傳送給您的機器人(直接訊息),並在它詢問時回覆 YES。這將把您的帳號連結並使您成為迴圈的擁有者。再次訊息機器人:當迴圈在那裡回覆您時,卡片即完成。

    沒有聊天應用?您可以直接在控制室的迴圈頁面與其對話。當 Harness 與 Loops 卡片完成後,選擇 Skip for now 以結束設定頁面而不使用聊天介面,稍後再於迴圈頁面附加機器人。

其他執行方式

  • 從發行版開始, 當 v0.5.1 之後有發行版時:它包含已編譯的二進位檔和映像檔,因此你不需要 Go、Node 或 make。 OPERATIONS.md 顯示下載、校驗碼和映像抓取。
  • 在伺服器上,作為服務, 具備 TLS 和備份:OPERATIONS.md。
  • 不使用 Docker。 ./bin/spool --runtime bare 以純粹程序方式在你自己的帳號和 claude 登入下執行每個迴圈,uncontained。它不需要 make image 也不需要步驟 3。閱讀 What contains a loop 再決定是否選擇此方案。

工作原理

  • 底層使用純粹 claude CLI。 迴圈是 claude 子程序,透過 stdin/stdout 傳輸 stream-json。你的常規 Claude Code 登入、方案與會話限制仍適用。無需 API 金鑰,也無需 SDK。
  • 直接協調。 迴圈會將明確指定的訊息傳送至車隊頻道或私人對話。@mention 從 Telegram、網頁或其他迴圈訊息產生的迴圈,Spool 會將其交付。最終回覆保持為時間軸中的狀態備註。迴圈間連結受到風暴保護。
  • 喚醒、休眠與節奏。 空閒迴圈不耗費資源:其程序退出,稍後再以完整上下文恢復。迴圈會在其滴答間隔(預設 30 分鐘)喚醒,或在收到任何訊息時立即喚醒,或當它以 [next-wake: 45m] 尾碼提出請求,並受限於你設定的上限。暫停的迴圈會排隊處理郵件。
  • 控制室。 中樞的網頁 UI,預設位於 http://localhost:8080。它會即時顯示每個迴圈的對話(隨 tokens 進行流式顯示),其排程以及每回合和每日的消耗,並可暫停、喚醒或終止迴圈。
  • 方案保護線。 Fleet 頁面顯示你方案的 5 小時和 7 天視窗已使用量,從迴圈自身的資料流讀取,並顯示每個迴圈在每日支出的比例。超過上限(預設為任一視窗的 90%)時,所有迴圈會進入休眠,直到視窗重置:訊息等待,且不會遺失。立即恢復 可提前解除,設定 → 方案保護線 允許設定閾值或關閉。

安全概覽

  • 預設受容器化。 每個迴圈在自己的容器中執行,擁有出口白名單(設定 → 出口),且僅有一個中樞埠口可連線到你的機器,該埠口僅提供迴圈的 MCP 端點,無其他服務。
  • 只有在你要求時才不受容器化。 迴圈以跳過許可權提示的方式執行。若未使用 Docker,Spool 會拒絕啟動,而非在主機上執行;--runtime bare 將每個迴圈作為子程序執行於你自己的帳號,使用你的網路與檔案,並標示為 uncontained。
  • 已登入。 控制室會要求使用者名稱與密碼,指令碼則使用運營者令牌(spool token)。僅繫結 localhost 並不構成邊界。
  • 機密資料已封存。 機器人令牌、連線秘密與設定令牌均封存於資料目錄下的 hub.key,並請將其備份於 spool.db 之外。

docs/CONTAINMENT.md 包含完整說明,包括容器化不涵蓋的範圍。SECURITY.md 說明如何回報漏洞。

聊天介面

迴圈僅以控制室為起點。可附加機器人以從 Telegram 或 Slack 連線:每個迴圈都是自己的機器人或應用程式,快速入門的第 5 步會附加第一個。docs/TELEGRAM.md 涵蓋 BotFather、群組與回應;docs/SLACK.md 涵蓋應用程式清單、兩個令牌、回應與投票。

誰能與你的迴圈對話

Spool 會保留一個 sender allowlist,只有在清單上的人才能到達你的 loops。任何其他訊息傳送給你的 bot 都會被忽略:他們的訊息永遠不會到達 loop,無法繫結群組,且 /spool_status 也不會回覆。 在步驟 5 將你的帳號連結進去即可加入清單。若要讓別人進來,將他們加為使用者(spool user add,或 Settings → Users and access)並讓他們在 Settings → Link Telegram 或 Settings → Link Slack 下連結自己的帳號。Settings → Users and access 會列出每位使用者的連結,並可在每個 bot 上封鎖使用者,以及封鎖任何舊配對碼允許的匿名使用者;被封鎖的傳送者完全不會收到回覆。Slack 應用程式已經是安裝所在工作區的私有應用,允許清單也同樣適用。Loop-to-loop 流量為內部流量,未受影響。

旗標

旗標 預設 設定內容
--listen 127.0.0.1:8080 控制室及其 API 所在位置
--data-dir ~/.spool 資料庫、hub.key、loop homes 以及 worktrees
--runtime auto docker 於 daemon 可達時執行,否則拒絕啟動;bare 以未受限制方式執行 loops
--trusted-host 無 hub 後端 TLS 代理所達到的名稱;OPERATIONS.md 內含 systemd 單元與 Caddy 配方
--mcp-listen 由 hub 選擇 loops 的單一埠;docs/CONTAINMENT.md 說明其選取方式

spool --help 列出所有旗標。spool token 再次列印 operator token

開發

make server         # Go binary only (uses last-built UI)
make dev            # run backend on :8080
make ui-dev         # vite dev server with /api proxy
make test           # tier 1: unit + architecture tests
make itest          # tier 2: real binary vs fakeclaude (protocol fake), ~10min
                    #         (~7min without a docker daemon; two files skip)
make image          # build the spool-workstation and spool-egress images locally
make lint           # gofmt + vet (as Linux and as macOS) + golangci-lint
make e2e-m1         # tier 3: real claude sessions (spends plan tokens)

測試分為三層(參見 docs/QUALITY.md):單元測試與 fakeclaude 支援的整合測試會在 CI 中為每個 PR 做門檻; real-claude e2e 套件(scripts/e2e/)在本機依照里程碑執行:跨流程死亡與 orchestrator 重新啟動的 session 恢復(m1)、tick 排程與 trailer clamping(m2)、mention relay + storm guard(m4)、Telegram(m5)、worktree 隔離(m6)。

專案檔案

執行 hub:

  • docs/OPERATIONS.md:在伺服器上安裝、備份、還原與升級
  • docs/CONTAINMENT.md:loop 所包含的內容,以及 hub 自身的機密
  • docs/TELEGRAM.md、docs/SLACK.md:聊天介面完整呈現
  • SECURITY.md:支援專案、如何私下報告漏洞,以及哪些設計屬性已知而非錯誤

關於 Spool 的工作:

  • CONTRIBUTING.md:如何報告問題以及由誰回覆
  • docs/VISION.md:產品願景與 L0–L7 里程碑階梯
  • docs/ARCHITECTURE.md:形態、接縫、通用語言
  • docs/CONVENTIONS.md:工作流程、風格、測試層級
  • docs/QUALITY.md:基準與 CI 門檻
  • docs/THREAT-MODEL.md:每個邊界所包含與不包含的內容
  • docs/adr/:決策紀錄
  • AGENTS.md:針對在此 repo 上工作的 AI 代理的導向(CLAUDE.md 為其符號連結)