简介
如果你正在 tmux 中运行 Claude Code 或 Codex,你大概经历过这种情况:
你想一边在编辑器中阅读代码,一边给出指令,但每次都不得不按 Cmd+Tab 切回终端。
AI 询问"1. 是 / 2. 否"时,你只是为了输入 1 就得切换回终端。
同时并行运行多个 Claude 或 Codex 会话时,很难追踪每个面板当前处于什么状态。
这些细碎的上下文切换不断累积,反复打断你的思路,压力大得出乎意料。
为了解决这个问题,我开发了一款名为 unitmux 的桌面应用。
什么是 unitmux?
这是一款桌面应用,让你可以通过一个浮动窗口,直接向运行在 tmux 中的 Claude Code 或 Codex 发送指令。
它始终保持置顶显示,自动检测 tmux 面板,彻底消除了切换焦点到终端的需要。你可以在不打断编辑器工作流的情况下向 AI 发出指令。
除了 claude 和 codex 之外,它还能检测运行 ai 包装命令的面板。
一行命令即可安装:
brew install --cask yugo-ibuki/tap/unitmux
功能特性
一键响应选项
当 Claude Code 或 Codex 呈现编号选项时,unitmux 会自动显示可点击的按钮。
你也可以通过 Ctrl+1-Ctrl+9 键盘快捷键即时响应,甚至不需要伸手去够鼠标。
仅仅为了输入一个字符就要切换到终端,这个小烦恼就此消失。
更新:选项检测现在支持简单编号列表之外的多种模式:带标记前缀的选项(❯、›、>、●)、冒号分隔的内联选项(如 1: staging 2: production 3: dev),以及包含完整命令文本的多行标签(如权限提示)。
它还能智能过滤"How is Claude doing?"等会话评分反馈和 CLI 页脚,避免出现误判。
Codex 支持也得到了改进。unitmux 能检测 Codex 风格的字母选项,并针对 Codex 提示使用独立的启发式规则,涵盖英语和日语选项上下文。
全局快捷键:随时随地访问
按 Cmd+Shift+H 可从任意应用切换焦点回 unitmux。
焦点会直接落在文本区域,你可以立即开始输入,按 Cmd+Enter 发送。
在 Chrome 中阅读文档的同时向 AI 发出指令,现在只需几秒钟,几乎无缝衔接。
更新:焦点快捷键现在可以在侧边栏设置中完全自定义。从其他应用触发时还会自动展开紧凑模式,让你立刻进入输入状态。
会话状态一目了然
面板以标签页形式列出,彩色圆点指示当前状态:
-
绿色:等待输入
-
橙色:处理中
-
灰色:等待响应 / 有选项待处理
每个面板还会显示工具的小徽标:
-
CC:Claude Code
-
CX:Codex
并行运行多个 Claude 或 Codex 会话时,你再也不用猜"那个面板进行到哪一步了?"
使用 Cmd+↑ / Cmd+↓ 或 Ctrl+H / Ctrl+L 在面板间切换。
更新:面板现在按 tmux 会话分组显示在标题栏中,当你在不同会话中有大量面板时,导航更加便捷。也可通过 Ctrl+Cmd+H / Ctrl+Cmd+L 进行跨会话导航。
状态检测已得到优化。对于 Claude Code,unitmux 读取面板标题中的空闲标记和旋转字符,并解析最近的面板输出以识别等待提示和选项。Codex 状态检测使用其专属的启发式规则,例如 Working、Thinking、Executing 和 enter to send。
unitmux 还能检测运行 ai 包装命令的面板,以及 claude 和 codex。
弹窗中的 Git 操作
Ctrl+G 可打开 Git 操作弹窗。
它只涵盖简单操作,但在个人开发早期阶段需要频繁提交时,能够流畅地完成这些操作确实是一大优势。
你可以:
-
暂存所有更改
-
用 Space 选择单个文件
-
用 Enter 暂存选中的文件
-
输入提交信息并按 Enter
-
用
Ctrl+P推送
弹窗支持 vim 风格的导航,使用 j / k。
在 AI 完成一块工作后立即提交,无需切回终端,这种体验令人暗暗满足。
更新:Git 弹窗现在在标题栏显示当前分支名称,并展示详细的 Git 状态:已修改文件、未追踪文件、已删除文件等。它还会在每次操作后自动刷新面板详情,并显示 2 秒后自动消失的成功/错误反馈。
Git Diff 查看器
Ctrl+F 可打开 Git diff 查看器。
这与 Git 操作弹窗是分开的。Git 弹窗用于暂存、提交和推送,diff 查看器则用于快速检查变更内容。
它支持:
-
未暂存 / 已暂存 diff 切换
-
文件侧边栏
-
目录折叠
-
可折叠的文件区块
-
Hunk 导航
-
Vim 风格滚动
常用快捷键:
-
j/k:滚动 -
d/u:半页滚动 -
g/G:跳到顶部 / 底部 -
]c/[c:下一个 / 上一个 hunk -
s:切换已暂存 / 未暂存 -
q:关闭
这让你无需切回终端运行 git diff 就能轻松审查 AI 生成的变更。
半透明窗口叠加在编辑器上
你可以通过滑块将窗口不透明度调整为 50% 到 100%。
结合"始终置顶"功能,你可以透过窗口看到编辑器中的代码,同时向 AI 发出指令。
你可以在阅读代码的同时关注 Claude 或 Codex 的活动状态。
配合 Cmd+Shift+H,你可以将焦点切换到应用,编写提示或选择选项,全程无需动鼠标。
查看当前会话内容
Ctrl+P 让你无需查看终端就能检查会话对话内容。
当你只想看看之前问了什么问题,或者瞥一眼最后的回答时,这个功能让你快速查看后即可投入下一个提示。
Agent 运行时会产生大量日志输出,但你真正想看的通常只是最终结论。能够快速查看你关心的部分,然后立刻进入下一个提示,这才是真正的价值所在。
更新:预览叠加层现在有两种模式。
第一次按 Ctrl+P 显示静态快照。在叠加层打开时再次按 Ctrl+P 可切换到实时流式模式,该模式每 500ms 轮询一次面板内容,并显示 LIVE 徽标。
预览内部支持 Vim 风格导航:
-
j/k:逐行滚动 -
d/u:半页滚动 -
g/G:跳到顶部 / 底部
在可用时,unitmux 还会以 ~/.claude 下的 Claude JSONL 对话历史补充 tmux 面板输出,使更早的对话上下文更易于查阅。
图片附件
可通过 + 按钮附加图片,或将图片拖放到窗口上。
缩略图会在 unitmux 中显示,图片路径通过括号粘贴的方式发送给 AI CLI,以便 CLI 将其识别为图片输入。
这在你想就截图、UI 状态、图表或本地图片文件进行提问,而不想手动在终端中输入路径时非常实用。
紧凑模式
Ctrl+W 可将窗口收缩为约 70px 高度的最小化状态栏。
当你希望 unitmux 保持可见但又不占用太多屏幕空间时,这个功能非常有用。
展开时会恢复之前的窗口大小和位置。快捷键可自定义。
会话详情叠加层
Ctrl+D 显示所选面板的详细信息:
-
模型名称
-
会话 ID
-
Git 分支
-
Git 状态
-
工作目录
-
面板尺寸
-
启动命令
-
PID / tty
还包含一个带确认对话框的关闭按钮,用于终止面板。
创建新会话
unitmux 可以从 UI 创建新的 Claude 或 Codex 会话。
有两种工作流:
-
Ctrl+N:快速向当前 tmux 会话添加一个 Claude 会话 -
Ctrl+Shift+N:打开对话框以创建新的 tmux 会话,或向现有会话添加 Claude/Codex 窗口
在对话框中,你可以选择目标 tmux 会话,并在 claude 和 codex 之间进行选择。
Shell 模式
Ctrl+B 可切换 Shell 模式。
在 Shell 模式下,unitmux 将输入发送到专用的 unitmux-shell tmux 窗口,而非所选的 AI 面板。
Shell 面板按需创建,使用你的默认 Shell。如果它被手动关闭,unitmux 会在下次发送或预览时重新创建它。
预览和实时流式功能同样适用于 Shell 输出。
当你想在 AI 会话附近运行快速命令而无需切回终端时,这个功能十分顺手。
侧边栏设置面板
可从标题栏访问专用设置面板,提供以下选项:
-
始终置顶开关
-
不透明度滑块
-
主题切换:深色 / 浅色
-
发送键配置:
Enter或Cmd+Enter -
Vim 模式开关
-
字体大小控制
-
紧凑、预览、详情、Git、diff 和焦点的可自定义快捷键
-
选项修饰符:
Ctrl或Cmd -
Slash 命令管理器
Slash 命令与 Skills 集成
在输入区域输入 / 可筛选并从已注册的命令中进行选择。
用户自定义的斜杠命令可在侧边栏中进行管理。你可以创建、编辑和删除可复用的命令,例如 /fix、/review 或 /test。
此外,unitmux 还会自动发现以下来源中的 skill 命令:
-
~/.claude/skills/ -
所选项目中的
.claude/skills/
它会解析 SKILL.md 文件以获取名称和描述,并将其作为只读的斜杠命令候选项展示。
输入历史
最近 10 条不重复的输入记录会被保存。
在文本输入框中使用 ↑ / ↓ 进行导航。
向上导航时,当前草稿内容会被保留,返回时自动恢复。
Vim 模式
启用后,unitmux 会在你的文本前发送 Escape 然后是 i,以进入插入模式。
这在你使用 Claude CLI 的 vim 编辑器模式时不小心将面板留在普通模式下时非常有用。
在响应选择项时会跳过此操作,因为单个数字选项可以直接使用。
帮助覆盖层
Ctrl+, 可打开一个快速参考面板,按类别整理了所有键盘快捷键。
它支持与其他覆盖层相同的 vim 风格滚动操作。
安装与首次启动
brew install --cask yugo-ibuki/tap/unitmux
如果你希望通过 DMG 安装,请从 Releases 页面下载。
如果首次启动时出现 Gatekeeper 警告,请前往:
系统设置 → 隐私与安全性 → 仍要打开
结语
我为那些在 tmux 中使用 AI 编程助手、并希望简化"终端窗口太多"这一困境的人构建了这款工具。
核心设计理念是"简单,再简单"。
无需多余的鼠标操作。所有功能均围绕类 Vim 快捷键设计,使用起来自然流畅。
unitmux 并不试图取代 tmux 或成为一个完整的终端管理器,而是专注于让提示词输入和 Agent 监控尽可能省力。
tmux 依然是底层基础,unitmux 只是剥离了围绕它的上下文切换。
欢迎反馈与 PR。
点个 star 会给我很大的动力!
注意事项
Mac 是主要支持的平台。
Linux 构建版本存在,但 Linux 支持尚未经过充分验证,请知悉。
此外,由于我主要使用 Claude Code,Codex 的支持可能仍存在不足之处。
如需进一步操作,你可以考虑屏蔽该用户和/或举报滥用行为