Bash-команды в TypeScript? (Это гениально)

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00Один из самых простых способов сделать ваших ИИ-агентов мощнее — это просто предоставить им
00:00:03доступ к bash, но это может быть довольно сложно. Вам нужна настоящая оболочка, файловая система,
00:00:09серверы и контейнеры — в общем, целая инфраструктура... по крайней мере, так было раньше.
00:00:13Но что, если я скажу, что есть способ проще? Вы можете использовать реализацию bash
00:00:18на TypeScript. Я знаю, это звучит безумно, но поверьте, это очень круто,
00:00:22и это даже может сэкономить вам деньги. Сейчас покажу как.
00:00:30Это новый пакет под названием justbash, и в файле readme сказано: «Симулируемая
00:00:34среда bash с виртуальной файловой системой в оперативной памяти, написанная на TypeScript. Это
00:00:38разработано для ИИ-агентов, которым нужна безопасная, изолированная среда bash».
00:00:42Но прежде чем я покажу, как связать это с вашими агентами, чтобы расширить их
00:00:45возможности, я хочу продемонстрировать простой код, чтобы вы понимали контекст,
00:00:48как это работает. Здесь я запускаю новую среду bash из пакета justbash,
00:00:53и внутри неё мы можем выполнять bash-команды. Мы используем env.exec, и здесь я просто
00:00:57запускаю команду echo hello и указываю, что хочу сохранить это в файл
00:01:01greeting.txt. Затем на следующей строке я снова вызываю exec в той же среде,
00:01:06чтобы прочитать этот файл greeting.txt. И, как видите, мы можем вывести в лог
00:01:10стандартный вывод результата, код завершения, а также переменные окружения.
00:01:14Когда я запускаю это, видно, что файл успешно записан и прочитан.
00:01:18Мы получаем код завершения 0 и переменные окружения в нашей симулируемой
00:01:22оболочке bash. Но важно помнить: как я уже сказал, это лишь симуляция,
00:01:26буквально версия команд bash, переписанная на TypeScript.
00:01:30Она не привязана к реальной оболочке, она просто преобразует команду,
00:01:34которую мы даем, в TypeScript и исполняет её. Так что файл greeting.txt
00:01:39не существует в реальной файловой системе — это виртуальная система в памяти, хотя
00:01:44есть варианты, если вы захотите подключить настоящую. Если упростить,
00:01:47то библиотека просто берет bash-команду, которую мы пишем в функции exec,
00:01:51и превращает её в JavaScript-функцию, которую затем запускает. Это значит,
00:01:55что реальный shell не нужен, и мы можем увидеть это в коде. Когда я пишу echo
00:01:59внутри exec, на самом деле запускается эта JS-функция, и мы видим логику
00:02:03для парсинга флагов команды echo из bash и их преобразования в JavaScript,
00:02:08после чего просто выводится текст, который мы указали после echo. И вы видите,
00:02:11что в итоге возвращается объект со стандартным выводом в формате JS,
00:02:15стандартной ошибкой и кодом завершения. И если вы думаете, что она
00:02:19не справится с основами bash, посмотрите на этот список поддерживаемых
00:02:23команд — их очень много: cat, copy, awk,
00:02:27base64, продвинутые инструменты вроде jq, python 3 и sqlite, и даже
00:02:33сетевые запросы через curl. Вы даже можете настроить белый список для безопасности.
00:02:36Также поддерживаются функции оболочки: конвейеры, перенаправления, цепочки команд —
00:02:41здесь есть практически всё, что дает базовый bash. Как видите,
00:02:45пакет отличный и функциональный, но вы наверняка всё ещё задаетесь вопросом,
00:02:48зачем нужна реализация bash на TypeScript, как она поможет агентам и сэкономит деньги.
00:02:53Чтобы ответить на это, давайте разберем один сценарий в простом чат-приложении.
00:02:57Допустим, в этом чате я хочу обсудить вот этот JSON-файл. В нём
00:03:02огромное количество записей, и я хочу попросить ИИ извлечь
00:03:06из него данные или провести анализ по определённым полям. Как видите,
00:03:11файл просто гигантский. Один из самых простых, но в корне неверных способов —
00:03:15это вставить всё содержимое файла прямо в промпт. Здесь
00:03:19я использую AI SDK и модель GPT-4o. Если мы запустим этого агента и
00:03:24попросим его найти конкретную запись, ассистент ответит,
00:03:28и я подтверждаю, что ответ верный, так как большие модели неплохо ищут «иголку» в контексте.
00:03:33Но проблема в том, что это съело 133 000 токенов, и всё начнет
00:03:39разваливаться, если задать более сложные вопросы, например, о манипуляции данными
00:03:43или фильтрации по диапазонам. Опять же, это явно плохой подход.
00:03:48Другой вариант, который вы могли пробовать, — это RAG
00:03:51или предоставление агенту песочницы для запуска bash и обработки данных,
00:03:56но проблема в том, что для этого требуется много инфраструктуры.
00:04:00Вместо этого давайте просто симулируем всё через justbash. С помощью AI SDK можно
00:04:05использовать пакет bash-tool, построенный на базе justbash. Это
00:04:09позволяет нам в API-эндпоинте чата создать новый инструмент bash и передать
00:04:13любые файлы в нашу симулируемую среду. В моем случае я передаю тот самый
00:04:17огромный JSON-файл. Затем я настраиваю место назначения,
00:04:21куда попадут файлы — в данном случае в симулируемую директорию /workspace.
00:04:26После этого в потоке данных (stream) из AI SDK нам нужно лишь
00:04:31подключить bashTool. Также я добавил
00:04:34инструкции для агента из папки node_modules. Это простые
00:04:39инструкции из пакета, которые помогают ИИ понять, как правильно
00:04:42использовать этот инструмент. С такой простой настройкой, если мы попросим
00:04:46ассистента извлечь ту же информацию из JSON, вместо того чтобы тратить
00:04:50свой контекст на поиск данных в огромном массиве, он просто
00:04:54выполнит bash-команды в нашей симулируемой среде TypeScript.
00:04:58В данном случае он сначала попробовал jq, но, похоже, возникла ошибка, поэтому
00:05:02следом он запустил команду head, чтобы увидеть структуру файла. Поняв
00:05:06формат, он составил верный запрос jq и дал ответ. Да, мы получили
00:05:10тот же результат, и, возможно, это заняло чуть больше времени, но главное —
00:05:15посмотрите: это заняло всего 6 000 входных токенов против 133 000.
00:05:19Это гораздо более эффективный метод работы с большим контекстом,
00:05:24и это не единственное преимущество. Всё становится интереснее, когда вы
00:05:28задаете сложные вопросы. Например: «Сколько записей в диапазоне
00:05:33от 1000 до 2500 имеют статус active: true?». Агент
00:05:37просто запускает bash-команду и мгновенно выдает ответ. Если бы вы
00:05:41попробовали это с первым методом, это заняло бы уйму контекста, и,
00:05:45скорее всего, ИИ просто угадал бы ответ. С justbash всё будет точнее,
00:05:49так как вы фактически даете агенту полный доступ к bash,
00:05:53хотя технически это не так. Это честная, бесплатная и полезная функция,
00:05:57которая делает агентов мощнее без всякой лишней инфраструктуры.
00:06:01И это мне очень нравится. Надеюсь, я показал хотя бы один крутой кейс,
00:06:05но их гораздо больше: тут работают Python, SQL и curl.
00:06:10А при желании это можно привязать и к реальной файловой системе.
00:06:14Пишите в комментариях, что думаете о justbash, подписывайтесь,
00:06:18и до встречи в новых видео!

Key Takeaway

justbash предлагает эффективный и безопасный способ расширения возможностей ИИ-агентов через симуляцию bash-среды в TypeScript, что радикально снижает затраты на контекстное окно и упрощает инфраструктуру.

Highlights

Библиотека justbash позволяет запускать bash-команды в среде TypeScript без реальной инфраструктуры

Использование виртуальной файловой системы в оперативной памяти обеспечивает безопасность и изоляцию

Поддержка продвинутых инструментов, таких как jq, Python 3, SQLite и curl через симуляцию

Значительная экономия токенов (в примере: с 133 000 до 6 000) при работе ИИ-агентов с большими данными

Возможность легкой интеграции с AI SDK для создания мощных агентов без настройки контейнеров и серверов

Timeline

Введение в проблему инфраструктуры для ИИ

Автор объясняет, что предоставление ИИ-агентам доступа к bash обычно требует сложной настройки серверов и контейнеров. Традиционный подход подразумевает наличие полноценной оболочки и файловой системы, что затрудняет разработку. Однако появляется альтернативное решение, позволяющее избежать этих сложностей с помощью TypeScript. Видео обещает показать способ, который не только упрощает архитектуру, но и экономит бюджет проекта. Это введение задает контекст необходимости изоляции и безопасности при работе с агентами.

Обзор и принципы работы библиотеки justbash

Представляется пакет justbash, который описывается как симулируемая среда bash с виртуальной файловой системой в оперативной памяти. Автор демонстрирует пример кода, где создается среда env и выполняются команды через метод exec. В примере команда echo записывает текст в файл, который затем успешно считывается в той же сессии. Логи показывают стандартный вывод, коды завершения и переменные окружения, подтверждая работоспособность концепции. Этот раздел подчеркивает, что среда полностью изолирована и написана на TypeScript.

Техническая реализация и поддерживаемые команды

Разъясняется, что justbash не является реальной оболочкой, а преобразует bash-команды в JavaScript-функции. Например, при вызове echo запускается соответствующая логика парсинга флагов и вывода текста внутри JS. Список поддерживаемых инструментов впечатляет: от базовых cat и copy до продвинутых jq, sqlite и сетевых запросов через curl. Пользователи могут настраивать белый список разрешенных команд для повышения безопасности системы. Также поддерживаются стандартные функции shell, такие как конвейеры (pipes) и перенаправления потоков.

Сравнение методов обработки больших данных

Автор рассматривает практический сценарий анализа гигантского JSON-файла в чат-приложении на базе GPT-4o. Первый метод — вставка всего содержимого файла в промпт — оказывается крайне неэффективным, потребляя 133 000 токенов за один запрос. Хотя модель находит ответ, такая стратегия ведет к огромным затратам и ошибкам при сложных манипуляциях данными. Альтернативы в виде RAG или создания реальных песочниц также критикуются за сложность инфраструктуры. Это подводит зрителя к поиску более оптимального решения через симуляцию.

Интеграция justbash с ИИ-агентами и результаты

Показано, как подключить bash-tool на базе justbash к API-эндпоинту чата с использованием AI SDK. Агент получает доступ к виртуальной директории /workspace, куда загружается исходный JSON-файл. Вместо чтения всего текста, модель самостоятельно выбирает инструменты вроде jq или head для анализа структуры и извлечения данных. Результат идентичен первому методу, но потребление токенов падает до 6 000, что в десятки раз дешевле. Это доказывает превосходство использования инструментов над простым увеличением контекстного окна.

Преимущества для сложных задач и заключение

В финальной части демонстрируется решение сложных аналитических задач, таких как фильтрация записей по диапазонам и статусам. Агент мгновенно выдает точные ответы, выполняя bash-команды, в то время как без инструментов он бы просто «уггадывал» результат. Автор подчеркивает, что это «честная и бесплатная» функция, которая делает агентов мощнее без лишних серверов. Возможность подключения Python и SQL расширяет границы применения библиотеки еще сильнее. Видео завершается призывом к обсуждению и подписке на канал для новых полезных кейсов.

Community Posts

View all posts