首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Show HN:基于 Godot 和 Rust 的多路复用器(终端窗格等)

2026-09-11 1 阅读 约9分钟阅读 1nv1n
分享:
字号:
gPTY - 基于 Godot 和 Rust 构建的 PTY 基础。为窗格(终端、代码、文件树等)提供平铺网格、概念捕获引擎和 JSON-RPC/MCP 控制界面,以便 AI 代理和自动化工具可以生成窗格、注入文本并观察终端上的输出,而无需抓取 TUI。概述 PTY - 在可调整大小的平铺网格中生成并管理独立的 shell 会话。通过 alacritty_terminal 的完整 DEC STD 070 :16 / 256 / 真彩色,使用正则表达式搜索回滚,换行文本选择。公共 API - JSON-RPC IPC 套接字 + CLI ( gpty new-pane , gpty Inject , …) + MCP 服务器。 AI 代理、脚本和编排器通过记录的版本化协议驱动工作区。概念引擎 - PTY 输出上的 RegEx 触发器捕获回复并将其路由到相邻窗格(代码查看器、检查器)。编写您自己的或提供默认值。概念仅捕获和显示 - 它们从不将输入注入到 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 具有单个 API 的跨平台(Linux /dev/ptmx + Windows ConPTY) ANSI 解析 vte crate Fast 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+ Rust 版本 2024 需要 Rust >= 1.85 安装和使用 独立二进制文件(无需安装 Godot)在 GitHub 上发布,适用于 Linux、macOS 和 Windows。平台包 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 控制正在运行的 GUI工控机。使用cargo build -p gpty(或cargo build --workspace)构建它。一旦 GUI 运行(从 Godot 或发行版二进制文件启动),CLI 将通过 Unix 套接字(Linux 上的 $XDG_RUNTIME_DIR/gpty.sock,或 GPTY_SOCKET env var)进行连接: # 检查 GUI 是否正在运行 gpty 版本 # 打印捆绑的代理技能(用于在窗格内运行的编码代理) gpty --skill # 生成一个新的终端窗格 gpty new-pane --pane-typeterminal # 列出所有active panes 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(模型上下文协议)服务器,以便 AI 代理和编码工具可以控制工作区。 repo-root mcp.json 声明它用于自动发现: { "mcpServers" : { "gpty" : { "command" : " gpty " , "args" : [ " mcp " ]}}} Direct : run gpty mcp over stdio - 公开每个 CLI 子命令的工具 ( new-pane , list-panes , Kill-pane , focus-pane ,ject 、 窗格读取 、 窗格状态 、 窗格运行 、 窗格等待 、 广播 、 布局-* 、 守护进程-* 、 概念-* 、 版本 )。 Manifest : gpty schema --format mcp 打印 MCP 工具清单(JSON Schema,无需运行 GUI 即可工作)以移交给代理配置。工具模式是从与 CLI ( crates/gpty-cli/src/commands/schema.rs ) 相同的 clap 定义生成的,因此它们不会偏离 gpty --help 。路线图 请参阅 ROADMAP.md 了解完整的功能清单。安全性 请参阅 SECURITY.md 了解威胁模型、报告流程以及 gpty 不防御的内容。实施规则 - 概念引擎的 ReDoS 立场、PTY 环境清理、IPC 强化、OSC 52 限制 - 位于 AGENTS.md 中。请参阅 CONTRIBUTING.md 了解设置说明、构建命令、测试、代码风格和拉取请求
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱