HN 日本語サマリー

← 一覧へ戻る
プログラミング

GodotとRustベースのマルチプレクサ(ターミナルペインとその他)

Godot and Rust based multiplexer (terminal panes and more) (github.com)

19 pointsby 1nv1n9 コメント

要約

gPTYは、GodotとRustで構築されたPTY(擬似端末)基盤であり、ペイン(ターミナル、コード、ファイルツリーなど)のためのタイリンググリッドを提供します。AIエージェントや自動化ツールが、TUIをスクレイピングすることなくペインの生成、テキストの挿入、ターミナル出力の監視を行えるように、JSON-RPC/MCPコントロールサーフェスを備えています。これはクロスプラットフォームで動作し、スタンドアロンバイナリとして提供されます。

全文翻訳

gPTY - GodotとRust上に構築されたPTY基盤。ペイン(ターミナル、コード、ファイルツリーなど)のためのタイリンググリッド、コンセプトキャプチャエンジン、およびJSON-RPC/MCPコントロールサーフェスを提供し、AIエージェントや自動化ツールがTUIをスクレイピングすることなくペインを生成、テキストを挿入し、ターミナル出力を監視できるようにします。 概要 PTY - リサイズ可能なタイリンググリッドで独立したシェルセッションを生成・管理します。alacritty_terminalによる完全なDEC STD 070:16/256/トゥルーカラー、正規表現検索付きスクロールバック、ラップされたテキスト選択。 パブリックAPI - JSON-RPC IPCソケット + CLI(gPTY new-pane、gPTY inject、…) + MCPサーバー。AIエージェント、スクリプト、オーケストレーターは、文書化されバージョン管理されたプロトコルを通じてワークスペースを駆動します。 コンセプトエンジン - PTY出力の正規表現トリガーが応答をキャプチャし、隣接するペイン(コードビューア、インスペクタ)にルーティングします。独自のものを書くか、デフォルトを使用します。コンセプトは表示のみをキャプチャ・表示し、シェルにインプットを挿入することはありません。 エージェントオブザーバビリティ - 推論ペインは、文書化されたエージェントライフサイクルイベント(OMP、拡張可能)をパッシブに投影します。インスペクタペインは、プライベートでツールフリーのQ&Aセッションを実行します。オブザーバビリティのみ - gPTYはエージェントの状態をオーケストレートしません。 永続化 - スクロールバック、設定、ワークスペース(名前付きタブセット)、プロファイルはSQLite/JSONに自動保存され、再起動時に復元されます。各ペインの永続化された履歴全体を検索できます。 クロスプラットフォーム - Linux、macOS、Windows用のスタンドアロンバイナリ。実行にGodotまたはRustツールチェーンは不要です。 ドキュメント - https://godot-pty.github.io/gpty/ このコードベースの大部分、特にほとんどのGodot UIレイアウトとRust(gPTY-core)GDExtensionブリッジは、LLMを使用して生成されました。そのため、基盤となるコードには非慣用的パターンやバグが含まれている可能性があります。 コンポーネント選択の根拠 PTYライブラリ portable-pty クロスプラットフォーム(Linux /dev/ptmx + Windows ConPTY)を単一APIで ANSI解析 vte crate 高速Rust ANSIステートマシン 非同期ランタイム tokio 各ターミナルタスク;チャネル駆動キャプチャステートマシン I/Oスレッドリング 各PTYに専用のstd::thread 予測可能なブロッキング読み取り;mpsc経由でtokioにブリッジ コンセプトキャプチャ 解析されたLineParser出力に対するRust正規表現 線形時間マッチング(ReDoSセーフ);グリッド忠実な再生のためにバッファ生のバイトをキャプチャ グリッドレンダリング alacritty_terminal 完全なDEC STD 070グリッドステートマシン;配列をGodot _draw()に渡す Godotブリッジ gdext 0.5 Godot 4.7+用のネイティブGDExtension Rustエディション 2024 Rust >= 1.85が必要 インストールと使用方法 スタンドアロンバイナリ(Godotのインストール不要)は、Linux、macOS、Windows用にGitHub Releasesで公開されています。 プラットフォーム パッケージ Linux gpty-v0.5.3-linux-x86_64.tar.gz - 解凍して./gptyを実行 macOS gpty-v0.5.3-macos.zip - 解凍し、.appを右クリックして「開く」を選択 Windows gpty-v0.5.3-windows-x86_64.zip - 解凍してgpty.exeを実行 CLI gPTYバイナリは、JSON-RPC IPC経由で実行中のGUIを制御します。cargo build -p gpty(またはcargo build --workspace)でビルドします。GUIが実行中(Godotまたはリリースバイナリから起動)になったら、CLIはUnixソケット(Linuxでは$XDG_RUNTIME_DIR/gpty.sock、またはGPTY_SOCKET環境変数)経由で接続します。 # GUIが実行中か確認 gpty version # ペイン内で実行されるコーディングエージェント用のバンドルされたエージェントスキルを表示 gpty --skill # 新しいターミナルペインを生成 gpty new-pane --pane-type terminal # アクティブなペインをすべてリスト表示 gpty list-panes # ペインにテキストを送信(ラベル、例: T1 で指定) gpty inject T1 --text "echo hello" # ペインを閉じる gpty kill-pane T1 # 名前付きレイアウトを保存・ロード gpty layout save my-setup gpty layout load my-setup gpty layout list # GUIデーモンを管理 gpty daemon status gpty daemon stop # AIツールマニフェストを生成(GUI不要) gpty schema gpty schema --format mcp # stdio経由でMCPサーバーとして実行(GUI不要) echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | gpty mcp すべてのサブコマンドとフラグについては、gpty --help を参照してください。 MCP統合 gPTYはMCP(Model Context Protocol)サーバーを搭載しており、AIエージェントやコーディングハーネスがワークスペースを制御できるようにします。リポジトリルートのmcp.jsonがそれを宣言し、自動検出されます: {"mcpServers": {"gpty": {"command": "gpty", "args": ["mcp"]}}} 直接:stdio経由でgpty mcpを実行 - 各CLIサブコマンド(new-pane, list-panes, kill-pane, focus-pane, inject, pane-read, pane-status, pane-run, pane-wait, broadcast, layout-*, daemon-*, concept-*, version)のツールを公開します。 マニフェスト:gPTY schema --format mcp はMCPツールマニフェスト(JSONスキーマ、GUIなしで動作)を出力し、エージェント設定に引き渡されます。ツールスキーマはCLI(crates/gpty-cli/src/commands/schema.rs)と同じclap定義から生成されるため、gpty --help から逸脱することはありません。 ロードマップ 完全な機能リストについては、ROADMAP.md を参照してください。 セキュリティ 脅威モデル、報告プロセス、およびgPTYが防御しないものについては、SECURITY.md を参照してください。実装ルール - コンセプトエンジンのReDoS対策、PTY環境のサニタイズ、IPCの強化、OSC 52の制限 - はAGENTS.mdに記載されています。 貢献 セットアップ手順、ビルドコマンド、テスト、コードスタイル、プルリクエストプロセスについては、CONTRIBUTING.md を参照してください。 変更履歴 完全なバージョンごとの変更履歴については、CHANGELOG.md を参照してください。 ライセンス gPTYはフリーソフトウェアであり、GNU General Public Licenseバージョン3以降でライセンスされています(全文はLICENSEを参照)。LICENSE-EXCEPTIONS.md は、そのライセンスのセクション7の下に2つの許可を追加しており、エコシステム側が許可的であり続けるようにしています:プラグイン、拡張機能、アダプターはGPLv3である必要はありません。CLI、JSON-RPC、MCP、またはイベントインターフェイスを介してgPTYと連携するあらゆるもの(ネイティブペインタイプを含む)は、Apache-2.0、MIT、またはその他の任意のライセンスでライセンスされ、gPTYと並べて自由に配布できます。 設定ファイルとデータファイルにはコピーレフトは適用されません。プロファイル、ワークスペース、レイアウト、コンセプト、設定は、ご自身のライセンスで自由にライセンスできます。gPTYに付属するデフォルトの*.jsonファイルはApache-2.0です。 Copyright (C) 2026 Neil Pathare. gPTYは、それが有用であることを期待して配布されていますが、いかなる保証もなく、エンドユーザーによるいかなる使用に対しても一切の責任を負いません。商品性または特定目的への適合性の黙示の保証さえもありません。詳細については、GNU General Public Licenseを参照してください。