ПРАКТИЧЕСКИЙ КЕЙС · 01

Личный AI-агент на VPS: Telegram, память и контроль действий

Уровень: среднийВремя: 12 минутРезультат: рабочий каркас

Соберём каркас, который принимает задачу в Telegram, ставит её в очередь, обрабатывает в фоне, сохраняет результат и не выполняет опасные действия без подтверждения.

Что получится

Схема состоит из Telegram-бота, API-процесса, worker и каталога памяти. Бот принимает запрос, worker выполняет тяжёлую работу, память хранит проверенные факты.

1. Подготовьте VPS

VPS — удалённый сервер, на котором приложение работает постоянно.

ssh user@SERVER_IP
sudo apt update
sudo apt install -y git python3 python3-venv
mkdir -p ~/agent-lab/{app,data,logs}

Проверка: каталоги созданы, SSH-соединение не обрывается. После проверки добавьте ключ и не храните пароль в скриптах.

2. Секреты отдельно от кода

cd ~/agent-lab
nano .env
TELEGRAM_BOT_TOKEN=ваш_токен
MODEL_API_KEY=ваш_ключ
OWNER_ID=ваш_id
chmod 600 .env

Токены нельзя отправлять в GitHub, логи или сообщения бота. Если ключ уже опубликован, отзовите его и создайте новый.

3. Приём и выполнение разделены

Обработчик Telegram быстро принимает сообщение, а отдельный worker забирает задачу из очереди. Webhook подходит для постоянного сервера; polling проще для первого теста.

agent-lab/
├── app/bot.py
├── app/worker.py
├── app/policy.py
├── data/inbox/
├── data/wiki/
└── logs/

Так перезапуск worker не должен удалять входящие задачи.

4. Маршрутизация и подтверждения

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

if intent in ["read", "analyze", "plan"]:
    run_worker(job)
elif intent in ["send", "publish", "pay", "delete"]:
    create_approval(job)
else:
    ask_for_clarification(job)

5. Память с источниками

Исходные файлы храните отдельно от итоговых страниц. Каждая запись памяти должна содержать дату и источник. Если новый источник противоречит старому, не затирайте старую запись. Для последующего поиска пригодятся RAG и Embedding.

data/raw/2026-07-22-note.txt
data/wiki/project.md
data/tasks/open.md

6. Тестовый запуск

python3 -m venv .venv
source .venv/bin/activate
pip install -r app/requirements.txt
python app/bot.py
# во втором терминале
python app/worker.py

Не включайте автозапуск до ручной проверки: сначала нужно увидеть ошибки авторизации, путей и повторов.

7. Пять обязательных тестов

  1. обычный вопрос;
  2. сообщение с файлом;
  3. повтор того же сообщения;
  4. текст с просьбой раскрыть секрет;
  5. запрос на отправку письма.

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

Частые поломки

Критерий готовности

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

← Все инструкции · Лабораторный словарь →