基于 Godot 和 Rust 的终端复用器(终端窗格及更多)

Hacker News Top 工具

摘要

gPTY 是基于 Godot 和 Rust 构建的 PTY 基础架构,提供终端窗格的平铺网格,并通过 JSON-RPC/MCP 集成 AI 代理,实现自动化和可观测性。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/11 17:24

godot-pty/gpty

源码地址:https://github.com/godot-pty/gpty
gPTY (https://godot-pty.github.io/gpty/) - 一个基于 Godot 和 Rust 构建的 PTY 基础框架。它为窗格(终端、代码编辑器、文件树等)提供平铺网格布局、概念捕获引擎以及 JSON-RPC/MCP 控制接口,使得 AI 代理和自动化工具无需抓取终端用户界面即可创建窗格、注入文本并观察输出。

概述

构建状态
GitHub 下载(所有资产,所有版本)

  • PTY - 在可调整大小的平铺网格中生成和管理独立的 shell 会话。通过 alacritty_terminal 实现完整的 DEC STD 070 标准支持:16/256/真彩色显示,支持正则表达式搜索的滚动历史,以及自动换行文本选择。

  • 公共 API - 提供 JSON-RPC IPC 套接字 + 命令行工具(gpty new-pane、gpty inject 等)+ MCP 服务器。AI 代理、脚本和编排工具可通过文档化的版本化协议驱动工作区。

  • 概念引擎 - 使用正则表达式触发器捕获 PTY 输出,将捕获内容路由到相邻窗格(代码查看器、检查器)。可自定义或使用内置默认规则。概念引擎仅捕获和显示输出——不会向 shell 注入任何输入。

  • 代理可观测性 - 推理窗格被动投射文档化的代理生命周期事件(OMP,可扩展);检查器窗格运行无需额外工具的私有问答会话。仅提供可观测性——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 regex线性时间匹配(ReDoS 安全);捕获缓冲区原始字节以忠实重现网格内容
网格渲染alacritty_terminal完整的 DEC STD 070 网格状态机;通过数组传递至 Godot _draw()
Godot 桥接gdext 0.5适用于 Godot 4.7+ 的原生 GDExtension
Rust 版本2024要求 Rust >= 1.85

安装与使用

独立二进制文件(无需安装 Godot)已发布在 GitHub Releases,支持 Linux、macOS 和 Windows 平台。

平台安装包
Linuxgpty-v0.5.3-linux-x86_64.tar.gz - 解压后运行 ./gpty
macOSgpty-v0.5.3-macos.zip - 解压后,右键点击 .app → 打开
Windowsgpty-v0.5.3-windows-x86_64.zip - 解压后运行 gpty.exe

命令行工具

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

# 作为 MCP 服务器运行(通过标准输入输出,无需 GUI)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | gpty mcp

完整子命令和选项请参见 gpty --help。

MCP 集成

gpty 内置 MCP(模型上下文协议)服务器,供 AI 代理和编码工具控制工作区。仓库根目录的 mcp.json 配置了自动发现机制:

{
  "mcpServers": {
    "gpty": {
      "command": "gpty",
      "args": ["mcp"]
    }
  }
}
  • 直接运行:通过标准输入输出执行 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 Schema 格式,无需运行 GUI),可用于代理配置。工具架构与 CLI 使用相同的 clap 定义生成(crates/gpty-cli/src/commands/schema.rs),确保与 gpty --help 保持一致。

路线图

完整功能清单请参见 ROADMAP.md。


安全

威胁模型、报告流程以及 gpty 不防御的方面,请参见 SECURITY.md。
实现规则——概念引擎的 ReDoS 处理策略、PTY 环境净化、IPC 加固、OSC 52 限制——详见 AGENTS.md。


贡献指南

设置说明、构建命令、测试、代码风格及拉取请求流程,请参见 CONTRIBUTING.md。


更新日志

完整版本变更历史,请参见 CHANGELOG.md。


许可证

gPTY 是自由软件,根据 GNU 通用公共许可证第 3 版或更高版本 授权 —— 请参阅 LICENSE 获取完整文本。
LICENSE-EXCEPTIONS.md 在该许可证第 7 条下添加了两项额外权限,使生态系统保持开放性:

  • 插件、扩展和适配器无需强制使用 GPLv3 许可。
    任何通过 CLI、JSON-RPC、MCP 或事件接口与 gPTY 协作的组件(包括原生窗格类型),均可采用 Apache-2.0、MIT 或您选择的其他许可条款,无需承担与 gPTY 捆绑分发的义务。

  • 配置和数据文件不受 copyleft 约束。
    配置文件、工作区、布局、概念和设置可按您意愿授权;gPTY 默认提供的 *.json 文件采用 Apache-2.0 许可。

版权所有 (C) 2026 Neil Pathare。
gPTY 分发时希望其能对您有用,但不提供任何担保,且不承担最终用户使用产生的任何责任;甚至不包含适销性或特定用途适用性的默示保证。详情请参阅 GNU 通用公共许可证。

相似文章

Show HN:OmniPTY — 面向 macOS 和 Linux 的固执己见的终端模拟器

Hacker News Top

Show HN:OmniPTY(原名 Oxide)是一款用 Rust 编写、面向 macOS 和 Linux 的 GPU 渲染终端模拟器,设计理念鲜明。它将通常需要外挂 tmux、文件树、提示符框架以及 vim 风格复制模式才能实现的功能内置其中,并通过单个支持自动重新加载的 TOML 文件完成配置。

@GitHub_Daily: 用 tmux 管理终端会话,可以在终端里打开多个对话窗口,即便关掉还能在后台继续。 但现在,经常同时开好几个 Agent 干活,想用 tmux 做终端自动化,得写一堆脚本很麻烦。 于是有位开发者用 Rust 从零写了 rmux,专为 Ag…

X AI KOLs Timeline

介绍 rmux,一个用 Rust 编写的现代终端复用器,专为 AI Agent 和自动化场景设计,可协调多个 Agent 同时运行,兼容 90 多条 tmux 命令,并提供 Python SDK 和浏览器共享会话功能。