The launchd service runs with PATH=/usr/bin:/bin:/usr/sbin:/sbin; tmux split-window gives the new pane the caller's PATH, so 'exec lf' failed and the pane closed at once. install.sh now records its own PATH in the plist EnvironmentVariables. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
83 lines
5.4 KiB
Markdown
83 lines
5.4 KiB
Markdown
# Claude — панель сессий Claude Code
|
||
|
||
Сверху — дерево активных сессий Claude Code и их субагентов (модель, контекст, worktree),
|
||
снизу — лимиты подписки и баланс extra usage. Панель — страница на `http://127.0.0.1:8766/`:
|
||
её показывает iTerm2 Toolbelt, её можно открыть в браузере, в том числе с iPad через SSH-туннель.
|
||
Сервер панели — фоновая служба macOS, iTerm2 для неё не нужен.
|
||
|
||
## Установка
|
||
|
||
Запускать за самим Mac, не по SSH (из SSH-сессии launchd и iTerm2 не настроить —
|
||
установщик откажется):
|
||
|
||
```bash
|
||
tar xzf claude-panel.tar.gz
|
||
cd claude-panel
|
||
./install.sh
|
||
```
|
||
|
||
Затем в iTerm2: **View → Toolbelt → Show Toolbelt**, **Toolbelt → Claude**, и перезапустите
|
||
открытые сессии `claude`. Повторный запуск `install.sh` обновляет установленное.
|
||
|
||
Нужно: macOS, python3, jq (`brew install jq`, в macOS 15+ уже есть); iTerm2 — для Toolbelt.
|
||
|
||
## Что ставится
|
||
|
||
| Что | Куда |
|
||
|---|---|
|
||
| служба (сервер панели) | `~/.local/share/claude-agents/claude_agents.py` |
|
||
| описание службы launchd | `~/Library/LaunchAgents/com.andrey.claude-agents.plist` |
|
||
| лог службы | `~/Library/Logs/claude-agents/panel.log` |
|
||
| скрипт Toolbelt | `~/Library/Application Support/iTerm2/Scripts/AutoLaunch/claude_agents.py` |
|
||
| хук Claude Code | `~/.claude/hooks/agents_panel_hook.sh` + записи в `~/.claude/settings.json` |
|
||
| пример настроек | `~/.config/claude-agents/config.example.json` |
|
||
|
||
Служба запускается при входе в систему и перезапускается при падении. Перед изменением
|
||
`settings.json` и заменой файлов старые копии кладутся в `~/.claude-panel-backup/<дата>/`.
|
||
Ваши остальные хуки и настройки не трогаются.
|
||
|
||
## С iPad (Termius)
|
||
|
||
1. В Termius: **Port Forwarding → Local**: хост — ваш Mac, local port `8766`,
|
||
bind address `127.0.0.1`, destination `127.0.0.1`, destination port `8766`.
|
||
2. Запустите forward и откройте в Safari `http://127.0.0.1:8766` — именно `127.0.0.1`,
|
||
не `localhost` (сервер слушает только IPv4).
|
||
|
||
Сервер доступен только с самого Mac, в сеть не открывается: с других устройств — только через туннель.
|
||
Клики работают через tmux, так что переходы и `lf` появляются в том же tmux, что у вас в Termius.
|
||
|
||
## Работа с панелью
|
||
|
||
- клик по сессии или агенту — последние сообщения (копятся, пока окно открыто);
|
||
- ⌘-клик по сессии — перейти в её панель tmux;
|
||
- клик по `⎇ папка` — открыть в ней `lf` в соседней панели tmux;
|
||
- цвет точки: зелёный — работает, жёлтый — ждёт вас, серый — свободен;
|
||
- переходы и `lf` работают для сессий в tmux; сессии вне tmux только показываются;
|
||
- цвет токенов: жёлтый > 500k, красный > 700k;
|
||
- ⚙ в нижней строке — фон панели на этом устройстве (образцы или свой цвет, текст подстроится);
|
||
выбор хранится в этом браузере, «сброс» возвращает тему по умолчанию.
|
||
|
||
## Настройки
|
||
|
||
Скопируйте `config.example.json` в `~/.config/claude-agents/config.json` и оставьте только
|
||
нужные ключи. Меняется на лету, кроме `port`.
|
||
|
||
## Если что-то не так
|
||
|
||
- `http://127.0.0.1:8766/raw` — что панель видит: логи хука, причины скрытия сессий,
|
||
ошибки лимитов и баланса;
|
||
- `~/Library/Logs/claude-agents/panel.log` — лог службы;
|
||
- `launchctl print gui/$(id -u)/com.andrey.claude-agents` — состояние службы; ошибки запуска (например, «не найден python») видны только здесь, а не в `panel.log`;
|
||
- после переустановки или обновления Python (в том числе `brew upgrade`/`brew cleanup`) запустите
|
||
`./install.sh` заново — служба хранит путь к `python3`, и без этого launchd не сможет её запустить;
|
||
- «⎇ папка» мигает разделителем и панель сразу закрывается — служба не нашла `lf`. Служба берёт
|
||
`PATH` из оболочки, в которой запускали `install.sh`: запустите его заново из терминала, где
|
||
`command -v lf` находит файловый менеджер.
|
||
|
||
## Удаление
|
||
|
||
```bash
|
||
./uninstall.sh # настройки и логи остаются
|
||
./uninstall.sh --purge # удалить всё
|
||
```
|