Comandos Bash no TypeScript? (Isso é Genial)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Uma das formas mais simples de tornar seus agentes de IA mais poderosos é dando a eles
00:00:03acesso ao Bash, mas isso pode ser um pouco complexo. Você precisa de um shell real, de um sistema de arquivos,
00:00:09servidores e containers e, no geral, de muita infraestrutura — ou pelo menos precisava.
00:00:13E se eu te dissesse que existe um jeito mais simples? Você pode usar uma implementação em TypeScript
00:00:18do Bash. Eu sei que parece loucura, mas acredite, isso é fantástico
00:00:22e pode até te economizar dinheiro. Deixa eu te mostrar como.
00:00:30Este é um novo pacote chamado justbash e você pode ver no README que ele diz: “Ambiente Bash
00:00:34simulado com um sistema de arquivos virtual em memória escrito em TypeScript. Isso foi
00:00:38projetado para agentes de IA que precisam de um ambiente Bash seguro e isolado.”
00:00:42Mas antes de mostrar como conectar isso aos seus agentes de IA para dar a eles
00:00:45mais capacidades, quero mostrar um código bem simples para você entender o contexto
00:00:48de como isso funciona. Aqui estou iniciando um novo ambiente Bash do pacote justbash
00:00:53e, dentro dele, podemos rodar nossos comandos Bash. Estamos usando env.exec e aqui eu simplesmente
00:00:57rodo o comando Bash “echo hello” e digo que quero salvar isso em um arquivo chamado
00:01:01greeting.txt. Na linha seguinte, rodo o exec novamente no mesmo ambiente dizendo
00:01:06que agora quero ler esse arquivo greeting.txt. E veja que podemos registrar a
00:01:10saída padrão do resultado, o código de saída e também as variáveis de ambiente,
00:01:14e quando eu rodo isso, você vê que ele conseguiu gravar o arquivo e também
00:01:18lê-lo. Temos um código de saída zero e as variáveis de ambiente no nosso shell Bash simulado.
00:01:22O importante aqui é lembrar que, como eu disse, este é apenas um shell Bash simulado,
00:01:26literalmente uma versão desses comandos Bash escrita em TypeScript.
00:01:30Portanto, não está ligado a nenhum shell real, ele apenas converte o comando que damos
00:01:34em TypeScript e o executa. Esse arquivo chamado greeting.txt
00:01:39não existe em nenhum sistema de arquivos físico, está em um sistema virtual em memória, embora existam
00:01:44opções se você quiser conectar um real. Uma forma simples de pensar no que
00:01:47ele faz é: ele pega o comando Bash que escrevemos dentro da função exec
00:01:51e o converte em uma função JavaScript que ele executa, o que significa que não
00:01:55precisa de um shell real, e podemos ver isso no código-fonte. Quando coloco “echo” dentro
00:01:59do exec, ele está rodando esta função JavaScript, que simplesmente tem a lógica
00:02:03para processar as flags que o comando echo tem no Bash e transformá-las em JavaScript,
00:02:08imprimindo a saída do que colocamos após o echo. Você pode ver
00:02:11aqui embaixo que ele retorna um objeto com a saída padrão em JavaScript, o erro padrão e o código de saída.
00:02:15E se você acha que ele não consegue lidar com o básico do Bash, veja esta lista de todos os
00:02:19comandos suportados. Ele tem muitos: coisas como cat, copy, awk,
00:02:23base64, e até comandos avançados para processamento de dados como jq, python 3 e sqlite.
00:02:27Você pode até fazer requisições de rede usando curl. Você configura uma lista de permissões para que
00:02:33seja seguro, e também há recursos de shell aqui embaixo, como pipes, redirecionamentos,
00:02:36encadeamento de comandos... ele realmente oferece tudo o que um shell Bash básico ofereceria.
00:02:41O pacote é incrível e tem muita funcionalidade, mas você provavelmente ainda
00:02:45está se perguntando por que iria querer uma implementação de Bash em TypeScript, como isso ajuda seus agentes
00:02:48e como economiza dinheiro.
00:02:53Para responder a isso, deixe-me mostrar um caso de uso com um app de chat bem simples. Digamos que
00:02:57neste app eu quisesse falar sobre este arquivo JSON. Ele contém milhares de registros e digamos
00:03:02que eu peça para a IA recuperar certas informações ou talvez fazer uma análise em alguns campos.
00:03:06Como você pode ver, é um arquivo enorme. Uma das formas mais simples, mas definitivamente errada de fazer
00:03:11isso, seria pegar o conteúdo do arquivo inteiro e colocar dentro do prompt. Veja que estou
00:03:15usando o AI SDK e o GPT-4o. Se rodarmos esse agente e
00:03:19pedirmos para buscar um registro específico, o assistente vai responder e eu
00:03:24posso confirmar que está correto, pois modelos maiores são bons em recuperar valores de contextos grandes.
00:03:28O problema é que isso consumiu 133 mil tokens e também começaria a
00:03:33falhar se você fizesse perguntas mais avançadas, como manipulação de dados
00:03:39ou consultas sobre dados em certos intervalos. Mas como eu disse, esse é o jeito errado.
00:03:43A outra forma que você talvez já tenha tentado é usar RAG ou até
00:03:48dar ao agente um sandbox para ele rodar comandos Bash e manipular os dados,
00:03:51mas a dificuldade com essas abordagens é que você começa a precisar de muita infraestrutura.
00:03:56Em vez disso, vamos simular isso com o justbash. Para fazer isso com o AI SDK, você pode usar o
00:04:00pacote bash-tool, que é construído sobre o justbash, e o que ele nos permite
00:04:05fazer é: no nosso endpoint da API para o chat, podemos criar uma nova ferramenta Bash,
00:04:09passar os arquivos que queremos no nosso ambiente simulado — no meu caso,
00:04:13estou passando aquele arquivo JSON gigante de antes — e então defino o destino
00:04:17para onde esses arquivos vão, que será um diretório simulado “/workspace”.
00:04:21Depois disso, tudo o que precisamos fazer no stream do nosso AI SDK é passá-lo
00:04:26pela ferramenta Bash que temos. Além disso, passei algumas
00:04:31instruções para o agente que você encontra na pasta node_modules. São apenas instruções
00:04:34fornecidas pelo pacote para ajudar seu agente de IA a entender como usar a ferramenta Bash.
00:04:39Agora, com essa configuração simples, se pedirmos ao assistente exatamente a mesma coisa,
00:04:42para buscar uma informação daquele arquivo JSON, em vez de usar o próprio contexto
00:04:46e precisar procurar uma agulha num palheiro, veja que ele executa comandos Bash.
00:04:50Lembrando: isso ocorre no nosso ambiente simulado em TypeScript. Neste caso,
00:04:54ele tentou rodar um comando jq, mas parece que deu erro, então em seguida ele
00:04:58rodou um comando head para ver como o arquivo era e assim conseguir o formato correto para o jq
00:05:02e nos dar a resposta. Sim, embora tenhamos a mesma resposta e talvez tenha levado
00:05:06um pouco mais de tempo, o ponto chave é que ele usou apenas 6 mil tokens de entrada,
00:05:10enquanto o outro método usou 133 mil. Este é um método muito melhor para lidar com contextos longos.
00:05:15E essa não é a única vantagem. Ele se torna muito mais poderoso quando você faz perguntas
00:05:19mais profundas sobre seus dados. Por exemplo, se eu perguntar quantos registros entre
00:05:241000 e 2500 têm “metadata.active” como verdadeiro, ele simplesmente executa um comando Bash
00:05:28e nos dá a resposta na hora. Se você tentasse isso na outra versão, primeiro consumiria
00:05:33muito contexto e, segundo, provavelmente daria uma resposta errada baseada em estimativa.
00:05:37mesmo que tecnicamente ele não tenha. Sinceramente, é um valor agregado gratuito e simples
00:05:41tried this in the other version a it would take up a lot of context and b it probably
00:05:45para tornar seus agentes mais potentes sem necessidade de infraestrutura adicional. E é
00:05:49isso que eu adoro nele. Espero ter mostrado apenas um dos casos de uso, mas acredite,
00:05:53existem muitos outros. Como vimos antes, você tem comandos básicos de Python, SQL e Curl
00:05:57funcionando aqui e, se quiser, pode até conectá-lo a um sistema de arquivos real.
00:06:01Me diga o que achou do justbash nos comentários. Aproveite para se inscrever e,
00:06:05como sempre, nos vemos no próximo vídeo.
00:06:10commands working in here and if you wanted to you can actually attach this to a real file
00:06:14system let me know what you think of just bash in the comments below while you're there subscribe
00:06:18and as always see you in the next one

Key Takeaway

O justbash permite que desenvolvedores equipem agentes de IA com capacidades de execução Bash seguras e eficientes em TypeScript, reduzindo custos de API e complexidade de infraestrutura.

Highlights

Apresentação do pacote "justbash

uma implementação de Bash escrita inteiramente em TypeScript.

Eliminação da necessidade de infraestrutura complexa como containers ou servidores para rodar comandos Bash em agentes de IA.

Uso de um sistema de arquivos virtual em memória para garantir segurança e isolamento (sandbox).

Economia drástica de tokens (de 133 mil para 6 mil) ao processar arquivos grandes via comandos em vez de prompt direto.

Suporte a comandos avançados como jq, python 3, sqlite e curl dentro do ambiente simulado.

Integração simplificada com o AI SDK da Vercel através do pacote bash-tool.

Timeline

Introdução e o Problema da Infraestrutura

O vídeo começa abordando a dificuldade tradicional de dar aos agentes de IA acesso ao terminal Bash, o que geralmente exige containers, servidores e sistemas de arquivos reais. O narrador explica que essa complexidade de infraestrutura costuma ser uma barreira para tornar os agentes mais poderosos. Ele introduz a ideia inovadora de usar uma implementação de Bash feita puramente em TypeScript para resolver esse problema. A promessa central é oferecer um ambiente seguro, isolado e que economize dinheiro para o desenvolvedor. Este segmento estabelece a premissa de que a simplicidade pode substituir grandes pilhas de tecnologia.

Como o justbash Funciona na Prática

Nesta seção, o autor apresenta o pacote justbash e demonstra um exemplo de código básico iniciando um ambiente virtual. Ele mostra como comandos como "echo" e a criação de arquivos funcionam em um sistema de arquivos em memória, sem tocar no disco rígido físico. É explicado que o pacote converte comandos Bash em funções JavaScript equivalentes, o que permite a execução sem um shell real. O vídeo lista diversos comandos suportados, incluindo ferramentas poderosas como jq, awk e até Python 3 ou SQLite. O narrador enfatiza que essa abordagem oferece o controle de um shell Bash básico de forma totalmente simulada e segura.

Comparativo de Custo e Eficiência de Tokens

O apresentador demonstra um caso de uso real envolvendo um arquivo JSON gigante com milhares de registros para análise de dados. Ele ilustra o "jeito errado" de lidar com isso, que seria enviar todo o conteúdo do arquivo para o contexto do modelo GPT-4o. Esse método resultou no consumo massivo de 133 mil tokens em uma única interação, o que é extremamente caro e ineficiente. Além do custo, o narrador aponta que modelos de linguagem podem falhar em tarefas de manipulação de dados complexas se dependerem apenas do contexto. Esta comparação serve para destacar a necessidade de ferramentas externas para processamento de dados volumosos.

Implementação com Agentes de IA e Resultados

A parte final do vídeo mostra a implementação prática usando o pacote bash-tool integrado ao AI SDK. O agente de IA agora utiliza comandos Bash simulados, como jq e head, para analisar o arquivo JSON de forma inteligente em vez de ler o texto bruto. O resultado impressionante mostra que o consumo de tokens caiu para apenas 6 mil, mantendo a precisão da resposta. O narrador destaca que o agente consegue realizar consultas complexas e filtragens de dados que seriam impossíveis ou imprecisas no método tradicional. Ele conclui que o justbash é um valor agregado gratuito que potencializa agentes sem exigir infraestrutura adicional de backend.

Community Posts

View all posts