11 KiB
Этот перевод создан Claude. Если у вас есть предложения по улучшению, откройте PR.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe
cmux
Терминал macOS на базе Ghostty с вертикальными вкладками и уведомлениями для AI-агентов программирования
Возможности
- Вертикальные вкладки — Боковая панель показывает ветку git, рабочий каталог, прослушиваемые порты и текст последнего уведомления
- Кольца уведомлений — Панели получают синее кольцо, а вкладки подсвечиваются, когда AI-агенты (Claude Code, OpenCode) нуждаются в вашем внимании
- Панель уведомлений — Просматривайте все ожидающие уведомления в одном месте, переходите к последнему непрочитанному
- Разделённые панели — Горизонтальное и вертикальное разделение
- Встроенный браузер — Разделите браузер рядом с терминалом со скриптуемым API, портированным из agent-browser
- Скриптуемость — CLI и socket API для создания рабочих пространств, разделения панелей, отправки нажатий клавиш и автоматизации браузера
- Нативное приложение macOS — Создано на Swift и AppKit, не Electron. Быстрый запуск, низкое потребление памяти.
- Совместимость с Ghostty — Читает вашу существующую конфигурацию
~/.config/ghostty/configдля тем, шрифтов и цветов - Ускорение GPU — На базе libghostty для плавного рендеринга
Установка
DMG (рекомендуется)
Откройте файл .dmg и перетащите cmux в папку «Программы». cmux автоматически обновляется через Sparkle, поэтому скачивание требуется только один раз.
Homebrew
brew tap manaflow-ai/cmux
brew install --cask cmux
Для обновления в дальнейшем:
brew upgrade --cask cmux
При первом запуске macOS может попросить вас подтвердить открытие приложения от идентифицированного разработчика. Нажмите Открыть, чтобы продолжить.
Почему cmux?
Я запускаю множество сессий Claude Code и Codex параллельно. Я использовал Ghostty с кучей разделённых панелей и полагался на нативные уведомления macOS, чтобы знать, когда агент нуждается во мне. Но тело уведомления Claude Code — это всегда просто «Claude is waiting for your input» без контекста, а при достаточном количестве открытых вкладок я даже не мог прочитать заголовки.
Я попробовал несколько оркестраторов для кодирования, но большинство из них были приложениями Electron/Tauri, и их производительность меня раздражала. К тому же я просто предпочитаю терминал, поскольку GUI-оркестраторы привязывают вас к своему рабочему процессу. Поэтому я создал cmux как нативное приложение macOS на Swift/AppKit. Оно использует libghostty для рендеринга терминала и читает вашу существующую конфигурацию Ghostty для тем, шрифтов и цветов.
Основные дополнения — это боковая панель и система уведомлений. Боковая панель имеет вертикальные вкладки, которые показывают ветку git, рабочий каталог, прослушиваемые порты и текст последнего уведомления для каждого рабочего пространства. Система уведомлений перехватывает терминальные последовательности (OSC 9/99/777) и имеет CLI (cmux notify), который можно подключить к хукам агентов для Claude Code, OpenCode и т.д. Когда агент ожидает, его панель получает синее кольцо, а вкладка подсвечивается в боковой панели, так что я могу определить, какой из них нуждается во мне, среди разделений и вкладок. Cmd+Shift+U переходит к последнему непрочитанному.
Встроенный браузер имеет скриптуемый API, портированный из agent-browser. Агенты могут делать снимок дерева доступности, получать ссылки на элементы, кликать, заполнять формы и выполнять JS. Вы можете разделить панель браузера рядом с терминалом и позволить Claude Code взаимодействовать с вашим сервером разработки напрямую.
Всё скриптуемо через CLI и socket API — создание рабочих пространств/вкладок, разделение панелей, отправка нажатий клавиш, открытие URL в браузере.
Сочетания Клавиш
Рабочие пространства
| Сочетание | Действие |
|---|---|
| ⌘ N | Новое рабочее пространство |
| ⌘ 1–8 | Перейти к рабочему пространству 1–8 |
| ⌘ 9 | Перейти к последнему рабочему пространству |
| ⌃ ⌘ ] | Следующее рабочее пространство |
| ⌃ ⌘ [ | Предыдущее рабочее пространство |
| ⌘ ⇧ W | Закрыть рабочее пространство |
| ⌘ B | Переключить боковую панель |
Поверхности
| Сочетание | Действие |
|---|---|
| ⌘ T | Новая поверхность |
| ⌘ ⇧ ] | Следующая поверхность |
| ⌘ ⇧ [ | Предыдущая поверхность |
| ⌃ Tab | Следующая поверхность |
| ⌃ ⇧ Tab | Предыдущая поверхность |
| ⌃ 1–8 | Перейти к поверхности 1–8 |
| ⌃ 9 | Перейти к последней поверхности |
| ⌘ W | Закрыть поверхность |
Разделённые Панели
| Сочетание | Действие |
|---|---|
| ⌘ D | Разделить вправо |
| ⌘ ⇧ D | Разделить вниз |
| ⌥ ⌘ ← → ↑ ↓ | Фокус панели по направлению |
| ⌘ ⇧ H | Мигнуть фокусированной панелью |
Браузер
| Сочетание | Действие |
|---|---|
| ⌘ ⇧ L | Открыть браузер в разделении |
| ⌘ L | Фокус на адресной строке |
| ⌘ [ | Назад |
| ⌘ ] | Вперёд |
| ⌘ R | Перезагрузить страницу |
| ⌥ ⌘ I | Открыть Инструменты Разработчика |
Уведомления
| Сочетание | Действие |
|---|---|
| ⌘ I | Показать панель уведомлений |
| ⌘ ⇧ U | Перейти к последнему непрочитанному |
Поиск
| Сочетание | Действие |
|---|---|
| ⌘ F | Поиск |
| ⌘ G / ⌘ ⇧ G | Найти следующий / предыдущий |
| ⌘ ⇧ F | Скрыть панель поиска |
| ⌘ E | Использовать выделение для поиска |
Терминал
| Сочетание | Действие |
|---|---|
| ⌘ K | Очистить scrollback |
| ⌘ C | Копировать (с выделением) |
| ⌘ V | Вставить |
| ⌘ + / ⌘ - | Увеличить / уменьшить размер шрифта |
| ⌘ 0 | Сбросить размер шрифта |
Окно
| Сочетание | Действие |
|---|---|
| ⌘ ⇧ N | Новое окно |
| ⌘ , | Настройки |
| ⌘ ⇧ , | Перезагрузить конфигурацию |
| ⌘ Q | Выход |
Лицензия
Этот проект лицензирован под GNU Affero General Public License v3.0 или более поздней версии (AGPL-3.0-or-later).
Полный текст см. в файле LICENSE.