Files
LaodingBot/README.md

2.6 KiB

LaodingBot (MVP)

Go-based personal Telegram Agent with:

  • Telegram polling transport
  • OpenAI-compatible LLM client
  • SQLite conversation memory + simple compression
  • Tool registry with built-in file, shell, and git tools
  • Default-deny security policy via allowlists
  • Soul markdown loading for bot personality
  • Skills markdown loading for capability context
  • ReAct decision loop with automatic tool execution

Now supports mutually exclusive message channels:

  • telegram (long polling)
  • feishu (official SDK websocket long connection)

Quick Start

  1. Prepare env variables (see configs/env.sample).
    • The app auto-loads configs/env (or .env) if present.
    • You can also set CONFIG_ENV_FILE=/path/to/env.
    • Process environment variables override file values.
  2. Choose exactly one channel with MESSAGE_CHANNEL=telegram|feishu.
    • If telegram: set TELEGRAM_BOT_TOKEN, keep FEISHU_* empty.
    • If feishu: set FEISHU_APP_ID and FEISHU_APP_SECRET, keep TELEGRAM_BOT_TOKEN empty.
  3. Set log level with LOG_LEVEL=debug|info|warn|error.
    • To inspect full skill/tool execution content and detailed ReAct step traces, use LOG_LEVEL=debug.
  4. Configure knowledge and reasoning:
    • SOUL_PATH for bot personality markdown.
    • SKILLS_DIR for skills markdown directory.
    • REACT_MAX_STEPS for maximum ReAct steps.
  5. Create runtime directories:
mkdir -p data workspace
  1. Run:
go mod tidy
go run ./cmd/bot

Telegram Usage

  • Normal text enters unified agent pipeline:
    1. Receive message and load recent memory context
    2. Match relevant skill(s) from skills/
    3. If no skill matched, respond via direct LLM
    4. If skill matched, run ReAct and call tools (shell / file / git) only when needed
    5. Return final answer
  • No /tool ... command is required for normal use.

Feishu Usage

  • Bot uses Feishu official SDK long connection (ws) to subscribe im.message.receive_v1 text events.
  • Received text is forwarded to the same agent pipeline and replied back to the same chat.

Knowledge Files

  • Soul file default path: bot_context/soul.md
  • Skills directory default path: skills/
  • Skill format uses subdirectories: skills/<skill_name>/skill.md

Security Notes

  • shell only allows commands listed in ALLOWED_COMMANDS.
  • file only allows paths inside ALLOWED_DIRS.
  • git only allows common git subcommands and runs inside WORK_DIR.
  • Working directory for shell is limited by WORK_DIR.

Next Iteration

  • Add skill runtime (process-level hot-plug via RPC)
  • Add bootstrap pipeline (generate -> vet/test -> sandbox run -> register)
  • Add approval gate for risky commands