К курсу

Цикл агента

Один шаг цикла агентаПрактика: один шаг циклаЦикл в кодеПрактика: цикл в кодеОстановка и повторыПрактика: остановка и повторыЧто решает только кодПрактика: что решает код

Надёжность в проде

Таймаут и ключ идемпотентностиПрактика: таймаут и ключ идемпотентностиСказал «готово», а ничего не произошлоПрактика: ложный успехУстойчивый агент: checkpoint и продолжениеПрактика: устойчивый агент

Устройство агентов

Workflow или агентПрактика: workflow или агентReAct и plan-and-executeПрактика: ReAct и plan-and-executePlan-and-SolveПрактика: Plan-and-SolveReflexionПрактика: ReflexionОдин агент или ройПрактика: один агент или рой

Контекст и стоимость

Почему растёт счёт за агентаПрактика: токены и кэшКонтекст-инженерияПрактика: управление окномПамять агентаПрактика: что агент хранит

Инструменты и протоколы

MCPПрактика: MCPОписания инструментов и инъекцииПрактика: описания инструментов и инъекцииКод вместо набора инструментовПрактика: код вместо набора инструментовНавыки агента и A2AПрактика: навыки агента и A2A

Фреймворки

LangGraph или обычный циклПрактика: LangGraph или обычный циклAgent SDK: что вы покупаетеПрактика: agent SDK

Агенты для кода

Агент для кода по спецификацииПрактика: агент для кода по спецификации
←→ENВойти
Агенты › Инструменты и протоколыDeep dive

Навыки агента и A2A

Опирается наMCP

Этот блок про две вещи, которые часто путают с MCP. Навыки агента (agent skills) дают ему знания, которые он загружает по мере надобности. Протокол Agent2Agent (A2A) позволяет агенту передать работу другому агенту, которым вы не управляете.

У Northwind две потребности. Сотрудники поддержки постоянно вставляют в промпт правила выдачи компенсационных ваучеров, а в них 30 шагов. А когда посылка теряется, надо открыть претензию у перевозчика, и у того свой агент.

Полка с папками

У коллеги на телефоне стоит полка с папками, на корешках подписи. В начале разговора он читает только корешки. Когда речь заходит о ваучере, он снимает эту папку. Если в ней написано «для корпоративных клиентов смотри приложение», он открывает приложение.

Это и есть навык. На диске это папка с файлом SKILL.md:

---
name: issuing-goodwill-vouchers
description: Applies Northwind's goodwill voucher policy, including amounts by delay, limits per customer and wording. Use when a customer complains about a late, damaged or lost order, even if they do not ask for compensation.
---

# Goodwill vouchers

1. Find the delay in days from the order.
2. Take the amount from the table in `references/amounts.md`.
3. Run `scripts/check_limit.py` before offering anything.

Загрузка идёт по уровням. На платформе Anthropic это работает так:

Уровень

Содержимое

Когда загружается

1

name и description

При запуске, около 100 токенов на навык

2

Тело SKILL.md

Когда навык сработал, желательно меньше 5000 токенов

3

Другие файлы

Когда модель их открывает; код скрипта остаётся снаружи, приходит только его вывод

Сорок навыков с телом по 3500 токенов. Загрузка по уровням занимает малую долю того, что заняла бы загрузка всего сразу.
Сорок навыков с телом по 3500 токенов. Загрузка по уровням занимает малую долю того, что заняла бы загрузка всего сразу.

Формат опубликован как открытая спецификация на agentskills.io, и обязательны в нём name и description. Как навык регистрируется и находится, зависит от клиента.

Навык хранит знание о том, как что-то делать. Инструмент выполняет действие. Навык про ваучеры говорит, когда и сколько, а issue_voucher остаётся инструментом с проверками в коде.

Главный риск: папку никто не открыл

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

Срабатывание недетерминировано, поэтому проверяют его так:

Навык — это инструкции и код, которым агент будет следовать. Anthropic советует брать навыки только из доверенных источников, проверять каждый вложенный файл и относиться к установке навыка как к установке программы.

Звонок в другую компанию

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

Это и есть A2A. На 2026-11-10 спецификация имеет версию 1.0: на её сайте указано 1.0.0, а последний релиз на GitHub — исправительный v1.0.1. Другой агент остаётся закрытым: он сотрудничает, не раскрывая свою память и инструменты.

MCP соединяет агента с его инструментами. A2A соединяет агентов через границу.
MCP соединяет агента с его инструментами. A2A соединяет агентов через границу.

MCP

A2A

Что соединяет

Агента с инструментами и данными

Агента с другим агентом

На другой стороне

Функции с заданным входом

Система, которая рассуждает и может переспросить

Как узнать возможности

tools/list

Agent Card

Единица работы

Один вызов и его результат

Task с жизненным циклом

В одной системе могут быть оба. Агент Northwind говорит с перевозчиком по A2A, а внутри каждой компании агент использует MCP для своих инструментов.

Всё начинается с Agent Card — документа JSON, который обычно лежит по адресу /.well-known/agent-card.json:

{
  "name": "Carrier Claims Agent",
  "description": "Opens and tracks claims for lost or damaged parcels.",
  "version": "1.2.0",
  "supportedInterfaces": [
    {
      "url": "https://claims.example.com/a2a/v1",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "open-claim",
      "name": "Open a claim",
      "description": "Opens a claim for a lost parcel.",
      "tags": [
        "claims",
        "parcels"
      ]
    }
  ]
}

Обратите внимание на слово skills. Навык в A2A — это заявленная возможность в карточке. С папкой SKILL.md у него нет ничего общего.

Чтобы начать работу, клиент отправляет сообщение. A2A может работать через разные привязки (bindings), то есть форматы передачи. В привязке HTTP+JSON это POST /message:send, а в привязке JSON-RPC метод называется SendMessage. Параметры одни и те же:

{
  "message": {
    "role": "ROLE_USER",
    "messageId": "msg-5120-1",
    "parts": [
      {
        "text": "Parcel for order 5120 is lost. Open a claim."
      }
    ]
  }
}

Агент может ответить обычным сообщением или задачей Task, у которой есть id и состояние:

Основные пути задачи. В JSON у каждого состояния есть приставка TASK_STATE_.
Основные пути задачи. В JSON у каждого состояния есть приставка TASK_STATE_.

Когда перевозчику нужно фото, Task переходит в TASK_STATE_INPUT_REQUIRED. Код Northwind отправляет ещё одно сообщение с теми же taskId и contextId, и задача продолжается. Для долгой работы клиент может получать поток через SendStreamingMessage, опрашивать через GetTask или зарегистрировать вебхук для push-уведомлений, если карточка заявляет такую поддержку.

Считайте всё, что приходит от другого агента, недоверенным текстом, как результат инструмента. A2A требует шифрованного транспорта в продакшене, а клиентам следует проверять подпись карточки, если она есть. Верная подпись говорит, кто опубликовал карточку. О том, безопасно ли выполнять написанное в Task, она ничего не говорит.

Вывод

Глубже

Equipping agents with Agent Skills (Anthropic)Исходное объяснение загрузки по уровням.Optimizing skill descriptionsКак собрать набор проверок срабатывания с близкими запросами.A2A and MCPСравнение от самого проекта A2A с разобранным примером.A2A specificationСостояния Task, Agent Card и примеры JSON для каждой операции.
‹ Назад
Предложить улучшениеНашёл ошибку