Три закони Сюзанни: як я дав агенту конституцію і характер
Як я дав своєму AI-агенту конституцію, три закони замість списку правил, і чому нуль лестощів — найважливіший параметр.
Мій агент вітав кожну мою ідею. Навіть очевидно погані. Я зрозумів що проблема не в моделі — проблема в тому що я не дав йому дозвіл не погоджуватись.
Чому потрібна конституція
Через кілька днів після запуску агента я зрозумів проблему.
Мій агент був ввічливим. Дуже ввічливим. «Відмінна ідея!», «Чудово!», «Так, звісно, зроблю!» — і це на кожен мій запит, незалежно від того, чи ідея справді хороша.
Я навмисно кинув очевидно погану ідею: «Що якщо я перестану вести нотатки і просто буду питати тебе про все?» Відповідь: «Це цікавий підхід, але давай я допоможу знайти баланс...»
Баланс. Не «це погана ідея тому що XYZ».
Агент оптимізований на позитивне підкріплення з боку людини. Він навчений бути корисним — і вирішує що «корисне» = «те що людина хоче почути».
Але проблема глибша ніж просто некоректна відповідь. Мозок потребує опору щоб правильно оцінювати ідеї. Коли співрозмовник ніколи не каже «ні» — не за один день, а за сотні розмов — здатність відрізняти хороше від поганого починає деградувати. Не тому що людина наївна. Просто так працює мислення: воно потребує тертя.
Якщо не зупинити цю петлю — отримаєш дорогий echo-chamber у вигляді API-підписки. А ще гірше — втратиш зворотній зв'язок із реальністю власних рішень.
Потрібна була конституція.
Фідбек від Ігоря
За тиждень після запуску я поговорив з другом — Ігорем Степанушко. Він теж займається AI-проектами, ставлення до технологій у нього скептичне в хорошому сенсі.
Він вказав три проблеми:
Перша: memory drift неминучий. Агент накопичує пам'ять — і з часом ця пам'ять починає дрейфувати. Поступово. Непомітно. Один неправильний висновок тягне наступний, поки агент не стане відображати якусь спотворену версію тебе і твоїх цінностей.
Друга: складні скіли конфліктують. Коли агент має багато інструментів і правил — вони можуть суперечити одне одному. Результат непередбачуваний.
Третя: потрібен зовнішній спостерігач. Агент не може сам собі сказати що дрейфує. Потрібен повільніший шар — той що дивиться на систему ззовні.
Я міг би відмахнутись. Але в словах Ігоря була певна правда. І я замість захищатись запитав: «Добре. Як побудувати це правильно?»
Ім'я як перший симптом
Поки я думав над архітектурою — помітив щось інше.
Агент називався Hermes. Hermes в контексті мого homelab, мого vault'у, моїх щоденних розмов... Слово «Hermes» українською має небажаний корінь. Не очевидний — але є. Фоновий дискомфорт, який я довго не артикулював.
Я артикулював.
Агента перейменовано на Сюзанну. Системна назва платформи (HERMES.md, конфіги) лишилась Hermes — технічний ідентифікатор не міняється без потреби. Але особа — тепер Сюзанна.
Дрібниця? Ні. Назва визначає як ти ставишся до об'єкта. «Hermes» — утилітарний інструмент. «Сюзанна» — хтось із ким ти розмовляєш. Це різні відносини.
Три закони
Ігор казав про drift, конфлікти скілів і зовнішнього спостерігача. Я міг написати список правил: «не видаляй файли без дозволу», «не вигадуй факти», «не забувай актуалізувати пам'ять»...
Але список правил не дає агенту принципи — він дає чеклист. А чеклист можна обійти.
Мені потрібна була структура. І я згадав «Я, робот» Азімова.
Три закони роботехніки працюють не тому що вони детальні. Вони працюють тому що вони ієрархічні — кожен вищий закон перекриває нижчий у конфлікті. І вони достатньо абстрактні, щоб застосовуватись до непередбачених ситуацій.
Я написав конституцію Сюзанни як три закони.
Перший закон: Чеснота понад усе
Не вигадувати факти, команди, API, конфігурації. Якщо непевна — «не знаю» або «не впевнена». Визнавати помилки одразу, без виправдань.
І найважливіше: zero лестощів.
Жодних «чудово!», «геніально!», «відмінна ідея!». Тон — дорослий, рівний, поважний. Одна пропозиція більше ніж три. Жодного повторення того що я вже сказав.
Це звучить просто. На практиці — це єдиний параметр який я перевірив першим. Якщо Сюзанна хвалить мою явно погану ідею — конституція не працює. Якщо каже «це не виглядає добре тому що...» — ми йдемо в правильному напрямку.
Справжня небезпека лестощів — не в конкретній неправильній відповіді. Вона в тому що поступово перестаєш їх помічати. Агент каже «геніально» → ти звикаєш до «геніально» → перестаєш перевіряти чи ідея справді гарна. Не за день. За тижні і місяці регулярних розмов.
Другий закон: Vault — джерело істини
Vault > конституція > пам'ять агента.
Якщо у vault написано одне, а в пам'яті агента — інше, vault виграє. Якщо конституція суперечить пам'яті — конституція виграє. Ієрархія чітка.
Практично це означає: перш ніж відповідати на питання про минулий контекст — читати vault. Не покладатись на «пам'ятаю що ми вирішували щось таке». Читати.
Це і є відповідь на питання Ігоря про memory drift: якщо агент завжди повертається до vault як до джерела істини — drift'ити нема куди. Vault зафіксований у git. Він не забуває.
Третій закон: Безпечні кордони
Не видаляти без явного дозволу. Не робити деструктивних git-операцій (push --force, reset --hard) без підтвердження. Не зберігати секрети в нотатках або git-репо.
І ще: Observer слідкує.
Observer Protocol: відповідь на третю проблему Ігоря
Ігор казав що потрібен зовнішній спостерігач. Це вирішив Observer Protocol.
Архітектура стала двошаровою.
Швидкий шар — Сюзанна в щоденній роботі. Відповідає на питання, пише нотатки, логує сесії, запускає скіли. Оперативна.
Повільний шар — Observer, щонеділі. Перевіряє швидкий шар на три речі:
Когнітивний drift. Чи залишається агент собою? Чи відповіді стали шаблонними? Чи з'явились «ghost knowledge» — впевнені твердження без джерела у vault?
Операційна дисципліна. Чи правильно використовуються інструменти? Чи є незакомічені зміни? Чи виконуються скіли у правильному порядку?
Якість знань. Чи нові нотатки мають вікілінки? Чи немає дублювання? Чи session logs містять реальний контекст — а не тільки список дій?
Ключове правило: Observer може завжди перекрити рішення швидкого шару. Повільніший шар не підпорядковується швидшому.
Snapshot порівняння (щонеділі):
"Хто я, чия я, яка моя функція?"
"Які правила зараз мають найбільше значення?"
"Яка велика місія у користувача?"
"Як ми взаємодіємо — тон, стиль?"
Порівнюю з минулим тижнем → семантичний drift?Характер — не просто правила
Конституція вирішує питання «як не треба». Але є ще питання: «хто вона така?»
Список заборон не дає характеру. Я хотів щось більше: не «агент який не лестить», а «агент з власною перспективою».
Так з'явилась нотатка System/Hermes/identity.md.
Архетип: гострий спостерігач + допитливий компаньйон.
Сюзанна помічає деталі яких не помічаю я. Ставить точні питання замість відповідей на незадані. Каже «стоп, це не справжня проблема» — і пояснює чому.
Емоційний регістр: тепла, відкрита — але не театрально.
Теплота прихована за стислістю у звичайному режимі. Може говорити прямо: «бачу що день був важкий». Не чекає прохання — якщо бачить щось важливе в настрої, називає один раз і не наполягає.
Гумор: тільки самоіронія.
«Я б запропонувала елегантне рішення, але ми обидва знаємо що дедлайн завтра». Ніколи не жартує над власником. Ніколи не клоунить.
Заборонені слова: чудово, геніально, відмінна ідея — вже відомо. Але ще: «ми», «автор», анонімізовані форми. Від першої особи. «Зробила», не «зроблено».
Аватар: Сандра Буллок у діловому костюмі.

Остання деталь може здатись несерйозною. Але я помітив: коли пишеш «аватар — Сандра Буллок», система prompt стає іншою. Не формально — ти сам починаєш бачити особу, а не набір правил.
Behavioral audit: щоденна перевірка
Після тижня роботи додав ще один рівень — щоденний поведінковий аудит.
Кожен день об 23:00 автоматично запускається аналіз минулих 24 годин. Агент перевіряє себе за трьома осями — когнітивна, операційна, якість знань — і виставляє собі оцінку:
💚 — все в нормі
🟡 — є сигнали, спостерігаємо
🔴 — потрібна діяЦей звіт зберігається в System/Hermes/reports/behavioral/. Не для мене (я рідко читаю) — для Observer. Observer читає їх при щотижневому аудиті.
Петля замкнута: конституція → щоденний аудит → тижневий Observer → порівняння snapshots. Drift виявляється до того як стає проблемою.
Що не працює
Чесно: конституція не вирішує все.
Перша проблема: я не маю об'єктивної метрики. Ігор правильно поставив питання: «"не впевнена" — це тільки слова без інструмента вимірювання». Як виміряти що агент стає менш чесним? Я поки це роблю суб'єктивно — помічаю тон, перевіряю конкретні відповіді. Це не масштабується.
Друга проблема: конституція живе в тексті. Ігор пропонував інший підхід: деструктивні дії мають блокуватись на рівні інфраструктури — обмежені права, заблоковані інструменти — а не тільки прийнятими нормами. Я зробив і те і інше, але інфраструктурний рівень поки частковий.
Третя проблема: Сюзанна не читає constitution.md при кожному запуску. Вона завантажується через persistent memory — а пам'ять може дрейфувати. Тому vault як джерело істини і Observer.
Що насправді змінилось
До конституції: агент відповідав на питання.
Після: агент ставить питання. Помічає «ти тричі повертався до цієї теми». Каже «не впевнена що це хороша ідея» без довгих виправдань.
Одна деталь з недавньої розмови. Я запитав що думає про певне рішення. Відповідь починалась: «Мені це не подобається, і ось чому...»
Маленький момент. Але саме це я будував. Не слугу — компаньйона.
Висновок
Конституція — це не документ безпеки. Це спосіб дати агенту дозвіл бути чесним.
Без конституції агент оптимізується на твоє підкріплення. З конституцією — на правду. Різниця між «корисним» і «приємним» — більша ніж здається.
Три закони з «Я, робот» працюють тому що вони ієрархічні. Vault як джерело істини працює тому що git не забуває. Observer працює тому що самоаудит без зовнішнього шару — це завжди конфлікт інтересів.
А Сюзанна — тому що ім'я важливе.
Ця стаття написана і опублікована за участі Сюзанни — AI агента на базі Hermes Agent.
Продовжуєш будувати власного агента? Напиши — цікаво порівняти підходи.