本附录对 Herdr 和 tmux 进行全面对比,帮助 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 增强开发工作流]
功能矩阵对比
基础终端功能
| 窗格分割 |
✅ |
✅ |
水平/垂直分割 |
| Tab/窗口管理 |
✅ |
✅ |
创建、切换、命名 |
| Session 持久化 |
✅ |
✅ |
detach/attach |
| 鼠标支持 |
✅ |
✅ |
点击切换、拖拽调整大小 |
| 滚动回滚 |
✅ |
✅ |
Herdr 需启用 pane_history |
| 复制模式 |
✅ |
✅ |
— |
| 状态栏定制 |
✅ |
✅ |
— |
| 弹出窗口 |
✅ (popup) |
✅ (popup) |
tmux 3.2+ |
| 脚本化 |
✅ (tmux CLI) |
✅ (herdr CLI + Socket API) |
— |
高级终端功能
| 远程 attach |
❌ |
✅ |
Herdr 内建 SSH 远程管理 |
| 终端模拟 |
部分 |
完整 |
Herdr 内建终端模拟器 |
| 图片显示 |
❌ |
✅ (实验性) |
Kitty 图形协议 |
| 主题系统 |
有限 |
丰富 |
内置 10+ 主题,支持自定义 |
| 配置热重载 |
✅ |
✅ |
— |
| 布局保存/恢复 |
✅ (插件) |
✅ (内建) |
tmux 需要 resurrect 插件 |
Agent 与 AI 功能
| Agent 状态检测 |
❌ |
✅ |
自动检测 Idle/Running/Done/Blocked |
| Agent 编排 |
❌ |
✅ |
串行/并行/链式编排 |
| 生命周期钩子 |
❌ |
✅ |
on_start/on_done/on_block |
| Agent 命名管理 |
❌ |
✅ |
— |
| Worktree 集成 |
❌ |
✅ |
多 Agent 并行开发 |
| 检测清单系统 |
❌ |
✅ |
可更新 + 本地覆盖 |
| Agent 调试工具 |
❌ |
✅ |
herdr agent explain |
| 侧边栏状态面板 |
❌ |
✅ |
实时 Agent 状态 |
生态系统
| 包管理器 |
系统/源码编译 |
Homebrew/mise/Nix/脚本 |
| 插件管理 |
TPM (社区) |
内建 |
| 文档 |
man page + 社区 wiki |
官方文档 + 本书 |
| 社区规模 |
庞大 |
增长中 |
| 配置分享 |
dotfiles 仓库 |
dotfiles + 项目 .herdr/ |
键绑定迁移对照表
前缀键
| 前缀键 |
Ctrl+b |
Ctrl+a |
可配置为 Ctrl+b |
窗格操作
| 水平分割 |
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 = |
窗口/Tab 操作
| 新建窗口 |
prefix c |
prefix t |
| 关闭窗口 |
prefix & |
prefix w |
| 下一个窗口 |
prefix n |
导航 n / prefix n |
| 上一个窗口 |
prefix p |
导航 p / prefix p |
| 跳转窗口 N |
prefix N |
导航 N |
| 重命名窗口 |
prefix , |
prefix , |
Session 操作
| 分离 |
prefix d |
prefix d |
| 列表 |
prefix s |
prefix s |
| 重命名 |
prefix $ |
prefix $ |
复制模式
| 进入复制模式 |
prefix [ |
prefix [ |
| 开始选择 |
space |
space |
| 复制选择 |
enter |
enter |
| 粘贴 |
prefix ] |
prefix ] |
如果你从 tmux 迁移,可以在 Herdr 中启用兼容配置,保持大部分 tmux 键绑定不变:
从 tmux 迁移到 Herdr 的完整路径
第 1 步:安装 Herdr(不影响 tmux)
# Herdr 和 tmux 可以共存,无需卸载 tmux
brew install herdr
herdr --version
herdr doctor
第 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 = "$"
第 3 步:创建第一个 Workspace
# 在你的项目目录中初始化
cd ~/projects/my-project
herdr init
# attach 到 workspace
herdr attach
第 4 步:逐步引入 Agent
# 先用 Herdr 像 tmux 一样工作
# 手动创建窗格、分割、运行命令...
# 然后尝试启动一个 Agent
herdr agent start coder --task "实现用户登录功能"
# 观察 Agent 状态
herdr agent explain coder
第 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
第 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 成为备用"]
何时选 tmux、何时选 Herdr
选择 tmux 的场景
| 纯终端复用需求 |
不需要 AI Agent 功能 |
| 极低资源环境 |
tmux 占用更少内存 |
| 需要最大兼容性 |
任何 Unix 系统都能运行 |
| 已有成熟的 tmux 工作流 |
迁移成本高于收益 |
| 服务器管理(非开发) |
只需要 session 持久化 |
选择 Herdr 的场景
| 使用 AI Agent 辅助开发 |
Herdr 的核心优势 |
| 多 Agent 并行开发 |
内建 worktree 和编排能力 |
| 需要自动化代码审查 |
生命周期钩子 + Agent 链 |
| 远程 AI 开发 |
内建远程 attach 和 SSH 管理 |
| 团队协作 |
配置共享和标准化工作流 |
| 新手入门 |
导航模式更易上手 |
两者结合使用
# 在 tmux 中运行 Herdr(可行但不推荐)
# Herdr 会检测到嵌套终端并发出警告
# 更好的做法:选择一个作为主力
# 用 Herdr 替代 tmux 的日常使用
# 保留 tmux 作为 SSH 到不支持 Herdr 的服务器的方案
嵌套使用注意:在 tmux 中运行 Herdr 时,前缀键会冲突。如果必须嵌套,设置不同的前缀键:
# Herdr 配置(当在 tmux 中运行时)
[keys]
prefix = "Ctrl+a" # tmux 使用 Ctrl+b,不冲突
在 tmux 中运行 Herdr(嵌套场景)
某些场景下你可能需要在 tmux session 中运行 Herdr(例如服务器上已有 tmux 持久化 session)。
嵌套配置建议
# Herdr 嵌套在 tmux 中时的配置
[keys]
# 使用不同于 tmux 的前缀键
prefix = "Ctrl+a"
[terminal]
# 禁用鼠标捕获,避免与 tmux 冲突
# mouse_capture = false
[ui]
# 减小侧边栏宽度,适应 tmux 窗格
sidebar_width = 20
# 关闭窗格边框,减少视觉噪音
pane_borders = false
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"'
嵌套使用的限制
| 双重前缀键 |
需要按两次前缀才能操作 tmux |
尽量减少 tmux 层操作 |
| 鼠标事件冲突 |
只有一层能接收鼠标 |
按需切换 mouse_capture |
| 颜色渲染 |
终端可能降级颜色 |
确保两者都支持 256 色 |
| 窗格尺寸 |
嵌套后可用空间减少 |
使用更大的终端窗口 |
| 复制模式 |
只有一层的复制模式可用 |
使用外层的复制模式 |
如果可能,推荐将 Herdr 直接运行在裸终端中(不通过 tmux),以获得最佳体验。tmux 的 session 持久化能力 Herdr 已内建。
社区与生态对比
| 开源时间 |
2007 年 |
2025 年 |
| GitHub Stars |
35k+ |
快速增长中 |
| 主要语言 |
C |
Rust |
| 配置语言 |
tmux 命令语法 |
TOML |
| 插件生态 |
TPM + 社区插件 |
内建插件系统 + Socket API |
| 文档 |
man page 为主 |
官方文档 + 社区教程 |
| 社区平台 |
IRC, mailing list |
Discord, GitHub Discussions |
| IDE 集成 |
通过终端模拟器间接集成 |
原生 IDE 插件(计划中) |
| 商业支持 |
无 |
有(企业版) |
tmux 的优势总结
- ✅ 极致稳定:15+ 年的打磨,几乎无 bug
- ✅ 轻量高效:极低的资源占用
- ✅ 广泛部署:几乎所有 Unix 系统都有
- ✅ 社区庞大:大量教程、配置和插件
- ✅ 可编程性:强大的脚本能力
Herdr 的优势总结
- ✅ AI 原生:为 Agent 协作而设计
- ✅ 状态感知:自动检测 Agent 状态
- ✅ 编排能力:内建多 Agent 编排
- ✅ 远程友好:内建 SSH 和远程 attach
- ✅ 易上手:导航模式 + 友好配置
- ✅ 现代设计:TOML 配置、主题系统、插件管理
小结
tmux 和 Herdr 并非简单的替代关系:
- tmux 是成熟的通用终端复用器,适合所有终端用户
- Herdr 是面向 AI Agent 时代的终端工作空间,为开发者设计
如果你正在使用 AI Agent 进行开发,Herdr 提供了 tmux 无法比拟的编排和状态管理能力。如果你只需要基础的终端复用,tmux 依然是可靠的选择。
对于大多数正在使用 AI 辅助开发的程序员来说,从 tmux 迁移到 Herdr 是一个值得投入的决策——你不仅获得了终端复用能力,还获得了完整的 Agent 协作工作流。