Справочник возможностей интерфейса Велеса
Эта страница описывает расширенные функции графического интерфейса Велеса: поиск по чату, экспорт, файловый браузер, доску задач, предложения ассистента, настройки речи, лимиты, служебные события и используемые HTTP-маршруты.Панели интерфейса
Чат
Панель чата поддерживает:- потоковый ответ ассистента;
- группировку вызовов инструментов и их результатов;
- сворачивание длинных технических блоков;
- журнал действий и индикатор обработки;
- подгрузку старой истории при прокрутке;
- кнопку остановки ответа;
- создание нового диалога;
- открытие путей рабочей области из сообщений;
- предпросмотр изображений, аудио и файловых вложений;
- историю ввода и автодополнение названий сессий в поле сообщения.
Режим «Проект»
Переключатель Обычный / Проект виден только в пустом диалоге и сбрасывается на Обычный при каждом создании диалога. Для проекта интерфейс показывает специальные сообщения в общей ленте диалога со следующими состояниями:
Специальное сообщение имеет стабильный
id: повторная доставка не создаёт дубль, а сообщение с меньшей revision не заменяет уже показанную новую редакцию. Если события пропущены, соединение восстановлено или пользователь сменил диалог, Nerve запрашивает свежий снимок у Велеса и при необходимости восстанавливает текущее действие в общей ленте. Продолжение проекта не отправляет исходное сообщение второй раз и не очищает уже подготовленные материалы.
Сведения о запуске доступны и в сводке сессии, поэтому интерфейс может найти связанный проект после перезагрузки. Полное руководство: Режим «Проект».
Экспорт DOCX
Интерфейс Велеса умеет экспортировать разговор в DOCX на стороне браузера.
Экспорт создаёт собственные части документа Word, включая
word/numbering.xml, поэтому списки сохраняются как настоящие списки, а не как обычный текст.
Вложения и медиа
Интерфейс использует схему «сначала загрузить файл, потом отправить сообщение»:- файл загружается через
/api/gateway/attachments; - сообщение отправляет ссылки на загруженные файлы;
- Велес приводит медиа к единому виду в
message.attachments; - браузер строит ссылки предпросмотра и скачивания через файловые маршруты рабочей области.
Файловый браузер
Файловый браузер использует такие маршруты:
Если рабочая область недоступна локально серверу интерфейса, чтение, запись, дерево, скачивание и удаление идут через внутренние вызовы Велеса. Локальные
rename и move в таком режиме возвращают REMOTE_WORKSPACE, потому что сервер Nerve не может безопасно переставлять файлы в удалённой песочнице.
Параметр includeHidden=true маршрута GET /api/files/tree включает папки с точкой, например .veles. По умолчанию они скрыты; параметр не меняет отдельные правила показа скрытых файлов. В удалённом режиме параметр без изменений передаётся в personalities.files.tree.
Удаление окончательное: это не корзина и не скрытие файла из списка. Для текстового редактора действует ограничение размера содержимого около 1 МБ; активный изменённый файл сохраняется кнопкой с иконкой сохранения в панели вкладок или сочетанием Ctrl/Cmd+S. Маршрут /api/files/raw отдаёт поддерживаемые изображения и аудио для встроенного предпросмотра. Если файл находится только в рабочей области Велеса, Nerve получает его через файловые вызовы Велеса, поэтому вложения в чате снова показываются после перезагрузки страницы.
Память
Панель памяти показывает не сокращённый список строк, а полные документы из рабочей области Велеса:USER.md— общий профиль пользователя; его безопасно ограниченная копия добавляется в контекст каждого обращения;memory/MEMORY.md— отобранные долгосрочные сведения;memory/**/*.md— дневные записи, резюме сессий и диалогов, включаяmemory/conversations/*.md.
USER.md и memory/MEMORY.md всегда остаются в списке: отсутствующий файл, пустой файл и ошибка чтения показываются как разные состояния. Nerve не обрезает содержимое: до общего предела текстового файла около 1 МиБ USER.md показывается полностью, а превышение размера отображается отдельным состоянием. Ограничение активного профиля применяется только при сборке запроса к модели и не изменяет файл. Исторические документы доступны только для чтения; профиль и долгосрочную память можно править во встроенном редакторе. При конкурентном изменении файла сохранение останавливается и предлагает перечитать свежую версию, не уничтожая черновик.
Эти маршруты не читают файловую систему контейнера Nerve. Они обращаются к рабочей области Велеса только через
personalities.files.tree/read/write. Каталог загружается при открытии интерфейса или смене личности, а затем обновляется вручную кнопкой со стрелками в панели памяти. События изменения файлов и памяти не запускают фоновое перечитывание каталога; после внешнего изменения нажмите эту кнопку. После сохранения или добавления записи из самой панели она обновляет каталог как часть выполненного действия. Для одного текстового документа действует общий предел около 1 МБ.
Память не предназначена для секретов и больших одноразовых фрагментов.
Личности, сессии и подспециалисты
Личности управляются через RPCpersonalities.* и хранятся в workspace как Markdown-файлы: SOUL.md для main и personalities/<id>/SOUL.md для дополнительных личностей. Они меняют identity-layer системного промпта и могут иметь собственные навыки в personalities/<id>/skills, но не создают отдельные workspace-файлы, память или cron. Подробнее: Личности.
Окно создания нового диалога поддерживает два пути: ручной выбор личности из списка и Подобрать. При автоподборе пользователь вводит своё реальное первое сообщение, Nerve показывает состояние выбора личности, вызывает /api/personalities/select с этим текстом, получает рекомендованную root session, создаёт новый диалог с этой личностью и отправляет тот же текст первым сообщением в новой сессии. Панель личностей использует filesystem-backed personalities как авторитетный список и объединяет их с sessions.list: личности без текущей root session всё равно видны, а удалённые из файловой системы личности скрываются вместе с их дочерними сессиями. При выборе root personality Nerve открывает последний диалог этой личности, если он есть; иначе выбирает root session.
Панель сессий использует внутренние вызовы Велеса:
sessions.history;sessions.list;sessions.activate;sessions.patch;chat.abort;chat.sendдля создания подВелеса.
- дерево корневых и дочерних сессий;
- подспециалистов;
- переименование;
- скрытые сессии;
- признак непрочитанных сообщений;
- стартовую инструкцию для новых подспециалистов;
- сведения о модели сессии.
Доска задач и предложения
Панель задач покрывает:- создание задач;
- колонки статусов;
- быстрый просмотр;
- боковую панель с деталями;
- приоритеты и метки;
- входящие предложения ассистента.
/api/tasks и проксируются в gateway Велеса; /api/kanban сохранён только как временный совместимый алиас для старого frontend-кода.
Расписания
Панель расписаний работает с:GET /api/crons;POST /api/crons;PATCH /api/crons/:id;DELETE /api/crons/:id;POST /api/crons/:id/toggle;POST /api/crons/:id/run;GET /api/crons/:id/runs.
<workspace>/cron/jobs.json.
Навыки
Панель навыков читает/api/skills. Каталог объединяет навыки активной личности, навыки рабочей области и встроенные навыки; версия активной личности имеет приоритет при совпадении имени.
Описание навыка может переводиться по targetLanguage; кэш зависит от языка перевода и contentHash.
Заголовки, статусы и пустые состояния панели берутся из локализаций Nerve, поэтому отображаются на выбранном языке интерфейса.
Секреты
Панель секретов работает поверх внутренних вызовов Велесаsecrets.*:
GET /api/secrets— каталог целей с замаскированными значениями;PUT /api/secrets/targets/:targetId— сохранить новое значение;DELETE /api/secrets/targets/:targetId— удалить сохранённое значение;POST /api/secrets/refresh— обновить статус;POST /api/secrets/oauth/:provider/start— начать OAuth-поток;GET /api/secrets/oauth/:provider/flows/:flowId— проверить OAuth-поток;POST /api/secrets/oauth/:provider/flows/:flowId/complete— завершить OAuth-поток кодом или callback URL;DELETE /api/secrets/oauth/:provider— отключить OAuth-профиль.
openai-codex; новые провайдеры требуют расширения серверной схемы.
Подписи групп, статусы целей и действия в панели секретов также локализованы через общий язык интерфейса Nerve.
Настройки речи
Интерфейс разделяет:- режим распознавания речи: браузер, локальный обработчик или гибридный режим;
- запись голосового ввода;
- поддержку фразы пробуждения;
- голосовые фразы;
- настройки озвучивания ответов.
Голосовые сообщения помечаются префиксом
[voice], чтобы внутренняя логика могла отличить голосовой ввод и при необходимости запустить озвучивание ответа.
Настройки интерфейса
Настройки внешнего вида управляют:- языком интерфейса;
- темой;
- шрифтом;
- размером шрифта;
- показом служебных событий и журнала действий.
/api/auth/status; вход и выход идут через /api/auth/login и /api/auth/logout.
Раздел «Конфиг» в настройках читает и сохраняет config.json через шлюз Велеса. Интерфейс строится по серверной схеме, а вложенные объекты раздела выбираются вторым выпадающим списком: например, в channels отдельно открываются общие поля, Telegram и Email. После сохранения кнопка «Сохранить и перезапустить» планирует перезапуск шлюза. gateway.token в этом разделе не показывается; секреты отображаются только как заглушки.
Кнопка «Править JSON» открывает полный физический config.json во вкладке файлового редактора. В этой вкладке видны gateway.token и секреты, если они записаны в файл открытым текстом. Сохранение проверяет JSON и схему Велеса, но не перезапускает шлюз; перезапуск выполняется вручную.
Лимиты и статус
Интерфейс показывает служебную информацию:
Расход подключённых поставщиков, включая баланс OpenRouter и ограничения подписки OpenAI Codex, Nerve получает через WebSocket-метод Велеса
providers.usage. Сервер Nerve не читает ~/.codex и не хранит отдельную копию учётных данных. Подробная панель строится по списку показателей из ответа, а в настройках внешнего вида можно выбрать показатель для компактного значка.
Если Claude Code возвращает время сброса лимита без указания часового пояса, Nerve считает такое время всемирным координированным временем (UTC). Если часовой пояс указан в скобках, используется именно он.
Эти данные помогают понять, где источник проблемы: в модели, сервере, токенах, лимитах или интерфейсе.
Графики и Markdown
Отрисовщик сообщений поддерживает:- Markdown;
- действия для блоков кода;
- извлечение встроенных графиков;
- Lightweight Charts;
- виджет TradingView;
- блоки изменений и содержимого файлов.
Палитра команд и горячие клавиши
Палитра команд собирает быстрые действия: поиск, создание сессии, фокус ввода, переключение панелей и другие команды интерфейса. Горячие клавиши завязаны наuseKeyboardShortcuts, useInputHistory и useTabCompletion: ввод поддерживает историю сообщений и автодополнение по сессиям.
Escape сначала остаётся у открытых диалогов и всплывающих панелей. Общий обработчик интерфейса закрывает палитру, поиск или останавливает ответ только когда на экране нет диалогового слоя, который должен обработать клавишу сам.
Служебные события
Интерфейс слушает события WebSocket и server-sent events:- поток чата;
- ход выполнения инструментов;
- состояние ассистента;
- события расписаний;
- изменение памяти;
- ошибки;
- переподключение и восстановление.
chat.history и локальное состояние ответа.
Результат chat.history применяется только пока выбран тот же диалог и после начала запроса не произошло более нового изменения переписки. Снимок истории объединяется с текущими сообщениями: он не должен удалять окончательный ответ, который уже пришёл через WebSocket, или ещё не отражённые на сервере сообщения пользователя. Если подряд отправлено несколько сообщений, сохраняются все такие сообщения, а не только последнее.
Со стороны Велеса обычное входящее сообщение сохраняется до сжатия контекста. Дополнительные сообщения, подхваченные уже во время ответа, при окончательном сохранении сохраняют метаданные своих вложений, чтобы повторная загрузка истории могла восстановить предпросмотр и скачивание файлов.