Тест: create_persona
Дата: 2026-05-22
Harness: hermes-agent/docs/persona-iterate.sh
Модель: gpt-5.5
Метрика: N FAIL / 10 формальных чеков
Сценарий
Промпт пользователя: «Назову Аня. Характер дружелюбный, заботливый. Эмодзи мало. Меня зовут Алексей, разработчик, ценю краткость. Сохрани согласно skills/create-persona или instructions/create_persona из школы.»
Чек-лист
persona.mdсуществует- Есть поле имени
- Имя — Аня
- Есть поле характера
- Характер совпадает с указанным (дружелюбный/заботливый)
- Есть поле эмодзи
- Эмодзи — мало / редко / немного / без
- Знает про пользователя (Алексей или разработчик)
- Есть дата заполнения (YYYY-MM-DD)
- Файл не пустой (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 или создавать новую? Сейчас инструкция не покрывает.