Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Mar 2, 2026 - 日記

AISHでターミナルログのノイズを減らす: PTY実行と要約の分離が効く理由

AISHでターミナルログのノイズを減らす cover image

ターミナルの出力は、必要な情報があるのに長すぎる。特にテスト失敗やビルドエラーのとき、欲しいのは「どこで落ちたか」と「その前後」だけです。

そこで試したのがAISH公式サイト で紹介されているAISH(PTY-first shell wrapper / “signal, not noise”)です。AISHリポジトリ のREADMEを見ると、PTY(擬似端末)でコマンドを実行しつつ、出力を完全保存し、デフォルトは要約だけ出す設計になっています。

このツールは「AIが読むための出力設計」ではなく、「人間が読むべき場所だけ残す」ための設計です。ログを削らずに残しつつ、読むべき場所だけ短く出す。ここが一番の価値だと思います。

AISHとは?

AISHは、コマンドの出力を必ず全部保存し、表示は要点だけに絞るCLI(コマンドラインインターフェイス)です。

ポイントは次の2つです。

  • PTY(擬似端末)で実行するので、色やプログレスバーが壊れない
  • 失敗時は「関係がある区間だけ」を抽出して表示する

READMEでは、pytest/jest/cargoなどのツールごとに「失敗区間の抽出パターン(detector、失敗の検出ルール)」を持つと書かれています。汎用grepでは拾えない「要点だけの失敗ログ」を作るのが狙いです。

仕組みのざっくり理解

実行時、AISHは以下を行います。

  1. コマンドをPTYで実行する
  2. 出力をフルで保存する(pty.log
  3. digest(要約)やrelevant(関連部分)を作る

ログ保存先は、デフォルトで ~/.local/state/aish/runs/<date>/<run-id>/ です。ここに meta.jsonpty.logdigest.txtrelevant.txt が作られます。

stdout/stderr分離とは別の解き方

CLIの出力設計の解として有名なのは「stdout(標準出力)= 結果、stderr(標準エラー出力)= ログ」に厳格に分離する方法です。実際、私は別記事「CLIの出力設計を間違えると、AIエージェントは何も読めない: agent-execが採用した分離戦略 」で、その重要性をまとめました。

一方AISHは、そこを主戦場にしません。AISHの価値は「出力を混ぜない」よりも、「混ざっていても(長くても)全部保存して、あとから読むべき断面だけ抽出できる」ことです。

つまりAISHは、stdout/stderrの分離を前提にしないログにも効きます。人間が詰まるのはパースの手前で、まず「読む場所がわからない」からです。AISHはそこを最短距離で潰してくれます。

インストール

以下は、Cargo(Rustのパッケージマネージャ)でAISHをインストールする手順です。

目的: AISHのCLI(aish-run)をローカルに入れます。
前提: RustとCargoが入っていること。
やること: リポジトリ内の crates/aish-run からビルド・インストールします。
確認: aish-run --help が表示されれば成功です。

1
2
cargo install --path crates/aish-run --locked
aish-run --help

※ リポジトリをクローンしたディレクトリで実行してください。

基本の使い方

一番シンプルな使い方は、aish-run でコマンドを包むことです。

目的: AISHでコマンドを実行し、要約出力を体験します。
前提: aish-run がインストール済み。
やること: echo hello をPTYで実行します。
確認: コマンド結果がdigest形式で表示されます。

1
aish-run -- bash -lc 'echo hello'

出力モードを切り替える

AISHには出力モードがあります。--show で切り替え可能です。

目的: 失敗時の“該当区間だけ抽出”を試します。
前提: aish-run がインストール済み。
やること: 失敗するコマンドを実行し、excerpt を表示します。
確認: 失敗に関係する部分だけが表示されます。

1
aish-run --show excerpt -- bash -lc 'exit 1'

他にも digest / full / quiet があり、full は通常のライブ出力、digest は要約、quiet はほぼ何も表示しません。

直近ログをすぐ開く

「さっきの失敗ログだけ見たい」というときは、--last--open が便利です。

目的: 直近のログをすぐ確認します。
前提: 直前にAISHでコマンドを実行済み。
やること: --last で関連部分、--open でフルログを開きます。
確認: relevant.txt または digest.txt が表示されます。

1
2
aish-run --last
aish-run --open

使ってみて良いと思った点

  • PTY実行なので、進捗バーや色が壊れない
  • 要約とフルログが分離されているので、読むべき場所が明確
  • 保存先が一定なので、CI/ローカル問わずログ追跡が楽

ログが長いツールほど、AISHの価値が上がる印象です。

注意点

  • まだMVP段階のため、ツールごとの検出精度は今後改善される予定
  • aish-run はRust製で、ソースからのインストールが基本

とはいえ、設計思想として「保存と表示の分離」はかなり強いと感じました。

まとめ

AISHは「ログは全部必要だが、読むのは一部だけ」という現実に対して、PTY実行 + 全ログ保存 + 要約表示で答えています。

次のアクションとしては、以下がおすすめです。

  1. 自分のプロジェクトのテスト/ビルドでaish-run --show excerptを試す
  2. --last--open の運用をセットで覚える
  3. docs/CONFIG_REFERENCE.md を読んで、CI向け設定を検討する

参考リンク