プログラミング
Show HN: Wallfacer – Claude Codeなどのためのターミナルセッションマネージャー
Show HN: Wallfacer – A terminal session manager for Claude Code, and more (github.com)
要約
Wallfacerは、Claude Code、Cursor CLI、Kiro CLI、CodexといったAIコーディングセッションを管理するためのターミナルセッションマネージャーです。AIが生成する会話の記録が散らばって管理しにくくなる問題を解決し、セッションの命名、タグ付け、グループ化、検索、再開、削除を可能にします。TUI(テキストベースのユーザーインターフェース)とCLI(コマンドラインインターフェース)の両方を提供し、ローカルのSQLiteデータベースでメタデータを管理します。
全文翻訳
██╗ ██╗█████╗ ██╗ ██╗ ███████╗█████╗ ██████╗███████╗██████╗ ██║ ██║██╔══██╗██║ ██║ ██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗ ██║ █╗ ██║███████║██║ ██║ █████╗ ███████║██║ █████╗ ██████╔╝ ██║███╗██║██╔══██║██║ ██║ ██╔══╝ ██╔══██║██║ ██╔══╝ ██╔══██╗ ╚███╔███╔╝██║ ██║███████╗███████╗██║ ██║ ╚██████╗███████╗██║ ██║ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ wallfacer Claude Code、Cursor CLI、Kiro CLI、Codexなどのためのターミナルセッションマネージャー — これまで開始したすべてのAIコーディングセッションを表示し、フルスクリーンのブラウザまたはコマンドラインから名前を付け、タグ付け、グループ化、検索、再開、または削除できます。 なぜClaude Codeがすべての会話を、いるディレクトリをキーとして~/.claude/projects/の下に無題のJSONLファイルとして保存するのか。Kiro CLIは~/.kiro/sessions/cli/の単一のフラットフォルダで同様のことを行い、Cursor CLIは~/.cursor/chats/の下のハッシュ名ディレクトリに各チャットを格納し、Codexは~/.codex/sessions/の下に日付別にロールアウトを記録します。数週間後には、区別がつかず、必要なものを見つける方法もない、4つのエージェントにわたる数十のトランスクリプトが手元にあります。 wallfacerはそれらすべてをインデックス化します — 読み取り専用で、エージェントのファイルには一切触れません — そして、タイトル、タグ、プロジェクトを独自のローカルSQLiteデータベースに保持します。 特徴 すべてを一元管理 — すべてのディレクトリとすべてのエージェントからのすべてのセッションを、新しさ順にソートして表示 整理 — セッションの名前変更、タグ付け、プロジェクトへのグループ化 検索 — タイトル、最初のプロンプト、ディレクトリ、プロジェクト、タグを横断して検索 起動と再開 — 新しいセッションを開始したり、どこからでも古いセッションに戻ったりできます マルチエージェント — Claude Code、Cursor CLI、Kiro CLI、Codexを並べて表示;セッション開始時にエージェントを選択し、後でフィルタリングできます 安全な削除 — rmはゴミ箱に移動します;--purgeのみが永続的です TUIとCLI — 人間向けのフルスクリーンブラウザ、スクリプト用のサブコマンド+ --json 拡張可能 — エージェントはプラグイン可能なアダプターです;opencodeはロードマップ上にあります インストール macOSまたはLinuxでHomebrewを使用する場合: brew tap pradipta/wallfacer https://github.com/pradipta/wallfacer brew install pradipta/wallfacer/wallfacer フォーミュラはこのリポジトリにあり、別のhomebrew-wallfacer tapではなく、tapにURLを明記する必要がある唯一の理由です。その後、brew upgrade wallfacerは通常通り機能します。 またはGoで: go install github.com/pradipta/wallfacer@latest Go 1.22+が必要です。 事前ビルドされたバイナリはリリースページにあります;ソースからのビルドは開発ガイドでカバーされています。 2つの使用方法 wallfacerは2つのフロントエンドを持つ1つのバイナリであり、どちらを取得するかはサブコマンドを渡すかどうかによって決まります: あなたがタイプするもの 結果 wallfacer TUI — フルスクリーン、インタラクティブなセッションブラウザ。ここから始めます。 wallfacer <command> CLI — スクリプトと筋力記憶のためのワンショットサブコマンド。これらは別々のツールではなく、切り替えるものもありません:どちらも同じSQLiteインデックスを読み書きするため、ブラウザでタグ付けしたセッションはwallfacer list --tagで即座に見つけられ、その逆も同様です。TUIができることはすべて、サブコマンドでも可能です。(標準出力がターミナルでない場合 — wallfacer | less、またはスクリプト内 — 単純なコマンドはブラウザを開く代わりにヘルプを表示します。) クイックスタート ブラウザを開いてそこから作業します: wallfacer またはシェルから操作します: wallfacer new ~/work/api --title "Fix flaky auth tests" wallfacer resume "fix flaky auth tests" # タイトルまたはIDプレフィックスで wallfacer search auth wallfacer list --project api --json # スクリプト用 TUI — wallfacer 単純なwallfacerはフルスクリーンセッションブラウザを開きます:左側にリスト、右側に詳細ペインがあり、ハイライトされているものすべてについてwallfacer showが出力します。各行には、wallfacer listが出力するものと同じメタデータ(プロジェクト、タグ、ディレクトリ、経過時間、エージェント)が表示されます。100列未満では、詳細ペインが脇に移動し、リストが全幅を占めます。 キー アクション ↑/↓ j/k タイトル、プロジェクト、ディレクトリ、タグ、エージェント名を移動 / ファジーフィルタリング P / T / A プロジェクト / タグ / エージェントフィルタをサイクル(フィルタなしに戻る) x プロジェクト、タグ、エージェントフィルタをクリア tab 詳細ペインを表示または非表示 enter 再開 — ターミナルがエージェントに引き渡されます;ブラウザは終了時に戻ります n 新規セッション(エージェント、次にディレクトリ、タイトル、プロジェクト、タグを尋ねます) r / t / p 名前変更 / タグ編集 / プロジェクト設定 d 削除 → ゴミ箱へ、確認あり ? / q ヘルプ / 終了 エージェントのステップが最初に来て、1行のピッカーです: ←/→ または数字で選択、enterで続行、escで戻る。Claude Codeは事前に選択されており、アダプターが1つしか登録されていない場合はステップが完全にスキップされます。 CLI — wallfacer <command> 各サブコマンドはワンショットです:実行、出力、終了。ブラウザと同じインデックスです。 コマンド 説明 wallfacer (サブコマンドなし) インタラクティブブラウザを開く wallfacer new [dir] [--agent A] [--title T] [--project P] [--tag t] ディレクトリで新しいセッションを開始 wallfacer resume <ref> セッションを元のディレクトリで再オープン wallfacer list [--project P] [--tag T] [--agent A] [--json] セッションを一覧表示、新着順;--agentはケースインセンシティブな部分文字列を受け入れます wallfacer search <query> タイトル、プロンプト、ディレクトリ、プロジェクト、タグを検索 wallfacer show <ref> 1つのセッションの詳細 wallfacer rename <ref> <title> セッションの名前を変更 wallfacer tag add|rm <ref> <tag>… タグを追加または削除 wallfacer project set|clear <ref> セッションをプロジェクトにグループ化 wallfacer rm <ref> [--purge] [-f] セッションをゴミ箱へ移動(--purgeで永続的に削除) wallfacer sync ディスクを再スキャン(各コマンドの前に自動実行) <ref> はIDプレフィックス(resume 5f2)または正確なタイトル(resume "smoke test")です —あいまいな参照は推測する代わりに候補を一覧表示します。 Wallfacer以外で開始されたセッションは自動的に取り込まれます;インポートステップはありません。 仕組み wallfacerは~/.claude/projects/、~/.cursor/chats/、~/.kiro/sessions/cli/、および~/.codex/sessions/をスキャンし、各セッションファイルの先頭部分を読み取って、作業ディレクトリ、タイムスタンプ、および最初のプロンプト(自動タイトル)を取得します。各エージェントのリストにはエージェントタイプが含まれるため、wallfacer listはAGENT列を表示し、--agentはkiroまたはcursorのようなケースインセンシティブな部分文字列に絞り込みます。メタデータは~/.local/share/wallfacer/のSQLiteに保存されます — これを削除しても、オーバーレイのみが失われ、会話は失われません。同期は増分式なので、数百のセッションがあっても高速です。 rmはセッションをwallfacerのゴミ箱に移動します。1つのセッションが複数のファイルにまたがるエージェント(Kiro CLIはトランスクリプトとメタデータサイドカー、プロンプト履歴、スクラッチディレクトリを書き込み、Cursor CLIはチャットを独自のディレクトリとプロジェクトの下に保存されたトランスクリプトに分割します)の場合、セット全体が一緒に移動するため、削除されたセッションがエージェント自身のセッションピッカーに残ることはありません。 1日1回、ブラウザはGitHubに新しいリリースが存在するかどうかを問い合わせ、存在する場合はフッターに一度だけ表示します;サブコマンドは、そのキャッシュされた回答を標準エラー出力に繰り返すため、--json出力やパイプには表示されません。何も待機しません:ルックアップはブラウザに属します。なぜなら、ブラウザはネットワークラウンドトリップよりも長く存続するフロントエンドであり、サブコマンドはキャッシュされた回答のみを読み取る(ファイル読み取り、ネットワークなし)ため、遅れて着弾したアップデートは、次にwallfacerを実行したときに表示されるだけです。キャッシュはデータディレクトリにあり、WALLFACER_NO_UPDATE_CHECK=1で全体を無効にできます。他のエージェントは小さなアダプターインターフェースを通じてプラグインできます — docs/adding-an-agent.mdを参照してください。 ロードマップ Claude Code、Cursor CLI、Kiro CLI、Codexのアダプター opencodeのアダプター 好みのエージェント設定、ピッカーのデフォルトを自分で選択可能 セッションコンテンツの全文検索(SQLite FTS5) wallfacer restore(CLIからゴミ箱を復元) セッショントランスクリプトをMarkdownにエクスポート 統計(プロジェクト/週あたりのセッション数、ディスク使用量) デスクトップアプリ — サイドバーにセッション、埋め込みターミナル、複数のタブ(同じGo内部の上にWails + xterm.js) 貢献 開発ガイドを参照してビルド、テスト、リリースを行ってください。貢献を歓迎します — 特に新しいエージェントアダプター。