Диагностика и частые вопросы
Эта страница помогает быстро вернуть Велес в рабочее состояние. Сначала найдите симптом в таблице, затем при необходимости пройдите набор диагностических команд по порядку.Правило большого пальца: пока Велес не отвечает на простое сообщение из командной строки (
veles agent -m "привет"), не добавляйте новые каналы, навыки и интеграции — сначала почините базовый чат.Частые симптомы и решения
Набор диагностических команд
Проходите по порядку — каждая следующая команда сужает область поиска:veles status показывает корректную модель и ключи, но veles agent всё равно не отвечает — проблема на стороне провайдера (ключ, баланс, доступность модели). Если чат из командной строки работает, а интерфейс нет — проблема в подключении интерфейса к серверу (токен, порт, запущен ли veles gateway).
Что делать, если vector.db занимает много места
- Остановите
veles gatewayи все процессыveles agentдля той же рабочей области. - Запустите
veles vector-memory compactбез--yes. Это только план: активная база не изменяется. - Если запуск с
--yesсообщает, что индекс занят, его владеет другой процесс. Найдите и штатно остановите его; не удаляйте файл блокировки и не обходите проверку. Процесс старой версии может не поддерживать эту блокировку, поэтому одной успешной проверки недостаточно — все процессы всё равно должны быть остановлены. - Убедитесь, что на той же файловой системе достаточно места для теневой базы и полной резервной копии.
- Выполните
veles vector-memory compact --yes. Команда создаст и проверит свежую теневую базу до атомарной замены и не будет обращаться к поставщику модели. - Запустите Велес и проверьте несколько известных запросов поиска. Только после этого вручную переместите или удалите резервную копию с отметкой времени, путь к которой напечатала команда.
vector.db остаётся прежним. Не запускайте вручную VACUUM, не удаляйте vector.db, vector.db-wal или vector.db-shm и не переносите их во время работы Велеса. Подробности и параметры команды описаны на странице «Командная строка и эксплуатация».
Что проверять, если ВКонтакте не отвечает
- Запустите
veles gateway --verbose. При нормальном запуске в журнале появляютсяVK channel startedи затемVK long poll initialized. - Проверьте
channels.vk.enabled, положительныйgroupIdи наличие секретаchannels.vk.token. После замены секрета перезапустите сервер: обновление секретов не заменяет ключ уже работающего канала. - В настройках сообщества разрешите сообщения, включите долгий опрос и событие новых входящих сообщений
message_new. - Сверьте числовой идентификатор отправителя с
allowFrom. Пустой список запрещает доступ всем; при отказе в журнале появляетсяAccess denied for sender. - Проверьте, что ключ создан для того же сообщества, которое указано в
groupId, и имеет право работы с сообщениями.
failed=1обновляет указатель событий;failed=2заменяет сервер и ключ, сохраняя указатель;failed=3полностью пересоздаёт состояние подключения.
VK long poll initialized.
Если восстановление не произошло, ориентируйтесь на следующую строку журнала:
VK API ... error— неверный ключ, идентификатор сообщества или права доступа;- повторяющийся
VK long poll error— сетевая ошибка, ошибка DNS, TLS или недоступность ВКонтакте; VK send failed after ... attempts— входящее сообщение обработано, но итоговый ответ не удалось доставить;VK event processing failed— одно повреждённое событие пропущено; следующие события продолжают обрабатываться.
Что проверять при проблемах с интерфейсом
- Сервер запущен:
veles gateway(илиsystemctl --user status veles-gateway). - Порт совпадает: интерфейс подключается к тому же
gateway.port. - Токен совпадает: интерфейс использует тот же
gateway.token. GET /healthотвечает;GET /statusс токеном возвращает статус.- В логах сервера нет ошибок авторизации (
Unauthorized, код-32001).
Что проверять при ошибке удаления маркетплейса
- Запустите шлюз командой
veles gateway --verboseи повторите удаление из интерфейса. - Найдите строку
[skill-marketplace-delete]с нужнымmarketplace_id. - Сообщение
storage move failedозначает ошибку до изменения конфигурации;storage cleanup failed— ошибку очистки;rollback failed— ошибку восстановления. Смотритеerror_type,errno,winerrorи затронутые пути. - При
WinError 5илиWinError 32Велес автоматически повторяет атомарное переименование и очистку с короткими увеличивающимися паузами. Ошибка после всех попыток означает, что другой процесс удерживает путь дольше допустимого времени. WinError 145на глубоко вложенной папке обычно означает, что обычный путь Windows не позволил очистить всё её содержимое; шлюз использует расширенный формат пути, чтобы обработать такое дерево.- Строка
deletion rolled backозначает, что исходная конфигурация и папка восстановлены.
Что проверять, если маркетплейс не находит навыки
- Проверьте адрес источника. Для GitHub нужен публичный адрес HTTPS на
github.com. Для GitLab допустим адрес HTTP или HTTPS на любом узле; он не должен содержать учётные данные, строку запроса или фрагмент. - Запустите шлюз командой
veles gateway --verboseи повторите добавление или синхронизацию маркетплейса. - Найдите строки
[skill-marketplace-scan] skill rejected. В каждой строке указаны относительный путьSKILL.mdи точная причина отклонения в полеreason. Велес выводит не более первых 50 отклонений; количество остальных указывается отдельно. - Итоговая строка
[skill-marketplace-scan] no valid skills foundсодержит идентификатор и тип маркетплейса, количество отклонённых файлов и первую причину. - Если
rejected=0, в репозитории не найдено ни одного файлаSKILL.md. Иначе исправьте перечисленные файлы: чаще всего имя навыка не совпадает с каталогом, вводная часть YAML повреждена или поле имеет неподдерживаемый тип.
Частые вопросы
Нужен ли интернет для работы Велеса? Зависит от модели. Для облачных провайдеров (OpenRouter, OpenAI и т.п.) — да. С локальной моделью базовый чат работает офлайн, но веб-поиск, MCP и часть навыков требуют сети. См. Провайдеры и модели. Где хранятся мои данные? В рабочей области и каталоге~/.veles (конфигурация, память, служебное состояние, зашифрованные секреты). В Docker монтируйте ~/.veles, чтобы данные переживали перезапуск контейнера.
Можно ли запустить несколько независимых Велесов?
Да. Используйте отдельные --config, рабочие области и порты. См. Установка и первый запуск.
Как безопасно хранить ключи и токены?
Через панель секретов и зашифрованное хранилище, а не в сообщениях чата. См. Секреты и токены.
Почему Велес «забыл» то, что я говорил раньше?
Контекст одной сессии ограничен. Устойчивые факты и правила нужно явно сохранять в память. См. Память Велеса.
Изменил конфигурацию — нужно ли перезапускать сервер?
Секреты можно перечитать на лету (secrets.refresh). Изменения структуры конфигурации (порты, каналы, провайдеры) надёжнее применять перезапуском veles gateway.
Почему объединённый сервис Railway перезапускается при завершении Велеса или Nerve?
Сценарий запуска следит за обоими процессами. Если один из них завершается, сценарий
останавливает второй и возвращает код ошибки, после чего политика ON_FAILURE из
railway.toml перезапускает весь сервис. Проверка /health также завершается ошибкой,
когда Nerve работает, но шлюз недоступен.
Что означает сообщение об отсутствующем workspace/sessions/sessions.json?
Это необязательное устаревшее хранилище скрытых служебных сессий Nerve. Если файл
отсутствует, маршрут возвращает пустой список с кодом 200; данные Велеса и файлы
_sessions.jsonl не повреждены. Актуальная версия не выводит это штатное состояние
как ошибку в журнал.
