Project Sentinel:Claude Code のコンテキスト引き継ぎと実行の制御
長時間の Claude Code の実行のための、ステータス帯、コンテキスト引き継ぎ、プロンプトキャッシュの追跡、権限ルール。
権限
- ファイルを読み取るお使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- コマンドを実行お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- モデルを呼び出す(利用枠を消費)独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- ツール呼び出しを傍受Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- プロンプトを読み取る入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
- 検証バージョン
- v2.1.296
- 最終検証日
- 必要バージョン
- Claude Code ≥ 2.1.287
- 表示先
- プロンプト上部、ペイン、スピナー、ステータス、トースト
Claude Code 内でインストール:
/plugin install project-sentinel --marketplace Arjun0014/project-sentinelこのModでできること
Project Sentinel は長時間の Claude Code の実行向けに作られたコミュニティ Mod で、最もよく知られた機能は Claude Code のコンテキスト引き継ぎです。作者は Project Sentinel contributors(Arjun0014)です。コンテキストウィンドウがいっぱいになると、Context Autopilot が Claude に現在の作業単位を終わらせてノートファイルを書くよう依頼し、その後コンテキストをクリアして、そのノートを読み込む新しいコンテキストを開始します。この Mod はバージョン 1.4.0 まで Control Room という名前だったため、パネルとステータス帯には今もその名前が残っています。
その周りに多くの機能が加わっています。プロンプトの上のステータス帯には、コンテキストの使用量、プロンプトキャッシュ、実行のコストが表示されます。Cache Guardian はプロンプトキャッシュが温かい状態をどれだけ保つかを追跡し、100k トークン以上を再送信することになるモデル切り替えの前に確認を求めます。権限カテゴリを使うと、パッケージのインストール、プッシュ、デプロイなどの操作を「確認」または「拒否」に設定できます。ほかにも Mission Queue と Decision Inbox、サブエージェントの上限、モデルルーター、マシン負荷のガバナー、オプションのピクセルコンパニオンがあります。作者の README にすべてが列挙されています。このページでは、私たちがコードで確認した内容を扱います。
デモ
録画では、小さなデモプロジェクトでこの Mod を読み込んだ Claude Code を起動し、Claude に README.md を読んでプロジェクトを一文で説明するよう依頼します。プロンプトを送る前、入力欄の上の帯には Control Room バッジと RUN $0.00 とともに "Ready" と表示されています。ターンの実行中は "Thinking" に変わり、続いてコンテキストメーターが 4% まで増えていく様子が表示されます。ターンが終わると、"Read 1 file"、コンテキストバー、CACHE 1h left、そして 1 セント未満の実行コストが表示されます。
インストール
インストールブロックのいずれかの方法を使ってください。どれも作者自身の control-room という名前のマーケットプレイスから直接インストールします。帯は次のセッション開始時に表示されます。パネルを開くには /control-room または /cr を実行してください。
$ install project-sentinel
Claude Code 2.1.287 以上が必要
作者のマーケットプレイスからインストール: Arjun0014/project-sentinel
1.Claude Code 内で1行
/plugin install project-sentinel --marketplace Arjun0014/project-sentinel実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。
2.シェルから
claude plugin marketplace add Arjun0014/project-sentinel claude plugin install project-sentinel@control-roomその後、すでに開いているセッションでは /reload-plugins を実行してください。
3.インストールせずに試す
git clone https://github.com/Arjun0014/project-sentinel claude --plugin-dir ./project-sentinel/plugins/project-sentinelその1セッションだけ Mod を読み込みます。設定には何も追加されません。
仕組み
プラグインにはフックモジュールが hooks/register.tsx のひとつだけあり、すべてのエンジン呼び出しのための単一のホストアダプターを構築し、各フックをランタイムオブジェクトを呼び出す数行のコードとして登録します。処理の可否を判断するフックにはすべて .catch があり、Claude Code 自身の動作にフォールバックします。以下は hooks/register.tsx のツール呼び出しフックです。
on('tool.call', async ($, e, next) => {
if (rt.isStandby) return next(e)
if (rt.host === null) rt.bind(hostOf($))
const tool = String(e.tool)
const input: Record<string, unknown> = isRecord(e) ? { ...e } : {}
const refusal = await rt.beforeTool(tool, input, e.tool_use_id, e.agentId)
if (refusal !== null) return { deny: refusal }
// ... then next(e), with afterTool in a finally block
})beforeTool はシェルコマンドをトークンに分割し、各セグメントを権限カテゴリに分類して、最も厳しい設定を適用します。このチェックがクラッシュした場合でも、.catch が明らかに危険なコマンドを拒否します。状態はプラグインの $.store(設定、実行記録、キャッシュの記憶)と、描画フックが読み取る $.state アトムに保存されます。
カスタマイズ
すべての設定はパネル(/cr)または /cr コマンドから行います。プロファイル、Autopilot のしきい値(デフォルトはウィンドウの 70%、またはトークン数で指定)、引き継ぎファイルの名前、カテゴリごとの権限の状態、回答のスタイル、ルーターの戦略、サブエージェントのモードと上限、リソースの上限、Keep warm、コンパニオンを設定できます。/cr reset confirm でデフォルトに戻ります。作者の docs/CONFIGURATION.md にすべてのオプションが列挙されています。
権限と安全性
私たちはマニフェスト、hooks/hooks.json、hooks/register.tsx、ホストアダプター、core/settings.ts、features/prompts.ts、features/permissions/decide.ts、app/formerStore.ts、そして作者の SECURITY.md を読みました。プラグインには約 60 個の TypeScript ファイルがあります(大きい 4 つのファイルで約 7,800 行)。UI、パネル、3,000 行あるコンパニオンモジュール(kit.client.tsx)については、すべての行を読んだわけではありません。それらと残りのファイルについては、ネットワーク呼び出し、eval、動的インポート、プロセス呼び出し、ファイル書き込み、シークレット、隠し Unicode 文字をすべてのファイルで検索し、ここに挙げたもの以外は見つかりませんでした。プラグインには package.json、インストールスクリプト、バイナリ、minify されたコードはありません。
確認結果:
- ネットワーク: なし。
fetch、ソケット、ホストはありません。モデルリクエストは Claude Code 自身のクライアントを通じて送られます(オプションのガードチェックと、Keep warm。Keep warm はデフォルトではオフで、短い "reply ok" メッセージとともに直前のリクエストを再送信します)。 - プロセス: macOS では
top -l 0 -s 2 -n 0("Live CPU and memory" がオンの間(デフォルトでオン)動き続ける CPU とメモリのサンプラー)とsysctl -n kern.memorystatus_level、Windows ではtypeperfとsysteminfo、git リポジトリ内ではgit status --porcelain=v1 --branchを実行します。いずれも固定の引数で、シェルを介しません。サンプラーはセッション終了時に停止します。 - ファイル書き込み: プラグイン自身による書き込みは、自分の
$.storeファイル以外にはありません。引き継ぎ用のノートファイル(デフォルトはNEXT_SESSION_PROMPT.md)は、Claude が通常の権限チェック付きツールで書き込みます。設定を引き継ぐために、~/.claude/plugins/store/にある旧 Control Room のストアファイルを一度だけ読み込みます。このファイルが変更されることはありません。 - デーモン: なし。ウォッチャーのタイマーは Claude Code のプロセス内で動きます。
- 環境変数:
HOME、USERPROFILE、CLAUDE_CONFIG_DIR(旧ストアを見つけるため)と、プロンプトキャッシュの設定CLAUDE_CODE_PROMPT_CACHE_TTL、ENABLE_PROMPT_CACHING_1H、FORCE_PROMPT_CACHING_5Mを読み取ります。作者の SECURITY.md の要約には環境変数を一切読まないとありますが、同じ文書の表にはこの読み取りが記載されています。どこにも送信されません。 - テレメトリ: なし。
- モデルへの影響: Autopilot や Frontier Max などの機能がオンのときにシステムプロンプトにポリシーのセクションを追加し、ツールの結果に短いメモを付け加え、2 つのツール(
milestonesとdecision_request)を提供し、独自のプロンプト(引き継ぎ、続き、キューに入れた作業)を送信します。文言はfeatures/prompts.tsにあります。Frontier Max(デフォルトではオフ)は、セッションが "is being evaluated for frontier-level autonomous capability" であると Claude に伝え、早めに止まらないよう指示します。隠しテキストやゼロ幅文字、レビュー担当者に向けた指示は見つかりませんでした。 - ゲーティングフック: ツール呼び出しを拒否でき(デフォルトでは、強制プッシュ、リセット、危険なコマンドは拒否、インストール、ダウンロード、プッシュ、デプロイ、削除、プロジェクト外での編集は確認)、モデルの切り替えや大きくてキャッシュの切れたコンテキストの再開の前に確認を求め、サブエージェントを隠したり拒否したりし、早めに止まったターンを続行させることができます(ガード、デフォルトではオフ)。権限チェックに自分で応答することはなく、拒否を緩めることもありません。これは README の記載と一致します。
- 外部要件: Claude Code 2.1.287 以降以外にはありません。
topとsysctlは macOS に標準で含まれています。 - ライセンス: MIT。リポジトリとプラグインフォルダの両方に LICENSE ファイルがあります。
claude plugin validate はエラーも警告も報告しませんでした。claude plugin test コマンドはプラグインフォルダ内に *.test.ts ファイルを見つけられませんでした。作者がテストハーネスをリポジトリ内の別の tools/test フォルダに置いているためで、そのため作者のテストは実行できませんでした。この Mod は広範囲に及び、介入の度合いが大きいものとして扱ってください。該当する機能を有効にすると、プロンプトの書き換え、ツールの拒否、コンテキストのクリアを行うことがあります。
- ファイルを読み取る
- お使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- コマンドを実行
- お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- モデルを呼び出す(利用枠を消費)
- 独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- ツール呼び出しを傍受
- Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- プロンプトを読み取る
- 入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更
- Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加
- あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存
- プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
互換性とトラブルシューティング
macOS 上の Claude Code 2.1.296 で確認しました(validate と録画したセッション)。おかしいと感じたら、次を確認してください。
/crを実行して、パネルと現在の設定を確認してください。- 帯が表示されない場合は、Setup で帯のスタイルを確認してください。オフに設定できます。
- Claude がコマンドを拒否する場合は、Guardrails を確認してください。デフォルトの権限の状態では、強制プッシュと危険なコマンドが拒否されます。
- 旧
control-roomプラグインも読み込んでいる場合、Project Sentinel は待機状態になり、そのことを一度だけ通知します。 - Windows では、CPU とメモリのカウンターに英語版の Windows が必要です。
よくある質問
- Project Sentinel は、有効にしなくても何かを行いますか?
- ステータス帯、コンパクトなツール行、Control Room パネルを描画し、帯のために CPU とメモリのサンプラーを動かし、デフォルトの権限ルールを適用します(インストール、ダウンロード、プッシュ、デプロイは確認を求め、強制プッシュと危険なコマンドは拒否)。Context Autopilot、Frontier Max、ルーター、Keep warm、コンパニオンは、有効にするまでオフです。
- どこかにデータを送信しますか?
- Mod 自身がネットワークリクエストを送ることはなく、テレメトリもありません。パネルで確認できるモデルリクエストを Claude Code に送らせる機能が 2 つあります。ガードのオプションのスマートチェックと、Keep warm(デフォルトではオフ)です。
- 勝手にコンテキストをクリアすることはありますか?
- Context Autopilot を有効にしている場合か、あなたが引き継ぎを依頼した場合だけです。まず Claude にノートファイルを書かせ、そのファイルが新しく書かれたことを確認してから、/clear を実行して続きのプロンプトを送信します。
- Context Bar や Compact Adviser とは何が違いますか?
- これらはコンテキストの使用量を表示したり、助言したりするものです。Project Sentinel はより大きなスイートで、コンテキストに加えてプロンプトキャッシュ、権限カテゴリ、サブエージェントの上限、キューに入れた作業、ウォッチャーを扱い、セッションに対して操作を行うこともできます。
- パネルを開くには?
- /control-room、または短縮形の /cr を実行してください。パネルにはアクティビティ、コンテキスト、キャッシュ、ガードレール、動作、セットアップのタブがあります。
# 関連する Mod
おすすめContext Bar
Claude Code のコンテキストウィンドウを、カテゴリごとに色分けした 1 本の積み上げバーとしてプロンプトの上に表示します。トークン数付き。
- プロンプト上部
- UI を変更
- コマンド・ツールを追加
- データを保存
v2.1.291 で検証済み
おすすめCompact Adviser
/compact を実行すべきタイミングを教えてくれます。ひと区切りの作業が終わったところを TypeSafe の Jev が判定し、ヒントを表示します。
- ステータス
- ペイン
- トースト
- ファイルを読み取る
- ファイルを書き込む
- ネットワーク
- プロンプトを読み取る
- UI を変更
- コマンド・ツールを追加
- データを保存
v2.1.291 で検証済み
おすすめコンテキストメーター
コンテキストウィンドウの使用率、5 時間・7 日間のプラン使用量、セッションのコストをステータスラインに表示し、上限が近づくと警告します。
- ステータス
- トースト
- UI を変更
v2.1.310 で検証済み
同じカテゴリの Mod: タイマー、ToDo、スタンドアップ、安全ガード、コンテキスト、利用枠、コスト。