这个Skill解决什么具体问题

AI编码代理(如Claude、Cursor Agent)在运行长任务时,经常需要同时监控多个终端:编译输出、测试结果、日志流、文件监听。水平标签页随着会话增多会挤占代码区域,而通知容易遗漏。cmux用Ghostty的垂直标签+通知机制解决了这个痛点。你能直接学到的是:用Ghostty一个配置,让AI代理的每个任务拥有独立的垂直标签,并通过系统通知及时反馈结果

触发条件和适用场景

  • 你正在使用AI代理生成代码,代理需要多次运行编译/测试/部署命令。
  • 你需要同时查看多个长期运行的终端输出(比如watch模式、tail日志、Web本地服务)。
  • 你希望每个任务完成后能被立即感知,而不是手动切回每个标签刷屏。

完整Skill结构(GHOSTTY配置模板)

Ghostty的配置文件是一个纯文本的~/.config/ghostty/config,你可以直接复制以下内容。核心思想是:每个垂直标签对应一个AI子任务,并在任务结束时触发系统通知。

text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# ~/.config/ghostty/config
font-size = 14
font-family = "JetBrains Mono"

# 启用垂直标签(cmux的核心设计)
tab-position = left
tab-show-close-button = false
tab-overflow = "truncate"

# 让每个标签自动名称化,方便AI读取
window-title = "AI Session"

# 关键:通知绑定
# 当终端被标记为“完成”时,发送macOS通知
# 需要在shell里手动调用 notify-send 或 osascript

配合一个shell函数,让每个任务结束时自动发通知:

bash
1 2 3 4 5 6 7 8 9 10
# 放在 ~/.zshrc 或 ~/.bashrc
notify_when_done() {
    "$@"
    osascript -e "display notification \"任务完成\" with title \"${SHELL}\""
}

# 使用例子:
alias build="notify_when_done make"
alias test="notify_when_done go test ./..."
alias run="notify_when_done cargo run"

实际案例演示

差Prompt(低效方式)

帮我开三个终端,一个编译项目,一个跑测试,一个看日志。

结果:AI可能直接启动三个独立的Terminal窗口,你需要手动排列,且无法知道哪个完成了。

好Prompt(使用你的Skill)

你在我的Ghostty环境中工作。请分别为以下三个命令创建垂直标签,并在每个标签内执行对应的命令,确保标签标题能区分任务:

  • 编译: 运行 notify_when_done make
  • 测试: 运行 notify_when_done go test -v ./...
  • 日志: 运行 tail -f /var/log/app.log
    当任何一个 notify_when_done 触发通知,告诉我结果。

效果:AI通过Ghostty的ghostty quit-window-after-last-tab等内建机制(或自家Agent框架)创建垂直标签,你一眼看到任务名称,通知弹出后即时切换查看。

背后原理

为什么垂直标签比水平标签更适合AI代理?

  1. 屏幕利用率:垂直标签只占左侧窄条(约60px),而水平标签占顶栏(约30px),但垂直方向滚动文本更自然,且多标签时垂直排列更易阅读标题。
  2. 任务隔离:每个垂直标签独立环境,避免AI代理的多个命令互相干扰(比如环境变量冲突、进程抢占)。
  3. 通知与标签联动:通过osascript发通知时携带标签ID,你可以用ghostty --focus-tab <ID>快速定位——虽然cmux没直接提供,但你可以用AppleScript扩展。

个人观点:cmux用Swift重写Ghostty的一半功能有点过重。我更推荐直接使用原生Ghostty配置+少量shell扩展,因为Ghostty本身就支持tab-position = left。你真正需要的是一个任务-标签映射协议,让AI代理知道创建什么标签、怎么命名、怎么收通知。

复用和组合技巧

  1. 组合tmux:如果你已经在用tmux,可以在Ghostty内开一个全屏tmux会话,再用垂直标签切换不同tmux窗口?不推荐——嵌套会产生混乱。建议去其一。
  2. 与AI Agent框架集成:写一个Ghostty Skills的Prompt模板,让AI主动管理标签。

扩展用法:自动创建标签并执行

bash
1 2 3 4 5 6 7 8 9 10 11 12
# 函数:创建命名标签并执行命令
ghostty_new_tab() {
    local title="$1"
    shift
    # 使用 Ghostty CLI(需要安装 ghostty 在 PATH)
    ghostty launch --title "$title" -- bash -c "$*; osascript -e 'display notification \"$title 完成\" with title \"Task\"'"
}

# 示例
ghostty_new_tab "编译" "make"
ghostty_new_tab "测试" "go test ./..."
ghostty_new_tab "日志" "tail -f /var/log/system.log"

将这个函数放进你的AI代理工作流,它就能用一次对话开启多个垂直标签任务,并接收通知。

  1. 进一步改进:让每个标签执行完毕后自动关闭(ghostty close-tab),或动态调整顺序(暂不支持)。目前最好的替代是设置ghostty quit-after-last-window-closed为false,保持会话持久。

总结

cmux本质上是一个定制版Ghostty,但它的垂直标签+通知设计思路完全可以被普通Ghostty配置复刻。你不需要安装另一个终端模拟器,只需要把本文的配置模板和shell函数加入你的开发环境,就能让AI代理的终端管理效率提升一个台阶。下次让AI帮忙跑任务时,试试用垂直标签隔离,你会发现混乱消失了。