AIDive

Por dentro do pi: 92.000 estrelas para criar seu agente

Por AIDive · Publicado em

Agentes de código

Seu agente é uma caixa-preta

Claude Code, Codex e Gemini CLI são harnesses de agente projetados por outra pessoa — e se você passa sua jornada de trabalho dentro de um deles, convive com essa decisão de design. Quer mudar um comportamento, adicionar uma ferramenta, apertar uma regra de permissão? Espera o fornecedor lançar. Você não sabe o que tem no system prompt, não vê o loop que executa as ferramentas, e não pode mudar nada disso, mesmo essas ferramentas já sendo o posto de trabalho principal de milhares de desenvolvedores.

Um projeto open source faz o oposto exato: o pi, um toolkit que entrega as peças soltas pra montar seu próprio agente, do conector do modelo até a interface. Ele conquistou 92 mil estrelas no GitHub no primeiro ano e lança um release quase toda semana. Este artigo cobre o que o pi realmente entrega na caixa, como construir seu próprio agente com o SDK dele, e um veredito honesto contra os harnesses prontos.

O que é um harness de verdade

Um harness é toda a engrenagem em volta de um modelo de linguagem que o transforma num agente funcional. Um modelo sozinho só faz uma coisa: ler texto e produzir texto. Ele não lê seus arquivos, não roda um único comando, e não lembra de nada de uma sessão pra outra. Tudo o mais é o harness — o system prompt que enquadra o modelo, as ferramentas expostas a ele, o loop que executa as chamadas de ferramentas e devolve os resultados, e a interface no seu terminal.

O harness também decide os detalhes que importam no dia a dia: como o histórico é compactado quando o contexto transborda, como um erro de ferramenta volta ao modelo, o que é logado e o que não é. Claude Code é um harness. Codex também. Quando um agente te impressiona, boa parte do mérito vai pra essa engrenagem, não pro modelo — coloque o mesmo modelo em dois harnesses diferentes e você terá dois agentes que não estão no mesmo nível.

O pi, feito pela Earendil Works, corta essa engrenagem em blocos reutilizáveis. Você pode usar o agente de código dele assim mesmo, ou pegar os blocos um a um e montar o seu. A segunda opção é a que nos interessa.

Dentro do toolkit pi

pi é um monorepo — um único repositório que hospeda cinco pacotes publicados separadamente — e cada pacote cobre um andar do harness:

Pacote O que faz
pi-ai API unificada pra OpenAI, Anthropic, Google e o resto: streaming de respostas, blocos de raciocínio com seus níveis, descoberta dinâmica dos modelos de cada provedor. Troca de laboratório mudando um argumento.
pi-agent-core O loop de agente em si: estado da conversa, mais o ciclo que envia a mensagem, lê as chamadas de ferramentas, executa e devolve os resultados até a tarefa acabar. Os casos complicados — uma ferramenta que falha, uma resposta cortada, chamadas em paralelo — já estão resolvidos.
pi-tui Biblioteca de renderização de terminal com render diferencial: só redesenha o que muda na tela.
pi-coding-agent O agente de código completo, montado a partir dos blocos acima — prova de que o toolkit basta pra construir um produto pronto.
pi-telemetry Plugue suas próprias métricas de uso sem depender de um provedor.

O loop de agente é exatamente a peça que você reescreveria mal do zero; escrevê-lo direito são semanas de trabalho que você ganha num import. O time aplica a mesma receita em outro lugar: um repositório à parte, pi-chat, reaproveita os mesmos blocos pra automação de conversas.

Os números mostram que a fórmula funciona:

Métrica Valor
Estrelas no GitHub 92.123
Forks 11.400
Commits 5.700+
Licença MIT
Lançamentos nas duas primeiras semanas de agosto de 2026 3 (v0.84.2 saiu em 14 de agosto)

A licença MIT significa que você pode usar, modificar e redistribuir o pi sem restrição, até num produto comercial. pi não é só mais um framework: é um harness completo entregue em peças soltas, mantido num ritmo firme.

O CLI na prática

O CLI do pi é o agente de código já montado que você recebe antes de mexer em qualquer código, e é por ali que você vai começar. A instalação é uma linha, e a flag --ignore-scripts não é um detalhe: ela impede que suas dependências rodem scripts de instalação, uma das brechas mais exploradas no npm. Abra o pi, conecte seu provedor com o comando de login, e você tem um agente de código ali mesmo no seu terminal. A barra de status mostra a pasta atual, a sessão, os tokens gastos e o custo em tempo real — você vê cada requisição precificada no momento em que sai, em vez de descobrir a fatura no fim do mês.

Os comandos slash cobrem o dia a dia: model pra trocar de modelo sobre a marcha, compact pra resumir o histórico quando o contexto incha, export pra extrair a conversa, settings pro resto. Um arquivo markdown na pasta de prompts vira um comando que você aciona digitando o nome dele.

A verdadeira marca registrada do pi é a gestão de sessões. Cada conversa é salva em JSONL na sua pasta home, organizada por projeto — e o histórico é, na verdade, uma árvore, não uma linha. Você pode voltar a qualquer ponto de uma conversa e seguir por outro caminho com fork, depois navegar entre ramos com tree. Um prompt que falhou não custa mais nada: volte pro nó anterior e tente de novo sem perder o ramo anterior. Como tudo fica salvo localmente, resume te devolve a qualquer sessão passada, mesmo semanas depois. Nem Claude Code nem Codex oferecem uma navegação de histórico assim.

Por padrão, o modelo só recebe quatro ferramentas: read, write, edit e bash. Isso é muito pouco perto dos agentes do mercado, e é proposital (voltamos nisso mais adiante). A configuração segue a mesma lógica: um arquivo global na sua pasta home, um por projeto que sobrescreve, e um sistema de confiança que pergunta antes de aplicar as configs de uma pasta aberta pela primeira vez. Se você migrar, o pi carrega automaticamente seus arquivos AGENTS.md ou CLAUDE.md existentes como contexto, então suas instruções funcionam sem reescrever nada.

A gente constrói nosso próprio agente

Construir um agente com o SDK do pi começa com um único import: createAgentSession, ao qual você passa um runtime de modelo e um gerenciador de sessão, devolve um agente funcional. O gerenciador de sessão é a escolha de persistência — em memória pra um script descartável, ou em disco pra reencontrar suas conversas de uma vez pra outra.

A gente testou num projeto local. Nosso script pergunta o que tem na pasta atual; o agente chama sua ferramenta read, lê a pasta e responde. Esse é o loop completo, escrito por nós, em umas dez linhas de TypeScript. As sessões que o SDK cria têm a mesma estrutura em árvore do CLI — cada mensagem está ligada à anterior — então o ramificar de histórico funciona no seu próprio código também.

As ferramentas custom são onde fica interessante. defineTool pega um nome, uma descrição, um esquema de parâmetros tipado e uma função de execução, e sua ferramenta aparece pro modelo exatamente como read ou bash. Escrevemos uma que consulta a lista de vídeos do canal, passamos em customTools, e o agente a chamou sozinho desde a primeira pergunta relevante. É basicamente o mesmo mecanismo de um servidor MCP, só que tudo mora no seu arquivo — sem processo separado, sem protocolo no meio. Como o esquema de parâmetros é tipado, seu editor autocompleta os argumentos e o agente recebe entradas já validadas.

Você também controla o modelo, o nível de raciocínio (de totalmente desligado até máximo), a lista exata de ferramentas que o modelo vê, e até todo o system prompt via um carregador de recursos se quiser começar do zero absoluto. Pra exibição, session.subscribe te entrega cada evento — texto em streaming, chamadas de ferramentas, erros — pra redirecionar pra onde quiser: um terminal, um bot de mensagens, ou um pipeline de CI que comenta seus pull requests. Numa tarde você passa de usar um agente pra ter escrito um, e finalmente sabe o que acontece a cada volta do loop.

Estendendo sem forkar

O CLI do pi é personalizado por quatro mecanismos, todos em pastas simples no seu projeto ou na sua home:

  • Extensions — módulos TypeScript que registram ferramentas, comandos slash, atalhos de teclado ou elementos de UI. Você põe o arquivo na pasta de extensions e ele carrega ao iniciar. É ali que você escreveria uma trava de permissão, por exemplo: uma extensão que intercepta comandos bash e pede confirmação antes dos mais perigosos.
  • Skills — pacotes de capacidades seguindo o padrão Agent Skills, o mesmo que a Anthropic popularizou, então suas skills existentes são reaproveitadas assim mesmo.
  • Prompts — prompts reutilizáveis como simples arquivos markdown.
  • Temas — recarregam na hora enquanto o CLI roda.

Tudo isso se instala como qualquer pacote: pi install pega um pacote npm ou um repositório git, e um único comando atualiza tudo. Os docs resumem a filosofia numa frase: adapte o pi aos seus workflows, não o contrário, sem forkar nem mexer no interno.

É o inverso dos grandes harnesses. Onde o Claude Code traz sub-agents, plan mode e permissões dentro do produto, o pi deixa isso de fora de propósito, pra ser construído como extensão ou instalado da comunidade. A aposta é clara: um núcleo mínimo que quase não muda, e toda a personalização morando do seu lado, em arquivos versionados com seu projeto.

O limite real

A transparência do pi se paga com trabalho, e esse custo vem em três partes.

Primeiro as travas: por padrão não há pedido de permissão nenhum, então o agente pode rodar um comando bash sem te perguntar nada. Os docs oficiais assumem isso e propõem três padrões de isolamento, Docker incluso — mas colocar isso em prática antes de soltar o agente numa máquina importante é com você.

Depois a maturidade: isso é v0.84, não 1.0, com uns cem issues abertas e algumas APIs ainda marcadas como experimentais, como o cliente de sessão remota adicionado nas últimas semanas. O que funciona hoje pode quebrar no próximo lançamento; esse é o preço normal de um projeto avançando tão rápido.

Por fim, o tempo. Todo conforto que o Claude Code te dá de fábrica — plan mode, sub-agents, permissões finas — é um projeto que você constrói sozinho aqui, ou um pacote da comunidade que você caça na esperança de que se mantenha. O ecossistema de extensões tem um ano: você vai achar menos pacotes prontos do que buracos pra tapar. Até a instalação te ensinou o nível de cuidado que isso exige, com sua flag --ignore-scripts, e você vai ter que manter isso em toda a cadeia. Se sua meta é entregar código hoje à noite, o pi vai te atrasar antes de te acelerar — não troque seu harness principal essa semana só com base neste vídeo.

Pra quem o pi é feito

pi é pra desenvolvedores que constroem produtos com agentes, não só com um agente. Pra eles, é provavelmente o melhor investimento de aprendizado do momento: instale o CLI, escreva um agente de vinte linhas com o SDK, e dê a ele uma ferramenta sua. Faça isso e você vai entender o Claude Code melhor que a maioria dos usuários dele.

Se você só quer um assistente produtivo hoje, fique com seu harness integrado e volte quando o 1.0 trouxer as travas: o valor do pi está em entender e controlar, não no conforto imediato. Entre os dois há um meio-termo sem risco — fique com Claude Code pro trabalho, e use o pi como banco de testes pra ver o que seu harness principal esconde.

O principal que fica é que os harnesses não são mais caixas-pretas: as peças estão na mesa, documentadas, sob licença MIT. Na próxima vez que um agente te impressionar ou irritar, você vai saber exatamente qual peça olhar.

Fontes

Perguntas frequentes

O que é o pi, o toolkit de agente de IA?
pi é um monorepo open source com licença MIT da Earendil Works que divide um harness de agente de IA em cinco pacotes reutilizáveis — pi-ai (API de modelo unificada), pi-agent-core (o loop de agente), pi-tui (interface de terminal), pi-coding-agent (um agente de código completo) e pi-telemetry (métricas). Você pode usar o agente de código dele assim mesmo ou montar o seu a partir das peças.
Como eu construo meu próprio agente de IA com o pi?
Importe createAgentSession do SDK, passe um runtime de modelo e um gerenciador de sessão (em memória ou em disco), e você tem um loop de agente funcional em umas dez linhas de TypeScript. Adicione suas próprias capacidades com defineTool, que pega um nome, uma descrição, um esquema de parâmetros tipado e uma função de execução.
O pi substitui o Claude Code?
Ainda não como ferramenta diária: o pi vem deliberadamente sem pedidos de permissão embutidos, sem plan mode nem sub-agents, e na v0.84 suas APIs ainda podem quebrar entre lançamentos semanais. O valor dele hoje está no controle e no entendimento — muitos desenvolvedores mantêm o Claude Code pro trabalho e usam o pi como banco de testes.
Quais são os cinco pacotes do monorepo pi?
pi-ai (uma API pra OpenAI, Anthropic, Google e outros, com streaming e níveis de raciocínio), pi-agent-core (estado de conversa e o loop de execução de ferramentas), pi-tui (renderização de terminal diferencial), pi-coding-agent (o agente de código montado) e pi-telemetry (métricas de uso sem depender de um provedor).
Como o pi lida com ferramentas custom em comparação ao MCP?
defineTool registra uma ferramenta direto no seu código com um esquema de parâmetros tipado, então ela aparece pro modelo exatamente como as ferramentas embutidas read ou bash. É o mesmo mecanismo de um servidor MCP mas sem processo separado nem camada de protocolo, e o esquema tipado te dá autocompletar no editor e entradas já validadas.
O pi está pronto pra produção?
O pi está na v0.84 com cerca de cem issues abertas e algumas APIs ainda experimentais, e por padrão o agente pode rodar comandos de shell sem pedir permissão. Os docs propõem três padrões de isolamento (Docker incluso); aplique um antes de usar o pi numa máquina que importa.

Vídeos relacionados