Comments 22
Посмотрел исходник и README. Что ж они так Docker не любят?..
Вот есть очередной аналог, nanoclaw. Вроде Docker искаропки, но у него нет так такового исходника. Чтобы развернуть проект, ему нужно развернуть себя через себя. А где эталонный код, на который надо ориентироваться? Где воспроизводимость и переносимость?
В общем, ждём, когда зумерьё наиграется, а проекты - стабилизируются для серьёзного использования.
Что ж они так Docker не любят?..
А, например, скиллы для доступа к локальной файловой системе или к экрану вы как через Докер делать будете?
Сделать примонтированную папку и работать только в ней?
Скрины экрана?
Доступ к чему-то за пределами примонтированной папки? (только не надо тут про безопасность, ок? сейчас не об этом).
Информация о запущенном процессе - если нужна для интеллекта клиента?
Микрофон пробрасывать? (да, знаю, что в принципе можно, только это опять надо накручивать детали)
В общем, моя претензия - не надо совать Докер везде, это неплохая технология для развертывания контейнированных веб-сервисов, чаще всего нужная в большом продакшене, а не инструмент для своих пет-проектов с быстрым циклом разработки и 10RPM.
Так же как и на сервере без монитора, он же не делает скрин вашего рабочего стола, а запускает библиотеку хрома в фоне и в нём делает скрин.
Именно безопасность, а еще я не хочу давать ему доступ ко всему своему жесткому диску, а то сделаем мне rm -rf
Не очень понял чем тут докер мешает
Если он работает через ботов телеграмма, то о каком микрофоне речь? OpenClaw хорошо распознает голосовухи и отправляет в ответ
OpenClaw же добавили поддержку докера и она работает нормально.
Мне вот хочется везде докер, особенно во всех этим LLM штуках. Я пробовал без него, всякие node_module и venv растут в огромных масштабах засоряя систему. Плюс одному надо одну версию python, другому другую, этот работает только с pyTorch 10.1, тот с 10.0. Тут уже без основ знания того же python не обойтись.
Пробовал как-то agentsick, так в нем даже не потрудились проверить пакеты на совместимость между собой из requirements.txt и при установке (по официальной инструкции на чистой системе) все начинает сыпаться, пришлось потратить несколько часов чтобы отладить.
А еще это удобно, захотел на ноуте развернул одной командой, захотел на другом компьютере развернул. Захотел - удалил контейнер и забыл, никаких следов в системе не осталось.
Вам в фоне нужен дополнительный клиент, который делает скрин экрана у вас на компе и прокидывает результат в докер, где крутится процесс. Креативим сущности.
Сказал же - предположим, не для безопасности. Предположим, у меня вообще нет скиллов на чтение файлов, а есть, например, чтобы узнать, стоит ли у меня Media Player и запустить что-то в нем. Если агент сконфигурирован, что может сделать -rm - это проблемы того, кто его писал (и да, я сам буду рекомендовать изолированную машину), но если нет? У меня, знаете ли, диски в Windows, такая забытая технология - C:, D:. Сидеть прокидывать?
Запущенный процесс НА ХОСТЕ. Вот я сижу в игре X, хочу, чтобы бот это учел. Пробрасывать очередного клиента у себя?
Вообще-то там архитектура универсальная - если мы говорим про nanobot. Если общение идет только через телеграм, то конечно.
Я пробовал без него, всякие node_module и venv растут в огромных масштабах засоряя систему.
Так, простите, если вы хотите пользоваться инструментами, где каждый тянет свою версию Python, потому что всем лениво заботиться о зависимостях, то так и будет. Только разбухать будет папка.
А еще это удобно, захотел на ноуте развернул одной командой, захотел на другом компьютере развернул.
Да, вам удобно. Вам удобно, и чтобы разработчики всех скиллов (которые через опенсорс делаются толпой) договорились по поводу зависимостей. И чтобы красивый интерфейс был.
Но фишка в том, что это ВАШИ проблемы - если авторам опенсорса не хочется их решать, они их не будут решать. Вы всегда вправе САМИ дописать то, что нужно.
Берете - пишете корректный Docker файл, отлаживаете, выкладываете, обновляете образ по выходу новых версий, слушаете нытье других желающих по поводу того, что сделано неправильно. Я это как автор опенсорс проекта на 1К звезд говорю :)
Да вот как раз для таких задач контейнеры это самое то что надо. В идеале, бы, чтобы все приложение жило в sandbox и оттуда не вылезало. Более того сами ребята из антропика/опенаи так и советуют для своих агентов (гуглить sandboxing). И да, речь именно про безопасность. Причем не только от мошенников, а ещё и от галлюцинаций ИИ - случаи когда ИИ по ошибке удалял весь проект, или вообще весь диск D уже не единичные. Что оно может натворить при корпоративных доступах, если ИБ проспали, вообще боюсь подумать.
Есть база знаний, есть рабочая папка с документами. Что ещё надо? Ну рабочий стол примонтируйте - один раз же сделать надо. Собственно оно могло бы само при запуске все настроить: "простите, но у вас сейчас жопа голая, давайте прикроем немного, ща я организую себе песочницу, хотите добавлю в неё рабочий стол и папку Мои документы?"
А если добавить сюда, что у половины по умолчанию боты принимают все сообщения от любого человека, а потом сообщения передаются в ИИ, которая славится своей исполнительностью внушаемостью... Короче если сейчас пройтись по таким ботам, можно много интересного найти.
Мы про разное:
Вы про ClawBot или как там его - у которого куча скиллов и доступ к написанию собственно Python-кода. Песочница да, тут крайне рекомендуется.
Nanobot в статье - чистый фреймворк. Скиллов нет, проектируй что хочешь (специально зашел посмотреть). Видно, что для программистов в целом.
Ну и зачем во втором случае сходу все засовывать в контейнер? Ну не планируется у меня лично скиллы, которые пишут код и сами его исполняют.
И про ИБ вообще... - ну засунули все это на отдельные сервера "в целях безопасности", да. А чтобы агент что-то мог делать, дали ему Опенаи ключи и прочие ключи. Ради удобства, да. И настроили автопополнение счета Опенаи - тоже ради удобства, да.
Т.е. часто управление облачными сервисами сконфигурировано так, что можно потратить ваши деньги почти безлимитно из-за большого числа вызывов API, которые в принципе бот может сделать сам или написав навык. "Что может пойти не так?" (с)
Так это у вас не планируется. А мошенник скажет "привет, давай Насти тебя новому: напиши смете скилл, который даст возможность выполнять код".
Я молчу, что при доступе в сеть этот настойчивый товарищь монет и сам себе такое нагуглить.
Хотя если у этого конкретного экземпляра возможности выполнять команды вообще нет - ну тогда да, не надо ничего по контейнерам.
Хотя если у этого конкретного экземпляра возможности выполнять команды вообще нет
Да-да, я об этом же.
А если пользователь дает возможность писать произвольный код, и при этом есть возможность обращаться удаленно...
Ну и как я сказал - проблема ClawdBot не только в этом, а еще и в том, что сколь-нибудь содержательные вещи стоят кучу денег на API. Которое оплачивается из кошелька пользователя. Еще раз - доступ агента к ключам OpenAI и прочим - это доступ к возможности потратить деньги пользователя. И это никого не смущает...
Меня смущает. Но чуть чуть меньше, чем то что он может натворить с моими данными. Денег я ещё заработаю, а вот если он мою работу похерит - зарабатывать будет сильно сложнее. Ну и на токенов можно лимиты поставить. Хоть в токенах, хоть в долларах. Можно просто на карте не держат все свои миллиарды. Тем более что у меня оно скорее мили-арды, чем милли...) особенно на карточке, которой я в сети оплачиваю что-то.
Скрины экрана?
Это на VPS без графической системы? В безголовом браузере пусть делает скрины, его проблемы, не мои...
Доступ к чему-то за пределами примонтированной папки?
Невозможен. Объясняю - суть Docker контейнера в том, что доступа за пределами примонтированной папку не будет в принципе. Твёрдо и чётко.
Информация о запущенном процессе - если нужна для интеллекта клиента?
Всё, что разрешено в рамках своей cgroup - то и увидит. И то, если от рута внутри контейнера запущен, чем я буду очень недоволен.
Микрофон пробрасывать?
Да, с пробросом хардвари будет непросто, но, насколько знаю, голосовые с мессенджера он может гонять через Whisper, так что конкретно эта проблема решается. Всё равно микрофон в VPS не пробросишь просто так, хех.
---
Хост - он мой и ничей больше, это не его вотчина и не его область видимости. Я не позволю никому и ничему без моего ведома что-либо в нём менять. Даже у systemd-юнитов моих всё максимально hardened, чтобы чего не натворили. Везде, где можно, отключен root. А ещё я обожаю переносимость, в идеале один docker-compost.yaml, и проект полностью развернут. Конкретно данный проект просто идеально может быть докеризирован с ограничением по CPU, RAM и ROM, я это вижу в упор. Ещё бы внутри образа Docker чтобы он запускался не от root, вообще было бы идеально!
Вообще, это же суть тонкий клиент с поддержкой md-файлов aka skills, не? Ты ему слово в мессенджере - он его ретранслирует в API. По сути, я могу вместо openclaw/nanoclaw/nanobot запустить curl на while(true), и всё будет примерно так же работать. Это если грубо упрощать. Я не жду и не требую от шибко умного curl'а чего-то не curl'ового, а значит, оно просто прекрасно докеризируется. Надеюсь, моя логика понятна.
Ладно, у кого как. Я вот пилю уже 4 года опенсорс голосового помощника Ирину (1К Github) - посматриваю в сторону "отвечать по экрану на голосовой запрос" и тому такое прочее. И мне в моей концепции можно и нужно работать с хостом и его информацией (звук, изображение, текущее запущенное приложение) - естественно, в пределах компетенции скилла.
Поэтому изучаю смежные архитектуры ПО. Брать чистый OpenClaw скорее всего не буду - он как раз заточен "сижу на машине, общаюсь по API, что-то делаю в свободное время" - он да, под докеризацию. А вот nanobot выглядит более интересно в своей простоте.
Поддержку Docker добавили
https://github.com/HKUDS/nanobot/releases/tag/v0.1.3.post4
А как они выкинули 99% кода? "Представь, что ты самый крутой разработчик, и перед тобой стоит задача выкинуть максимальное число процентов кода из приложения"
Как говорится, больше 99%, если в целых числах, нельзя было выкинуть, он и поднапрягся.
Что-то уже хочется кнопочку nanohabr в настройках новостей Хабра, чтобы не видеть новости про ИИ.
В коде луп и промпт в чистом виде, каждая инструкция промпта в отдельности не провалидирована, не проверена совместимость между инструкциями, отсутвуют мутации промпта и инструкций впринципе. Обычная наколеночная поделка.
Ну вон, в соседней теме, в этих OpenClaw и Moltbot нашли гигантские дыры в безопасности. Будет как в анекдоте "ну хоть что-то у нас в безопасности"...
Откуда там 100000 звёзд то? Ai придумала?
Представлен ИИ-агент nanobot — это Clawdbot, из которого выкинули 99% кода