--- title: service-block-preferences desc: Як зробити, щоб кожна відповідь у claude.ai починалась і закінчувалась службовим моноблоком — рецензія маршруту, задіяні скіли, цифри. І де межа між реальними даними і красивою вигадкою. locked: false order: 4 section: ai featured: false voice: markmandryk-devtalk --- # Службовий хедер і футер у claude.ai Дефолтна відповідь чату про себе не каже нічого. Якою моделлю це варто було робити, які інструкції спрацювали, скільки коштувало — модель це (частково) знає і мовчить. Лікується не промптом щоразу, а **преференціями** — блоком інструкцій, який підмішується в кожну нову розмову. На виході кожна відповідь відкривається моноширинним службовим блоком і ним же закривається. Налаштування живуть у `Settings → Profile`. Діють на **нові** розмови, не на поточну — тобто поточну цим блоком уже не полагодиш. --- ## Мінімальна робоча заготовка Три окремі правила, кожне робить одну річ: ``` - Завжди починати відповідь рядком-рецензією: чи правильно обрано інструмент (чат / агент / віддалений ран), модель і effort для цього запиту — коротко, одним рядком, до основної відповіді. - У той самий службовий блок: назви задіяних скілів виділяти як quote, і туди ж цифри по токенах. - Службовий блок подавати моноширинним блоком, а не звичайною прозою. - Наприкінці відповіді — футер того ж стилю з підсумковими цифрами. ``` Три речі, від яких залежить, спрацює воно чи ні: 1. **Слово «завжди».** Без нього преференція читається як контекстна — застосується вибірково, рівно тоді, коли модель сама вирішить, що доречно. А мета якраз протилежна. 2. **Явна вимога моноширинності.** Інакше блок відрендериться прозою і зіллється з відповіддю. Формулювання `monospace-lead` спрацьовує. 3. **Розбивка на окремі рядки-правила.** Один довгий абзац із трьома вимогами виконується частково; три коротких — цілком. --- ## Що в цей блок класти можна | Рядок | Джерело даних | Чесність | |---|---|---| | маршрут: чат / агент / ран | міркування моделі про задачу | висновок, не факт | | модель і effort | те саме | висновок | | задіяні скіли | модель бачить, які інструкції прочитала | факт | | прочитані файли пам'яті | модель бачить свої виклики | факт | | preflight-оцінка вартості рану | рахує скрипт на вузлі | факт, вимірюваний | | usage завершеного рану | лог рану | факт | | токени поточного чату | **немає джерела** | вигадка | Останній рядок — головна пастка формату, і починається вона з того, як воно ламається. Чат-шар **не бачить власних лічильників**: ні спожитого, ні залишку в контексті немає. Тому будь-яка цифра «input/output цієї відповіді» — згенероване число, схоже на правду і не більше. Марним футер із цифрами це не робить. Але тягне за собою одне правило: **у службовому рядку вказувати, чиї це токени**. `usage завершених ранів` — реальність, її міряв лог рану. `токени цього чату` — позначати як недоступне, а не затикати красивим числом. Той самий принцип скрізь, де формат просить цифру, а джерела під неї нема: чесніше написати «немає джерела», ніж набити рамку правдоподібним шумом. Формат, який змушує вигадувати, гірший за відсутність формату. --- ## Чому саме моноширинний Не естетика, а функція: блок має **не читатись як відповідь**. Проза службового рядка зливається з першим абзацом, і око не встигає їх розділити. Моноширинний блок фіксованої форми зчитується як службовий шар за мілісекунди — і пропускається, коли не потрібен. Звідси й друга вимога: форма стабільна, однакові поля в однаковому порядку. Блок, що щоразу різний, читається як текст — тобто перестає працювати. --- ## Таблиця рішень | Ситуація | Що робити | |---|---| | Блок з'являється не завжди | додати «завжди» / «for all chats» у формулювання | | Блок рендериться прозою | окремим правилом вимагати моноширинний блок | | Блок роздувся на пів екрана | скоротити до трьох рядків; це шапка, а не звіт | | Цифри виглядають правдоподібно, але сумнівно | перевірити, чи є в них джерело; чат не бачить своїх токенів | | Преференція не спрацювала в цій розмові | преференції застосовуються до нових розмов | | Формат заважає в конкретній задачі | поточний запит перебиває збережену преференцію | --- ## Антипатерни - **Просити цифри, яких модель не бачить.** Рамка заповниться — правдоподібним і неправдивим. - **Вимагати однією преференцією п'ять речей.** Виконається одна-дві, решту модель тихо загубить. - **Класти в преференції поведінкові вимоги замість форматних.** «Не сперечайся», «завжди хвали» — це не формат, воно відфільтрується (і правильно, що відфільтрується). - **Робити блок довшим за відповідь.** Службовий шар, дорожчий за корисне навантаження, — це вже не службовий шар. - **Дублювати в блоці те, що й так видно в інтерфейсі.** Виклики інструментів уже показані; переказувати їх у шапці — палити рядки. --- ## Чекліст - [ ] У формулюванні є «завжди» - [ ] Кожна вимога — окремим рядком - [ ] Моноширинність вимагається явно - [ ] Поля блоку однакові від відповіді до відповіді - [ ] Кожна цифра має назване джерело - [ ] Токени чату позначені як недоступні, а не заповнені - [ ] Блок вміщується в три-чотири рядки