Выполнение намерений: многошаговые планы для AI-агентов в TRON
Проблема с поочередным выполнением
AI-агенты, взаимодействующие с TRON, сталкиваются со структурной проблемой, когда задачи включают несколько операций в цепи. Рассмотрим простой сценарий: агент должен отправить 100 USDT Алисе и затем обменять 50 TRX на USDT. Каждая операция требует собственной покупки energy, собственного периода ожидания делегирования и собственного цикла трансляции.
При поочередном подходе агент совершает как минимум 8 вызовов инструментов:
- Оценить energy для передачи USDT
- Купить energy для передачи USDT
- Дождаться делегирования
- Выполнить передачу USDT
- Оценить energy для обмена
- Купить energy для обмена
- Дождаться делегирования
- Выполнить обмен
Каждая покупка energy — это отдельное взаимодействие на рынке с собственными накладными расходами на транзакцию. Каждое ожидание делегирования добавляет 3-6 секунд задержки. Общее время выполнения может превышать 30 секунд для того, что должно быть простой двухшаговой задачей.
MERX решает эту проблему с помощью выполнения намерений — системы, которая берет многошаговый план от AI-агента, моделирует каждый шаг, оптимизирует закупки ресурсов для всех шагов и выполняет весь план последовательно.
Что такое намерение
В системе MERX намерение — это декларативное описание того, чего хочет достичь агент, выраженное в виде упорядоченного списка действий. Агент указывает желаемый результат, а MERX обрабатывает механику выполнения.
Намерение отличается от последовательности вызовов инструментов тремя важными способами:
- Оптимизация ресурсов — MERX может пакетировать покупки energy для всех шагов, покупая всю необходимую energy за один заказ вместо пошагового приобретения.
- Предварительная валидация — каждый шаг моделируется перед выполнением любого шага. Если шаг 3 из 5-шагового плана потерпит неудачу, агент узнает об этом до трансляции шага 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 (обмен). Результат: агент получает 16.42 USDT.
- Обновляет смоделированное состояние, чтобы отразить новый баланс USDT.
- Моделирует шаг 2 (передача 16.42 USDT Алисе) для обновленного состояния.
- Подтверждает, что шаг 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, когда:
- Задача включает две или более операции в цепи
- Шаги имеют зависимости (шаг 2 использует выход шага 1)
- Вы хотите минимизировать общие затраты на ресурсы через пакетирование
- Вам нужна предварительная валидация всего плана перед фиксацией
Используйте отдельные инструменты, когда:
- Задача — это одна операция
- Агенту нужно принять решения между шагами на основе внешних данных
- Шаги разделены значительными временными промежутками
- Агент хочет максимальный контроль на каждом этапе выполнения
Намерения и автономия агента
Система намерений разработана для автономии агента. Агент, получивший высокоуровневую инструкцию типа "переbalансировать казну", может разложить ее на конкретные шаги, построить намерение, смоделировать его, пересмотреть затраты и выполнить — все без вмешательства человека на каком-либо этапе.
Шаг моделирования служит проверкой безопасности агента. Перед фиксацией любых средств агент может убедиться, что каждый шаг успешен, общая стоимость в пределах бюджета и ожидаемые выходы соответствуют желаемому результату. Это эквивалент проверки транзакции человеком перед нажатием "подтвердить", но выполняется программно самим агентом.
В сочетании с постоянными заказами на повторяющиеся закупки ресурсов и мониторами для оповещений о балансе система намерений позволяет полностью автономные операции в цепи, которые работают 24/7 без человеческого надзора.
Заключение
Выполнение с одним шагом — это вспомогательные колесики автоматизации блокчейна. Реальные рабочие процессы агента включают несколько операций, зависимости между шагами и оптимизацию ресурсов для полного плана.
Выполнение намерений MERX дает AI-агентам возможность думать планами вместо отдельных действий. Смоделируйте всё. Оптимизируйте ресурсы для полного объема. Выполняйте с уверенностью, что каждый шаг был предварительно валидирован.
Блокчейн — это не среда для одной операции. Ваш агент не должен быть ей тоже.
Ссылки:
- MERX Platform: https://merx.exchange
- MCP Server (GitHub): https://github.com/Hovsteder/merx-mcp
- MCP Server (npm): https://www.npmjs.com/package/merx-mcp
Попробуйте прямо сейчас с 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