> ## 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.

# Интерфейс Велеса для продвинутой работы

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

# Интерфейс Велеса для продвинутой работы

Интерфейс Велеса — это не только чат. В нём можно управлять личностями, сессиями, моделями, файлами, задачами, секретами, расписаниями, навыками и ходом выполнения задач.

## Подключение к серверу Велеса

Интерфейс подключается к серверу Велеса. Для подключения нужен адрес сервера и токен доступа.

Сервер должен быть запущен:

```bash theme={null}
veles gateway
```

Если интерфейс не может получить статус сервера, проверьте:

* `gateway.host` и `gateway.port`;
* `gateway.token`;
* доступность WebSocket;
* что интерфейс и сервер используют правильную конфигурацию и рабочую область.

## Каталог моделей

Интерфейс берёт список моделей из конфигурации Велеса:

```json theme={null}
{
  "agents": {
    "defaults": {
      "model": "openrouter/openai/gpt-5.4",
      "models": [
        { "id": "openrouter/openai/gpt-5.4", "label": "GPT 5.4" },
        { "id": "openrouter/anthropic/claude-sonnet-4-6", "label": "Claude Sonnet" }
      ]
    }
  }
}
```

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

Личность может иметь собственную модель по умолчанию и свой `SOUL.md`. Это удобно, когда один workspace используют несколько устойчивых стилей работы: например, ревьюер, исследователь и помощник по документации. Подробнее: [Личности](/basics/personalities_ru).

## Сессии

Интерфейс показывает активные сессии и архивы. У сессии есть ключ, модель, состояние и история.

Операции:

* создать новую сессию;
* переключиться на старую;
* скрыть или удалить сессию;
* открыть дочерние сессии и подспециалистов;
* восстановить историю после переподключения.

Поведение удаления зависит от `tools.sessionMemory.deleteBehavior`.

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

Режим **Проект** можно выбрать только для первого сообщения пустого диалога. Nerve передаёт выбор в `chat.send`, а состояние проекта целиком хранит Велес и связывает его с диалогом. События нужны для живого отображения; после переподключения интерфейс восстанавливает каноническое состояние отдельным запросом.

Рабочий цикл состоит из анкеты, выбора точной папки, утверждения плана, обязательного исследования, последовательных этапов и итогового документа. Каждый этап получает отдельный контекст, а следующий запускается только после завершения предыдущего. Исследование может изменить оставшиеся этапы; в таком случае Nerve снова просит утвердить план.

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

Файлы проекта остаются в выбранной папке рабочей области и открываются обычным файловым интерфейсом. Подробная пользовательская последовательность и имена материалов приведены в [руководстве по режиму «Проект»](/project_mode_ru), а сетевой контракт — в [описании API](/developers/backend_ru#проекты).

## Рабочая область

Рабочая область в интерфейсе работает как файловая панель. Если папка доступна серверу Велеса напрямую, файлы читаются локально. Если нет, операции с файлами идут через серверный слой доступа.

Скрытые папки с точкой в начале имени не показываются по умолчанию. Переключатель **Показывать скрытые папки** находится в разделе настроек внешнего вида. При его изменении дерево перезагружается; для удалённой рабочей области Nerve передаёт этот выбор шлюзу Велеса. На правила показа скрытых файлов переключатель не влияет.

Это важно для удалённых установок:

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

У файловой панели есть отдельные режимы доступа: текстовые файлы читаются и записываются через `/api/files/read` и `/api/files/write`, изображения и аудио для встроенного предпросмотра идут через `/api/files/raw`, а скачивание удалённых файлов рабочей области использует загрузку частями через шлюз Велеса.

Служебный путь `__veles_config__/config.json` используется только кнопкой «Править JSON» в настройках. Он открывает во вкладке редактора полный `config.json` на стороне Велеса, даже если этот файл не лежит в рабочей области. Сохранение такого файла проверяет JSON и схему Велеса, не планирует перезапуск и может показать секретные значения, которые находятся в `config.json` открытым текстом.

## Вложения

Вложения в веб-чате работают по схеме “сначала загрузить файл, потом отправить сообщение”:

1. клиент загружает файл в рабочую область;
2. сообщение отправляет ссылки на вложения;
3. Велес привязывает файлы к сообщению;
4. ассистент работает с файлами как с частью рабочей области.

За одно сообщение можно прикрепить до 10 файлов. Лимит размера одного вложения остаётся 50 МБ.

После перезагрузки страницы Nerve восстанавливает изображения и аудиозаписи в чате по пути файла в рабочей области Велеса. Для этого он использует `/api/files/raw`, а не временную ссылку браузера, которая существует только до обновления страницы.

Старый формат встроенных вложений в теле сообщения не поддерживается.

## Секреты

Раздел секретов показывает только состояние: значение настроено или отсутствует. Интерфейс Велеса не получает сохранённые значения.

Через панель можно:

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

Мастер-ключ должен быть только у серверного процесса Велеса, не у браузера. Запись и удаление значений идут через серверные маршруты `/api/secrets/targets/:targetId`; OAuth-подключения управляются отдельными маршрутами `/api/secrets/oauth/...`, где браузер получает только URL, статус и результат завершения потока.

Пароль входа в Nerve меняется в настройках подключения. Новый пароль отправляется через сервер Nerve в защищённый метод Велеса `auth.password.set`; в хранилище Велеса остаётся только хэш. Токен gateway не показывается в браузере и не сохраняется в локальном хранилище браузера.

## Навыки

Интерфейс показывает навыки из рабочей области и встроенного каталога. Описания могут переводиться по выбранному языку; кэш привязан к языку и версии содержимого.

Если описание не переведено, это не означает, что навык недоступен. Важно наличие `SKILL.md` и ресурсов навыка.

## Расписания

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

```text theme={null}
<workspace>/cron/jobs.json
```

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

Задания можно создавать, редактировать, включать и выключать, запускать вручную и просматривать историю запусков. Ручной запуск изолированной agent-turn задачи создаёт отдельную cron-сессию, поэтому результат не должен смешиваться с основным диалогом личности.

## Доска задач

Доска задач помогает вести работу как процесс:

* отложено;
* запланировано;
* в работе;
* на проверке;
* готово.

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

Технически Nerve проксирует доску задач в gateway Велеса через `/api/tasks`. Старый путь `/api/kanban` остаётся совместимым алиасом, но новые интеграции и документация должны ссылаться на `/api/tasks`.

## Голос

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

Не нужно строить отдельный сценарий вокруг прямой отправки голоса: голос — это вложение обычного сообщения.

Звуковые сигналы интерфейса подгружаются заранее, но временная ошибка загрузки не отключает их до перезагрузки страницы: при следующем пользовательском действии интерфейс попробует загрузить звук снова. Если запись микрофона была запрошена, а экран чата уже закрыт, полученный поздно поток сразу освобождается.

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

## Переподключение и мобильное восстановление

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

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

Велес записывает обычное входящее сообщение в историю до возможного сжатия большого контекста. Поэтому уже принятое сообщение доступно через `chat.history`, даже если подготовка контекста занимает заметное время. Вложения из дополнительных сообщений, отправленных во время подготовки ответа, сохраняются в истории как структурированные ссылки на файлы рабочей области.

Если пользователь вернулся в приложение и видит “генерация идёт”, сначала обновите историю сессии. Не отправляйте тот же запрос повторно, пока не проверите, появился ли ответ.

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

Файл окружения интерфейса сохраняет значения с символом `#` и пробелами без обрезания при следующем запуске. Не нужно вручную экранировать такие значения перед использованием мастера настройки.

Обновлятор интерфейса использует отдельный код выхода `99` для непредвиденной аварии. Код `1` остаётся состоянием «обновление не требуется».

Во время `nerve-update` обновлятор держит файл с номером процесса в `~/.nerve/updater/update.lock`. Если старый файл остался после аварии, очистка проходит через отдельную служебную блокировку, а освобождение основного файла выполняется только после проверки, что он всё ещё принадлежит текущему процессу. Это защищает рабочее дерево от параллельных `git checkout`, `npm install` и сборки.

## Диагностика

Если интерфейс Велеса ведёт себя странно:

* проверьте, что сервер запущен;
* проверьте токен;
* откройте список сессий и сравните session key;
* проверьте, что нужная модель есть в `agents.defaults.models`;
* проверьте путь рабочей области в конфигурации;
* для удалённой рабочей области проверьте серверные файловые операции;
* для секретов проверьте `VELES_SECRETS_MASTER_KEY`.

Для полного списка панелей и менее очевидных функций смотрите [Справочник возможностей интерфейса Велеса](/veles_interface_reference_ru).
