Tvijo wiki
Каталог

Теми

Не тримайте ключі провайдера в агенті: один шлюз, один токен на завдання

Якщо агент може прочитати ключ провайдера, ви не скажете, хто витратив що. Тримайте ключ в одному процесі й видавайте кожному завданню токен, який його називає, несе його бюджет і вмирає разом із ним. Тоді кожна витрата має власника, а вкрадений токен коштує мало.

🎯 Для Розробник, який дозволяє агентам викликати платні API моделей

📚 Ви дізнаєтеся
  • Чому ключ у середовищі агента руйнує атрибуцію витрат
  • Як працює токен на завдання з бюджетом
  • Що зберігати, а що не зберігати ніколи

🔑 Проблема спільного ключа

Найпростіше налаштування кладе ключ провайдера у файл середовища, і його читає кожен скрипт та кожен агент. Це працює, але унеможливлює три речі. Ви не скажете, яке завдання зробило виклик, бо для провайдера всі вони виглядають однаково. Ви не можете зупинити одне завдання, не зупинивши всі. І будь-який агент, який може прочитати власне середовище, здатен злити ключ через промпт.

Наш власний замір у вересні 2026 показав, що це досі відбувалося в одному runner моста, який брав файл середовища напряму. Саме через цю знахідку з'явився дизайн нижче.

🏗️ Дизайн

Один невеликий сервіс тримає ключі провайдера. Це єдиний код у системі, який їх читає, і тест сканує код, щоб довести, що жоден інший модуль цього не робить. Агенти ніколи не бачать ключа. Вони викликають сервіс і пред'являють токен.

Токен видається під одне завдання. Він прив'язаний до відбитка пакета завдання, тому його не можна використати для іншої роботи. Він несе бюджет і стелю на один виклик, час завершення, і його закривають, коли завдання закінчується. Сервіс зберігає лише хеш токена, ніколи сам токен. Кожен виклик — це рядок у журналі з id завдання, тож у витрат є власник.

Сервіс також веде свої книги окремо від інших грошових шляхів. Він не імпортує торговий код, і це перевіряє тест.

📊 У числах

Від 2026-09-21 сервіс видав 1 415 токенів завдань. 1 367 закрито, а 48 не позначено закритими: частина з них у роботі або покинуті й чекають на завершення терміну. Є 4 резервації бюджету. Файл тестів для меж модулів містить 17 тестів.

🛠️ Практика: винесіть ключ з агента

  1. Знайдіть кожне місце, де читається ключ провайдера: файли середовища, конфігураційні файли, скрипти. Складіть їх список.
  2. Створіть невеликий сервіс, який тримає ключі й надає той самий інтерфейс викликів, який ваші агенти вже використовують.
  3. Видавайте токен на кожне завдання. Прив'яжіть його до хешу опису завдання чи пакета, до бюджету, максимуму на один виклик і терміну дії.
  4. Зберігайте лише хеш токена. Покажіть токен тому, хто викликає, один раз.
  5. Логуйте кожен виклик з id завдання, моделлю, токенами й вартістю, включно з повторними спробами та резервними варіантами.
  6. Додайте тест, який сканує ваш код і падає, якщо якийсь інший модуль читає змінну з ключем.
  7. Приберіть ключ із середовища кожного агента і з кожного профілю оболонки, який успадковують агенти.

✅ Перевірте себе

  • Виведіть середовище процесу агента. Ключа провайдера там немає.
  • Використайте токен завдання після того, як завдання закрито. Виклик відхилено.
  • Використайте токен з іншим пакетом. Його відхилено.
  • Для будь-якого виклику в журналі минулого тижня назвіть завдання та його бюджет.

🚧 Коли це не працює

  • Шлюз стає єдиною точкою відмови. Якщо він лежить, не працює жоден виклик моделі. Запускайте його як керований сервіс із політикою перезапуску.
  • Ключі деінде. Якщо профіль оболонки розробника досі експортує ключ, агент його успадковує. Перевіряйте й оболонки.
  • Токени з довгим життям. Токен, що живе тиждень, — це ключ із зайвими кроками. Прив'язуйте його до завдання.
  • Збій одного провайдера. Шлюз його не усуває. Визначте політику резервних варіантів і логуйте їх.
  • Локальні моделі. Модель на вашому власному обладнанні не має ключа. Журнал вам усе одно потрібен.

📊 Докази

Що ми заміряли Видані та закриті токени завдань, резервації та тести для меж модулів
Коли 3 листопада 2026, 21:53 UTC
Артефакт Таблиці токенів завдань і резервацій нашої транспортної бази даних, модуль облікових даних і його тести меж у нашому приватному репозиторії
Обмеження Кількість показує використання, а не безпеку. Огляд від людини поза командою не опубліковано

➡️ Далі

Подивіться, як бюджет резервується до запуску завдання, у Витрати, бюджети та ліміти, а що перевіряти в з'єднанні — у Контрольний список безпеки сервера MCP.

Джерела

Зв’язки опублікованих статей. Виберіть вузол, щоб відкрити статтю біля заголовка.

100%
→ Пов'язані статті← Посилаються сюди⋯ Та сама тема
Зв’язки статей · клавіатура / текст

💬 Коментарі

Коментарі публічні та модеруються. Не публікуйте персональні дані.
  • Коментарів ще немає. Будьте першим!

Наступні кроки

AI agents and MCP explained

Векторна база — це мапа, а не джерело: що ми з'ясували про пошук

Векторна база знаходить уривки, близькі за змістом до вашого запиту. Вона не знає, які з них правдиві чи актуальні. Сприймайте кожен результат як вказівник: відкрийте названий файл, перевірте хеш і беріть числа з артефакту, а не зі знайденого абзацу.

AI agents and MCP explained

Коли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння

Іноді виклик моделі перевищує час очікування, і ви не знаєте, чи провайдер списав кошти. Ніколи не записуйте це як нуль. Позначте витрату як непевну, зупиніть нові платні виклики й доручте названій людині звірити її з випискою провайдера. Виняток — відмови, що сталися до генерації.

AI agents and MCP explained

Розбиття великого завдання для дешевої моделі: урок про 24 000 байтів

Дешева модель добре дає раду з однією невеликою чітко окресленою роботою, але погано з великим нагромадженням. Ми обмежуємо завдання 24 000 байтами і відмовляємо більшим ще до виклику моделі. Діліть на одиниці — один файл або одна країна на завдання — і перевіряйте розмір до початку.

AI agents and MCP explained

Навички, інструменти MCP і правила: три способи дати агенту можливості

Агенти отримують можливості по-різному. Правило обмежує те, що вони роблять, навичка підказує, як виконати роботу, а інструмент MCP дозволяє викликати функцію. Кожен із трьох має власний ризик, тож фіксуйте всі три в реєстрі й перевіряйте тестом, що нічого не існує поза ним.