21  附录C Herdr vs tmux 完整对比

本附录对 Herdr 和 tmux 进行全面对比,帮助 tmux 用户快速上手 Herdr,并为工具选择提供参考。


21.1 设计理念对比

维度 tmux Herdr
核心定位 终端复用器 多 Agent 协作工作空间
设计哲学 通用、可编程的终端管理 为 AI Agent 协作优化的终端环境
目标用户 所有终端用户 AI 辅助开发的程序员
Agent 支持 无(仅运行进程) 一等公民(状态检测、编排、自动化)
扩展性 通过脚本和插件 通过插件 + Socket API + 配置系统
学习曲线 中等(需要记忆前缀键) 低~中(导航模式降低门槛)
生态成熟度 非常成熟(15+ 年历史) 新兴但快速增长

flowchart TB
    subgraph tmux哲学
        T1[终端复用] --> T2[持久化 session]
        T2 --> T3[脚本自动化]
    end
    
    subgraph Herdr哲学
        H1[Agent 协作] --> H2[状态感知 + 编排]
        H2 --> H3[人机协同开发]
        H3 --> H4[自动化工作流]
    end
    
    tmux哲学 --> M[传统终端工作流]
    Herdr哲学 --> N[AI 增强开发工作流]


21.2 功能矩阵对比

21.2.1 基础终端功能

功能 tmux Herdr 说明
窗格分割 水平/垂直分割
Tab/窗口管理 创建、切换、命名
Session 持久化 detach/attach
鼠标支持 点击切换、拖拽调整大小
滚动回滚 Herdr 需启用 pane_history
复制模式
状态栏定制
弹出窗口 ✅ (popup) ✅ (popup) tmux 3.2+
脚本化 ✅ (tmux CLI) ✅ (herdr CLI + Socket API)

21.2.2 高级终端功能

功能 tmux Herdr 说明
远程 attach Herdr 内建 SSH 远程管理
终端模拟 部分 完整 Herdr 内建终端模拟器
图片显示 ✅ (实验性) Kitty 图形协议
主题系统 有限 丰富 内置 10+ 主题,支持自定义
配置热重载
布局保存/恢复 ✅ (插件) ✅ (内建) tmux 需要 resurrect 插件

21.2.3 Agent 与 AI 功能

功能 tmux Herdr 说明
Agent 状态检测 自动检测 Idle/Running/Done/Blocked
Agent 编排 串行/并行/链式编排
生命周期钩子 on_start/on_done/on_block
Agent 命名管理
Worktree 集成 多 Agent 并行开发
检测清单系统 可更新 + 本地覆盖
Agent 调试工具 herdr agent explain
侧边栏状态面板 实时 Agent 状态

21.2.4 生态系统

方面 tmux Herdr
包管理器 系统/源码编译 Homebrew/mise/Nix/脚本
插件管理 TPM (社区) 内建
文档 man page + 社区 wiki 官方文档 + 本书
社区规模 庞大 增长中
配置分享 dotfiles 仓库 dotfiles + 项目 .herdr/

21.3 键绑定迁移对照表

21.3.1 前缀键

操作 tmux Herdr 默认 Herdr tmux 兼容
前缀键 Ctrl+b Ctrl+a 可配置为 Ctrl+b

21.3.2 窗格操作

操作 tmux Herdr 导航模式 Herdr 前缀模式
水平分割 prefix " prefix h
垂直分割 prefix % prefix v
关闭窗格 prefix x prefix x
最大化 prefix z prefix z
上移窗格 prefix ↑ k prefix k
下移窗格 prefix ↓ j prefix j
左移窗格 prefix ← h prefix h
右移窗格 prefix → l prefix l
交换位置 prefix { / } prefix { / }
均分大小 prefix =(tmux 无默认) prefix =

21.3.3 窗口/Tab 操作

操作 tmux Herdr
新建窗口 prefix c prefix t
关闭窗口 prefix & prefix w
下一个窗口 prefix n 导航 n / prefix n
上一个窗口 prefix p 导航 p / prefix p
跳转窗口 N prefix N 导航 N
重命名窗口 prefix , prefix ,

21.3.4 Session 操作

操作 tmux Herdr
分离 prefix d prefix d
列表 prefix s prefix s
重命名 prefix $ prefix $

21.3.5 复制模式

操作 tmux Herdr
进入复制模式 prefix [ prefix [
开始选择 space space
复制选择 enter enter
粘贴 prefix ] prefix ]
Tip

如果你从 tmux 迁移,可以在 Herdr 中启用兼容配置,保持大部分 tmux 键绑定不变:

[keys]
prefix = "Ctrl+b"

21.4 从 tmux 迁移到 Herdr 的完整路径

21.4.1 第 1 步:安装 Herdr(不影响 tmux)

# Herdr 和 tmux 可以共存,无需卸载 tmux
brew install herdr
herdr --version
herdr doctor

21.4.2 第 2 步:配置 tmux 兼容键绑定

# ~/.config/herdr/config.toml

[keys]
prefix = "Ctrl+b"       # 使用 tmux 习惯的前缀键

[keys.prefix_mode]
new_pane = "\""          # tmux 水平分割
new_vpane = "%"          # tmux 垂直分割
close_pane = "x"
new_tab = "c"
close_tab = "&"
detach = "d"
list_sessions = "s"
rename_session = "$"

21.4.3 第 3 步:创建第一个 Workspace

# 在你的项目目录中初始化
cd ~/projects/my-project
herdr init

# attach 到 workspace
herdr attach

21.4.4 第 4 步:逐步引入 Agent

# 先用 Herdr 像 tmux 一样工作
# 手动创建窗格、分割、运行命令...

# 然后尝试启动一个 Agent
herdr agent start coder --task "实现用户登录功能"

# 观察 Agent 状态
herdr agent explain coder

21.4.5 第 5 步:体验多 Agent 编排

# 并行开发
herdr agent start frontend --cwd src/frontend
herdr agent start backend  --cwd src/backend

# 自动审查
herdr agent start reviewer --watch-panes frontend,backend --trigger done

21.4.6 第 6 步:完全迁移

# 将 tmux 配置中的自定义项迁移到 Herdr
# 1. 状态栏配置 → [ui] 配置
# 2. tmux 脚本 → herdr CLI 或 Socket API
# 3. TPM 插件 → herdr plugin

# 最终替换 tmux 别名(可选)
echo 'alias tx=herdr' >> ~/.zshrc

flowchart LR
    S1["安装 Herdr<br/>tmux 继续使用"] --> S2[配置兼容键绑定]
    S2 --> S3["创建 Workspace<br/>像 tmux 一样使用"]
    S3 --> S4["引入 Agent<br/>体验 AI 能力"]
    S4 --> S5["多 Agent 编排<br/>享受协作优势"]
    S5 --> S6["完全迁移<br/>tmux 成为备用"]


21.5 何时选 tmux、何时选 Herdr

21.5.1 选择 tmux 的场景

场景 原因
纯终端复用需求 不需要 AI Agent 功能
极低资源环境 tmux 占用更少内存
需要最大兼容性 任何 Unix 系统都能运行
已有成熟的 tmux 工作流 迁移成本高于收益
服务器管理(非开发) 只需要 session 持久化

21.5.2 选择 Herdr 的场景

场景 原因
使用 AI Agent 辅助开发 Herdr 的核心优势
多 Agent 并行开发 内建 worktree 和编排能力
需要自动化代码审查 生命周期钩子 + Agent 链
远程 AI 开发 内建远程 attach 和 SSH 管理
团队协作 配置共享和标准化工作流
新手入门 导航模式更易上手

21.5.3 两者结合使用

# 在 tmux 中运行 Herdr(可行但不推荐)
# Herdr 会检测到嵌套终端并发出警告

# 更好的做法:选择一个作为主力
# 用 Herdr 替代 tmux 的日常使用
# 保留 tmux 作为 SSH 到不支持 Herdr 的服务器的方案
Warning

嵌套使用注意:在 tmux 中运行 Herdr 时,前缀键会冲突。如果必须嵌套,设置不同的前缀键:

# Herdr 配置(当在 tmux 中运行时)
[keys]
prefix = "Ctrl+a"   # tmux 使用 Ctrl+b,不冲突

21.6 在 tmux 中运行 Herdr(嵌套场景)

某些场景下你可能需要在 tmux session 中运行 Herdr(例如服务器上已有 tmux 持久化 session)。

21.6.1 嵌套配置建议

# Herdr 嵌套在 tmux 中时的配置

[keys]
# 使用不同于 tmux 的前缀键
prefix = "Ctrl+a"

[terminal]
# 禁用鼠标捕获,避免与 tmux 冲突
# mouse_capture = false

[ui]
# 减小侧边栏宽度,适应 tmux 窗格
sidebar_width = 20
# 关闭窗格边框,减少视觉噪音
pane_borders = false

21.6.2 tmux 端的配合配置

# ~/.tmux.conf — 为嵌套 Herdr 优化

# 传递前缀键到 Herdr
set -g prefix C-b
# 不要拦截 Ctrl+a(留给 Herdr)

# 关闭 tmux 的鼠标(让 Herdr 处理)
if-shell '[ -n "$HERDR" ]' 'set -g mouse off' 'set -g mouse on'

# 自动检测 Herdr 并调整
set-hook -g pane-focus-in 'if-shell "[ -n \"$HERDR\" ]" "set -g mouse off" "set -g mouse on"'

21.6.3 嵌套使用的限制

限制 影响 变通方案
双重前缀键 需要按两次前缀才能操作 tmux 尽量减少 tmux 层操作
鼠标事件冲突 只有一层能接收鼠标 按需切换 mouse_capture
颜色渲染 终端可能降级颜色 确保两者都支持 256 色
窗格尺寸 嵌套后可用空间减少 使用更大的终端窗口
复制模式 只有一层的复制模式可用 使用外层的复制模式
Tip

如果可能,推荐将 Herdr 直接运行在裸终端中(不通过 tmux),以获得最佳体验。tmux 的 session 持久化能力 Herdr 已内建。


21.7 社区与生态对比

维度 tmux Herdr
开源时间 2007 年 2025 年
GitHub Stars 35k+ 快速增长中
主要语言 C Rust
配置语言 tmux 命令语法 TOML
插件生态 TPM + 社区插件 内建插件系统 + Socket API
文档 man page 为主 官方文档 + 社区教程
社区平台 IRC, mailing list Discord, GitHub Discussions
IDE 集成 通过终端模拟器间接集成 原生 IDE 插件(计划中)
商业支持 有(企业版)

21.7.1 tmux 的优势总结

  • 极致稳定:15+ 年的打磨,几乎无 bug
  • 轻量高效:极低的资源占用
  • 广泛部署:几乎所有 Unix 系统都有
  • 社区庞大:大量教程、配置和插件
  • 可编程性:强大的脚本能力

21.7.2 Herdr 的优势总结

  • AI 原生:为 Agent 协作而设计
  • 状态感知:自动检测 Agent 状态
  • 编排能力:内建多 Agent 编排
  • 远程友好:内建 SSH 和远程 attach
  • 易上手:导航模式 + 友好配置
  • 现代设计:TOML 配置、主题系统、插件管理

21.8 小结

tmux 和 Herdr 并非简单的替代关系:

  • tmux 是成熟的通用终端复用器,适合所有终端用户
  • Herdr 是面向 AI Agent 时代的终端工作空间,为开发者设计

如果你正在使用 AI Agent 进行开发,Herdr 提供了 tmux 无法比拟的编排和状态管理能力。如果你只需要基础的终端复用,tmux 依然是可靠的选择。

对于大多数正在使用 AI 辅助开发的程序员来说,从 tmux 迁移到 Herdr 是一个值得投入的决策——你不仅获得了终端复用能力,还获得了完整的 Agent 协作工作流。