Skip to content

The problem with the plugin ton-trading-bot #5

@xlabtg

Description

@xlabtg

🧠 1. Главная проблема: это НЕ “teleton-style plugin”

По философии Teleton Agent:

плагин = набор tools (function calling API) (teletonagent.dev)

А ton-trading-bot по названию и типичным реализациям (и аналогичным проектам):

❌ выглядит как самостоятельный бот / стратегия / сервис, а не tool-provider


👉 Конфликт архитектур

Teleton ожидает:

export default {
  name: "plugin",
  tools: [tool1, tool2]
}

Trading bot обычно:

startBot()
runStrategyLoop()
listenToEvents()

📌 Итог:

💥 агент не может “использовать” такой плагин,
он может только вызывать tools


⚠️ 2. Нет tool-интерфейса (самая частая причина)

Если в плагине нет:

{
  name: string,
  description: string,
  parameters: JSON schema,
  execute: fn
}

👉 значит:

  • LLM его не увидит

  • runtime его не зарегистрирует


Симптом

  • плагин "подключился"

  • но агент его никогда не вызывает


⚠️ 3. Смешение уровней: strategy ≠ tool

Очень частая ошибка в таких плагинах:

они пытаются реализовать стратегию внутри плагина

Но в teleton архитектуре:

Слой | Где живёт -- | -- Strategy | agent config Tools | plugin

❌ Неправильно:

if (price < X) buy()

✅ Правильно:

tool: get_price
tool: swap_tokens

А решение — за LLM


⚠️ 4. Дублирование встроенных возможностей

У Teleton Agent уже есть:


👉 Если плагин делает то же самое:

он конфликтует или просто бесполезен


⚠️ 5. Неправильный доступ к TON SDK

Правильный способ (через SDK):

import { ton } from 'teleton';

await ton.swap(...)

(официальный API (teletonagent.dev))


❌ Если плагин:

  • использует сторонние SDK

  • напрямую дергает RPC

  • не использует ton

👉 он:

  • ломает контекст агента

  • не использует его wallet

  • может работать “в вакууме”


⚠️ 6. Нет dependency injection (контекста агента)

Правильный plugin должен получать:

(ctx) => {
ctx.ton
ctx.telegram
ctx.memory
}

Если этого нет:

💥 tool не знает:

  • какой wallet

  • какой пользователь

  • какой чат


⚠️ 7. Асинхронный loop внутри плагина (критично)

Если внутри:

setInterval(...)
while(true)
startBot()

👉 это ломает архитектуру:

Teleton уже имеет:

  • scheduler

  • agent loop


📌 Итог:

❌ двойной runtime → конфликты


⚠️ 8. Нет JSON schema для параметров

LLM не сможет вызвать tool без:

parameters: {
type: "object",
properties: {...}
}

👉 значит:

  • tool “невидим” для модели


⚠️ 9. Naming / description проблема

LLM выбирает tools по:

  • name

  • description

Если там:

doTrade
executeStrategy
run

👉 модель НЕ поймёт когда использовать


⚠️ 10. Нет atomicity (опасно для трейдинга)

Правильный tool:

swap_tokens(amount, tokenA, tokenB)

Неправильный:

run_full_trading_strategy()

👉 потому что:

  • LLM теряет контроль

  • нельзя reason step-by-step


🔥 11. Главный архитектурный вывод

ton-trading-bot скорее всего:

не plugin
отдельный trading engine


🛠️ 12. Что нужно сделать (рефакторинг)

Вот конкретный план, если хочешь “починить”:


✅ Шаг 1 — разрезать на tools

Вместо:

startTradingBot()

сделать:

get_token_price
buy_token
sell_token
get_wallet_balance
get_trending_tokens

✅ Шаг 2 — убрать loop

Удалить:

  • setInterval

  • while(true)


✅ Шаг 3 — использовать teleton SDK

ctx.ton.swap(...)

✅ Шаг 4 — добавить schema

parameters: {
type: "object",
properties: {
token: { type: "string" },
amount: { type: "number" }
}
}

✅ Шаг 5 — сделать granular tools

❌ плохо:

executeSniperStrategy()

✅ хорошо:

get_new_tokens
buy_token
set_limit_order

✅ Шаг 6 — добавить description для LLM

description: "Buy a token on TON DEX at market price"

🧪 13. Какие issues стоит создать (очень конкретно)

Вот прям готовый список:


🐛 Issue 1 — Not compatible with Teleton tool interface

  • нет стандартного tool schema

  • не регистрируется как tools


🐛 Issue 2 — Plugin contains its own runtime loop

  • конфликт с agent runtime


🐛 Issue 3 — Missing Teleton SDK integration

  • не использует ton из контекста


🐛 Issue 4 — No JSON schema for LLM function calling


🐛 Issue 5 — Strategy logic embedded in plugin

  • должно быть в agent layer


🐛 Issue 6 — Tools are not atomic

  • слишком крупные операции


🐛 Issue 7 — Missing context injection (ctx)


💬 Итог

👉 Ты абсолютно правильно мыслишь:

✔ да, надо делать issues
✔ да, надо приводить к tool-based архитектуре


Ключевая мысль

💡 Teleton plugin = инструменты для LLM,
а не “бот внутри бота”

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions