Почему я создал AIdaemon: автономный AI-агент, которым вы управляете со своего телефона
Я уже некоторое время использовал AI-агентов для кодирования. Claude Code, Codex, Cursor, Windsurf, Open Code. Они изменили то, как я пишу ПО. Но на этом все. AI оставался внутри редактора.
Затем появился OpenClaw. AI-агент с открытым исходным кодом, который мог управлять вашими приложениями, отправлять сообщения, управлять почтовым ящиком. Не только кодирование, но и все, что происходит на вашем компьютере. Это заставило меня задуматься о том, что еще могут делать AI-агенты.
Но мне нужно было что-то другое. Мне не нужен был агент, который управляет Spotify или умным освещением. Мне нужен был тот, который живет на моем сервере, выполняет команды терминала, развертывает код и помнит, над чем я работал на прошлой неделе. Что-то, с чем я мог бы общаться со своего телефона, находясь вдали от рабочего места, и чтобы он выполнял реальную работу по разработке на моей машине.
Именно поэтому я создал AIdaemon.
Что такое AIdaemon?
AIdaemon — это AI-агент с самостоятельным размещением, который работает как фоновый демон на вашей машине. Вы общаетесь с ним через Telegram, Slack или Discord, и он может выполнять команды терминала, просматривать веб-страницы, управлять файлами, выполнять запланированные задачи и запоминать вещи между сессиями. Это один бинарный файл на Rust. Не требуется Docker, нет зависимостей Node.js. Просто скопируйте его на любую машину, и он заработает.
Представьте, что у вас постоянно запущен на сервере или ноутбуке способный помощник, которому вы можете написать сообщение из любого места.
Почему бы просто не использовать OpenClaw?
На самом деле я начал с OpenClaw. Идея была блестящей, но когда я углубился, я постоянно натыкался на то, чего еще не было. Я хотел одобрять команды прямо с телефона, прежде чем они будут выполнены. Я хотел видеть шаги, которые предпринимает AI, в режиме реального времени, а не только конечный результат. Базовые вещи для инструмента, который выполняет команды на вашей машине.
Затем я столкнулся с ошибкой, из-за которой OpenClaw не работал с Gemini. Я исправил это и открыл pull request, но очередь PR была огромной. Я знал, что пройдет дни, а может, и дольше, прежде чем мое исправление попадет в основную ветку. И тут меня осенило. Если я собираюсь постоянно вносить исправления в чужой проект, чтобы получить то, что мне нужно, возможно, мне стоит просто создать свой собственный и использовать его как учебный опыт, чтобы понять, как должны быть спроектированы персональные AI-агенты, их крайние случаи, ограничения и все, что между ними.
К тому же, OpenClaw заметно тормозил на одном из моих Mac. Для того, что должно работать как фоновый демон, производительность имеет значение. Это заставило меня захотеть чего-то более легковесного.
Но самым большим пробелом была память. В OpenClaw ее еще не было. Каждый разговор начинался с нуля. Никакого контекста со вчерашнего дня, никакого воспоминания о том, над какими проектами вы работаете, никакого обучения на прошлых ошибках. Я не мог с этим мириться.
Таким образом, вопрос сместился с «как заставить OpenClaw работать на меня» на «как выглядел бы мой идеальный AI-демон?». Я постоянно сталкивался с одним и тем же разочарованием. Я отходил от компьютера и мне нужно было что-то проверить, перезапустить службу или выполнить быструю команду. SSH с телефона выручает в крайнем случае, но это мучительно для чего-то сложнее, чем ls.
А что, если бы я мог просто отправить сообщение в Telegram вроде «проверь, запущена ли служба nginx» и получить ответ? Или «развернуть последние изменения на staging»? Это была основная идея, вдохновленная OpenClaw.
Память была первым, что я спроектировал
С первого дня я знал, что AIdaemon должен что-то запоминать. Не просто историю чата, а реальные знания. Над какими проектами я работаю. Какие инструменты я предпочитаю. С какими ошибками я сталкивался раньше и как их исправлял.
Каждые шесть часов фоновый процесс просматривает недавние разговоры и извлекает постоянные факты. Такие вещи, как «Дэвид использует Cloudflare для развертывания» или «сервер staging работает на порту 3002». Старые факты заменяются, когда поступает новая информация, поэтому знания остаются актуальными.
Он также учится на ошибках. Когда AIdaemon сталкивается с ошибкой, а затем успешно ее устраняет, он сохраняет шаблон и исправление. В следующий раз, когда появится похожая ошибка, он уже будет знать, что делать.
Рабочие процессы также изучаются. Если я собираю, тестирую и развертываю приложение на Rust одинаковым образом несколько раз, AIdaemon замечает этот шаблон. После достаточного количества успешных запусков процедура автоматически повышается до многократно используемого навыка. Никакой ручной настройки не требуется.
Все это поддерживается векторными вложениями для семантического поиска, взвешенными по свежести и полезности. Факты, которые не запрашивались в течение 30 дней, постепенно угасают. Память остается актуальной без ручной очистки.
Память также учитывает конфиденциальность. Факты помечаются уровнями видимости, поэтому информация, которой поделились в личном сообщении, никогда не попадет в командный канал.
Как это работает
Архитектура проста. AIdaemon запускается как системная служба (launchd на macOS, systemd на Linux) и подключается к вашим каналам обмена сообщениями. Когда приходит сообщение, оно проходит через цикл агента.
- Классификация намерений — быстрая модель определяет, что вы хотите. Быстрый ответ, задача для выполнения, автоматизация для настройки.
- Выбор инструмента — агент выбирает один из более чем 40 встроенных инструментов на основе вашего запроса.
- Выполнение с безопасностью — команды проходят оценку рисков и потоки утверждения перед выполнением.
- Обновление памяти — важный контекст сохраняется для будущих разговоров.
Инструменты
AIdaemon поставляется с более чем 40 инструментами из коробки.
- Терминал — выполнение команд оболочки с безопасностью на основе белого списка и встроенным утверждением (Разрешить один раз / Разрешить всегда / Отклонить).
- Файловые операции — чтение, запись, редактирование и поиск файлов.
- Git — коммит, ветка, проверка статуса.
- Веб-браузинг — безголовый Chrome для страниц, требующих рендеринга JavaScript.
- HTTP-запросы — полный контроль над заголовками, профили аутентификации, поддержка OAuth.
- Интеграция MCP — подключение внешних серверов MCP для расширения возможностей.
- CLI-агенты — делегирование работы Claude Code, Gemini CLI, Codex или Aider.
- Планирование — автоматизация задач в стиле cron с разбором времени на естественном языке.
- Управление памятью — запрос, обновление и обмен знаниями между каналами.
Вы также можете добавлять каналы во время выполнения. Нужно подключить бота Discord в дополнение к существующему боту Telegram? Просто используйте команду /connect. Перезапуск не требуется.
Интеллектуальная маршрутизация моделей
Не каждое сообщение требует самой дорогой модели. AIdaemon классифицирует запросы по трем уровням.
- Быстрый — простые вопросы, быстрый поиск (самая дешевая модель).
- Основной — стандартные задачи, большинство взаимодействий (модель по умолчанию).
- Умный — сложное рассуждение, многоэтапные задачи (самая мощная модель).
Он поддерживает несколько провайдеров LLM из коробки. Совместимые с OpenAI API (включая OpenRouter), Google Gemini, Anthropic Claude, Ollama и любую локальную модель, которую вы хотите запустить. Вы можете менять провайдеров во время выполнения без пересборки.
Безопасность прежде всего
Предоставление AI-агенту доступа к терминалу — это то, что нужно сделать правильно. AIdaemon придерживается осторожного подхода.
- Выполнение на основе белого списка — без запроса выполняются только предварительно одобренные префиксы команд.
- Поток утверждения в строке — для всего, что не в белом списке, вы получаете запрос «Разрешить один раз / Разрешить всегда / Отклонить» прямо в чате.
- Оценка рисков — командам присваивается оценка по деструктивному потенциалу, чувствительности путей и сложности.
- Защита от SSRF — HTTP-инструменты блокируют запросы к внутренним IP-адресам.
- Зашифрованное состояние — шифрование базы данных с помощью SQLCipher, секреты хранятся в системном связке ключей.
- Обнаружение зависаний — агент останавливает себя, если повторяет один и тот же вызов инструмента три раза или застревает в чередующихся шаблонах.
Начало работы
Самый быстрый способ попробовать.
# Установка через Homebrew
brew tap davo20019/tap
brew install aidaemon
# Или установка из crates.io
cargo install aidaemon
# Или прямая загрузка бинарного файла
curl -sSfL https://get.aidaemon.ai | bash
Затем создайте config.toml с вашим провайдером LLM и токеном бота Telegram и запустите демон.
# Установка в качестве системной службы
aidaemon install-service
# Или запуск на переднем плане
aidaemon
Вот и все. Напишите своему боту в Telegram, и вы будете общаться со своей машиной. Ознакомьтесь с полной документацией для получения информации о параметрах конфигурации и расширенных функциях.
Почему Rust?
Я никогда раньше не писал ни строчки на Rust до этого проекта. После того как я ощутил медлительность OpenClaw на своем Mac, мне захотелось чего-то быстрого. Я также хотел проверить, смогу ли я создать производственную систему на незнакомом языке, полагаясь на инструменты для кодирования с AI для рутинной работы. Claude Code, Codex и Antigravity справились с шаблонным кодом и битвами с borrow checker. Я сосредоточился на архитектуре и дизайне.
В результате получился один бинарный файл, который я могу скопировать на Raspberry Pi или VPS за $5 в месяц, и он просто заработает. Никакого Docker, никакого Node.js, никаких зависимостей во время выполнения. Для демона, который должен работать 24/7, безопасность времени компиляции Rust и низкое потребление памяти оказались правильным выбором.
Что дальше
AIdaemon сейчас в версии 0.9.2, и я все еще его дорабатываю. Недавние дополнения включают двухфазную систему консультантов для более умной классификации намерений, принудительное применение структурированной схемы JSON для вывода LLM и отслеживание целей с бюджетами токенов.
Проект с открытым исходным кодом на GitHub и опубликован на crates.io. Если вы заинтересованы в персональном AI-агенте, которым вы полностью управляете, попробуйте и дайте мне знать, что вы думаете.