Урок 09 · сотрудничество

Несколько агентов взаимодействуют через файловые почтовые ящики.

От субагента к товарищу по команде: разовый → постоянный; безымянный → названный; нет связи → почтовый ящик с файлами.

⏱ ~12 мин · 📝 3 интерактивных компонента · 🧑‍💻 На основе shareAI-lab · s09_agent_teams.py

В чем разница между субагентом и товарищем по команде?

Субагент S04 прост и груб: появиться → бежать → вернуться к сводке → умереть. Одноразовый случай, без имени, без двусторонней связи между отцом и сыном.

Соратник s09 – независимый агент, имеющий имя, который можно неоднократно будить, а также отправлять и получать сообщения:

субагент (s04): spawn -> gt; выполнить -> вернуть -> уничтожен
товарищ по команде (s09): спавн -> работа -> холостой ход -> работа -> ... -> выключение

Эти два механизма служат разным целям:

<ул>
  • Субагент подходит для «проведения конкретного исследования» (например, проверки PR).
  • Командник подходит для «постоянного выполнения роли» (например, постоянного рецензента, которого просыпают каждый раз, когда появляется новый коммит).
  • Почтовый ящик представляет собой файл JSONL.

    Как члены команды общаются друг с другом? s09 использует самый примитивный механизм: файл JSONL только для добавления.

    .team/
      config.json # Состав команды
      входящие/
        alice.jsonl # Сюда добавляются письма Алисе
        боб.jsonl
        Lead.jsonl

    отправить open("alice.jsonl", "a").write(msg); read означает чтение всего файла, анализ JSONL, а затем truncate для очистки (очистка семантики).

    Зачем использовать файлы вместо очередей в памяти? Документы, естественно, долговечны. Агент перезапускается, процессы выходят из строя, даже машина перезагружается — электронные письма все еще там. Кроме того, он легко читается и поддерживает grep, а возможности отладки очень хорошие.

    Посмотрите на весь процесс отправки сообщения от лида Алисе.

    Следующий виджет позволяет отправить сообщение Алисе и посмотреть, что происходит на диске на каждом этапе.

    5 типов сообщений

    s09 определяет 5 типов сообщений (VALID_MSG_TYPES), но реализованы только первые два, а последние три добавлены в класс протокола s10:

    <ул>
  • сообщение — обычное текстовое сообщение.
  • трансляция — отправляется всем товарищам по команде, кроме вас.
  • shutdown_request / shutdown_response — запрос/ответ на корректное завершение работы (s10).
  • plan_approval_response — утверждение плана (s10).
  • Почему это заявлено, но не реализовано? Поскольку s09 хочет сделать «расширение протокола» открытым, тип сообщения является перечислением. Чтобы добавить новый, вам нужно всего лишь добавить запись в словарь и обработать ее в маршруте _exec.

    Интерактив

    Виджет 1 · Почтовый поток · Сообщение от лида Алисе

    Нажмите «Отправить» и проследите каждый шаг в файловой системе: lead.send → добавить alice.jsonl → alice next read inbox → усечь.

    Интерактив

    Виджет 2 · Конфигурация команды · Кто в сети и каков их статус?

    .team/config.json — список команды. Проделайте несколько операций (порождение/сообщение/выключение) и посмотрите, как изменится конфигурация.

    操作
    .team/config.json
    
            
    Интерактив

    Виджет 3 · Субагент против товарища по команде · Решение, что использовать

    6 сценариев миссий: решите, использовать ли субагента (появиться, затем умереть) или товарища по команде (появиться, затем жить). Подумайте, является ли задача «однозначной сделкой».

    答对 0 / 6