> ## Documentation Index
> Fetch the complete documentation index at: https://docs.velesagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Справочник возможностей интерфейса Велеса

> Подробная карта возможностей интерфейса Велеса: чат, поиск, экспорт, файлы, память, сессии, доска задач, предложения, голос, лимиты и служебные панели.

# Справочник возможностей интерфейса Велеса

Эта страница описывает расширенные функции графического интерфейса Велеса: поиск по чату, экспорт, файловый браузер, доску задач, предложения ассистента, настройки речи, лимиты, служебные события и используемые HTTP-маршруты.

## Панели интерфейса

| Панель          | Что делает                                                                                        |
| --------------- | ------------------------------------------------------------------------------------------------- |
| Чат             | Сообщения, потоковый ответ, режим «Проект», ход выполнения инструментов, вложения, поиск, экспорт |
| Сессии          | История диалогов, подспециалисты, переименование, удаление, остановка ответа                      |
| Рабочая область | Личности, память, расписания, доска задач, навыки, секреты                                        |
| Файлы           | Дерево файлов, редактор, вкладки, скачивание, удаление, переименование, перемещение               |
| Настройки       | Подключение, конфиг, внешний вид, звук, голосовые фразы                                           |
| Статус и лимиты | Состояние сервера, расход токенов, лимиты моделей, уведомление об обновлении                      |

## Чат

Панель чата поддерживает:

* потоковый ответ ассистента;
* группировку вызовов инструментов и их результатов;
* сворачивание длинных технических блоков;
* журнал действий и индикатор обработки;
* подгрузку старой истории при прокрутке;
* кнопку остановки ответа;
* создание нового диалога;
* открытие путей рабочей области из сообщений;
* предпросмотр изображений, аудио и файловых вложений;
* историю ввода и автодополнение названий сессий в поле сообщения.

Глобальный поиск по чату открывается из интерфейса или палитры команд и использует текущую историю сообщений. При переходе к найденному сообщению интерфейс разворачивает его, если оно было скрыто.

### Режим «Проект»

Переключатель **Обычный / Проект** виден только в пустом диалоге и сбрасывается на **Обычный** при каждом создании диалога. Для проекта интерфейс показывает специальные сообщения в общей ленте диалога со следующими состояниями:

| Состояние                 | Действия интерфейса                                                                                          |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Подготовка вопросов       | Ожидание анкеты от Велеса.                                                                                   |
| Ожидание ответов          | Выбор одного из трёх вариантов или собственного ответа для каждого вопроса; подтверждение точной папки.      |
| Подготовка плана          | Ожидание сохраняемого плана.                                                                                 |
| Ожидание утверждения      | Утвердить план или запросить новую редакцию с пояснением.                                                    |
| Выполнение                | Показ текущего этапа, хода работы и ссылок на готовые материалы.                                             |
| Приостановлено или ошибка | Продолжить незавершённый этап с сохранённого состояния или отменить; показать безопасные сведения об ошибке. |
| Завершено                 | Открыть итоговый документ и продолжить обычный разговор.                                                     |

Специальное сообщение имеет стабильный `id`: повторная доставка не создаёт дубль, а сообщение с меньшей `revision` не заменяет уже показанную новую редакцию. Если события пропущены, соединение восстановлено или пользователь сменил диалог, Nerve запрашивает свежий снимок у Велеса и при необходимости восстанавливает текущее действие в общей ленте. Продолжение проекта не отправляет исходное сообщение второй раз и не очищает уже подготовленные материалы.

Сведения о запуске доступны и в сводке сессии, поэтому интерфейс может найти связанный проект после перезагрузки. Полное руководство: [Режим «Проект»](/project_mode_ru).

## Экспорт DOCX

Интерфейс Велеса умеет экспортировать разговор в DOCX на стороне браузера.

| Настройка                | Смысл                                              |
| ------------------------ | -------------------------------------------------- |
| `mode`                   | Чистый экспорт или экспорт с техническими данными  |
| `includeTools`           | Включать сообщения инструментов, системы и событий |
| `formatMarkdown`         | Преобразовывать Markdown в форматирование Word     |
| `includeUserQuestions`   | Включать пользовательские сообщения                |
| `includeTechnicalHeader` | Добавлять технический заголовок                    |

Экспорт создаёт собственные части документа Word, включая `word/numbering.xml`, поэтому списки сохраняются как настоящие списки, а не как обычный текст.

## Вложения и медиа

Интерфейс использует схему «сначала загрузить файл, потом отправить сообщение»:

1. файл загружается через `/api/gateway/attachments`;
2. сообщение отправляет ссылки на загруженные файлы;
3. Велес приводит медиа к единому виду в `message.attachments`;
4. браузер строит ссылки предпросмотра и скачивания через файловые маршруты рабочей области.

Поддерживаются изображения, документы и аудио. Файлы можно выбрать кнопкой, перетащить в область ввода или вставить изображение из буфера обмена. Для изображений есть полноэкранный просмотр и сжатие перед отправкой, если оно включено на стороне клиента.

## Файловый браузер

Файловый браузер использует такие маршруты:

| Маршрут                   | Назначение                                                                                                 |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `GET /api/files/tree`     | Дерево файлов                                                                                              |
| `GET /api/files/resolve`  | Проверка и раскрытие пути рабочей области                                                                  |
| `GET /api/files/read`     | Чтение файла; служебный путь `__veles_config__/config.json` открывает полный `config.json` Велеса          |
| `PUT /api/files/write`    | Запись файла; служебный путь `__veles_config__/config.json` сохраняет полный `config.json` без перезапуска |
| `GET /api/files/download` | Скачивание                                                                                                 |
| `POST /api/files/delete`  | Удаление                                                                                                   |
| `POST /api/files/rename`  | Переименование                                                                                             |
| `POST /api/files/move`    | Перемещение                                                                                                |
| `GET /api/files/raw`      | Необработанное содержимое изображений и аудио для предпросмотра                                            |
| `GET /api/files`          | Отдельная выдача локальных изображений из разрешённых директорий                                           |

Если рабочая область недоступна локально серверу интерфейса, чтение, запись, дерево, скачивание и удаление идут через внутренние вызовы Велеса. Локальные `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`.

Список строится рекурсивно и не ограничивается несколькими последними файлами. Каждая директория запрашивается отдельно с пределом 500 просмотренных записей, а общий обход останавливается после 1000 директорий или 20 000 записей. Если предел достигнут или метаданные отдельного пути недоступны, интерфейс показывает подробное предупреждение и сохраняет доступ к исправной части каталога. `USER.md` и `memory/MEMORY.md` всегда остаются в списке: отсутствующий файл, пустой файл и ошибка чтения показываются как разные состояния. Nerve не обрезает содержимое: до общего предела текстового файла около 1 МиБ `USER.md` показывается полностью, а превышение размера отображается отдельным состоянием. Ограничение активного профиля применяется только при сборке запроса к модели и не изменяет файл. Исторические документы доступны только для чтения; профиль и долгосрочную память можно править во встроенном редакторе. При конкурентном изменении файла сохранение останавливается и предлагает перечитать свежую версию, не уничтожая черновик.

| Маршрут Nerve                   | Назначение                                                                   |
| ------------------------------- | ---------------------------------------------------------------------------- |
| `GET /api/memories/documents`   | Каталог профиля, долгосрочной памяти и исторических документов               |
| `GET /api/memories/document`    | Полное содержимое выбранного документа и время его изменения                 |
| `PUT /api/memories/document`    | Сохранение `USER.md` или `memory/MEMORY.md` с защитой от конкурентной записи |
| `POST /api/memories`            | Добавление отдельной записи в долгосрочную память                            |
| `GET/PUT /api/memories/section` | Совместимые операции со старыми секциями памяти                              |

Эти маршруты не читают файловую систему контейнера Nerve. Они обращаются к рабочей области Велеса только через `personalities.files.tree/read/write`. Каталог загружается при открытии интерфейса или смене личности, а затем обновляется вручную кнопкой со стрелками в панели памяти. События изменения файлов и памяти не запускают фоновое перечитывание каталога; после внешнего изменения нажмите эту кнопку. После сохранения или добавления записи из самой панели она обновляет каталог как часть выполненного действия. Для одного текстового документа действует общий предел около 1 МБ.

Память не предназначена для секретов и больших одноразовых фрагментов.

## Личности, сессии и подспециалисты

Личности управляются через RPC `personalities.*` и хранятся в workspace как Markdown-файлы: `SOUL.md` для `main` и `personalities/<id>/SOUL.md` для дополнительных личностей. Они меняют identity-layer системного промпта и могут иметь собственные навыки в `personalities/<id>/skills`, но не создают отдельные workspace-файлы, память или cron. Подробнее: [Личности](/basics/personalities_ru).

Окно создания нового диалога поддерживает два пути: ручной выбор личности из списка и **Подобрать**. При автоподборе пользователь вводит своё реальное первое сообщение, 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` для создания подВелеса.

Интерфейс поддерживает:

* дерево корневых и дочерних сессий;
* подспециалистов;
* переименование;
* скрытые сессии;
* признак непрочитанных сообщений;
* стартовую инструкцию для новых подспециалистов;
* сведения о модели сессии.

ПодВелес создаётся через обычное сообщение в чат: интерфейс формирует инструкцию на создание подВелеса и ждёт появления дочерней сессии в списке.

## Доска задач и предложения

Панель задач покрывает:

* создание задач;
* колонки статусов;
* быстрый просмотр;
* боковую панель с деталями;
* приоритеты и метки;
* входящие предложения ассистента.

Входящие предложения показывают, что Велес предлагает создать или обновить задачу. Пользователь может принять или отклонить предложение. Это полезно для рабочих процессов, где ассистент не должен менять доску без подтверждения.

Nerve не хранит состояние доски самостоятельно. Запросы идут на `/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`.

Через интерфейс можно создать задание, изменить его, отключить, запустить вручную и посмотреть прошлые запуски. Для изолированных agent-turn расписаний ручной запуск создаёт отдельную cron-сессию и записывает локальную запись ручного запуска, чтобы UI сразу показал последнее выполнение. Хранилище самих заданий привязано к рабочей области: `<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-профиль.

OAuth-потоки вроде Codex возвращают браузеру только ссылку и статус. Токены доступа и обновления остаются внутри зашифрованного хранилища Велеса. Сейчас серверный маршрут Nerve принимает OAuth-провайдер `openai-codex`; новые провайдеры требуют расширения серверной схемы.
Подписи групп, статусы целей и действия в панели секретов также локализованы через общий язык интерфейса Nerve.

## Настройки речи

Интерфейс разделяет:

* режим распознавания речи: браузер, локальный обработчик или гибридный режим;
* запись голосового ввода;
* поддержку фразы пробуждения;
* голосовые фразы;
* настройки озвучивания ответов.

Основные маршруты:

| Маршрут                         | Назначение                      |
| ------------------------------- | ------------------------------- |
| `GET /api/tts/config`           | Текущие настройки озвучивания   |
| `PUT /api/tts/config`           | Сохранить настройки озвучивания |
| `GET /api/voice-phrases`        | Фразы управления                |
| `GET /api/voice-phrases/status` | Статус фраз                     |
| `GET /api/voice-phrases/:lang`  | Фразы для языка                 |
| `PUT /api/voice-phrases/:lang`  | Обновить фразы                  |

Голосовые сообщения помечаются префиксом `[voice]`, чтобы внутренняя логика могла отличить голосовой ввод и при необходимости запустить озвучивание ответа.

## Настройки интерфейса

Настройки внешнего вида управляют:

* языком интерфейса;
* темой;
* шрифтом;
* размером шрифта;
* показом служебных событий и журнала действий.

Настройки подключения управляют адресом сервера Велеса, токеном и поведением при переподключении. Проверка входа использует `/api/auth/status`; вход и выход идут через `/api/auth/login` и `/api/auth/logout`.

Раздел «Конфиг» в настройках читает и сохраняет `config.json` через шлюз Велеса. Интерфейс строится по серверной схеме, а вложенные объекты раздела выбираются вторым выпадающим списком: например, в `channels` отдельно открываются общие поля, Telegram и Email. После сохранения кнопка «Сохранить и перезапустить» планирует перезапуск шлюза. `gateway.token` в этом разделе не показывается; секреты отображаются только как заглушки.

Кнопка «Править JSON» открывает полный физический `config.json` во вкладке файлового редактора. В этой вкладке видны `gateway.token` и секреты, если они записаны в файл открытым текстом. Сохранение проверяет JSON и схему Велеса, но не перезапускает шлюз; перезапуск выполняется вручную.

| Маршрут Nerve               | Назначение                                                                |
| --------------------------- | ------------------------------------------------------------------------- |
| `GET /api/gateway/config`   | Получить схему, версию и очищенное содержимое `config.json`               |
| `PUT /api/gateway/config`   | Сохранить конфигурацию и при необходимости запланировать перезапуск шлюза |
| `POST /api/gateway/restart` | Запланировать перезапуск шлюза                                            |

## Лимиты и статус

Интерфейс показывает служебную информацию:

| Маршрут                   | Назначение           |
| ------------------------- | -------------------- |
| `/api/tokens`             | Расход токенов       |
| `/api/claude-code-limits` | Лимиты Claude Code   |
| `/api/version`            | Версия интерфейса    |
| `/api/version/check`      | Проверка обновления  |
| `/api/server-info`        | Информация о сервере |
| `/health`                 | Проверка доступности |

Расход подключённых поставщиков, включая баланс 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:

* поток чата;
* ход выполнения инструментов;
* состояние ассистента;
* события расписаний;
* изменение памяти;
* ошибки;
* переподключение и восстановление.

При восстановлении мобильной вкладки интерфейс не должен полагаться только на переход состояния WebSocket. Надёжный путь — сверить `chat.history` и локальное состояние ответа.

Результат `chat.history` применяется только пока выбран тот же диалог и после начала запроса не произошло более нового изменения переписки. Снимок истории объединяется с текущими сообщениями: он не должен удалять окончательный ответ, который уже пришёл через WebSocket, или ещё не отражённые на сервере сообщения пользователя. Если подряд отправлено несколько сообщений, сохраняются все такие сообщения, а не только последнее.

Со стороны Велеса обычное входящее сообщение сохраняется до сжатия контекста. Дополнительные сообщения, подхваченные уже во время ответа, при окончательном сохранении сохраняют метаданные своих вложений, чтобы повторная загрузка истории могла восстановить предпросмотр и скачивание файлов.
