Pi Coding Agent - Arquitetura e Guia Prático
- O que é o Pi Coding Agent?
- Filosofia de Design do Pi
- Visão Geral da Arquitetura do Pi
- Como o Pi Funciona
- Passo 1 - O Usuário Envia uma Solicitação
- Passo 2 - Montagem do Contexto
- Passo 3 - Solicitação ao Modelo
- Passo 4 - Execução da Ferramenta
- Passo 5 - Retorno dos Resultados da Ferramenta
- Passo 6 - Continuar ou Finalizar
- Diagrama Completo do Loop do Agente
- Diagrama de Sequência
- Por que isso é importante
- Ferramentas no Pi
- Gerenciamento de Contexto e Sessões
- Provedores de Modelo
- Estendendo o Pi
- Modos de Execução do Pi
- Instalação e Configuração Mínima
- Comandos Essenciais
- Demonstração Prática: Rastreador de Despesas
- Considerações de Segurança
- Pi Comparado com Outras Ferramentas
- Principais Conclusões
- Referências
O que é o Pi Coding Agent?
O Pi é um agente de codificação de IA minimalista e extensível que roda principalmente no terminal.
Ele permite que desenvolvedores usem grandes modelos de linguagem (LLMs) para interagir com seu ambiente de desenvolvimento local.
O Pi pode:
- Ler e entender códigos existentes.
- Criar novos arquivos e aplicações.
- Modificar códigos existentes.
- Executar comandos de terminal.
- Rodar testes e depurar erros.
- Gerenciar o histórico de conversas.
- Conectar-se a diferentes provedores de LLM.
- Estender suas capacidades com ferramentas e habilidades personalizadas.
- Integrar serviços externos via MCP.
O Pi é um exemplo de um "Agent Harness" (infraestrutura de agente).
O que é um Agent Harness?
Um Agent Harness é a infraestrutura de software que envolve um modelo de linguagem, permitindo que ele execute ações.
A infraestrutura é responsável por:
- Construir o contexto do modelo.
- Comunicar-se com o LLM.
- Fornecer ferramentas ao LLM.
- Executar as chamadas de ferramentas solicitadas.
- Retornar os resultados das ferramentas ao modelo.
- Gerenciar conversas e sessões.
- Controlar o ciclo de vida da execução.
O LLM fornece as capacidades de raciocínio.
A infraestrutura fornece o ambiente no qual esse raciocínio pode ser traduzido em ações.
Pi vs. um Chatbot Tradicional
Um chatbot tradicional geralmente segue este padrão:
flowchart LR
A["Usuário"] --> B["Prompt"]
B --> C["LLM"]
C --> D["Resposta"]Um agente de codificação de IA adiciona um ambiente de execução:
flowchart TD
A["Usuário"] --> B["Agente Pi"]
B --> C["LLM"]
C --> D{"Ferramenta necessária?"}
D -->|Sim| E["Executar Ferramenta"]
E --> F["Retornar Resultado"]
F --> C
D -->|Não| G["Resposta Final"]Exemplo:
Chatbot: "Aqui está o código Python que calcula despesas."
Pi: "Eu criei os arquivos Python, executei o programa, rodei os testes e corrigi um erro."
A diferença importante é a capacidade de interagir com um ambiente real.
Filosofia de Design do Pi
O Pi segue uma filosofia minimalista.
Em vez de fornecer todos os recursos possíveis como parte de sua implementação principal, ele enfatiza a extensibilidade.
A ideia norteadora é:
"Adapte o Pi ao seu fluxo de trabalho, não o contrário."
Princípios Fundamentais
Minimalismo:
- Mantenha o núcleo relativamente pequeno.
- Evite abstrações desnecessárias.
- Construa sobre ferramentas existentes do sistema operacional.
Extensibilidade:
- Crie ferramentas personalizadas.
- Construa extensões.
- Use habilidades reutilizáveis.
- Conecte serviços externos.
Independência de Modelo:
- Use diferentes provedores de LLM.
- Troque de modelos dentro do mesmo ambiente.
- Compare o comportamento dos modelos.
Transparência:
- Observe as respostas do modelo.
- Inspecione as execuções de ferramentas.
- Revise as modificações.
- Examine o histórico da sessão.
O que o Pi Não Requer
Uma configuração básica do Pi não requer:
- Um banco de dados vetorial.
- Um servidor de orquestração separado.
- Kubernetes.
- Docker.
- Uma estrutura multi-agente complexa.
- Uma aplicação de backend personalizada.
Para uma demonstração básica, um terminal, um LLM suportado e um diretório local são suficientes.
Visão Geral da Arquitetura do Pi
O Pi contém várias camadas lógicas.
Arquitetura de Alto Nível
flowchart TB
USER["Desenvolvedor"]
subgraph PI["Pi Coding Agent"]
UI["Interface de Terminal"]
CORE["Runtime do Agente"]
CONTEXT["Gerenciador de Contexto"]
SESSION["Gerenciador de Sessão"]
TOOLS["Execução de Ferramentas"]
EXT["Extensões / Habilidades"]
API["Abstração de API de LLM"]
end
subgraph MODELS["Provedores de LLM"]
OPENAI["OpenAI"]
ANTHROPIC["Anthropic"]
GOOGLE["Google"]
LOCAL["Modelos Locais"]
end
subgraph SYSTEM["Ambiente de Desenvolvimento"]
FILES["Sistema de Arquivos"]
BASH["Shell"]
GIT["Git"]
TESTS["Testes"]
end
USER <--> UI
UI <--> CORE
CORE <--> CONTEXT
CORE <--> SESSION
CORE <--> TOOLS
CORE <--> API
EXT --> CORE
API <--> OPENAI
API <--> ANTHROPIC
API <--> GOOGLE
API <--> LOCAL
TOOLS <--> FILES
TOOLS <--> BASH
TOOLS <--> GIT
TOOLS <--> TESTSEsta é uma arquitetura conceitual, mostrando as principais responsabilidades em vez de cada dependência interna.
Pacotes Internos do Pi
O Pi é desenvolvido como uma coleção de pacotes TypeScript.
pi-ai
Uma interface unificada para trabalhar com diferentes provedores de LLM.
Responsabilidades:
- Requisições de modelo.
- Respostas de modelo.
- Streaming.
- Integrações específicas de provedores.
- Representação de chamadas de ferramentas.
pi-agent-core
O runtime do agente.
Responsabilidades:
- Loop de execução do agente.
- Chamada de ferramentas.
- Estado do agente.
- Manipulação de mensagens.
- Eventos de execução.
pi-coding-agent
A aplicação do agente de codificação.
Responsabilidades:
- CLI.
- Ferramentas de codificação.
- Sessões.
- Arquivos de contexto.
- Extensões.
- Habilidades.
- Configuração do usuário.
pi-tui
Componentes da Interface de Usuário do Terminal.
Responsabilidades:
- Renderização de terminal.
- Manipulação de entrada.
- Componentes interativos.
- Exibição da atividade do agente.
Relacionamento entre Pacotes
flowchart TD
USER["Desenvolvedor"]
TUI["pi-tui"]
CODING["pi-coding-agent"]
CORE["pi-agent-core"]
AI["pi-ai"]
LLM["Provedores de LLM"]
USER <--> TUI
TUI <--> CODING
CODING <--> CORE
CORE <--> AI
AI <--> LLM
CODING --> FS["Ferramentas"]
CODING --> SESSION["Sessões"]
CODING --> EXT["Extensões"]A mesma infraestrutura de agente também pode ser usada por meio de interfaces não interativas.
Como o Pi Funciona
O Pi segue um ciclo de interação repetido entre o usuário, o runtime do agente, o modelo de linguagem e as ferramentas.
Isso é comumente chamado de Loop do Agente.
Passo 1 - O Usuário Envia uma Solicitação
Exemplo:
"Crie uma aplicação Python que rastreie despesas."
O Pi recebe esta solicitação através de sua interface de terminal.
Passo 2 - Montagem do Contexto
Antes de contatar o LLM, o Pi prepara o contexto.
Isso pode incluir:
- Instruções do sistema.
- Solicitação do usuário.
- Histórico de conversa ativo.
- Ferramentas disponíveis.
- Instruções de projeto do AGENTS.md.
- Descrições de habilidades.
- Conteúdo de arquivos relevantes.
- Configuração do modelo.
O ramo da sessão ativa determina quais mensagens históricas são incluídas.
Passo 3 - Solicitação ao Modelo
O Pi envia a solicitação preparada para o provedor de LLM selecionado.
O LLM pode produzir:
- Texto em linguagem natural.
- Chamadas de ferramentas estruturadas.
- Uma combinação de ambos.
Exemplo de solicitação de ferramenta:
Ferramenta: write Arquivo: expenses.py Conteúdo: Código-fonte Python
O LLM não escreve o arquivo diretamente.
Ele solicita que o Pi execute a operação.
Passo 4 - Execução da Ferramenta
O Pi recebe a chamada de ferramenta solicitada.
O executor de ferramentas realiza a ação.
Exemplos:
- Ler um arquivo.
- Escrever um arquivo.
- Modificar código.
- Executar um comando shell.
O Pi então captura o resultado.
Passo 5 - Retorno dos Resultados da Ferramenta
A saída é retornada ao runtime do agente.
Exemplo:
Ferramenta: bash Comando: python expenses.py
Resultado: Traceback: NameError …
O resultado torna-se parte do contexto disponível para o LLM.
Passo 6 - Continuar ou Finalizar
O LLM pode decidir:
- Chamar outra ferramenta.
- Modificar o código.
- Rodar testes adicionais.
- Fornecer uma resposta final.
O Pi repete o processo enquanto mais execução for necessária.
Esta interação é a base do comportamento agentico.
Diagrama Completo do Loop do Agente
flowchart TD
START["Solicitação do Usuário"]
CTX["Construir Contexto"]
CALL["Chamar LLM"]
RESPONSE["Receber Resposta do Modelo"]
DECISION{"Chamadas de Ferramentas?"}
EXEC["Executar Ferramentas"]
RESULT["Coletar Resultados das Ferramentas"]
FINISH["Resposta Final"]
START --> CTX
CTX --> CALL
CALL --> RESPONSE
RESPONSE --> DECISION
DECISION -->|Sim| EXEC
EXEC --> RESULT
RESULT --> CALL
DECISION -->|Não| FINISHDiagrama de Sequência
sequenceDiagram
autonumber
actor Usuário
participant Pi as Agente Pi
participant LLM
participant Tools as Ferramentas
participant OS as Sistema Operacional
Usuário->>Pi: Crie um rastreador de despesas
Pi->>Pi: Montar contexto
Pi->>LLM: Enviar prompt e definições de ferramentas
LLM-->>Pi: Solicitar ferramenta write
Pi->>Tools: write expenses.py
Tools->>OS: Criar arquivo
OS-->>Tools: Sucesso
Tools-->>Pi: Resultado da ferramenta
Pi->>LLM: Continuar com o resultado
LLM-->>Pi: Solicitar ferramenta bash
Pi->>Tools: Rodar programa Python
Tools->>OS: Executar comando
OS-->>Tools: Saída
Tools-->>Pi: Resultado da execução
Pi->>LLM: Continuar
LLM-->>Pi: Resposta final
Pi-->>Usuário: Tarefa concluídaPor que isso é importante
Três responsabilidades são separadas:
- LLM: Gera raciocínio e propõe ações.
- Agent Harness: Coordena a execução e gerencia o contexto.
- Ferramentas: Realizam operações no ambiente.
Esta arquitetura também é fundamental para muitas outras implementações de agentes de IA.
Ferramentas no Pi
A configuração de codificação minimalista do Pi usa quatro ferramentas fundamentais.
read
Ler o conteúdo de arquivos.
Exemplo de prompt:
"Leia app.py e explique sua estrutura."
write
Criar ou sobrescrever arquivos.
Exemplo de prompt:
"Crie um programa Python que imprima Hello TechHive."
edit
Modificar arquivos existentes.
Exemplo de prompt:
"Modifique o programa para aceitar um nome de usuário."
bash
Executar comandos shell.
Exemplo de prompt:
"Execute o programa e exiba o resultado."
Exemplo de Execução de Ferramenta
flowchart TD
A["Usuário: Corrija o bug"]
B["LLM analisa a solicitação"]
C["read: Inspecionar código"]
D["edit: Corrigir código"]
E["bash: Rodar testes"]
F{"Testes passaram?"}
G["Resposta final"]
A --> B
B --> C
C --> D
D --> E
E --> F
F -->|Não| B
F -->|Sim| GFerramentas integradas adicionais e extensões podem estar disponíveis dependendo da versão e configuração.
Gerenciamento de Contexto e Sessões
O que é Contexto?
Contexto é a informação fornecida ao LLM para uma solicitação de modelo.
Pode incluir:
- Solicitação atual do usuário.
- Histórico de conversa.
- Resultados de ferramentas.
- Instruções do sistema.
- Instruções do projeto.
- Descrições de habilidades.
- Conteúdo de arquivos referenciados.
O Pi não carrega automaticamente todos os arquivos de um repositório para o contexto do LLM.
Ele seleciona e monta o contexto com base na sessão e nos recursos configurados.
AGENTS.md
AGENTS.md é um arquivo de instruções do projeto.
Exemplo:
# Instruções do Projeto
Este projeto é para um workshop de agente de codificação.
Diretrizes:
- Use Python.
- Prefira a biblioteca padrão.
- Mantenha o código simples.
- Escreva funções legíveis.
- Adicione testes para novos recursos.
- Explique mudanças importantes.Essas instruções ajudam a guiar o comportamento do agente dentro do projeto.
Sessões
O Pi mantém sessões de conversa.
As sessões podem incluir:
- Mensagens do usuário.
- Mensagens do assistente.
- Chamadas de ferramentas.
- Resultados de ferramentas.
- Mudanças de modelo.
- Eventos de compactação de contexto.
Sessões persistentes usam arquivos JSONL.
Ramificação de Sessão
O Pi suporta uma estrutura de conversa baseada em árvore.
flowchart TD
A["Iniciar Sessão"]
B["Criar Aplicação"]
C["Adicionar Armazenamento de Dados"]
D["Abordagem CSV"]
E["Abordagem SQLite"]
F["Testar CSV"]
G["Testar SQLite"]
A --> B
B --> C
C --> D
C --> E
D --> F
E --> GRamificações permitem a exploração de abordagens alternativas a partir de estados anteriores da conversa.
Compactação de Contexto
Conversas longas podem exceder a janela de contexto de um modelo.
O Pi pode resumir contextos mais antigos para reduzir a quantidade de informações enviadas em futuras solicitações de modelo.
Comando:
/compact
A compactação ajuda a gerenciar o tamanho do contexto, mas pode perder alguns detalhes de mensagens mais antigas.
As entradas originais da sessão podem permanecer no histórico de sessão armazenado.
Provedores de Modelo
O Pi pode trabalhar com múltiplos provedores de LLM.
Exemplos:
- OpenAI.
- Anthropic.
- Google.
- Outros provedores suportados.
- Modelos locais configurados.
Independência de Modelo
flowchart TD
USER["Desenvolvedor"]
PI["Agente Pi"]
API["Interface Unificada de Modelo"]
USER --> PI
PI --> API
API --> A["OpenAI"]
API --> B["Anthropic"]
API --> C["Google"]
API --> D["Modelo Local"]Vantagens:
- Flexibilidade.
- Comparação de modelos.
- Escolha de provedor.
- Otimização de custos.
- Experimentação.
As capacidades e a compatibilidade dos modelos podem variar.
Estendendo o Pi
O Pi pode ser personalizado sem modificar seu núcleo.
AGENTS.md
Instruções específicas do projeto.
Modelos de Prompt
Prompts reutilizáveis para atividades recorrentes.
Exemplos:
- Revisão de código.
- Documentação.
- Geração de testes.
- Refatoração.
Habilidades
Instruções reutilizáveis e recursos de suporte para fluxos de trabalho especializados.
Exemplos:
- Fluxo de trabalho de testes em Python.
- Fluxo de trabalho de implantação.
- Geração de documentação.
- Desenvolvimento de API.
Extensões
Personalização baseada em TypeScript.
As extensões podem:
- Definir ferramentas personalizadas.
- Registrar comandos.
- Reagir a eventos de ciclo de vida.
- Integrar serviços externos.
- Personalizar o comportamento interativo.
Integração MCP
MCP significa Model Context Protocol (Protocolo de Contexto de Modelo).
Ele fornece uma maneira padronizada para aplicações acessarem ferramentas e recursos externos.
Versões modernas do Pi fornecem suporte nativo ao MCP.
Exemplos de integrações:
- GitHub.
- Bancos de dados.
- Aplicações internas.
- Serviços remotos.
Arquitetura de Extensão
flowchart TD
PI["Agente Pi"]
PI --> A["AGENTS.md"]
PI --> B["Modelos de Prompt"]
PI --> C["Habilidades"]
PI --> D["Extensões"]
PI --> E["MCP"]
D --> F["Comandos Personalizados"]
D --> G["Ferramentas Personalizadas"]
D --> H["Manipuladores de Eventos"]
E --> I["Serviços Externos"]Modos de Execução do Pi
O Pi suporta múltiplas interfaces.
Interativo
Inicie a interface de terminal.
piModo de Impressão
Execute um prompt e imprima sua resposta.
pi -p "Explique decoradores Python"Modo JSON
Transmita eventos estruturados do agente.
pi --mode json -p "Explique este projeto"Modo RPC
Controle o Pi usando mensagens JSONL através de entrada e saída padrão.
SDK
Incorpore as capacidades do agente Pi em aplicações TypeScript.
flowchart TD
CORE["Runtime do Agente Pi"]
CORE --> A["TUI Interativa"]
CORE --> B["Imprimir / JSON"]
CORE --> C["RPC"]
CORE --> D["SDK TypeScript"]
A --> E["Desenvolvedor"]
B --> F["Scripts de Automação"]
C --> G["Aplicação Externa"]
D --> H["Aplicação de Agente Personalizada"]Instalação e Configuração Mínima
Instalar o Pi
macOS / Linux:
curl -fsSL https://pi.dev/install.sh | shWindows PowerShell:
irm https://pi.dev/install.ps1 | iexAlternativa usando npm:
npm install -g --ignore-scripts @earendil-works/pi-coding-agentA instalação via npm requer Node.js 22.19 ou mais recente.
Verificar Instalação
pi --versionCriar um Projeto
mkdir pi-techhive-demo
cd pi-techhive-demo
git initIniciar o Pi
piConfigurar Autenticação
Dentro do Pi:
/login
Selecione um provedor suportado e autentique-se.
Então:
/model
Selecione o modelo que você deseja usar.
Comandos Essenciais
| Comando | Propósito |
|---|---|
| /login | Autenticar um provedor de modelo |
| /model | Selecionar um modelo |
| /thinking | Definir nível de raciocínio |
| /settings | Abrir configurações |
| /new | Iniciar nova sessão |
| /resume | Retomar sessão |
| /session | Informações da sessão |
| /tree | Navegar no histórico de conversa |
| /fork | Ramificar a partir de mensagem anterior |
| /compact | Compactar contexto |
| /mcp | Gerenciar servidores MCP |
| /reload | Recarregar recursos |
| /export | Exportar sessão |
| /share | Compartilhar sessão |
| /quit | Sair do Pi |
Digite / na interface do terminal para descobrir os comandos disponíveis na versão instalada.
Demonstração Prática: Rastreador de Despesas
Criar um Diretório de Projeto
mkdir expense-tracker
cd expense-tracker
git init
piExplorar o Projeto
Prompt:
Inspecione o diretório atual. Explique quais arquivos estão presentes. Não modifique nada.
Conceito: Exploração do sistema de arquivos e operações de leitura.
Gerar uma Aplicação
Prompt:
Crie um rastreador de despesas Python simples. Requisitos: - Adicionar uma despesa. - Listar despesas. - Calcular o total de despesas. - Armazenar despesas em um arquivo CSV. - Use apenas a biblioteca padrão do Python. Mantenha a implementação simples.
Conceito: Geração de código e criação de arquivos.
Executar o Programa
Prompt:
Execute a aplicação. Crie três exemplos de despesas. Verifique se o total é calculado corretamente.
Conceito: Execução de shell e observação de resultados.
Adicionar Testes Automatizados
Prompt:
Crie testes unitários usando unittest do Python. Teste a criação de despesas e o cálculo do total. Execute os testes e corrija quaisquer erros.
Conceito: Testes autônomos e correção iterativa.
Estender a Aplicação
Prompt:
Adicione um recurso para agrupar despesas por categoria. Exiba o total para cada categoria. Atualize os testes e execute-os.
Conceito: Modificação de código e retenção de contexto.
Explorar o Gerenciamento de Sessão
Comandos:
/session /tree /model
Conceito: Histórico de sessão, ramificação e troca de modelo.
Considerações de Segurança
O Pi pode executar comandos com as permissões disponíveis para seu processo em execução.
Ele não solicita necessariamente aprovação antes de cada chamada de ferramenta.
Práticas recomendadas:
- Trabalhe dentro de um diretório de projeto dedicado.
- Use Git antes de modificar códigos importantes.
- Evite expor credenciais.
- Inspecione o código gerado.
- Revise extensões externas.
- Não use dados sensíveis em demonstrações públicas.
- Use contêineres ou sandboxes para tarefas não confiáveis.
- Revise o conteúdo da sessão antes de compartilhá-lo.
Um agente de codificação de IA não substitui as práticas de segurança e revisão de código.
Pi Comparado com Outras Ferramentas
Pi
Infraestrutura de agente de codificação minimalista e extensível.
Pontos fortes:
- Personalização.
- Múltiplos provedores de LLM.
- Execução de ferramentas.
- Gerenciamento de sessão.
- Extensibilidade.
Claude Code
Agente de codificação com um conjunto integrado de ferramentas de desenvolvimento e fluxos de trabalho.
Codex CLI
Agente de codificação projetado para trabalhar com bases de código, comandos de terminal e fluxos de trabalho de desenvolvimento.
LangChain / LangGraph
Frameworks para desenvolver aplicações de LLM personalizadas e fluxos de trabalho agenticos.
O Pi é principalmente uma infraestrutura de agente pronta para uso e extensível, em vez de um framework de fluxo de trabalho de propósito geral.
Principais Conclusões
- O Pi é uma infraestrutura de agente, não um LLM.
- O LLM propõe ações; o Pi coordena a execução.
- O Loop do Agente permite a execução de tarefas em várias etapas.
- Ferramentas permitem que o Pi interaja com um ambiente de desenvolvimento.
- Contexto e sessões mantêm a continuidade da conversa.
- O Pi não está vinculado a um único provedor de LLM.
- Extensões e Habilidades permitem a personalização.
- Arquiteturas minimalistas ainda podem suportar fluxos de trabalho agenticos sofisticados.
- A supervisão humana e o isolamento apropriado continuam importantes.
Referências
Site do Pi: https://pi.dev
Documentação oficial: https://docs.pi.dev/latest
Quickstart: https://docs.pi.dev/latest/quickstart
Como o Pi funciona: https://docs.pi.dev/latest/how-pi-works
Comandos slash: https://docs.pi.dev/latest/slash-commands
Extensões: https://docs.pi.dev/latest/extensions
MCP: https://docs.pi.dev/latest/mcp
Código-fonte: https://github.com/earendil-works/pi
Editor Mermaid: https://mermaid.live

