AI News HubLIVE
サイト内リライト3 分で読了

任意のCLIエージェントを端末に統合する

開発者がTerminaiを構築しました。これは、コンテキストを切り替えたり端末エミュレータを変更することなく、端末内でAIコーディングエージェントをオンデマンドで呼び出せる透過的なラッパーです。Rustで書かれ、ratatuiとrat-salsaをフォークしてTUIレンダリングの問題を解決し、AIとの対話のためのMCPサーバーとCLIツールを提供します。

ソースHacker News AI著者: emosenkis

ソフトウェアエンジニアとしての仕事や私生活で、常に同じ問題に直面していました。端末で作業中に、最近の出力を理解したりコマンドを作成するためにAIを使いたいと思うのですが、チャットと端末の間でコンテキストをコピー&ペーストするのは面倒で、CLIコーディングエージェントを事前に実行するとシェルでの作業効率が損なわれます。どちらのワークフローも理想から程遠いものでした。

本当に欲しかったのは、既に使っているコーディングエージェントが必要なときに端末に現れ、それ以外の時間は見えないままであることでした。

既存のツールで適切なものは見つかりませんでした。iTerm2のAI機能は既存のAIサブスクリプションを使用できず、Warpは端末エミュレータとワークフロー全体を変更する必要があり(さらに新しいサブスクリプションが必要)、透明なラッパーが欲しかったのです。これは既存のツールと連携し、ショートカットで呼び出されるまで完全に不可視であるべきです。

アーキテクチャ

端末エミュレーションとレンダリングには、pvolokの優れたmprojsのコードベースから始めました。ClaudeとCodexを使用して、mprocs固有のコードを削除し、AI端末用のオンデマンドオーバーレイとMCPサーバーを追加しました。CLIフラグを使用してMCPサーバーをAIエージェントの設定に注入し、システムプロンプトにAIが端末と対話する方法を説明する指示を追加します。

エージェントは端末のコンテンツ、メタデータ、履歴を取得し、ユーザーの承認を得てからゲスト端末に送信する入力を送信できます。AIにはMCPサーバーと同じ機能を持つCLIコマンドも提供され、MCPをサポートしていないエージェントや、出力をAIのコンテキストに直接渡す代わりにパイプする場合に使用できます。

難しい部分:真に透明にする

ヘビーな端末ユーザーなら、TUIレンダリングがどれほど脆弱かご存知でしょう。オーバーレイを完全にシームレスにするには、ratatui TUIツールキットとrat-salsaウィジェットライブラリをフォークして、3つの低レベルの問題を解決する必要がありました。

端末スクロールバック:ほとんどのTUIは独自のバッファを管理し、何も端末のスクロールバックに入らないため、全く受け入れられませんでした。何度か失敗した後、スクロールバックに行を確実にプッシュするために、昔ながらの方法を採用しました。画面の上部に行を書き込み、ネイティブの端末スクロールを強制するのに十分な改行を追加するというものです。これには、ratatui(TUIフレームワーク)の改造が必要で、内部バッファを維持しつつこの方法でレンダリングできるようにしました。

コピペの破損:行末の空白スペースがリテラルのスペース文字として端末に書き込まれ、ネイティブのテキスト選択とコピーが壊れていました。この問題は、最初の空セルをレンダリングする際に行の残りをクリアし、次の行から続けることで修正しました。すべての行末が改行としてコピーされていましたが、ratatuiがホスト端末を使用して行折り返しを行うようにし、カーソルを次の行の先頭に移動しないようにすることで修正しました。

ぜひお試しください!

クイックスタッツ:

ライセンス:MIT

言語:Rustで記述(効率性、明示的なエラー処理、型システムによる不変条件の強制のため)

プライバシー:テレメトリ、トラッキング、データ収集は一切行いません。ログはローカルに保存され、デバッグを可能にします。

セキュリティ:MCPサーバーは127.0.0.1のHTTPサーバーを使用し、ランタイムに生成され環境変数を介してAIエージェントに渡される秘密鍵によるベアラー認証で保護されています。環境変数からの認証をサポートするAIエージェントは直接使用でき、サポートしないものは、環境変数を読み取りHTTPサーバーへのリクエストをプロキシするstdio MCPサーバーとしてterminaiサブコマンドを使用できます。MCPサーバーと同じツールを提供するCLIツールも同様に動作します。

Vibeコーディング:ほとんどClaudeとCodexによって書かれました。著者はタスクの達成方法について多くの指示をAIに与え、広範なテストを要求しましたが、ほとんどのコードは人間の目に触れていません。その結果の機能性と安定性は自らを語っています。