A2A Docs спецификация 1.0.0

Начало / Понятия / Задача

Задача (Task)

Единица работы и её состояния

ПереводОснова: Спецификация, разделы 4.1.1–4.1.3 и 3.4Сверено 05.10.2026, версия 1.0.0Открыть .md

Task — основная единица работы в A2A. У задачи есть текущий статус. Результаты работы сохраняются в артефактах, а если над задачей было несколько обменов, то и в истории.

Поля Task#

Поле Тип Обязательное Описание
id string Да Уникальный идентификатор (например, UUID). Для новой задачи создаётся сервером.
contextId string Нет Идентификатор контекста: набора связанных взаимодействий (задач и сообщений).
status TaskStatus Да Текущий статус задачи: состояние и необязательное сообщение.
artifacts массив Artifact Нет Набор артефактов, полученных в результате задачи.
history массив Message Нет История взаимодействий в рамках задачи.
metadata object Нет Произвольные метаданные о задаче в виде пар «ключ — значение».

TaskStatus#

Поле Тип Обязательное Описание
state TaskState Да Текущее состояние задачи.
message Message Нет Сообщение, связанное со статусом.
timestamp timestamp Нет Время фиксации статуса по ISO 8601, например 2023-10-27T10:00:00Z.

Состояния#

Перечисление TaskState определяет возможные состояния жизненного цикла задачи. Наведите на состояние на шкале, чтобы прочитать его описание.

В работе#

Агент принял задачу и работает над ней.

Пауза#

Прерванные состояния: чтобы продолжить, агенту нужен ответ клиента.

Конец#

Конечные состояния. Задача не перезапускается: следующее обращение станет новой задачей в том же contextId.

Значение Класс Описание
TASK_STATE_UNSPECIFIED не указан Задача в неизвестном или неопределённом состоянии.
TASK_STATE_SUBMITTED не указан Задача успешно отправлена и принята.
TASK_STATE_WORKING не указан Агент активно обрабатывает задачу.
TASK_STATE_COMPLETED конечное Задача успешно завершена.
TASK_STATE_FAILED конечное Задача завершена с ошибкой.
TASK_STATE_CANCELED конечное Задача отменена до завершения.
TASK_STATE_REJECTED конечное Агент решил не выполнять задачу. Это может произойти при создании задачи или позже, когда агент понял, что не может или не будет продолжать.
TASK_STATE_INPUT_REQUIRED прерванное Агенту нужен дополнительный ввод пользователя, чтобы продолжить.
TASK_STATE_AUTH_REQUIRED прерванное Для продолжения требуется аутентификация.

Сообщения в задачи с конечным состоянием не принимаются: сервер вернёт UnsupportedOperationError. Режимы выполнения, при которых операция ждёт конечного или прерванного состояния, описаны на странице «Методы».

Идентификаторы: контекст и задача#

Идентификатор контекста#

contextId логически объединяет несколько связанных задач и сообщений и обеспечивает непрерывность разговора.

  • Агент МОЖЕТ сгенерировать новый contextId, если пришло сообщение без него. Сгенерированный идентификатор ДОЛЖЕН попасть в ответ (в Task или Message).
  • Агент МОЖЕТ принять и сохранить contextId, присланный клиентом. Если принять его нельзя, агент ДОЛЖЕН отклонить запрос ошибкой и НЕ ДОЛЖЕН создавать новый contextId для ответа.
  • Клиентам СЛЕДУЕТ НЕ присылать собственный contextId, пока они не понимают, как сервер его обработает. Идентификаторы, созданные сервером, СЛЕДУЕТ считать непрозрачными.
  • Все задачи и сообщения с одним contextId СЛЕДУЕТ считать частью одного разговора. Агент МОЖЕТ использовать его, чтобы хранить внутреннее состояние, историю или контекст LLM. Агент МОЖЕТ ввести политику истечения срока контекста и СЛЕДУЕТ её описать.

Идентификатор задачи#

taskId — уникальный идентификатор объекта Task.

  • Идентификаторы задач создаёт сервер, когда в ответ на сообщение появляется новая задача. Для каждой новой задачи агент ДОЛЖЕН создать уникальный taskId и вернуть его в объекте Task.
  • Если клиент указывает taskId в сообщении, он ДОЛЖЕН ссылаться на существующую задачу. Иначе агент ДОЛЖЕН вернуть TaskNotFoundError.
  • Создавать новые задачи с идентификатором, придуманным клиентом, нельзя.

Многоходовые взаимодействия#

A2A поддерживает диалоги из нескольких обменов через идентификаторы контекста и ссылки на задачи.

  • Преемственность контекста. Клиент МОЖЕТ указывать contextId в следующих сообщениях, продолжая прежнее взаимодействие. Клиент МОЖЕТ указать taskId (с contextId или без), чтобы продолжить или уточнить конкретную задачу. Указав только contextId, клиент начинает новую задачу в существующем разговоре.
  • Состояние «нужен ввод». Агент может запросить дополнительные данные, переведя задачу в TASK_STATE_INPUT_REQUIRED. Клиент продолжает, отправив новое сообщение с тем же taskId и contextId.
  • Уточняющие сообщения. Клиенты могут присылать дополнительные сообщения со ссылкой на taskId. В поле referenceTaskIds сообщения СЛЕДУЕТ явно указывать связанные задачи; агентам СЛЕДУЕТ использовать их, чтобы лучше понять смысл последующих запросов.
  • Наследование контекста. Новые задачи в том же contextId могут наследовать контекст прежних взаимодействий.

Правила согласованности:

  • если указан только taskId, агент ДОЛЖЕН вывести contextId из задачи;
  • сообщения, у которых contextId не совпадает с контекстом указанной задачи, агент ДОЛЖЕН отклонять.