Show HN: Godot と Rust を基盤としたマルチプレクサ(ターミナルペーンなど)

2026/09/12 1:03

Show HN: Godot と Rust を基盤としたマルチプレクサ(ターミナルペーンなど)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

gPTY は、Godot エンジンと Rust プログラミング言語を基盤とした革新的な AI エージェント制御ツールであり、アプリケーションペイン(ターミナル、コード、ファイルツリー)に対してタイルグリッドを提供するとともに、独自の概念キャプチャーエンジンを実現します。このエンジンは RegEx トリガーを用いて AI の返信を隣接するペインにキャプチャー・ルーティングし、シェルセッションへの入力注入を厳格に防止します。プラットフォームは、完全な DEC STD 070 機能(vte/alacritty_terminal を通じた ANSI パーシング、スクロールバック、RegEx 検索)を備えた独立したシェル操作と、専用の Reasoning ペインおよび Inspector ペインによるエージェントの可視化をサポートします。

堅牢な公開 API は、JSON-RPC IPC ソケットとエージェントライフサイクルに対する標準化されたバージョン管理されたプロトコル制御を提供する MCP サーバーを含みます。システムは、スクロールバック、設定、ワークスペースを SQLite/JSON に自動保存し、全文検索を備えた永続性を提供します。コードベースの重要な部分は大規模言語モデル(LLM)によって生成されており、これにより非標準的なパターンが導入される可能性がありますが、プロジェクトは异步ランタイム用ライブラリとして tokio、Godot ブリッジ用ライブラリとして gdext 0.5 を利用しています。

デプロイは、ローカルに Rust や Godot のインストールを必要としない Linux、macOS、Windows 向けのクロスプラットフォームスタンドアローンバイナリを通じて簡素化されています(ただしビルドには Rust >= 1.85 が必要)。CLI は Unix ソケットを介した JSON-RPC を用いて GUI を制御し、

new-pane
inject
などのコマンドをサポートします。プロジェクトは GNU General Public License version 3 またはそれ以降を採用しており、プラグインやエコシステムツールが MIT および Apache-2.0 など許諾的ライセンスを使用することを可能にする特定のライセンス例外を含んでいます。

本文

gPTY: Godot と Rust に基づく PTY 基盤

Godot と Rust で構築されたPTY (Pseudo-Terminal) 基盤です。分割可能なグリッド上でターミナル、コードエディタ、ファイルツリーなどのペーンを配置でき、概念キャプチャエンジンに加え、AI エージェントや自動化ツールが TUI をスクレイピングせずにペーンを操作できるJSON-RPC/MCP 制御インターフェースを備えています。

概要

gPTY の主要な機能と特徴は以下の通りです。

  • PTY (ターミナルエミュレータ)
    • リサイズ可能な分割グリッド上で独立したシェルセッションを起動・管理します。
    • alacritty_terminal
      を介して完全なDEC STD 070 規格に対応しています。
      • カラーモード: 16/256/True カラー
      • 機能: 正規表現検索付きスクロールバッファ、折り返しテキスト選択など。
  • 公開 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
    • 単一の API でクロスプラットフォーム対応(Linux の
      /dev/ptmx
      と Windows の ConPTY)。
  • ANSI パース:
    vte クレート
    • 高速な Rust ANSI 状態機械。
  • 非同期ランタイム:
    tokio
    • 各ターミナルタスク、チャネル駆動型のキャプチャ状態機械のサポート。
  • I/O スレッド管理: PTY ごとに専用の
    std::thread
    • 予測可能なブロック読み取りを確保し、mpsc を介して tokio と連携。
  • 概念キャプチャ: Rust レギュラーエクスプレッション
    • パースされた LineParser 出力に対する線形時間(ReDoS セーフ)のマッチング。
    • グリッド忠実な再生のために生バイトをバッファリング。
  • グリッド描画:
    alacritty_terminal
    • 完全な DEC STD 070 グリッド状態機械、配列を Godot の
      _draw()
      に渡す。
  • Godot ブリッジ:
    gdext 0.5
    • Godot 4.7+ 向けのネイティブ GDExtension。
  • Rust エディション: 2024
    • Rust 1.85 以上を必要とします。

インストールと使用方法

Linux、macOS、Windows 向けのスタンドアロンプライナリ(Godot のインストール不要)は GitHub Releases に公開されています。

ダウンロードパッケージ一覧

プラットフォームパッケージ名使い方
Linux
gpty-v0.5.3-linux-x86_64.tar.gz
展開後、
./gpty-gui.sh
で GUI 起動。
./gpty
が CLI。
macOS
gpty-v0.5.3-macos.zip
展開し、
.app
ファイルを右クリックして開く。
横に配置された
gpty
が CLI。
Windows
gpty-v0.5.3-windows-x86_64.zip
展開後、
gpty-gui.exe
で GUI 起動。
gpty.exe
が CLI。

チェックサム確認

各リリースには SHA256SUMS ファイルが付属し、ファイル転送中のデータ改ざんを検出するためにダウンロードしたファイルを必ず確認してください(デジタル署名は含まれていません)。

  • Linux:
    sha256sum -c SHA256SUMS
  • macOS:
    shasum -a 256 -c SHA256SUMS
  • Windows:
    certutil -hashfile <アセット> SHA256

詳細は SECURITY.md を参照してください。

CLI 使用方法

gpty
バイナリは、JSON-RPC IPC を介して実行中の GUI を制御します。すべてのリリースバンドルには GUI の横に CLI も含まれています(デフォルトでは GUI 起動時に
--no-daemon
オプションにより非アクティブになります)。

GUI が起動済み(Godot からまたはリリースバイナリで)の場合、CLI は以下のソケットを通じて接続されます:

  • 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 は AI エージェントやコーディングハネスがワークスペースを制御できるようにする MCP(モデルコンテキストプロトコル) サーバーを提供します。リポジトリルートにある

mcp.json
には自動発見のための宣言が含まれています:

{"mcpServers": {"gpty": {"command": "gpty", "args": ["mcp"]}}}
  • 直接実行: stdio 上で
    gpty mcp
    を実行すると、各 CLI サブコマンド(new-pane, list-panes, kill-pane, focus-pane, inject など)に対応するツールが公開されます。
  • マニフェスト生成:
    gpty schema --format mcp
    は、エージェント設定への手渡し用に JSON スキーマを含む MCP ツールマニフェストを出力します(GUI の起動は不要)。

注釈: ツールのスキーマは CLI と同じ clap 定義から生成されるため (

crates/gpty-cli/src/commands/schema.rs
)、
gpty --help
に記載されている機能と乖離することはありません。

ドキュメントと関連情報

  • ロードマップ: 詳細な機能一覧については ROADMAP.md を参照してください。
  • セキュリティ: 脅威モデル、報告プロセス、防御事項については SECURITY.md を参照してください。実装規則(ReDoS 対応策、PTY 環境のサニタイズ、IPC の強化など)は AGENTS.md に記載されています。
  • コントリビュート: セットアップ手順、ビルドコマンド、テスト、プルリクエストのプロセスについては CONTRIBUTING.md を参照してください。
  • バージョン履歴: 完全な履歴については CHANGELOG.md を参照してください。

ライセンス

gPTY は自由ソフトウェアであり、GNU General Public License バージョン 3 またはそれ以降 (GPLv3+) でライセンスされています(全文:LICENSE)。

LICENSE-EXCEPTIONS.md
では GPL の第 7 節の下に 2 つの特例を追加しており、エコシステム側の扱いを寛容なものとしています。

特例内容

  1. プラグイン・拡張機能への適用除外
    • プラグイン、拡張機能、アダプタには GPLv3 によるコピーレフト義務はありません。
    • CLI、JSON-RPC、MCP、イベントインターフェースを通じて gPTY と連携するもの(ネイティブペーンタイプを含む)は、Apache-2.0、MIT、あるいは任意の他の条件でライセンスされ、gPTY と共に配布することができます。
  2. 設定ファイル・データファイルへの適用除外
    • プロファイル、ワークスペース、レイアウト、概念、設定などのファイルにはコピーレフトが適用されません。
    • これらはご自身の任意の条件でライセンス可能です(※ gPTY に同梱されるデフォルトの
      *.json
      ファイルは Apache-2.0 です)。

Copyright (C) 2026 Neil Pathare.
gPTY は有用であると願って配布されますが、いかなる保証もなしであり、エンドユーザーの利用によるいかなる責任も負うものではありません。たとえ通常想定される商取引の適格性(MERCHANTABILITY)や特定目的への適合性(FITNESS FOR A PARTICULAR PURPOSE)といった暗黙の保証も含みません。詳細については GNU General Public License を参照してください。

同じ日のほかのニュース

一覧に戻る →

2026/09/12 2:45

数学における AI のズレ

## Japanese Translation: 数学問題を利用した AI ベンチマークは、企業の目標と基礎研究の価値の間で危険な不一致を生じさせ、数学および学術コミュニティに深刻な害をもたらすと主張しています。AI に回答を求めることは、真の洞察や新しいアイデアを育むのではなく、理解のための単なる代理手段となるのみです。また、急遽策された解決策はしばしば適切な出典を認めておらず、広範な剽窃のリスクを負います。さらに、単純な正誤問題を大量生産することは、学生を育成し、人間の相互作用を通じて洗練された概念を発達させるために必要である豊穣な環境を破壊します。 数学は蓄積された知識に依存しており、有名な問題は教科書に掲載されるまでに長期間の議論を要するランドマークとして機能します。このプロセスは研究者間の本質的な人的伝達チェーンを保証します。理解に基づいてトレーニングする年数を AI による直接的な結果生成に取って代わられる場合、知的作業の当初の目的に反する体系的脅威が浮上します。現在数学者が直面しているこれらのリスクは、対処されない限り、間もなくすべての科学的および創造的な職業に影響を及ぼす可能性があります。結局のところ、この分野が利益を得るかどうかは、今後人間の側がこの技術に関する意思決定によって決まります。したがって、研究者、テクノロジー企業、社会が直ちに行動を起こし、人類の知的進歩を守り、学生の発達という貴重な資源と独自のアイデアを維持する必要があります。

2026/09/12 3:24

Google アプリ広告に220ドル費やしましたが、インストールの60%がロボットでした。

## Japanese Translation: 「Dayzle」というパズルアプリを開発していた開発者が、日間の広告予算を CA$40 から CA$80 に倍額に引き上げたことが、キャンペーン設定の抜け穴を利用した高度なボット農場によるものであったと最近発見しました。当初、初期結果が不調だったためインストール単価上限を削除してしまったことで、開発者は誤ってボットが Google Play Store を迂回し、保存されたファイルからアプリの古いバージョンを直接インストールすることを可能にしてしまいました。これらの不正なインストールは、即座に動画を視聴してサイトを離れることで変換トラッキングをトリガーし、Google のアルゴリズムに偽の変換 engagement に対して請求を行うように仕向けました。これにより、28 の異なる電話モデルで 19 の州にわたって架空のエンゲージメントが fact-billed されました。2 週間で合計 56 のインストールが請求されました:そのうち 33 はボットパターンに一致し、7 つは非ターゲット国からのものであり、本物のユーザーによる有意なエンゲージメントを達成したのはわずか 13 です。ここでの最も重要な教訓は、ネイティブのインストール数単独では成功の信頼性の高い指標にならないという点です。外部ネットワークが人間の行動を模倣して操作可能であり、特にボットはクリックせずに動画を視聴することでインストールをトリガーし、それが変換としてカウントされたためです。この問題を解決するため、開発者はキャンペーンの目標を「アプリを開くこと」から「ゲーム内パズルの勝利」へと厳格化し、正当な変換とみなされる基準を実質的に引き上げました。この事例は広告主に対して明確な警告となっています:検証済みのプラットフォームでも回避可能であり、広告が効果的であると結論付ける前に、古いソフトウェアや疑わしいセッション速度などの異常を検出するために生データの深層分析を必要とする場合があります。現在、開発者は無効トラフィックフォームの提出に関する返信と、潜在的な返金について待機しています。

2026/09/12 3:50

GrapheneOS の書き換えられたメッセージアプリがリリースされました。

## Japanese Translation: この更新は、メッセージアプリにおいて、レガシーなインターフェースを Jetpack Compose と Material 3 デザインに置き換えるという大きな転換点です。バックワートード互換性よりも現代の安定性とセキュリティを最優先しています。最も重要な変更点は、最小 Android SDK を 36 に、ターゲット SDK を 37 に引き上げたことであり、これにより古いデバイスはサポートされず、ユーザーはオペレーティングシステムのアップグレードが必要となります。スヌーzing という新機能(1、8、または 24 時間)や、大型スクリーン向けの適応型二分割レイアウトなどを含むビジュアルのリニューアルに加えて、このリリースはセキュリティを大幅に強化しています。プライベートなファイル URI の共有をブロックし、null 引用による多数のクラッシュ状態を修正したためです。メディア処理も再構築され、ピンチ操作によるズーム表示やスクリーンリーダー用のアクセシビリティラベルの強化が実現しました。また、アプリは会話ごとの通知設定を維持しつつ、専用プライバシーセクションを導入し、システム構成を現代的な互換性のために書き換えました。結局のところ、この移行により、長期的なセキュリティの確保、通知の最適化を通じたバッテリー効率の向上、および最新のモバイル開発標準への対応が実現します。 ## Text to translate: The original summary is strong; to tighten alignment with the Key Points List without adding new information, only minor clarification is needed around the "mandatory" phrasing. However, since this is a reasonable inference and overall quality is high, I will return an improved but nearly identical version that slightly clarifies the upgrade implication while preserving clarity: ## Summary This update marks a major transformation for the messaging app by replacing its old interface with Jetpack Compose and Material 3 design, prioritizing modern stability and security over backward compatibility. The most critical change is raising the minimum Android SDK to 36 and target SDK to 37, which means older devices will no longer be supported and users will need to upgrade their operating systems. Beyond the visual overhaul—including new features like snoozing notifications (1, 8, or 24 hours) and an adaptive two-pane layout for large screens—the release significantly strengthens security by blocking private file URI sharing and fixing numerous crash conditions caused by null references. Media handling has been rebuilt to offer better pinch-to-zoom viewing and enhanced accessibility labels for screen readers. The app also preserves per-conversation notification settings while introducing a dedicated Privacy section and rewriting system configurations for modern compatibility. Ultimately, this shift ensures long-term security, improved battery efficiency through optimized notifications, and alignment with current mobile development standards.