> Этот перевод создан Claude. Если у вас есть предложения по улучшению, откройте PR.
Терминал macOS на базе Ghostty с вертикальными вкладками и уведомлениями для AI-агентов программирования
English | 日本語 | Tiếng Việt | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | ភាសាខ្មែរ | Українська
▶ Демо-видео · The Zen of cmux
## Возможности
Кольца уведомленийПанели получают синее кольцо, а вкладки подсвечиваются, когда агенты программирования нуждаются в вашем внимании |
|
Панель уведомленийПросматривайте все ожидающие уведомления в одном месте, переходите к последнему непрочитанному |
|
Встроенный браузерРазделите браузер рядом с терминалом со скриптуемым API, портированным из agent-browser |
|
Вертикальные + горизонтальные вкладкиБоковая панель показывает ветку git, статус/номер связанного PR, рабочий каталог, прослушиваемые порты и текст последнего уведомления. Горизонтальное и вертикальное разделение. |
|
SSHcmux ssh user@remote создаёт рабочее пространство для удалённой машины. Панели браузера маршрутизируются через удалённую сеть, поэтому localhost просто работает. Перетащите изображение в удалённую сессию для загрузки через scp.
|
|
Claude Code Teamscmux claude-teams запускает режим напарника Claude Code одной командой. Напарники появляются как нативные разделения с метаданными в боковой панели и уведомлениями. tmux не требуется.
|
|
Откройте файл `.dmg` и перетащите cmux в папку «Программы». cmux автоматически обновляется через Sparkle, поэтому скачивание требуется только один раз.
### Homebrew
```bash
brew tap manaflow-ai/cmux
brew install --cask cmux
```
Для обновления в дальнейшем:
```bash
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, статус/номер связанного PR, рабочий каталог, прослушиваемые порты и текст последнего уведомления для каждого рабочего пространства. Система уведомлений перехватывает терминальные последовательности (OSC 9/99/777) и имеет CLI (`cmux notify`), который можно подключить к хукам агентов для Claude Code, OpenCode и т.д. Когда агент ожидает, его панель получает синее кольцо, а вкладка подсвечивается в боковой панели, так что я могу определить, какой из них нуждается во мне, среди разделений и вкладок. Cmd+Shift+U переходит к последнему непрочитанному.
Встроенный браузер имеет скриптуемый API, портированный из [agent-browser](https://github.com/vercel-labs/agent-browser). Агенты могут делать снимок дерева доступности, получать ссылки на элементы, кликать, заполнять формы и выполнять JS. Вы можете разделить панель браузера рядом с терминалом и позволить Claude Code взаимодействовать с вашим сервером разработки напрямую.
Всё скриптуемо через CLI и socket API — создание рабочих пространств/вкладок, разделение панелей, отправка нажатий клавиш, открытие URL в браузере.
## The Zen of cmux
cmux не навязывает разработчикам, как использовать свои инструменты. Это терминал и браузер с CLI, а остальное зависит от вас.
cmux — это примитив, а не решение. Он даёт вам терминал, браузер, уведомления, рабочие пространства, разделения, вкладки и CLI для управления всем этим. cmux не заставляет вас использовать агентов для кодирования определённым образом. То, что вы построите из этих примитивов, принадлежит вам.
Лучшие разработчики всегда создавали собственные инструменты. Никто ещё не нашёл лучший способ работы с агентами, и команды, создающие закрытые продукты, тоже этого не сделали. Разработчики, ближе всех к своим кодовым базам, найдут это первыми.
Дайте миллиону разработчиков композируемые примитивы, и они коллективно найдут наиболее эффективные рабочие процессы быстрее, чем любая продуктовая команда могла бы спроектировать сверху вниз.
## Документация
Подробнее о настройке cmux читайте в [нашей документации](https://cmux.com/docs/getting-started?utm_source=readme).
## Сочетания Клавиш
### Рабочие пространства
| Сочетание | Действие |
|----------|--------|
| ⌘ N | Новое рабочее пространство |
| ⌘ 1–8 | Перейти к рабочему пространству 1–8 |
| ⌘ 9 | Перейти к последнему рабочему пространству |
| ⌃ ⌘ ] | Следующее рабочее пространство |
| ⌃ ⌘ [ | Предыдущее рабочее пространство |
| ⌘ ⇧ W | Закрыть рабочее пространство |
| ⌘ ⇧ R | Переименовать рабочее пространство |
| ⌥ ⌘ E | Редактировать описание рабочего пространства |
| ⌘ B | Переключить боковую панель |
| ⌥ ⌘ B | Переключить правую боковую панель |
| ⌘ ⇧ E | Переключить фокус правой боковой панели |
### Поверхности
| Сочетание | Действие |
|----------|--------|
| ⌘ T | Новая поверхность |
| ⌘ ⇧ ] | Следующая поверхность |
| ⌘ ⇧ [ | Предыдущая поверхность |
| ⌃ Tab | Следующая поверхность |
| ⌃ ⇧ Tab | Предыдущая поверхность |
| ⌃ 1–8 | Перейти к поверхности 1–8 |
| ⌃ 9 | Перейти к последней поверхности |
| ⌘ W | Закрыть поверхность |
### Разделённые Панели
| Сочетание | Действие |
|----------|--------|
| ⌘ D | Разделить вправо |
| ⌘ ⇧ D | Разделить вниз |
| ⌥ ⌘ ← → ↑ ↓ | Фокус панели по направлению |
| ⌘ ⇧ H | Мигнуть фокусированной панелью |
### Браузер
Сочетания клавиш инструментов разработчика браузера соответствуют настройкам Safari по умолчанию и настраиваются в `Настройки → Сочетания клавиш`.
Сочетания клавиш навигации по палитре команд, включая ⌃ P, также настраиваются и могут быть очищены, чтобы нажатие клавиши достигало активного терминала.
| Сочетание | Действие |
|----------|--------|
| ⌘ ⇧ L | Открыть браузер в разделении |
| ⌘ L | Фокус на адресной строке |
| ⌘ [ | Назад |
| ⌘ ] | Вперёд |
| ⌘ R | Перезагрузить страницу |
| ⌥ ⌘ I | Переключить Инструменты Разработчика (по умолчанию Safari) |
| ⌥ ⌘ C | Показать Консоль JavaScript (по умолчанию Safari) |
### Уведомления
| Сочетание | Действие |
|----------|--------|
| ⌘ I | Показать панель уведомлений |
| ⌘ ⇧ U | Перейти к последнему непрочитанному |
| ⌥ ⌘ U | Переключить состояние «прочитано» для текущего элемента |
| ⌃ ⌘ U | Отметить текущий элемент как самый старый непрочитанный и перейти к следующему последнему непрочитанному |
### Поиск
| Сочетание | Действие |
|----------|--------|
| ⌘ F | Поиск |
| ⌘ ⇧ F | Поиск в каталоге |
| ⌘ G / ⌥ ⌘ G | Найти следующий / предыдущий |
| ⌥ ⌘ ⇧ F | Скрыть панель поиска |
| ⌘ E | Использовать выделение для поиска |
### Терминал
| Сочетание | Действие |
|----------|--------|
| ⌘ K | Очистить scrollback |
| ⌘ C | Копировать (с выделением) |
| ⌘ V | Вставить |
| ⌘ + / ⌘ - | Увеличить / уменьшить размер шрифта |
| ⌘ 0 | Сбросить размер шрифта |
### Окно
| Сочетание | Действие |
|----------|--------|
| ⌘ ⇧ N | Новое окно |
| ⌘ ⇧ O | Открыть предыдущую сессию заново |
| ⌘ , | Настройки |
| ⌘ ⇧ , | Перезагрузить конфигурацию |
| ⌘ Q | Выход |
## Ночные сборки
[Скачать cmux NIGHTLY](https://github.com/manaflow-ai/cmux/releases/download/nightly/cmux-nightly-macos.dmg)
cmux NIGHTLY — это отдельное приложение с собственным идентификатором пакета, поэтому оно работает параллельно со стабильной версией. Собирается автоматически из последнего коммита `main` и обновляется через собственный канал Sparkle.
Сообщайте об ошибках в ночных сборках на [GitHub Issues](https://github.com/manaflow-ai/cmux/issues) или в [#nightly-bugs в Discord](https://discord.gg/xsgFEVrWCZ).
## Восстановление сессии
При выходе cmux сохраняет текущую сессию. При повторном запуске cmux восстанавливает состояние, которым управляет приложение:
- Макет окон/рабочих пространств/панелей
- Рабочие каталоги
- Scrollback терминала (по возможности)
- URL браузера и история навигации
cmux не создает checkpoint для произвольного состояния живых процессов. tmux, vim, shell и неподдерживаемые терминальные приложения открываются заново как обычные терминалы.
Поддерживаемые сессии агентов могут возобновляться, если hooks сохранили нативный ID сессии. Устанавливайте hooks после установки CLI агента, чтобы его бинарный файл был в `PATH`:
```bash
cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode
```
`cmux hooks setup` устанавливает поддерживаемых агентов, которых может найти, и выводит сводку для пропущенных агентов. Поддерживаемые интеграции возобновления включают Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Rovo Dev, Copilot, CodeBuddy, Factory и Qoder. Claude Code обрабатывается обёрткой Claude cmux, когда интеграция Claude включена в Настройках.
Опытные пользователи и интеграции могут привязать пользовательскую команду возобновления к текущей terminal surface. Это полезно для инструментов с собственным долговременным состоянием, например tmux-сессий или пользовательских agent CLI:
```bash
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint work
```
Привязка остается связанной с surface в cmux. Привязки, созданные публичным CLI или socket, сохраняются для проверки и ручного возобновления, если вы не одобрите подписанный префикс команды для автоматического возобновления. Одобренные префиксы также привязаны к рабочему каталогу и точным значениям окружения, если они присутствуют. Просматривайте или редактируйте одобрения в **Настройки > Терминал > Resume Commands**. cmux автоматически запускает только привязки возобновления, которые помечает как доверенные, например tmux-привязки, обнаруженные из живых процессов, или одобренные пользователем префиксы. Чувствительные ключи окружения, такие как токены, пароли, секреты и API-ключи, отбрасываются перед сохранением привязки возобновления.
Чтобы восстановленные терминалы агентов оставались бездействующими вместо автоматического запуска их команд возобновления, отключите **Настройки > Терминал > Resume Agent Sessions on Reopen** или задайте это в `~/.config/cmux/cmux.json`:
```json
{
"terminal": {
"autoResumeAgentSessions": false
}
}
```
Это отключает только автоматические команды возобновления агентов. cmux по-прежнему восстанавливает сохранённый макет, рабочие каталоги, scrollback и историю браузера.
Если вам нужно вручную повторно применить последний сохранённый снимок, используйте:
- `File > Reopen Previous Session`
- `⌘ ⇧ O`
- `cmux restore-session`
Под капотом cmux записывает версионированный снимок в `~/Library/Application Support/cmux/`, а hooks агентов записывают сопоставления сессий в `~/.cmuxterm/`. При восстановлении cmux сначала перестраивает макет, а затем запускает нативную команду возобновления поддерживаемого агента, когда автоматическое возобновление агентов включено.
Прочтите полное руководство на
WeChat: отсканируйте QR-код, чтобы присоединиться к сообществу.