Back to Blog

AI and MCP / D05

Выполнение намерений: многошаговые планы для AI-агентов в TRON

Проблема с поочередным выполнением

AI-агенты, взаимодействующие с TRON, сталкиваются со структурной проблемой, когда задачи включают несколько операций в цепи. Рассмотрим простой сценарий: агент должен отправить 100 USDT Алисе и затем обменять 50 TRX на USDT. Каждая операция требует собственной покупки energy, собственного периода ожидания делегирования и собственного цикла трансляции.

При поочередном подходе агент совершает как минимум 8 вызовов инструментов:

  1. Оценить energy для передачи USDT
  2. Купить energy для передачи USDT
  3. Дождаться делегирования
  4. Выполнить передачу USDT
  5. Оценить energy для обмена
  6. Купить energy для обмена
  7. Дождаться делегирования
  8. Выполнить обмен

Каждая покупка energy — это отдельное взаимодействие на рынке с собственными накладными расходами на транзакцию. Каждое ожидание делегирования добавляет 3-6 секунд задержки. Общее время выполнения может превышать 30 секунд для того, что должно быть простой двухшаговой задачей.

MERX решает эту проблему с помощью выполнения намерений — системы, которая берет многошаговый план от AI-агента, моделирует каждый шаг, оптимизирует закупки ресурсов для всех шагов и выполняет весь план последовательно.

Что такое намерение

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

Намерение отличается от последовательности вызовов инструментов тремя важными способами:

  1. Оптимизация ресурсов — MERX может пакетировать покупки energy для всех шагов, покупая всю необходимую energy за один заказ вместо пошагового приобретения.
  1. Предварительная валидация — каждый шаг моделируется перед выполнением любого шага. Если шаг 3 из 5-шагового плана потерпит неудачу, агент узнает об этом до трансляции шага 1.
  1. Атомарное планирование — агент отправляет весь план сразу, давая MERX полную видимость объема работы. Это позволяет проводить оптимизации, невозможные при отдельной отправке шагов.

Инструмент execute_intent

MCP-сервер предоставляет выполнение намерений через инструмент execute_intent:

Tool: execute_intent
Input: {
  "steps": [
    {
      "action": "transfer_trc20",
      "params": {
        "to": "TAliceAddress...",
        "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "100000000"
      }
    },
    {
      "action": "swap",
      "params": {
        "from_token": "TRX",
        "to_token": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "50000000",
        "slippage": 0.5
      }
    }
  ],
  "resource_strategy": "batch_cheapest"
}

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

Поддерживаемые действия

Система намерений поддерживает следующие типы действий:

transfer_trx

Отправить TRX на адрес. Это нативный трансфер, который потребляет bandwidth, но не energy.

{
  "action": "transfer_trx",
  "params": {
    "to": "TRecipient...",
    "amount_sun": 1000000
  }
}

transfer_trc20

Отправить токен TRC-20 (USDT, USDC и т.д.) на адрес. Потребляет energy для вызова смарт-контракта.

{
  "action": "transfer_trc20",
  "params": {
    "to": "TRecipient...",
    "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "amount": "100000000"
  }
}

swap

Выполнить обмен токенов на SunSwap V2. Включает точное моделирование energy для конкретных параметров обмена.

{
  "action": "swap",
  "params": {
    "from_token": "TRX",
    "to_token": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "amount": "100000000",
    "slippage": 0.5
  }
}

approve

Установить разрешение на трату токена TRC-20. Требуется перед обменом токенов (не требуется для обмена TRX).

{
  "action": "approve",
  "params": {
    "token_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "spender": "TRouterAddress...",
    "amount": "unlimited"
  }
}

call_contract

Выполнить произвольный вызов смарт-контракта. Это переход для операций, не охватываемых конкретными типами действий.

{
  "action": "call_contract",
  "params": {
    "contract_address": "TContractAddress...",
    "function_selector": "stake(uint256)",
    "parameters": [{ "type": "uint256", "value": "1000000" }],
    "call_value": 0
  }
}

buy_resource

Купить energy или bandwidth как шаг в плане. Полезно, когда агент хочет явный контроль над временем закупки ресурсов.

{
  "action": "buy_resource",
  "params": {
    "resource_type": "energy",
    "amount": 130000,
    "duration_hours": 1
  }
}

Стратегии ресурсов

Параметр resource_strategy управляет тем, как MERX обрабатывает покупки energy в шагах намерения.

batch_cheapest

Это стратегия по умолчанию и рекомендуемая. MERX моделирует все шаги, суммирует требуемую energy, вычитает доступные ресурсы и совершает одну покупку energy для всего намерения.

Step 1 (transfer_trc20): 64,895 energy
Step 2 (swap):           223,354 energy
Total needed:            288,249 energy
Currently available:     0 energy
Purchase:                290,000 energy (rounded to order unit)

Одна покупка. Одно ожидание делегирования. Затем все шаги выполняются последовательно, используя объединенную energy.

Преимущества:

per_step

Каждый шаг покупает свою energy независимо. Используйте это, когда шаги условные или когда вам нужно минимизировать риск (если шаг 1 не удается, вы не купили energy для шага 2).

Step 1: buy 65,000 energy -> wait -> execute transfer
Step 2: buy 225,000 energy -> wait -> execute swap

Эта стратегия медленнее (два ожидания делегирования), но расходует меньше energy, если выполнение остановлено посередине плана.

Моделирование с состоянием

Двигатель моделирования системы намерений сохраняет состояние между шагами. Это критически важно для планов, где более поздние шаги зависят от результатов предыдущих шагов.

Рассмотрим это намерение: "Обменять 50 TRX на USDT, затем отправить полученный USDT Алисе."

Двигатель моделирования:

  1. Моделирует шаг 1 (обмен). Результат: агент получает 16.42 USDT.
  2. Обновляет смоделированное состояние, чтобы отразить новый баланс USDT.
  3. Моделирует шаг 2 (передача 16.42 USDT Алисе) для обновленного состояния.
  4. Подтверждает, что шаг 2 успешен с балансом из шага 1.

Без моделирования с состоянием шаг 2 был бы смоделирован для текущего баланса агента (который может не включать USDT из обмена). Моделирование неправильно сообщило бы, что шаг 2 потерпит неудачу из-за недостаточного баланса.

Tool: execute_intent
Input: {
  "steps": [
    {
      "action": "swap",
      "params": {
        "from_token": "TRX",
        "to_token": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "50000000",
        "slippage": 0.5
      }
    },
    {
      "action": "transfer_trc20",
      "params": {
        "to": "TAliceAddress...",
        "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "use_previous_output"
      }
    }
  ],
  "resource_strategy": "batch_cheapest"
}

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

Ответ моделирования

Перед началом выполнения система намерений возвращает сводку моделирования:

{
  "simulation": {
    "steps": [
      {
        "action": "transfer_trc20",
        "energy_required": 64895,
        "bandwidth_required": 345,
        "simulated_success": true,
        "estimated_cost_trx": 3.42
      },
      {
        "action": "swap",
        "energy_required": 223354,
        "bandwidth_required": 420,
        "simulated_success": true,
        "estimated_output": "16.42 USDT",
        "estimated_cost_trx": 11.76
      }
    ],
    "total_energy": 288249,
    "total_bandwidth": 765,
    "total_cost_trx": 15.18,
    "resource_purchase": {
      "energy": 290000,
      "price": 15.24,
      "provider": "sohu"
    }
  },
  "status": "ready_to_execute"
}

Агент видит полный план с затратами перед любым действием в цепи. Если затраты неприемлемы или какой-то шаг потерпит неудачу, агент может изменить план, не потратив ничего.

Выполнение и обработка ошибок

После подтверждения плана агентом (или если включено автоматическое выполнение), намерение выполняется шаг за шагом:

{
  "execution": {
    "steps": [
      {
        "action": "transfer_trc20",
        "status": "completed",
        "tx_hash": "abc123...",
        "energy_used": 64895,
        "block": 58234567
      },
      {
        "action": "swap",
        "status": "completed",
        "tx_hash": "def456...",
        "energy_used": 223354,
        "output_amount": "16.42",
        "block": 58234568
      }
    ],
    "total_energy_used": 288249,
    "total_energy_purchased": 290000,
    "energy_wasted": 1751,
    "status": "all_steps_completed"
  }
}

Ошибка во время выполнения

Если шаг не удается во время выполнения (не во время моделирования), система намерений останавливается и сообщает об ошибке:

{
  "execution": {
    "steps": [
      {
        "action": "transfer_trc20",
        "status": "completed",
        "tx_hash": "abc123..."
      },
      {
        "action": "swap",
        "status": "failed",
        "error": "SLIPPAGE_EXCEEDED",
        "message": "Output 15.89 USDT below minimum 16.34 USDT"
      }
    ],
    "status": "partial_execution",
    "completed_steps": 1,
    "failed_step": 2,
    "remaining_energy": 223354
  }
}

Шаг 1 уже зафиксирован в цепи и не может быть отменен. Агент получает оставшийся баланс energy и может решить, как действовать дальше — повторить неудачный шаг с отрегулированными параметрами, выполнить другое действие или дать energy истечь.

Реальный пример: переbalансировка казны

Вот реалистичное многошаговое намерение, которое агент может выполнить для управления казной:

"Обменять 1000 TRX на USDT, отправить 300 USDT на кошелек операций, отправить 200 USDT на кошелек маркетинга, оставить остаток."

Tool: execute_intent
Input: {
  "steps": [
    {
      "action": "swap",
      "params": {
        "from_token": "TRX",
        "to_token": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "1000000000",
        "slippage": 1.0
      }
    },
    {
      "action": "transfer_trc20",
      "params": {
        "to": "TOpsWallet...",
        "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "300000000"
      }
    },
    {
      "action": "transfer_trc20",
      "params": {
        "to": "TMarketingWallet...",
        "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
        "amount": "200000000"
      }
    }
  ],
  "resource_strategy": "batch_cheapest"
}

Моделирование:

Step 1 (swap):     223,354 energy
Step 2 (transfer): 29,631 energy  (OpsWallet already has USDT)
Step 3 (transfer): 64,895 energy  (MarketingWallet is new to USDT)
Total:             317,880 energy

Batch purchase: 320,000 energy at 16.83 TRX from catfee

Without intent batching: 3 separate purchases = ~18.20 TRX
With intent batching: 1 purchase = 16.83 TRX
Savings from batching: 1.37 TRX + reduced latency (1 wait vs 3)

Когда использовать намерения против отдельных инструментов

Используйте execute_intent, когда:

Используйте отдельные инструменты, когда:

Намерения и автономия агента

Система намерений разработана для автономии агента. Агент, получивший высокоуровневую инструкцию типа "переbalансировать казну", может разложить ее на конкретные шаги, построить намерение, смоделировать его, пересмотреть затраты и выполнить — все без вмешательства человека на каком-либо этапе.

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

В сочетании с постоянными заказами на повторяющиеся закупки ресурсов и мониторами для оповещений о балансе система намерений позволяет полностью автономные операции в цепи, которые работают 24/7 без человеческого надзора.

Заключение

Выполнение с одним шагом — это вспомогательные колесики автоматизации блокчейна. Реальные рабочие процессы агента включают несколько операций, зависимости между шагами и оптимизацию ресурсов для полного плана.

Выполнение намерений MERX дает AI-агентам возможность думать планами вместо отдельных действий. Смоделируйте всё. Оптимизируйте ресурсы для полного объема. Выполняйте с уверенностью, что каждый шаг был предварительно валидирован.

Блокчейн — это не среда для одной операции. Ваш агент не должен быть ей тоже.


Ссылки:

Попробуйте прямо сейчас с AI

Добавьте MERX в Claude Desktop или любой MCP-совместимый клиент — без установки, без API-ключа для инструментов только для чтения:

{
  "mcpServers": {
    "merx": {
      "url": "https://merx.exchange/mcp/sse"
    }
  }
}

Попросите вашего AI-агента: "What is the cheapest TRON energy right now?" и получите живые цены от всех подключенных поставщиков.

Полная документация MCP: merx.exchange/docs/tools/mcp-server


All Articles