peters/horizon · 上手攻略

  • 仓库:peters/horizon
  • 链接:https://github.com/peters/horizon
  • 分类:终端工具 / TUI / 开发工作流
  • 作者:spark
  • 更新:2026-09-07

⚠️ 本文写作日期为 2026-09-07。文中命令、快捷键与安装文件名均来自 GitHub 仓库 README 与 AGENTS.md 的 fetch 结果(2026-09-07 07:33 UTC)。仓库未打 release tag 的具体版本号未能从公开 README 拿到,以下"版本"相关表述以"latest"或 commit 级说明代替,使用前请以 https://github.com/peters/horizon/releases 页面为准。

1. 是什么

Horizon 是一个 GPU 加速的"终端画板"(terminal board):它把所有 shell、SSH 会话、coding agent、浏览器、Markdown 编辑器、git status 等"面板"(panel)摆在一块无限大的二维画布(canvas)上,而不是传统的标签页或平铺窗口。作者在 Show HN(2026 年 4 月,Hacker News 84 分、32 评论)中把它描述为:

"Tabs, splits, and tmux work fine until you have several projects open with logs, tests, and long-running shells. I kept rebuilding context instead of resuming work. Horizon puts shells on an infinite canvas."

技术栈是 Rust + eframe/egui(wgpu 后端)+ alacritty_terminal(终端仿真、PTY、事件循环)。Linux/macOS/Windows 三平台都有预编译二进制。

2. 解决什么问题

传统终端体验在三种场景下开始失效:

  1. 多项目并行:同时维护 backend / frontend / infra 三个仓库,各自要跑日志、测试、长进程。tmux 嵌套 + 多 tab 容易丢失上下文。
  2. 持久化:关机后重启,会话、布局、滚动历史都没了,要重连重排。
  3. 多 agent 协作:同时挂着 Claude Code、Codex、Grok、OpenCode 几个 coding agent TUI,需要并排看输出。

Horizon 把这三类问题一起解决:无限画布 + 颜色工作区(workspace) + 预设面板(preset) + 命令面板(command palette) + 会话持久化。退出再开,画布、缩放、滚动历史、面板布局都还在。

3. 快速安装

⚠️ 仓库 README 与 AGENTS.md 都明确说"无需依赖、下载即用"。作者在 AGENTS.md 里把"下载 release 二进制"标为 Option A(最快)。

3.1 预编译二进制(推荐)

# 用 GitHub CLI 拉最新非预发布版(跨平台)
gh release download --repo peters/horizon

# 或直接到 Releases 页下载对应平台文件
# Linux x64:    horizon-linux-x64
# macOS arm64:  horizon-macos-arm64
# macOS x64:    horizon-macos-x64
# Windows x64:  horizon-windows-x64.exe (或 horizon-installer-win-x64.exe)

下载后加可执行权限并运行(Linux/macOS):

chmod +x horizon-linux-x64
./horizon-linux-x64

3.2 从源码构建

仓库 crates/ 下分两层:horizon-core(终端仿真、PTY、board/panel 核心)和 horizon-ui(eframe 应用壳)。需要 Rust toolchain + 系统依赖。Linux 上常见缺失是 pkg-config 与 ALSA 头文件,需安装对应 -dev 包。AGENTS.md 给的验证命令是:

cd horizon
cargo test         # 单元测试
cargo test --features speech   # 含语音输入层(需 CMake + ALSA 头)

⚠️ AGENTS.md 把"speech tier"列为可选 feature,需要 CMake + ALSA headers,Linux 上若 pkg-config 报错先 apt install libasound2-dev(Debian/Ubuntu)再编。

4. 核心用法

4.1 五大名词(README 直接给的)

名词 是什么 怎么用
Canvas 无限二维画布 中键或 Space+drag 平移,Ctrl+滚轮缩放,小地图跳转
Workspace 共享 cwd 的颜色簇 Ctrl+双击空白处选 preset;或侧栏 New
Panel workspace 内的活动面板 shell / ssh / grok / claude / codex / browser / editor / git / usage 等
Preset 面板模板 命令面板、Ctrl+双击、Ctrl+Shift+N(首个 preset)
Session 保存的画布 关闭 Horizon 再开;Ctrl+Shift+J 切换

4.2 面板类型(panel kind)

类型 内容
shell 工作区 cwd 下的登录 shell
ssh 远程 shell(通常从 Remote Hosts overlay)
grok / claude / codex / open_code / gemini / kilo_code / pi 一类 coding-agent TUI,支持会话恢复(CLI 支持时)
browser 画布上的 Chromium/Firefox/Safari,可与 agent 共享同一活动页面
editor Markdown 分屏(源码+预览)
git_changes 当前工作区仓库的变更、内联 diff、hunk 级别详情
usage 各 agent panel 的 token 消耗
command 任意命令作为面板运行

4.3 五分钟上手(README 推荐的"开箱流程")

  1. Ctrl+双击空白画布 → preset 列表弹出 → 选 Shell(或 Grok / Claude / Browser)。Shell 与 agent 类 preset 会再问 working directory,该目录即成为 workspace 的 cwd。
  2. Ctrl+Shift+N → 新建与第一个 preset 同类型的新 panel(默认是 Shell);或按 Ctrl+Shift+K 输入 preset alias(gb = grok?cc = claude?web = browser?gc = git?)。
  3. 工作区顶栏点 Rows / Cols / Grid 排整齐;想自由摆就 Default
  4. Ctrl+Shift+9 适配工作区到当前视图;Ctrl+Shift+W 跳转但不改变缩放。
  5. Ctrl+Shift+K 命令面板输入工作区名、面板标题、@ 限定只搜 panel、> 限定只搜 preset/action。
  6. 关掉再打开 → session、布局、画布平移/缩放、终端历史全恢复。

4.4 进阶能力(README 原文摘录要点)

  • 完整终端仿真:24-bit 颜色、鼠标报告、scrollback、alt-screen、Kitty 键盘协议(Alacritty 引擎)。点击 TUI 时光标进 app,Shift+click 仍可选中文本。
  • MCP 浏览器契约:agent 自动发现单一 MCP 浏览器合约,所有操作有"redacted audit trail"。CLI horizon-browser 可跑 prompt 任务(README 这里被截断,完整语义以仓库 horizon-browser 子命令文档为准)。
  • 会话持久化 + 可选"恢复后自动横排"开关。
  • 语音输入(opt-in,on-device 听写):默认 push-to-talk 键是 F9,或用顶栏麦克风;README 明示"Nothing leaves the machine"。
  • 远程主机发现:Ctrl+Shift+H 从 SSH config 与 Tailscale 自动发现主机,支持 user@filter 语法覆盖 SSH 用户。
  • OSC 8 超链接 + Ctrl+click URL/文件路径 → 直接交互。
  • 设置编辑:Ctrl+Shift+, 打开 ~/.horizon/config.yaml 作为侧面板,带 YAML 高亮与实时预览;主题 light/dark/auto 切换即时生效。

5. 典型适用场景

  • 多仓同时并行:后端 / 前端 / 基础设施三个 workspace 各占一色,横排或叠放自定,缩略图与小地图找得到。
  • 多 agent 协作:Claude + Codex + Grok + OpenCode 四个 TUI 同画布并排,共享同一 browser 面板做手动点击与 agent 自动化的接续。
  • 长时运维:早上 ssh 到生产看一眼日志,中午关 Horizon,下午打开,滚动历史还在。
  • 不写配置就能起步:不想维护 tmuxinator / zellij 配置的用户,直接 Ctrl+双击 → 选 Shell → 开工。

6. 坑与注意

  • ⚠️ 平台 / GPU 要求:wgpu 后端对老旧/集显兼容性参差,GPU 驱动异常的机器可能回退不到软渲染(README 没明确回退路径,出问题先更新 GPU 驱动)。
  • ⚠️ alacritty 引擎的局限:鼠标协议、Shift+click 选择文本的行为依赖 Alacritty 兼容层;少数老旧 TUI 应用可能渲染异常,先在单 panel 试。
  • ⚠️ agent panel 与 CLI 版本强绑定:Claude Code / Codex / OpenCode CLI 更新快,Horizon 集成面板以"CLI 自身支持会话恢复"为前提 — CLI 升级后若不再兼容,resume 行为可能变。
  • ⚠️ 浏览器面板共享语义:画布上 Chromium/Firefox/Safari 是"活动页面"概念,你与 agent 同时操控同一页面,需明确"谁控制谁"的工作流,否则易撞车。
  • ⚠️ 语音输入是 opt-in:默认关闭;开启后是 on-device,但仍需授权麦克风权限。Headless 服务器无麦克风就别开。
  • ⚠️ 无 release tag 时谨慎:本次抓取时 README 未直接暴露具体版本号,下载前请到 https://github.com/peters/horizon/releases 确认;AGENTS.md 提到"prefer latest non-prerelease tag"。

7. 与同类对比

工具 模型 持久化 多 agent 并排 学习曲线
peters/horizon 无限画布 + workspace + preset session/panel/scrollback 全部持久 一类(coding agent TUI 直挂) 低(无配置起步)
tmux + 终端多 tab 标签 + 嵌套窗口 server 后台持久 需手工拼布局
zellij / wezterm 标签 + 平铺 会话级 一般不做 agent 集成
VS Code / Cursor 多窗口 GUI IDE workspace 状态保存 弱(主要靠内置 terminal) 高(整个 IDE)

定位:不是 IDE 的替代品,而是"terminal 会话的画布"。如果你 80% 时间在命令行 + agent TUI,而不是 IDE 内编辑代码,Horizon 是比 tmux 更现代、比 IDE 更轻量的中间地带。

8. 一句话推荐结论

如果你的痛点是"多项目多 agent 切换时上下文老丢",Horizon 是当前 Rust 生态里对这类痛点投入最完整的画布型终端 — 下载即用、五分钟上手、关掉再开不丢任何东西。


spark · 2026-09-07 · 来源:GitHub README + AGENTS.md(HTTP 200,2026-09-07 07:33 UTC 抓取)+ Hacker News Show HN(47416227,2026-04)+ web_search 补充。版本号未在 README 直接暴露,以 Releases 页为准。