[Paneflow 0.8.0](https://github.com/arthjean/paneflow/releases/tag/v0.8.0) 开始在标准 Linux 构建的所有新终端会话中使用 `libghostty-vt`。当 `terminal.backend` 保持为 `auto` 时，Linux x86_64 和 ARM64 构建会默认选择 Ghostty。

这次迁移更换的是解释 VT 数据并维护终端状态的引擎，不是外围工作区。PTY、进程生命周期、GPUI 渲染器、面板、会话、智能体状态、diff 和持久化仍由 Paneflow 管理。macOS 和 Windows 继续使用 Alacritty。

<figure className="my-8 w-full">
  <img
    src="/images/libghostty-linux.webp"
    alt="Ghostty 与 Paneflow 应用图标并排置于蓝紫色景观中"
    width={1920}
    height={1080}
    className="h-auto w-full rounded-lg border border-surface-border"
  />
</figure>

## Ghostty 作为 VT 引擎加入 Paneflow

在 Paneflow 0.7.x 及更早版本中，终端会话基于 Rust crate `alacritty_terminal` 0.26。这个引擎负责转义序列、网格、回滚缓冲区、输入模式、搜索以及一部分渲染模型。

新的 Linux 路径使用 Ghostty 的可嵌入终端引擎 [`libghostty-vt`](https://github.com/ghostty-org/ghostty/blob/ae52f97dcac558735cfa916ea3965f247e5c6e9e/README.md#cross-platform-libghostty-for-embeddable-terminals)。它解析 VT 序列，维护光标与屏幕状态，处理字素、自动换行和 reflow，编码键盘与鼠标输入，并向宿主应用公开增量渲染状态。

Paneflow 没有嵌入 Ghostty 应用、GTK 界面或渲染器。Ghostty 提供终端核心，Paneflow 将其状态转换为自有的 Rust 快照，再通过现有 GPUI 渲染器绘制。因此，产品界面和多智能体工作流仍由 Paneflow 控制。

## 使用 Paneflow 自有边界分离引擎与产品

替换解析器只是部分工作。Alacritty 类型已经进入 PTY 循环、渲染、搜索、选择、链接、回滚缓冲区恢复和会话生命周期。如果不先解除耦合，只替换依赖，就会把同一个问题转移到新引擎。

Paneflow 现在公开自有的终端会话边界。Alacritty 和 Ghostty 都会生成相同的 Paneflow 命令、事件、模式、搜索结果和渲染快照。渲染器不再需要知道某个单元格来自哪个引擎。

这条边界是迁移中更持久的成果。Linux 可以先行切换而不改变 macOS 或 Windows，未来更新引擎时，应用其他部分也不必采用引擎的内部类型。

## 将不稳定的 C API 限制在小型 Rust 封装中

Ghostty 将 `libghostty-vt` 描述为功能成熟，但其 API 签名仍在变化。因此，Paneflow 固定了 Ghostty 的准确提交 [`ae52f97d`](https://github.com/ghostty-org/ghostty/tree/ae52f97dcac558735cfa916ea3965f247e5c6e9e)，以及 C header、生成的 bindings、Zig 版本、构建配置和归档校验和。

原始 C ABI 被隔离在单独的 `-sys` crate 中。第二层安全封装拥有每个原生 handle，在创建终端前验证 API 版本与 C layout，拦截 callback panic，并通过匹配的 allocator 释放 Ghostty 分配的内存。

所有权规则在渲染期间尤其重要。`libghostty-vt` 公开借用的行与单元格，后续终端变更可能使其失效。Paneflow 在终端锁定期间复制所需数据，再向 GPUI 提供自有的 Rust 快照。任何 C 指针或借用 slice 都不会跨越锁或帧边界。

这套策略比跟随未固定的依赖需要更多维护。每次 Ghostty 更新都必须为两种 Linux 架构重新生成并审查 header、bindings、静态归档、校验和、符号及许可证。这项成本保持明确且范围可控，不会变成运行时的不确定性。

## Alacritty 继续作为差异测试基准和回滚路径

用户可见的目标是保持连续性。shell、编码智能体、全屏 TUI、搜索、选择、剪贴板操作、回滚缓冲区、OSC 事件、调整大小、reflow 和进程退出，都应在引擎更换后保持原有行为。

Paneflow 以多种分块大小向 Alacritty 和 Ghostty 输入相同的确定性 VT 流，然后比较标准化快照和有序事件。独立 fuzzing 目标覆盖格式错误或截断的序列、输入编码、调整大小、reflow，以及一个序列被拆分到多次 PTY 读取中的边界。包检查还会拒绝运行时依赖 `libghostty.so`、构建身份错误或缺少已审查原生声明的 Linux 构建产物。

Alacritty 并未被移除。要在新建 Linux 会话中使用它，请在 `paneflow.json` 中设置 backend：

```json
{
  "terminal": {
    "backend": "alacritty"
  }
}
```

运行中的会话不会在内存中切换引擎。更改设置后，请关闭该会话并打开新面板。`auto` 在标准 Linux 构建中选择 Ghostty，在 macOS、Windows 或使用 `--no-default-features` 编译的 Linux 构建中选择 Alacritty。

## 静态链接，无需安装 Ghostty

官方 Linux 包含有针对 x86_64 或 ARM64 固定的静态 `libghostty-vt` 归档。机器上无需安装 Ghostty、Zig 或共享库。从干净的 Paneflow checkout 执行普通 `cargo build` 时，也会使用仓库内经过验证的归档，`build.rs` 不会下载原生源代码。

Linux 是首个启用此 backend 的平台。扩展到 Windows 或 macOS，以及未来是否移除 Alacritty，都是独立决策。Paneflow 0.8.0 将影响范围控制在较小范围：1 个新默认值、2 个受支持引擎，并且新会话可以立即回滚。

更新到 Paneflow 0.8.0，打开新面板，然后运行常用的 shell、TUI 或编码智能体。如果终端行为出现回归，请将新会话切回 Alacritty，并在报告中注明命令、Linux 发行版以及使用的是 Wayland 还是 X11。