/note/tech

ターミナルを自作したら、1日のコミット数が500を超えて、生産性がバグった話

要約:

■ 1. 課題: 複数AIエージェント並列管理の困難さ

  • emacs+ターミナル環境でClaude Codeを複数並列実行していた
  • 6分割ターミナルでも各ペインの状態(終了・待機・実行中)が視覚的に判別できない
  • 投げた指示の内容を途中で見失う問題が発生
  • 画面スペースの物理的制限が存在

■ 2. 解決策: ブラウザベースターミナルの自作

  • VS Code統合ターミナルの実装調査を通じてxterm.jsを発見
  • ブラウザ上で動作するターミナルはHTMLとCSSで自由なレイアウトが可能
  • WebSocketを用いてサーバ側のPTYに接続する構成を採用

■ 3. 実装した主要機能

  • セッション状態の可視化:
    • 各セッションのサイドにAIのサマリーと投げたプロンプトを表示
    • Claude Codeの状態(idle/running/waiting)をリアルタイムで明確表示
    • リポジトリごとに色とレイアウトをカスタマイズ可能
  • 通知システム:
    • 入力待ち状態になった際に音声通知(カスタマイズ可能)
    • Firebase経由でローカルMacの状態をミラーリング
    • Service Worker経由のWeb Push実装によりiOS 16.4以降のスマートフォン・スマートウォッチへ通知
  • セッション管理:
    • tmuxでセッションを管理し、再起動後も継続可能

■ 4. 認知限界の突破

  • 従来の認知限界は約6エージェントの並列実行
  • Anthropic社のBoris Cherny氏もターミナルで5セッション、ブラウザで5〜10セッションを同時実行
  • 並列度の上限は人間の注意力ではなく、道具がどれだけ状態を肩代わりするかで決まる
  • 作業スタイルが「画面に張り付く」から「呼ばれたら応じる」へ転換

■ 5. 1日500コミットの正体

  • 並列度×通知ドリブンの自然な帰結として実現
  • 各エージェントが小さな変更を積み重ね、ユーザーは詰まったポイントのみ判定する役割に
  • ボトルネックが「手を動かす速度」から「判断を返す速度」へ移行した結果

■ 6. 予期しない変化: エディタの喪失

  • 当初の目的はemacs環境を守ることだった
  • 実際にはコード記述業務がほぼエージェント側で完結
  • 著者の作業が「コーディング」から「PRレビュー」へシフト
  • 手でファイルを開く機会がほぼ消滅

■ 7. 次のボトルネック: GitHub

  • エージェント側の処理速度は充分に確保された
  • CI・マージ判定が律速段階となった
  • PR取り込み速度が開発全体の足かせとなっている

■ 8. 公開ツール: MulmoTerminal

  • 起動コマンド: npx mulmoterminal@latest
  • Claude Code、OpenAI Codexの両対応
  • OSSとして公開、日本語マニュアル完備
  • 関連プロジェクト: MulmoCast(マルチフォーマットメディア変換)、MulmoClaude(Claude Codeツールキット)