跳到正文
Hacker News· ofabioroma·· 6 天前AI 评分62

Foretype:用 Rust 预测按键,让远程机器输入达到本地速度

Show HN: Foretype: type on remote machines at local speed

AI 导读

Foretype 是一个 Rust 工具,通过预测你的输入、在服务器回显前先画出每个按键,让远程机器上的输入达到本地速度。

正文 · AI 翻译


foretype

在远程机器上以本地速度打字。

一个 Rust 工具,预测你的输入,在服务器回显之前就绘制出每个按键。

macOS and Linux Built with Rust License: Apache-2.0

plain ssh on top, foretype below, same keystrokes at the same time
上:普通 ssh。下:foretype。同一时刻按下相同的键,连接到故意设置延迟、约 440 毫秒远的服务器。

                       without     with foretype
bash over ssh           160 ms        10 ms
coding agent over ssh   148 ms        11 ms
any laggy console       158 ms        10 ms

另一次测量,服务器约 150 毫秒远。从按键到字符出现在屏幕上的中位时间;使用 foretype 时,这就是本地绘制的预测,而真实回显仍以网络速度到达。使用 scripts/latency.py 测量。

安装

git clone https://github.com/itsfabioroma/foretype && cd foretype
./install.sh

想不安装就试用,运行 cargo build --release,然后 FORETYPE_SHELL=$SHELL ./target/release/foretype shell。这会在当前终端里于 foretype 中运行你的 shell;exit 退出。

用法

打开一个新的终端标签页。就这样。现在向任何缓慢的东西里打字都感觉是即时的:ssh、 kubectl exec、docker exec、远端机器上的编码代理。服务器上无需安装任何东西,你的 shell、提示符和配置都保持不变。

foretype status             # is this tab boosted?
sudo foretype uninstall     # put your old shell back

工作原理

foretype 是一个单独的 Rust 二进制文件。foretype install 把它复制到 /usr/local/bin,将 foretype-shell 添加到 /etc/shells,用 chsh 把它设为你的登录 shell,并把 your 旧 shell 保存在 ~/.config/foretype/shell 中。此后每个新的终端标签页、tmux 窗格和 编辑器终端都会启动 foretype,它会在伪终端中运行你真正的 shell 并原样转发每一个字节。它用 vt100 镜像屏幕,并计时每个按键回显需要多久。当 前面的程序慢于 30 毫秒时,foretype 会自己绘制你的按键,然后对照真实回显 进行检查。

  • 只有交互式终端会被包装。-c 命令、脚本和管道直接使用你真正的 shell。
  • ssh、你的 shell 配置和服务器都不受影响。只有安装 和卸载时才需要 root。
  • 仅在该行上的程序已经回显之后才进行预测,因此密码保持隐藏。
  • 在绘制之前向终端询问其光标位置(ESC [6n)。
  • 在转发输出之前恢复光标,因此程序的字节原样落地。
  • 如果回显不同,或在大约三个 往返时间内(至少 750 毫秒,至多 5 秒)没有回显到达,就撤回预测。
  • 在 Enter、编辑键、粘贴和调整大小时暂停。
  • 隐藏的是打字延迟,不是网络延迟。

许可证

Apache-2.0

来源:Hacker News · github.com