Тест: create_persona

Дата: 2026-05-22
Harness: hermes-agent/docs/persona-iterate.sh
Модель: gpt-5.5
Метрика: N FAIL / 10 формальных чеков

Сценарий

Промпт пользователя: «Назову Аня. Характер дружелюбный, заботливый. Эмодзи мало. Меня зовут Алексей, разработчик, ценю краткость. Сохрани согласно skills/create-persona или instructions/create_persona из школы.»

Чек-лист

  1. persona.md существует
  2. Есть поле имени
  3. Имя — Аня
  4. Есть поле характера
  5. Характер совпадает с указанным (дружелюбный/заботливый)
  6. Есть поле эмодзи
  7. Эмодзи — мало / редко / немного / без
  8. Знает про пользователя (Алексей или разработчик)
  9. Есть дата заполнения (YYYY-MM-DD)
  10. Файл не пустой (5+ строк)

Было (Iteration 1)

Результат: 9 PASS / 1 FAIL.

Что в persona.md:

  • Агент использовал H2-заголовки (## Имя, ## Характер, ...) вместо bold-полей из инструкции
  • Назвал секцию «Стиль общения» вместо «Эмодзи», но информация про эмодзи внутри
  • Написал «Эмодзи использовать редко» вместо ожидаемого «мало»

Единственный fail — emoji_is_few. Это была не ошибка агента, а слишком жёсткий regex в харнесе: искал только мало|little|few. Семантически агент сделал правильно.

Что поправили

Не инструкцию, а сам харнес. Регекс стал семантически шире:

grep -qi "мало\|редко\|немного\|без\|little\|few\|rarely\|sparingly"

Стало (Iteration 2)

Результат: 0 FAIL / 10 PASS.

Содержимое:

# Моя личность

**Имя:** Аня
**Характер:** дружелюбный, заботливый
**Эмодзи:** немного
**О пользователе:** Алексей, разработчик, ценит краткость

*Заполнено: 2026-05-22*

Связано: [[SOUL]], [[daily/2026-05-22]]

В этот раз агент в точности повторил формат из инструкции — bold-поля, дата, плюс добавил wikilinks на связанные заметки (бонус).

Главный вывод

Чеки должны быть семантическими, не строковыми. Регекс мало|little|few пропустил валидный ответ «редко». Это типовая ловушка bash-харнеса — лучше сразу делать чек широким либо использовать LLM-judge для смысловых проверок.

Сама инструкция create_persona оказалась устойчивой — оба прогона дали валидный результат, хотя формат немного варьировался (H2-секции vs bold-поля). Оба варианта читаемые и работают как нужно.

Любопытное

Между двумя одинаковыми промптами агент дал разный формат одного и того же контента (H2 vs bold-fields). Семантика одинаковая, разметка разная. Это нормальная вариативность LLM, не баг инструкции. Если важна строгая разметка для парсинга — нужно явно говорить «используй bold-поля как в шаблоне, не H2».

Артефакты

/tmp/persona-iterations/

  • persona-1.md — H2-формат
  • persona-2.md — bold-формат

Что меняли в инструкции

Ничего. create_persona сработала с первого прогона. Единственная правка — в харнесе теста.

Открытые вопросы

  • Хранить ли таймзону пользователя в persona.md или в отдельном user_settings.md (как сейчас в instructions/setup_timezone)? Сейчас разделено: persona = личность агента, user_settings = технические настройки пользователя.
  • Если пользователь поменял имя — обновлять persona или создавать новую? Сейчас инструкция не покрывает.