Терминальный клиент для общения с Navi через WebSocket.
CLI устанавливается вместе с пакетом navi:
pip install -e .
После установки доступна команда navi-code. Внутри репозитория можно запускать без установки:
python -m clients.terminal
navi-code
Клиент подключается к http://localhost:8000, создаёт или восстанавливает сессию и запускает чат.
navi-code "объясни, что делает этот файл" navi-code --new-session "напиши pytest-тест для функции foo"
| Флаг | Описание |
|---|---|
--base-url URL |
Базовый URL сервера Navi. |
--ws-url URL |
URL WebSocket (по умолчанию производный от --base-url). |
--profile-id ID |
Профиль для новой сессии. |
--new-session |
Создать новую сессию, даже если сохранена старая. |
--show-thinking |
Показывать блоки рассуждений модели. |
--no-events |
Скрывать события tool_started / tool_call. |
--version |
Версия клиента. |
| Команда | Описание |
|---|---|
/help |
Список команд. |
/new |
Создать новую сессию. |
/sessions |
Список сессий на сервере. |
/switch <id> |
Переключиться на другую сессию (можно по префиксу id). |
/profile |
Показать текущий профиль и id сессии. |
/export [path] |
Экспортировать текущую сессию в Markdown; без пути — во временный файл и $EDITOR. |
/clear |
Очистить локально сохранённый session_id. |
/quit |
Выйти. |
В интерактивном режиме (navi-code) экран разделён на две части:
ChatPanel) — история сообщений, поле ввода и текущий статус.SessionsPanel) — список сессий на сервере с колонками ID, профиль и превью. Клик или Enter на строке переключает сессию.Список сессий обновляется автоматически при запуске и при выполнении /new, /sessions, /switch.
Клиент сохраняет session_id в ~/.navi_code/state.json, чтобы восстановить диалог при следующем запуске. Удалите файл или используйте /clear, чтобы начать с чистого листа.
stream_delta — печатается inline, как в обычном чате.tool_started / tool_call — показываются имена инструментов и краткий результат (если включено --show-events).thinking_delta / thinking_end — показываются только с --show-thinking.error — красным цветом.$ navi-code
Created session a1b2c3d4 (profile navi_code)
Navi Code interactive mode. Type /quit to exit, /help for commands.
You: напиши скрипт, который считает строки в текущей директории
[tool: terminal]
{'cmd': 'find . -type f | wc -l'}
[tool result: terminal success=True]
42
Я насчитал 42 файла в текущей директории и её поддиректориях.
You: /quit
Код CLI находится в clients/terminal/:
cli.py — точка входа и интерактивный цикл.ws_client.py — WebSocket-клиент.api.py — REST-запросы к серверу.render.py — рендеринг событий в терминал.state.py — сохранение session_id в ~/.navi_code/state.json.config.py — настройки из переменных окружения NAVI_CODE_*.tui/tui_app.py — Textual-приложение.tui/widgets/ — виджеты (ChatPanel, StatusPanel, SessionsPanel).tui/commands/ — slash-команды (/new, /sessions, /switch, /export).Тесты: tests/clients/test_terminal_client.py, tests/clients/test_terminal_ws.py, tests/clients/test_tui_*.py.