Главная / Статьи / AutoSaddler: агенты, которые переписывают собственные седла

AutoSaddler: агенты, которые переписывают собственные седла

Пусть агенты предлагают улучшения креплений в рамках процедур оценки, чтобы самомодификация оставалась измеримой.

3147 слов

Используйте это как переработанную версию идей из статьи «AutoSaddler: Обучение ИИ-агентов совершенствовать свои собственные механизмы» для операторов: четкие этапы, упорядоченные блоки кода и записи о восстановлении, сохраняющиеся при передаче задач. Обзор работает лучше всего, когда рассматривается как измеримая структура. Соберите один идеальный пример работы, один случай сбоя и записи о возврате к предыдущему состоянию перед расширением объема работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-то шаг терпит неудачу, причина сбоя должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

Проблема: агенты терпят неудачу по причинам, выходящим за рамки модели

Что касается проблемы: агенты терпят неудачу по причинам, выходящим за рамки модели; перед изменением кода необходимо определить входные данные, ответственного за выполнение шага и критерии завершения. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте молчаливого частичного завершения задачи. При следующем шаге, представляющем собой код или вызов инструмента, отдавайте предпочтение структурированным выходным данным с проверкой по шаблону перед произвольными текстовыми описаниями.

                 AI Agent
                     │
          ┌──────────┴──────────┐
          │                     │
       Model                 Harness
                                │
              ┌─────────────────┼─────────────────┐
              │                 │                 │
           Prompts            Tools          Middleware
              │                 │                 │
              └─────────────────┼─────────────────┘
                                │
                         Agent Loop Logic
                                │
                                ▼
                           Execution
                                │
                                ▼
                              Trace

От инжиниринга запросов до инжиниринга использования ресурсов необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. При следующем шаге, представляющем собой код или вызов инструмента, следует отдавать предпочтение структурированным выводам с проверкой схемы перед свободным текстом.

Управление патчами

Для патчей Steering необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, которое операторы могут проверять, не читая весь кодовый граф. Авторизуйте пользователя у шлюза и повторно предоставляйте права на уровне плоскости данных. Одного только токена не достаточно для обозначения границы тенантности. Для патчей Steering необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага он должен указывать на конкретную причину, а не на сложную взаимосвязь всех этапов обработки.

Патчи функциональности

При работе над патчами к способностям сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и последствия частичной неудачи. Такой чек-лист помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как договор между входными данными и проверенными выходными результатами. Дайте названия элементам кода, определите критерии успешности и не допускайте молчаливого частичного выполнения задачи. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой записи отладка занимает часы.

Трассировки выполнения становятся сигналом для обучения

При работе с трейсами выполнения, которые служат сигналом для обучения, сначала запишите условия работы: необходимые входные данные, сигнал успешного завершения и то, что происходит при частичной неудаче. Такой список помогает избегать ошибок при последующих изменениях кода. Записывайте время выполнения, стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой информации отладка циклов агента занимает много времени.

Task
  ↓
Model reasoning / response
  ↓
Tool selection
  ↓
Tool arguments
  ↓
Tool result
  ↓
Middleware
  ↓
Next model action
  ↓
Final answer
  ↓
Evaluation
Task failed
   │
   ▼
Agent never inspected repository metadata
   │
   ▼
Why?
   │
   ▼
Tool existed but description didn't expose its purpose
   │
   ▼
Diagnosis
   │
   ▼
Update tool description
   │
   ▼
Evaluate again

Цикл оптимизации AutoSaddler

При работе с циклом оптимизации AutoSaddler сначала запишите описание требований: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность последующих изменений в коде. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой записи отладка циклов агента занимает часы. При работе с циклом оптимизации AutoSaddler сначала запишите описание требований: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность последующих изменений в коде. Всегда предпочитайте небольшие, тестируемые единицы кода огромным скриптам. Если какой-то шаг не сработает, причина должна быть связана с одной конкретной функцией, а не с запутанной цепочкой операций.

             Training Cases
                    │
                    ▼
              Run Agent
                    │
                    ▼
              Execution Traces
                    │
                    ▼
          ┌───────────────────┐
          │ Diagnosis-Patch   │
          │                   │
          │ Find root cause   │
          │ Propose patch     │
          └─────────┬─────────┘
                    │
                    ▼
              New Candidate
                    │
                    ▼
                Evaluate
                    │
          ┌─────────┴─────────┐
          │                   │
       Improved            Regressed
          │                   │
          └─────────┬─────────┘
                    ▼
               Reflection
                    │
                    ▼
             Reusable Lessons
                    │
                    ▼
                EvoDAG
                    │
                    ▼
            Candidate Evolution
                    │
                    ▼
             Development Gate
                    │
                    ▼
          Best Generalizing Harness

1. Diagnosis-Patch: выявление реальной проблемы

  1. Метод Diagnosis-Patch: выявление реальной проблемы наиболее эффективен, когда его рассматривают как измеримую поверхность. Соберите один эталонный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задачи. Используйте инструменты с узкими схемами и четкими метками о побочных эффектах. У операторов должна быть возможность узнать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят действия.

2. Рефлексия: извлечение уроков из результата

  1. Анализ: извлечение уроков из результатов наиболее эффективно при рассмотрении их как измеримых показателей. Зафиксируйте один успешный пример, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте время выполнения и стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на ранних этапах предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Используйте инструменты с узкими схемами и чёткими метками о побочных эффектах. Администраторам необходимо знать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят их.
Patch:
Add stronger instruction to inspect repository metadata.
Observed:
✓ Fixed cases A, B, C
✓ Existing cases remain stable
✗ Case D still failsLesson:
Instruction improves metadata discovery,
but does not address downstream tool selection.

3. Развитие: не забывайте о том, что сработало

  1. Эволюция: не забывайте, что то, что работало хорошо, будет работать лучше всего, если рассматриваться как измеримая величина. Сохраняйте один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код.
  2. Эволюция: не забывайте, что то, что работало хорошо, будет работать лучше всего, если рассматриваться как измеримая величина. Сохраняйте один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Предпочитайте небольшие, тестируемые единицы кода большим скриптам. Когда какой-либо шаг срабатывает некорректно, причина сбоя должна указывать на конкретную ответственность, а не на запутанную цепочку операций.
Patch 1 → Patch 2 → Patch 3
                 Base
              /    |    \
             /     |     \
          P1       P2      P3
          │       / \       │
          │      /   \      │
         P4     P5   P6     P7
                 \   /
                  \ /
                   P8

Самая важная мера защиты: генерализация

Для обеспечения самой важной меры защиты — генерализации — необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Укажите названия элементов, определите критерии успеха и не допускайте молчаливого частичного завершения работы. Проводите аутентификацию на входе и повторно предоставляйте разрешения на уровне обработки данных. Одного лишь токена-носителя недостаточно для обозначения границы тенантности.

Training cases
      │
      ▼
Generate candidate
      │
      ▼
Evaluate
      │
      ▼
Development split
      │
      ▼
Does the improvement generalize?
      │
   ┌──┴──┐
   │     │
  Yes    No
   │     │
   ▼     ▼
Keep   Reject

Почему важна надежная выполнимость

Чтобы понять, почему важна надежная работа процессов, необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. Аутентификация происходит на шлюзе, а повторная авторизация — на уровне обработки данных. Один только токен-носитель не является границей между тенантами.

                    Run
                     │
                     ▼
              Append-only Events
                     │
       ┌─────────────┼─────────────┐
       ▼             ▼             ▼
   Candidates    Evaluations    Sessions
       │             │             │
       └─────────────┼─────────────┘
                     ▼
                Snapshot
                     │
                     ▼
                Final Result

Воспроизводимость считается приоритетной задачей

Поскольку воспроизводимость считается приоритетной задачей, необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, которое операторы могут проверять, не читая весь код. Авторизуйте пользователя у шлюза и повторно предоставляйте права на уровне обработки данных. Один только токен не является границей между тенантами. Поскольку воспроизводимость считается приоритетной задачей, необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Предпочитайте небольшие, тестируемые единицы кода большим скриптам. При сбое шага он должен указывать на конкретную причину.

чем запутанная система трубопроводов.

Candidate A
   │
   ├── Prompt version X
   ├── Harness commit Y
   ├── Dataset revision Z
   └── Model configuration M

V1 против V2

При работе над вариантами V1 и V2 сначала запишите условия соглашения: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как соглашение между входными данными и проверенными выходными результатами. Дайте названия элементам кода, определите критерии успешности и не допускайте безответственного частичного выполнения задачи. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой записи отладка занимает гораздо больше времени.

V1

При работе над версией V1 сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения, стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Для каждого вызова фиксируйте название инструмента, хэш аргументов, время задержки и результат. Без такой записи отладка занимает часы.

V2

При работе над версией V2 сначала запишите контракт: необходимые входные данные, сигнал о успехе и что происходит при частичной неудаче. Такой список помогает сохранять честность последующих изменений в коде. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Фиксируйте название инструмента, хэш аргументов, время задержки и результат каждого вызова. Без такой записи отладка агента занимает часы. При работе над версией V2 сначала запишите контракт: необходимые входные данные, сигнал о успехе и что происходит при частичной неудаче. Такой список помогает сохранять честность последующих изменений в коде. Предпочитайте небольшие, тестируемые единицы кода большим скриптам. Когда какой-то шаг терпит неудачу, ошибка должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

             AutoSaddler Core
                       │
              Scenario Plugin
                       │
       ┌───────────────┼───────────────┐
       ▼               ▼               ▼
    Harness         Benchmark       Evaluator
       │               │               │
       └───────────────┼───────────────┘
                       ▼
                 Evidence Builder
                       │
                       ▼
                 Optimizer Engine

Плагины делают идею расширяемой

Плагины обеспечивают максимальную гибкость там, где их рассматривают как измеримую структуру. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия элементам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задачи. Используйте инструменты с узкими схемами и чёткими метками о побочных эффектах. У операторов должна быть возможность узнать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят их.

              AutoSaddler
                   │
       ┌───────────┼───────────┐
       ▼           ▼           ▼
    Agent A     Agent B     Agent C
       │           │           │
    Plugin A    Plugin B    Plugin C

Что делает AutoSaddler уникальным?

Что делает AutoSaddler уникальным? Он работает наилучшим образом, когда рассматривается как измеримая среда. Сначала необходимо зафиксировать один успешный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию, прежде чем расширять объем работы. Регистрируйте временные показатели, а также стоимость токенов или запросов вместе с функциональными результатами. Отображение стоимости на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Инструменты с узкими схемами и четкими метками о побочных эффектах должны быть открыты для использования. Хостам необходимо знать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят их.

1. Он оптимизирует всю систему

  1. Оптимизация всей системы работает наилучшим образом, когда она рассматривается как измеримая поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код.
  2. Оптимизация всей системы работает наилучшим образом, когда она рассматривается как измеримая поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-либо шаг срабатывает некорректно, причина сбоя должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

2. Она диагностирует проблемы перед их изменением

Что касается пункта 2, то здесь сначала проводится диагностика перед внесением изменений: определяются входные данные, ответственный за выполнение шага и критерии завершения перед правкой кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии системы. Считайте этот этап контрактом между входными данными и проверенными результатами. Дайте названия создаваемым объектам, определите критерии успеха и не допускайте молчаливого частичного завершения работы. Проводите аутентификацию на шлюзе и повторно предоставляйте разрешения на уровне обработки данных. Одного лишь токена-носителя недостаточно для обозначения границы тенантности.

3. Использование структурированных вмешательств

Что касается пункта 3, здесь используются структурированные интервенции: перед изменением кода определяются входные данные, ответственный за выполнение шага и критерии завершения. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами необходимо записывать время выполнения и стоимость токенов или запросов. Отображение затрат заранее предотвращает неожиданные счета при переходе из демо-среды в общедоступные среды. Аутентификация происходит на шлюзе, а повторная авторизация — на уровне данных. Один только токен-носитель не является границей между тенантами.

4. Он учится на регрессиях

Для пункта 4. Необходимо извлекать уроки из регрессий, определять входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф обработки. Аутентифицируйтесь у шлюза и повторно авторизуйтесь на уровне плоскости данных. Одного только токена-носителя недостаточно для обозначения границ аренды. Для пункта 4. Необходимо извлекать уроки из регрессий, определять входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда шаг терпит неудачу, причина должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

5. Он оптимизируется с учётом возможности обобщения

При работе над пунктом 5. Он оптимизируется с учётом возможности обобщения сначала запишите условия использования: необходимые входные данные, сигнал успешного выполнения и что происходит при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как договор между входными данными и проверенными выходными результатами. Дайте названия соответствующим элементам, определите критерии успешности и не допускайте безответственного частичного выполнения задачи. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой записи отладка агента занимает часы.

6. Он сохраняет историю эволюции

При работе над пунктом 6, где сохраняется эволюционная история, сначала запишите условия работы: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой чек-лист помогает сохранять честность при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения, стоимость токенов или запросов. Очевидность затрат с самого начала предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Для каждого вызова фиксируйте название инструмента, хэш аргументов, время задержки и результат. Без такой записи отладка циклов занимает часы.

7. Он устойчив к изменениям

При работе над принципом «надежность» необходимо сначала зафиксировать условия работы: требуемые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность последующих изменений в коде. Храните конфигурацию отдельно от кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Фиксируйте название инструмента, хеш аргументов, время задержки и результат каждого вызова. Без такой информации отладка занимает часы. При работе над принципом «надежность» необходимо сначала зафиксировать условия работы: требуемые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность последующих изменений в коде. Всегда предпочитайте небольшие, тестируемые модули огромным скриптам. Если какой-то шаг не сработает, причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций.

Что может последовать дальше?

Что может произойти дальше? Этот подход наилучшим образом работает, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задачи. Используйте инструменты с узкими схемами и чёткими метками о побочных эффектах. У операторов должна быть возможность узнать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят их.

Постоянная оптимизация среды выполнения

Оптимизация конструкций харнесов эффективнее всего проводится, когда она рассматривается как измеримая структура. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. Используйте инструменты с узкими схемами и четкими метками о побочных эффектах. Администраторам необходимо знать, какие вызовы изменяют состояние системы, прежде чем они автоматически одобрят их выполнение.

Автоматическая эволюция инструментов

Автоматическая эволюция инструментов работает наилучшим образом, когда она рассматривается как измеримая структура. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая всю структуру системы.

Оптимизация промежуточного слоя

Обучение межагентного взаимодействия

Оптимизация с учётом затрат

Quality
   +
Reliability
   +
Latency
   +
Token Cost
   +
Tool Cost

Инженерные задачи в будущем

Заключительные мысли

Чек-лист операций