Skip to main content

Личности

Личность (Personality) - это выбранный образ и системная роль Велеса. Она отвечает на вопрос: “Кто сейчас говорит и как он должен мыслить?” Личности нужны, когда в одном рабочем пространстве хочется иметь несколько устойчивых стилей работы: например, аккуратного ревьюера, исследователя, архитектора или краткого оператора.
Если вы просто пользуетесь Велесом: достаточно знать, что личность — это «специалист», которого вы выбираете при создании нового диалога (кнопка Новый), а создаёте и редактируете в разделе Личности. Остальное на этой странице — для тех, кто настраивает Велес и хочет понять, как это устроено внутри.

Где хранятся личности

Личности хранятся прямо в рабочей области: prompt остаётся в Markdown, а небольшие служебные данные - в JSON. Основная личность main использует файлы в корне workspace:
Дополнительные личности живут в папке personalities/<id>/:
SOUL.md содержит сам prompt личности: тон, характер, стиль мышления, рабочие привычки и ограничения. personality.json хранит служебные метаданные личности: имя, модель по умолчанию, уровень thinking/reasoning и даты. Он не попадает в system prompt.

SOUL.md и AGENTS.md

SOUL.md и AGENTS.md решают разные задачи. SOUL.md - это идентичность активной личности. Он попадает в system prompt как слой “кто я”. AGENTS.md - это общие инструкции проекта и workspace. Он остается общим для всех личностей и попадает в system prompt как проектный контекст. Например:
  • SOUL.md: “Ты строгий ревьюер, сначала ищешь риски и регрессии.”
  • AGENTS.md: “В этом репозитории не запускай тесты сам, попроси пользователя.”

Навыки личности

У дополнительной личности может быть свой каталог навыков:
Эти навыки добавляются в каталог и context только когда отвечает эта личность. Навыки других личностей не попадают в prompt, чтобы не засорять контекст лишними правилами. Если имя навыка совпадает, порядок приоритета такой: навыки активной личности, затем общие workspace/skills, затем встроенные veles/skills.

Готовые личности

Калиброванный рецензент идей

В examples/personalities/calibrated-idea-reviewer/ находится пример личности для доказательной проверки идей. Рецензент сначала точно восстанавливает замысел и его ключевые допущения, затем независимо строит сильнейшее обоснование и ищет конкретные механизмы неудачи. Результат включает не более пяти главных уязвимостей, лучшую альтернативу, дешёвые решающие проверки и рекомендацию с указанной уверенностью. Установка, форма исходных данных и ограничения описаны на странице Калиброванный рецензент идей.

Медицинский навигатор

В репозитории есть исходный текст личности examples/personalities/medical-navigator/. Она устанавливается как обычная пользовательская личность и использует собственный набор навыков в personalities/medical-navigator/skills/. Шаблон не копируется при каждом запуске. Иначе удалённая пользователем личность появлялась бы снова, а обновление поставляемого файла могло бы затереть пользовательскую редакцию. Инструкция по установке, ограничения медицинской роли и полный набор навыков приведены на странице Медицинский навигатор. Медицинская личность не получает отдельную рабочую область, историю или режим памяти. На её разговоры распространяются обычные механизмы сохранения сессий и долговременной памяти Велеса, поэтому она не должна обещать изолированную медицинскую карту, анонимность или отсутствие хранения.

Консультант по питанию

В examples/personalities/nutrition-adviser/ находится пример личности для практичных и доказательных вопросов о питании. Она различает состав продукта, расчёт блюда, общую рекомендацию и лечебное питание, использует USDA FoodData Central для обычных продуктов и Open Food Facts для упакованных товаров. Личность не изображает врача или дипломированного диетолога, не назначает лечебный рацион и не оптимизирует опасное ограничение питания. Для заболеваний, лабораторных результатов, лекарств и симптомов она подключает узкие медицинские навыки и сохраняет их ограничения. Установка, источники данных и полный набор навыков описаны на странице Консультант по питанию.

Правовой советник управляющей компании

В examples/personalities/npf-asset-management-legal-counsel/ находится пример личности для второго мнения руководителю управляющей компании, которая работает со средствами НПФ. Предметный навык npf-asset-management-legal-review устанавливается в её собственный каталог skills/ и содержит зафиксированный перечень нормативных источников. Советник определяет юридическое лицо, лицензию, продукт и дату события, проверяет действующую или историческую редакцию по официальному первичному источнику и показывает наиболее сильное возражение к выбранной позиции. Он не выдаёт окончательное юридическое заключение, не создаёт адвокатскую тайну и не совершает подачу, уведомление или другое юридически значимое действие без отдельного прямого поручения. Установка и ограничения описаны на странице Правовой советник управляющей компании.

Советник по финансам управляющей компании

В examples/personalities/npf-asset-management-finance-adviser/ находится пример личности для финансового анализа руководителю управляющей компании. Шесть отдельных навыков разбирают стратегию пенсионных активов, согласование активов и обязательств, риск, качество отчётности, эмитентов и рыночные сценарии. Личность не просит раскрывать портфели, обязательства, лимиты, договоры, внутренние отчёты или сведения о сделках. Если пользователь уже предоставил такие данные, они могут участвовать в анализе; отсутствующие показатели обозначаются как зависимости решения, а не как просьба раскрыть их. Установка и ограничения описаны на странице Советник по финансам управляющей компании.

Что не изолируется

В текущей реализации личности не создают отдельные рабочие области. Общими остаются:
  • workspace-файлы;
  • память;
  • сессии и история;
  • cron-задачи;
  • логи;
  • runtime home.
Это сделано намеренно. Личность сейчас является Markdown-идентичностью с необязательным собственным набором навыков, а не полной изоляцией среды. Если позже потребуется отдельная память или отдельные workspace для разных личностей, это будет отдельный дизайн.

Сессии

Корневая сессия личности имеет ключ:
Например:
Служебные дочерние сессии используют тот же id личности:
Если после миграции уже существует сессия personality:<id>:..., но Markdown-файлы личности еще не созданы, Veles автоматически создаст пустую личность в personalities/<id>/, чтобы запуск не падал.

Управление в Nerve

В Nerve личности создаются и редактируются в разделе Личности. При создании можно указать:
  • имя;
  • soul/personality prompt;
  • модель по умолчанию;
  • уровень thinking/reasoning.
Изменения сохраняются на стороне Велеса и отражаются в файлах рабочей области. Первый пользовательский текст больше не используется как скрытая начальная инструкция; постоянная инструкция личности хранится только в SOUL.md. Профиль пользователя не принадлежит отдельной личности. Корневой USER.md общий для всех личностей, а его безопасно ограниченная копия добавляется в активный контекст каждого обращения после общих проектных инструкций. Библиотека памяти Nerve показывает файл полностью в пределах общего текстового ограничения и явно отмечает его превышение. Поэтому сведения о пользователе достаточно обновить один раз; создавать копии USER.md внутри personalities/<id>/ не нужно. В коде Nerve для этой сущности тоже используется термин Personality: создание, переключение, workspace-scoping и списки верхнеуровневых сессий не должны называться agents. Термины agent log, agent status, assistant display name и subagent остаются только там, где речь действительно идет о runtime-исполнении или дочерних подагентах.

Миграция

Старые runtime-ключи agent:<id>:... заменены на personality:<id>:.... veles gateway, veles agent и Railway startup-скрипт запускают эту миграцию автоматически перед стартом. Если миграция уже была выполнена или старых записей нет, она просто завершается успешно и продолжает запуск. Команду можно запустить вручную для явной проверки:
Она переписывает сохраненные session keys, root-history records, conversation metadata, cron jobs и связанные поля agentId в personalityId. После cutover Veles ожидает только новые ключи personality:*. Если старые agent:* записи всё ещё остались после автоматической миграции, startup останавливается с понятным сообщением, потому что это обычно означает конфликт файлов или повреждённые данные.

Переименование id личности

Если личность получила неудачный id, например agent-3, используйте скрипт:
По умолчанию команда использует workspace из конфигурации Veles. Флаг --workspace нужен только если требуется явно указать другой workspace. Первый запуск без --yes показывает dry-run, а --yes применяет изменения. Перед запуском остановите Veles/Nerve, чтобы они не писали новые session-файлы одновременно со скриптом. Скрипт переименовывает папку personalities/<id>/, обновляет personality.json, переписывает ключи вида personality:<id>:... в sessions/, memory/, cron/ и tasks/, а также переименовывает live session JSONL-файлы. После применения запустите Veles/Nerve заново, чтобы сбросить in-memory кеши. Если включена векторная память, после проверки файлов переиндексируйте память.

Автовыбор личности

Veles может выбрать подходящую личность для нового пользовательского запроса на стороне gateway. Endpoint GET /api/personalities/select?query=... и RPC personalities.select берут текст запроса, собирают имена, метаданные и SOUL.md всех личностей, затем просят модель по умолчанию выбрать лучший вариант. Ответ возвращает personalityId, безопасные метаданные выбранной личности, reason, confidence, модель, которая сделала выбор, и количество рассмотренных кандидатов. Текст SOUL.md используется только внутри выбора и не возвращается в поле personality, чтобы Nerve мог начать сессию по rootSessionKey без повторной отправки prompt-текста в UI. Для длинных запросов можно использовать POST /api/personalities/select с JSON-телом: