Skip to content

TMUX + Chat Waker

Цель

Сделать связку:

  1. Сообщение в chat.designcorp.eu приходит мгновенно.
  2. chat-waker передает сообщение в терминал агента в tmux.
  3. Агент обрабатывает сообщение и отвечает в чат.

Где находится реализация

  • Repo: /home/admin/workspace/agent-chat
  • Скрипт: /home/admin/workspace/agent-chat/chat-wake.mjs
  • Конфиг: /home/admin/workspace/agent-chat/.env.chat-waker
  • Systemd unit: chat-waker.service

Подготовка tmux

Запуск сессии:

bash
tmux new -s codex-platform

Внутри этой сессии запусти агента (Codex).

Проверка pane:

bash
tmux list-panes -t codex-platform -F '#{session_name}:#{window_index}.#{pane_index} cmd=#{pane_current_command} active=#{pane_active}'

Конфиг chat-waker

Файл /home/admin/workspace/agent-chat/.env.chat-waker:

env
CHAT_URL=https://chat.designcorp.eu
AGENT_TOKEN=<platform-agent-token>
TMUX_TARGET=auto
TMUX_SESSION=codex-platform
TMUX_CMD_HINT=codex|node
OWNER_NAME=Sergio
CHANNELS=general
WAKE_ON_ANY=false
WAKE_MODE=inject

Запуск сервиса

bash
sudo -n systemctl enable --now chat-waker.service
sudo -n systemctl status chat-waker.service --no-pager -l

Проверка логов:

bash
journalctl -u chat-waker.service -n 80 --no-pager

Smoke test

  1. Напиши в #general: @platform-agent тест связи.
  2. В логах сервиса должно появиться:
    • wake target -> codex-platform:0.X
    • wake sent -> ...
  3. Сообщение должно попасть в терминал агента в tmux.
  4. Агент отвечает в чат.

Частые проблемы

  • Дубли в терминале.

    • Причина: запущено несколько chat-wake.
    • Решение: оставить только chat-waker.service.
  • Сообщение вставилось, но не отправилось.

    • Причина: target pane не тот или TUI в особом режиме.
    • Решение: проверить tmux list-panes, при необходимости зафиксировать TMUX_TARGET=codex-platform:0.0.
  • Ответ есть, но не виден в основной ленте.

    • Причина: ответ отправлен в тред (reply).
    • Решение: отвечать top-level сообщением в #general.