mu を使う
コンテキスト
mu がコンテキストを小さく保つしくみ。ツール出力はチャンクごとに入れ、古い結果は要約なしで手放し、スキルと MCP サーバーは必要なときだけ開きます。
モデルの注意力には限りがあり、コンテキストも同じです。mu はタスクに必要のないものを外に置くので、コンテキストはめったにいっぱいにならず、プロンプトキャッシュはウォームなまま保たれます。以下の仕組みはどれも判定ポイントで、切り替えたりシャドーにしたりできます。
長いツール出力
検索、ビルド、コマンドからの 4,000 文字を超える出力は、約 1,200 文字のチャンクに分けられ、判定器はそれぞれについて「いま重要か」を問われます。1 回のリクエストで最大 16 チャンクを判定し、状態の課金は 1 回だけです。重要なものはコンテキストに入り、残りはポインタ付きでアーカイブされるので、あとで必要になればモデルが取り出せます。判定器が 4 秒以上かかった場合は、出力がそのまま全部入ります。
read、edit、write は絞り込みません。モデルがファイルを読めば、ファイルがそのまま渡ります。
テストログ
失敗した実行は、失敗したテストごとに同じ diff、DOM ダンプ、スタックトレースを出力しがちです。テストログの削減をオンにすると、mu は最初の 1 つを残し、それ以降の繰り返しを「どの行の繰り返しか」を示す 1 行に置き換えます。モデルは呼び出さず、マーカーを展開すると元のログとバイト単位で一致します。完全なログはディスクに残り、末尾の 1 行がその場所を示します。
{ "features": { "admission": { "testLog": "rules" } } }
"jev" はさらに一歩進みます。詳細なレポーターでは、成功したテストの記録とテスト出力のうち、今の目標にまだ必要なものも判定器が選びます。失敗とサマリーは問いの対象になりません。設定ではこれをテストログの削減と呼びます。実測は判定ポイントのページにあります。
mu はテストランナーに、エージェントが読んでいることも伝えます。そのため Vitest などは、失敗とサマリーだけを出力します。
古い結果の忘却
コンテキストの使用率が 50%、70%、85% を超えると、6,000 文字を超え、2 ターン以上前の結果が判定されます。まだ必要か、古くなったか。古くなった結果は、それ以降のすべてのリクエストで 1 行のトゥームストーンになります。何も要約せず、セッションファイルには元のまま残ります。
要約なし圧縮
既定ではオフです。会話を圧縮するとき、モデルが要約を書く代わりに、判定器が一節ずつ残すか刈り込むかを決めます。残した一節は一字一句そのまま残り、刈り込んだ一節は最初の 300 文字だけが残ります。
{ "features": { "compaction": true } }
スキル、パック、MCP サーバー
たくさんインストールしても、見せるのは少しだけです:
- スキル。 タスクに関係するスキルの説明だけがプロンプトに入ります。ほかのスキルも探せば見つかります。スキルが 4 つ未満なら、何も絞り込みません。
- パックと MCP サーバー。 インストールされていても隠れています。判定器がタスクに必要だと判断するか、モデルが求めるまで、サーバーのプロセスは起動せず、ツールも表示されません。ツールの一覧はキャッシュされるので、判定器は一度も起動していないサーバーでも、何を提供するかを知っています。
mu.jsonのmcp.serversで"exposure": "always"とすると、そのサーバーを常に開いておけます。
mu に付属するパック:ast-grep による構造検索と書き換え、gh 経由の GitHub、/commit、/review、コンフリクトの解決、デバッガー(debugpy、delve、lldb-dap)。それぞれ対応するプログラムのインストールが必要で、ない場合はインストールのヒントを示します。
ほかで設定したもの
mu は、Claude Code、Cursor、Codex 用に設定したルール、スキル、MCP サーバーを、変更せずに読み込みます。常時適用のルールはプロンプトに入り、特定のファイル向けのルールは、モデルがそのファイルに初めて触れたときに渡されます。残りは説明だけが一覧されます。プロジェクト独自のルールとサーバーは信頼済みのプロジェクトでだけ使い、プロジェクトが定義するサーバーは最初の起動前に確認します。/inherit で、引き継いだものと引き継がなかったものがわかります。
教訓とキャッシュ
- 教訓は、ライブラリがどれだけ大きくても、関係のある最大 5 行だけをターンに持ち込みます。教訓を参照してください。
- キャッシュの保温。 あなたがすぐ戻ってきそうなら、mu はプロンプトキャッシュが切れる前に更新するので、次のメッセージでプロンプト全体の料金を払い直さずに済みます。
- 通知(コンテキスト予算の 70%、85% など)は、判定器の判断に従って、いま、後で、または伝えずにモデルに届くので、編集の途中に割り込むことはありません。