Vibemux:一个可以“一心二用”的 GUI 终端复用器

查看 12|回复 0
作者:yoko19191   
最近 Vibe Coding 用多了之后,发现一个很现实的问题:窗口越来越多。
一个窗口跑 dev server ,一个窗口跑 test ,一个窗口开 Claude Code ,一个窗口开 Codex ,还有日志、git 、临时 shell 。
这些东西不是简单的“开几个 tab”就能解决的,因为很多任务是同时在动的:有的在编译,有的在等输入,有的跑挂了,有的只是暂时不用看但不能关。
我想要的其实是一个可以“一心二用”的终端工作台:
主窗口里专注当前任务,但旁边还能留一点余光,看别的 session 有没有变化;暂时不用看的任务可以挂起到后台,但进程继续跑。
这个想法很大程度上受到了 NekoApocalypse/Vibe99 的启发。Vibe99 里那个“一个主 pane + 多个侧边预览”的感觉我很喜欢,但是当时的技术栈是 Electron (PS:现在也改成了 tauri) 感觉太重,所以我做了一个自己的 GUI multiplexer ,叫 Vibemux 。同时增加了更多对 Keyboard 和 基础 AI 功能的支持。

https://github.com/yoko19191/vibemux
它和普通 Terminal / tmux / zellij 的区别大概是:
普通 Terminal 更关注 window / tab / pane 。
tmux 、zellij 这类工具很强,但很多状态还是藏在编号、status line 、命令和肌肉记忆里。
Vibemux 想把终端当成一组“活着的任务”来管理。每个 session 都有名字、颜色、工作目录、进程状态和注意力状态。它不是 tmux 的 GUI 套壳,而是一个面向本地多任务 / 多 agent 场景的 GUI multiplexer 。
目前已经有这些功能:
  • 横向 Deck:一个主 terminal 聚焦,其他 terminal 作为侧边预览保留上下文
  • Detach / Attach:把 session 挂起到底部栏,进程继续运行
  • detached 后会卸载 xterm 渲染实例,减少前端负担
  • attach 回来时恢复屏幕快照、replay 缓冲输出,再接实时输出
  • session 有颜色身份、名称、工作目录、运行状态
  • 支持 busy / done / failed / needs input 这类注意力提示
  • 键盘优先操作,默认 prefix 类似 tmux 的 Ctrl+B
  • 全局命令面板,macOS 是 Cmd+K ,Linux / Windows 是 Ctrl+K
  • 内置 Ask AI ,支持 OpenAI-compatible API ,可以附带 terminal 上下文提问
  • 支持 macOS / Linux / Windows
  • 技术栈是 Tauri + Rust + Svelte + xterm.js 。

    选择 Tauri 主要是想让它轻一点,不想为了一个终端工作台再塞一个完整 Chromium 大包。PTY 和 session 生命周期这块在 Rust 侧做,前端使用成熟的 xterm.js 完成终端渲染。
    后面 roadmap 里我比较想做的是和各种 Code CLI 更深一点的集成。比如 Claude Code / Codex 这类工具有时候会进入交互式状态,问你要不要继续、要不要确认命令。未来希望 Vibemux 能识别到这些状态,然后让对应 session 闪一下,或者在 detached bar 里显示“需要处理”,这样就不用每个窗口来回扫了。
    现在还是早期版本,很多地方肯定粗糙。
    欢迎试用、提 issue ,尤其想听听大家在多终端 / 多 agent / Vibe Coding 场景下到底怎么管理注意力。大家在使用 Terminal 时还有什么痛点。
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部