Pi Agent: Non-Interactive Mode
Última atualização: 2026-08-31
--- title: "Modo Nao-Interativo" description: "Domine o modo nao-interativo (batch) do Pi Agent para pipelines de tarefas automatizadas, operacoes pipe e integracao com scripts." order: 6 lang: pt-br
Modo interativo é para exploração; modo não-interativo é para produção — sem supervisão, processamento em lote, orquestração de pipelines.
1. O que é o Modo Não-Interativo
Modo não-interativo significa que o Agent recebe entrada e executa automaticamente sem intervenção humana. Adequado para:
- Tarefas automatizadas em pipelines de CI/CD
- Jobs em lote agendados
- Operações pipe (combinadas com outras ferramentas CLI)
- Integração com scripts sem supervisão
2. Uso Não-Interativo via CLI
(1) Execução Única
pi-agent run "Explain what this code does: def fib(n): return n if n < 2 else fib(n-1) + fib(n-2)"
(2) Ler Entrada de Arquivo
pi-agent run --input code.py "Review the code quality of this file"
(3) Pipe da Entrada Padrão
cat error.log | pi-agent run "Analyze these error logs and find the most common issues"
(4) Saída para Arquivo
pi-agent run --input data.csv "Analyze data trends" --output report.md
3. Processamento em Lote com Python
(1) Lote Básico
from pi_agent import Agent
agent = Agent(name="reviewer", system_prompt="You are a code review expert")
files = ["main.py", "utils.py", "config.py"]
for f in files:
result = agent.run(f"Review code quality of {f}, give scores and improvement suggestions")
print(f"=== {f} ===")
print(result)
print()
(2) Lote Paralelo
import asyncio
from pi_agent import AsyncAgent
async def review_file(filename):
agent = AsyncAgent(name="reviewer")
result = await agent.run(f"Review {filename}")
return filename, result
async def main():
files = ["main.py", "utils.py", "config.py", "tests.py"]
tasks = [review_file(f) for f in files]
results = await asyncio.gather(*tasks)
for filename, result in results:
print(f"=== {filename} ===")
print(result)
asyncio.run(main())
4. Pipes e Integração com Scripts
Exemplo 1: Gerador de Mensagem de Commit Git (Dificuldade: ⭐⭐)
git diff --staged | pi-agent run "Generate a concise git commit message based on the code changes"
Exemplo 2: Pipeline de Análise de Logs (Dificuldade: ⭐⭐)
tail -100 /var/log/app.log | pi-agent run --skill log_analyzer "Extract errors and warnings, sort by frequency"
Exemplo 3: Relatório de Testes Automatizado (Dificuldade: ⭐⭐⭐)
from pi_agent import Agent
import subprocess
agent = Agent(name="qa", system_prompt="You are a QA engineer, analyze test results and generate reports")
result = subprocess.run(["pytest", "--tb=short"], capture_output=True, text=True)
report = agent.run(f"Analyze the following test results and generate a report:\n{result.stdout}\n{result.stderr}")
with open("test_report.md", "w") as f:
f.write(report.text)
5. Códigos de Saída e Tratamento de Erros
| Código de Saída | Significado |
|---|---|
| 0 | Sucesso |
| 1 | Erro geral |
| 2 | Erro de configuração |
| 3 | Falha na chamada de API |
| 4 | Erro de execução de ferramenta |
pi-agent run "Check deployment status" --skill devops
if [ $? -eq 0 ]; then
echo "Check passed"
else
echo "Check failed, exit code: $?"
fi
Python:
from pi_agent import Agent, AgentError
agent = Agent(name="checker")
try:
result = agent.run("Verify configuration file")
print("Verification passed:", result.text)
except AgentError as e:
print(f"Execution failed: {e}")
print(f"Error code: {e.code}")
6. Integração com Tarefas Agendadas
# crontab -e
0 9 * * * pi-agent run --skill daily_report "Generate today's project progress report" --output /reports/daily.md
0 0 * * 0 pi-agent run --skill code_review "Review this week's code changes" --output /reports/weekly.md
❓ Perguntas Frequentes
P: O modo não-interativo suporta streaming? R: Não por padrão, mas você pode usar a flag
--stream. No entanto, piping geralmente não precisa de streaming. P: Existe limite de comprimento para entrada via pipe? R: Não há limite rígido, mas é limitado pela janela de contexto do modelo. Entradas muito longas são automaticamente truncadas ou divididas. P: E os limites de taxa da API durante processamento em lote? R: Pi Agent tem retry integrado. Você também pode adicionarasyncio.sleep()no código para controlar a frequência de requisições.
❓ Resumo
- Modo não-interativo é adequado para CI/CD, processamento em lote, operações pipe
- CLI:
pi-agent run; Python:agent.run() - Suporta pipe de stdin, entrada de arquivo, saída para arquivo
- Códigos de saída distinguem tipos de erro para integração com scripts
- Integra-se com cron e sistemas de CI para automação agendada
📝 Exercícios
- Básico (Dificuldade: ⭐): Execute uma tarefa única com
pi-agent rune salve os resultados em um arquivo. - Intermediário (Dificuldade: ⭐⭐): Escreva um script em lote para revisar todos os arquivos Python em um diretório.
- Avançado (Dificuldade: ⭐⭐⭐): Configure um git hook que gere automaticamente mensagens de commit com o Pi Agent antes de commitar.