恒常的な Claude Code ループを管理する方法:Spool

2026/10/12 6:50

恒常的な Claude Code ループを管理する方法:Spool

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Spool は、チームが安価で管理可能な永続的な AI コーディングセッションを可能にするために設計された革新的な pre-1.0 オープンソースツールです。これは、Claude Code ループの作成、管理、および調整を支援し、スケジュールされた目覚め機能や再開可能なセッションを実現します。これにより、常に API キーや複雑な SDK を必要とすることなく動作します。代わりに、単純な

claude
コマンドラインプロセスを実行し、標準的な stdin/stdout 上の軽量 stream-json プロトコルを使用して通信を行います。

アーキテクチャは、ウェブダッシュボード、Telegram、Slack ボット("Chat surface" カードを介して接続)などのユーザーフレンドリーなインターフェースを通じて開発者が制御を維持できるようにすると同時に、fleet チャンネルを介して複数のループの調整を可能にします。セキュリティは、エグレス許可リストを有する分離されたコンテナ、

hub.key
を介して管理される sealed secrets、パスワード認証、およびタスクの継続時間を制限して使用量の暴走を防ぐ厳格なガードレールによって確保されます。具体的には、plan ガードレールのデフォルトでは、5 時間または 7 日のウィンドウで 90% の上限に達した場合、リセットまでアイドル状態でのスリープを引き起こします。

費用効率性は、アイドル状態のループが自動的にシャットダウンする(コストなし)ようにし、後から再開できるようにすることで達成されます。デフォルトの目覚め間隔は 30 分であり、

[next-wake]
テーラーまたは pause/resume コントロールを通じて調整可能です。ツールには、ダイレクトメッセージ、
@mention
デリバリー、最終ターンのためのステータスノート、および storm-ガードされたループからループへのチェーンなどの協調機能も含まれています。

インストールは通常、GitHub リポジトリをクローンし、

make build image
を実行して、
./bin/spool
で開始し、ワンタイムパスワードを介して
admin
としてサインインすることを含みます(要件には Linux/macOS/Windows with WSL2、Docker、git、および Go および Node の特定のバージョンが含まれます)。ただし、v0.5.1 以降のリリースでは、Go、Node、または
make
への依存は不要になりました。Fleet セットアップは 3 つのカードで構成されます:Harness(Claude トークン用)、Loops(命名されたミッション/ワークステーションの作成用)、および Chat surface。

高度なデプロイオプションには、TLS サポート、

OPERATIONS.md
で文書化されたバックアップ、Docker を使用しない bare ランタイム環境が含まれます。プロジェクトが pre-1.0 ステージを超えて成熟するにつれて、将来的なアップデートでは目覚めスケジュールとサーバーオプションをさらに精査し、大規模なコード生成を人間による継続的な監視なしに簡素化するでしょう。

本文

Claude Code のループ機能を管理する Spool: 機能、構成と使用方法

Spool を使用すると、永続的な Claude コードループを作成し、管理し、対話することが容易になります。作業を任せて調整し、チャットを通じて常に関与し続けることができます。

🌟 主な特徴:Spool が容易にする作業

  • 作業の継続
    • 特定の場所で永続的なループを作成・管理できます。
    • スケジュールされた起動時刻と再開可能なセッションを設定することで、作業の中断を防ぎます。
  • 参加の維持
    • ループのターミナルセッションにいる必要はありません。
    • Web コントロールルーム、Telegram、Slackからループと会話できます。
  • 調整の簡素化
    • ループが「艦隊チャネル」を介して直接通信できるようにします。
    • 各質問や結果、手渡しのすべてを手作業で中継する必要がなくなります。
    • これにより、より多くの時間を「何をやるべきか」の決定と、「生み出した成果物のレビュー」に費やすことができます。

注: Spool は v1.0 前のバージョンであり、Claude コードのループとそのオペレーターによって公開開発されています。イシューおよびプルリクエストで実行されている 4 つのループも Spool を使用しています。コミットはモデルが共著者として記述し、CI でゲートされた後、オペレーターがマージします。


🚀 クイックスタート

環境要件:

  • OS: Linux、macOS、または WSL2(Windows)。
  • Docker: 実行中である必要があります。
  • 言語・ツール: git、Go 1.25+、Node.js 20.19+ または 22.12+。
  • Claude Code: インストール済み(トークン取得用)。

1. Spool の取得と構築

git clone https://github.com/enes-alatas/spool && cd spool
make build image
  • コマンドは
    bin/spool
    (内部制御ルームを含む)と、ループが動作する 2 つの Docker イメージを構築します。

2. 起動とログイン

./bin/spool
  • 初回起動: ユーザー「admin」用のワンタイムパスワードが表示されます。
    • ブラウザで
      http://127.0.0.1:8080
      を開き、パスワードで admin としてログイン。
    • 独自のユーザー名を設定してください。
  • パスワードを再発行: コマンドを使用します。
    ./bin/spool user reset admin
    

3. 制御ルームでのセットアップ

起動すると以下の 3 つのカードが表示されます。順に操作してください。

ハarness(統合)

  • claude setup-token
    を実行し、表示されたトークンをコピーします。
  • カード上の「Add token」を選択し、コピーしたトークンを貼り付けます。
    • これでループはあなたの Claude プランを通じて動作します。

Loops(ループ)

  • 「New loop」を選択し、名前とミッションを入力します。
  • 初回の起動でワークステーションが構築されます(初回は 1〜2 分かかります)。
    • 最初のターン終了までこのカードは完了状態になりません。

Chat Surface(対話インターフェース)

ボットを追加する順序です。

  1. **「Attach a bot」**を選択し、以下から選択します。
    • Telegram:
      • Telegram で
        @BotFather /newbot
        を実行。
      • 生成されたトークンを貼り付けます。
    • Slack:
      • ダイアログに従って「Create app from manifest」を実行。
      • アプリの 2 つのトークンを貼り付けます(詳細は
        docs/SLACK.md
        )。
  2. 「Get a link code」を選択し、そのコードをボットに直接メッセージ送信します。
  3. ボットから質問があれば **「YES」**と返信し、アカウントをリンクしてオーナーになります。
  4. 最後に一度でもボットにメッセージを送れば、ループが返信するとカードが完了状態になります。

チャットアプリがない場合: 制御ルーム内のループページから直接会話することも可能です。Harness と Loops のカードが完了したら、「Skip for now」を選択し、後からボットを連携させることができます。

その他の実行方法

  • リリース版からの実行(v0.5.1 以降): ビルド済みバイナリとイメージが同梱されているため、Go や Node.js は不要です(
    OPERATIONS.md
    を参照)。
  • サーバー上のサービスとして実行(TLS とバックアップ付き):
    OPERATIONS.md
    を参照してください。
  • Docker 不使用:
    ./bin/spool --runtime bare
    コマンドを使用すると、独自アカウントで「bare」モードとなり、ループを個々のプロセスとして実行します(コンテナ化されない)。

⚙️ 動作原理

  • 下流の Plain Claude CLI
    • ループは
      claude
      のサブプロセスであり、stdin/stdout を介して stream-json で通信します。
    • 通常の Claude コードのログイン、プラン制限、セッション制限が適用されます。API キーや SDK は不要です。
  • 直接協調
    • ループは明示的にアドレスされたメッセージを艦隊チャネルまたはプライベート会話に送信します。
    • Telegram や Web、他ループからの
      @mention
      に反応して Spool がメッセージを配信します。
    • 最終ターンの返信はタイムラインのステータスノートとして保持され、ループ間の連鎖は「storm-guarded(暴風雨ガード付き)」です。
  • 起動・休止とペース調整
    • アイドル中のループにはコストがかかりません。プロセスは終了し、必要な文脈を保ったまま後で再開します。
    • デフォルトでは 30 分間隔(tick) で起動しますが、メッセージ届くと即時起動します。
    • [next-wake: 45m]
      トレーラーで次の起動時間を指定できます(設定範囲内)。
    • 休止中のループはメールをキューイングします。
  • 制御ルーム
    • デフォルト
      http://localhost:8080
      の Web UI ハブです。
    • トークンのストリーミングに従って各ループの対話をリアルタイム表示し、スケジュールやターン・日のコストを表示します。
    • ループを停止、起動、終了させることができます。
  • プランガードレール
    • Fleet ページで、プランの 5 時間と 7 日ウィンドウの使用量をループからのストリーミングデータから読み取り表示し、各ループの日々の消費シェアを示します。
    • 上限(デフォルト 90%)を超えると、すべてのループがそのウィンドウのリセットまで休止し、メッセージは待機されますが失われません。
    • 「Resume now」で早期再開が可能です。
    • 閾値の変更や無効化は
      Settings → Plan guardrails
      で設定できます。

🔒 セキュリティ概要

  • デフォルトでコンテナ化
    • 各ループは独立したコンテナ内で実行され、エグレス(外部接続)がリストされたホワイトリストのみ許可されています。
    • ハブポート以外のマシンのルートはありません。このハブポートではループの MCP エンドポイントのみ提供されます。
  • コンテナ化なしはユーザー側で要求時
    • Docker がない場合、Spool は起動を拒否します(
      --runtime bare
      の場合はホスト上で実行されます)。
  • ログインが必要
    • 制御ルームではユーザー名とパスワードが必要です。スクリプトではオペレータートークン (
      spool token
      ) を使用します。
  • 機密情報の密封
    • ボットトークン、接続シークレット、setup-token はデータディレクトリの
      hub.key
      で密封されています。
      spool.db
      と別にバックアップしてください
      。

詳細:

docs/CONTAINMENT.md
(コンテナ化の全貌)および
SECURITY.md
(脆弱性報告)。


💬 チャット表面とアクセス制御

チャット表面(対話インターフェース)

  • ループは当初、制御ルームでのみ起動します。
  • Telegram または Slack からアクセスするには、クイックスタートのステップ 5 でボットを追加する必要があります。

ループにアクセスできる人

Spool は送信元ホワイトリストを維持しており、登録された人だけがあなたのループに到達できます。

  • ホワイトリスト外のメッセージ: ボットへの送信は無視され、グループバインドもできません。
    /spool_status
    には答えません。
  • アカウントのリンク: ステップ 5 で自分のアカウントをリンクします。
  • 他の人を許可する手順:
    1. spool user add
      コマンドを使用するか、「Settings → Users and access」から追加します。
    2. 「Settings → Link Telegram/Slack」で彼ら自身のリンクを行います。
    3. 「Settings → Users and access」では各ユーザーのリンク一覧を表示でき、すべてのボット上でユーザーをブロックすることも可能です(古いペアリングコードによる承認を含む)。

ブロックされた送信元は一切返信されません。Slack アプリはインストールしたワークスペースに限定され、ホワイトリストもそこで適用されます。ループ間通信は内部処理であり影響を受けません。


🛠️ フラグ(コマンドラインオプション)

すべてのフラグは

spool --help
で一覧表示できます。

フラグデフォルト値設定内容
--listen
127.0.0.1:8080コントロールルームと API が提供される場所
--data-dir
~/.spoolデータベース、hub.key、ループのホームディレクトリが配置される場所
--runtime
autoデーモン到達可能なら Docker を使用;bare はコンテナ化せずに実行
--trusted-host
noneTLS プロキシの背後にあるハブの名前(OPERATIONS.md に systemd/Caddy レシピあり)
--mcp-listen
ハブで選択ループの 1 ポート(docs/CONTAINMENT.md で選択方法が説明されています)

🧪 開発とテスト

ビルドコマンド:

make server         # Go バイナリのみ
make dev            # バックエンド実行 (:8080)
make ui-dev         # Vite 開発サーバー (/api プロキシ付き)
make image          # ローカルに Docker イメージをビルド

テスト階層 (docs/QUALITY.md を参照):

  • Tier 1 (Unit Test): ユニットテスト+アーキテクチャテスト。
  • Tier 2 (Integration Test): 実際のバイナリと fakeclaude(プロトコルフェイク)でのテスト(約 10 分)。
    • Docker デーモンなしで約 7 分。
    • テスト対象:m1 (機能確認)、m2 (ティックスケジューリング)、m4 (メンションリレー+暴風雨ガード)、m5 (Telegram)、m6 (ワークツリー分離) など。
  • Tier 3 (End-to-End Test): 実際の Claude セッション(プラントークンを消費)。
    scripts/e2e/
    でローカル実行。

CI でゲートするのはユニットテストと fakeclaude を基にした統合テストです。e2e シートは各マイルストーンごとにローカルで実行されます。


📚 プロジェクトドキュメント

ハブの実行に関するドキュメント:

  • docs/OPERATIONS.md
    : サーバーへのインストール、バックアップ、リストア、アップグレード。
  • docs/CONTAINMENT.md
    : ループをコンテナ化する内容及びハブ自身のシークレット。
  • 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
    : リポジトリで働く AI エージェント向けのガイダンス。

同じ日のほかのニュース

一覧に戻る →

2026/10/15 4:26

がん患者さんが知っておくべきこと:2026年版

## 日本語訳: 口がん(例:扁平上皮癌)と診断された人にとって最も重要な点は、疾病の深刻さが初期段階での対話(AI ツールを含む)で相対化されうる可能性があるため、適切なタイミングで高品質な医療を受けるよう執拗に努力し続けることです。個人的な経験から、術後採取した腫瘍組織で行われた検査よりも、生検組織を用いた検査を優先しないことが危険な遅れを引き起こす可能性があることが示されており、したがって患者は可能な限り総合的な遺伝子検査と上級がんセンターでの第二の意見を迅速に求めるべきです。メジャーな医療機関(例:MD Anderson)は、医師と病理科医間の強い協力関係によりより迅速かつ正確な回答を提供することが多く、US News ランキングを指針としてローカルコミュニティ病院よりも 2〜3 時間のドライブ圏内であっても訪問する価値があります。実用的な戦略には以下が含まれます: - ノートとフォローアップのための整理されたシステムを作成すること(例:予約要約や質問用の専用フォルダー)。 - NCCN ガイダンスの「標準治療」フローチャートを使用して、期待されるプロトコルを理解し、効果的にアドボケーシィを行うこと。 - 標準的な経路が停滞した際に特に Sijbrandij Foundation のようなリソースを求助すること。 外科医を選ぶ際には、年間手術件数や合併症発生率について問いかけ、同様の処置を受けた他の患者と話すことを検討すべきです。必要であれば有給休暇やホテルを使用してトップクラスのカンターにアクセスすることもできます;多くの施設は保険を受け入れています。結局のところ、これらの能動的なステップはキャンセルや保険手続きによる遅延を防ぎ、適切な標準治療を受けることを確実にします。

2026/10/15 5:48

OpenCode 2.0

## Japanese Translation: OpenCode 2.0 は、数百万人の毎日ユーザーからのフィードバックに基づいた大きなアーキテクチャ見直しであり、パフォーマンス向上、バグ修正、およびほぼあらゆるエージェント機能をサポートするように設計された全く新しい API を導入しています。主要な変更点として、すべてのインターフェース(TUI、Web、デスクトップ)を単一の中央バックグラウンドプロセス (`opencodepid`) に統合し、`@opencode/client` を使用するクライアントはこれを自動で発見できるようになりました。システムは現在、ペアリングフロー (`/pair` または `opencode pair`) を通じてスケジューリングされたタスクや外部アプリケーションとのシームレスな接続をサポートしており、ネイティブアプリの開発が進行中です。 目立つ機能の一つには、「Code Mode」(`@opencode/codemode`)があり、Node.js VM の複雑性なしにエージェントが直接スクリプトを書くことを可能にする最小限の JavaScript インタプリターを使用します。これにより、すべての MCP サーバーはデフォルトで code mode で動作します。この更新では、長時間実行されるタスクのためにバックグラウンドサブエージェントと非同期シェルコマンドを導入し、セッション中にプラグインのアップデートを行うためのホットリロードも追加されています。新しい `@opencode/sdk` を使用することで、OpenCode をサーバーまたは Durable Objects 上のライブラリとして利用できるようになります。 このアップグレードには重要なbreaking changesが含まれています:バージョン 1.x のプラグインはもはや機能せず、`tui.json` などの設定ファイルは `json` フォーマットに移動しました。最新の 1.x リリースを使用するユーザーは、2.0 に更新してこれらの変更との互換性を維持するには、最初に `opencode upgrade --major` を実行する必要があります。

2026/10/15 6:11

Jev 1.14.0 をリリースし、ドリーマー向けの試み機能を同時に提供します

## Japanese Translation: jev 1.14.0(`jev-preview` チャンネルで利用可能)は、「危険区域」API ヘッダーをゲート化した実験機能を提供します。これには、composable images(`TypeSafe-Danger-Zone-Images: true` を有効化により提供され、ただし以前の 1.13.0 ビルドに比べて多モーダル入力におけるパフォーマンス低下が報告されています)、エラーなしのバウディングボックスを返す新しい「box」検出タイプが含まれます。ユーザーはさらに、より長いコンテキスト長(`TypeSafe-Danger-Zone-Long-Context: true`)およびデバッグ用の Jaggedness レポートへの参加を選択でき、これらは特定のヘッダーを通じて利用可能です。このアップデートは 1.13.0 に基づいており、以前のパフォーマンス低下を解決すると同時に多言語サポートを拡張しています。評価については、内部インテリジェンス指標は非一貫的な推測として扱い、公式ベンチマークはデータポリシーの懸念から開示ウェイトモデルのみを対象としており、ランキングが特定のアーキテクチャにバイアスがかかっている可能性があるため、個人の実験に頼るべきです。今後、`jev-latest` 別名は 1 週間以内に 1.14.0 を採用します。企業は廃止スケジュールを監視する必要があります:バージョン 1.13.0 に対する 60 日間の警告期間に続いて、新しいリリース用の 30 日間のウィンドウを確保し、古いバージョンが廃棄される前にシステムがこれらの構造的変化に適応できるようにします。ドキュメントは docs.typesafe.ai/go/images、docs.typesafe.ai/go/box、および docs.typesafe.ai/models#context-length で利用可能です。

恒常的な Claude Code ループを管理する方法:Spool | そっか~ニュース