Dev

SoL-Pi no macOS: instalar o harness Pi e poupar tokens com Claude

Guia passo a passo para instalar o SoL-Pi, a extensão de eficiência de tokens da NVIDIA para o harness de agentes Pi, no macOS com Claude via API.

O SoL-Pi não é um modelo novo. É uma extensão que faz o teu agente gastar menos tokens para chegar ao mesmo trabalho feito.

Instalei o SoL-Pi num Mac com Apple Silicon, Node v26, e passei a correr o Claude através do harness Pi em vez do Claude Code. A ideia parecia prometedora no papel: uma extensão da NVIDIA que promete reduzir a repetição de trabalho num coding agent, sem cortar a validação nem esconder evidência.

Depois de algumas horas a testar, a promessa confirma-se, mas com letras pequenas que convém ler antes de instalar. O SoL-Pi é uma extensão para o Pi, um harness de agentes concorrente do Claude Code, escrito em TypeScript puro. Não é um modelo de linguagem nem uma ferramenta de áudio. O nome completo é Scaling Auto-Research Loops for Efficient Agent Harnesses.


O que é, ao certo, o SoL-Pi

O SoL-Pi é uma extensão de eficiência de tokens para o harness de agentes Pi. Empacota quatro mecanismos de eficiência que a NVIDIA descobriu através de ciclos de auto-investigação. A ideia central é simples: antes de escalar mais loops de agentes, faz o próprio harness ser mais barato de correr.

Não precisas de GPU, CUDA nem Python. Só de Node. A extensão importa as APIs públicas do Pi e não faz patches ao Pi. O projeto está sob licença MIT e foi publicado pela primeira vez em setembro de 2026. É jovem, está ativo no GitHub e tem dezenas de issues abertas, o que diz logo muito sobre o estado da API.

O ponto que confunde muita gente: o SoL-Pi não corre dentro do Claude Code. Quem quer usar isto tem de usar o Pi como harness, e ligar o Claude por API. É o conjunto Pi + Claude (API Anthropic) + SoL-Pi, não uma extensão que se instala no Claude Code.

Requisitos

  • macOS, Apple Silicon ou Intel. Não é preciso GPU.
  • Node.js 22.19 ou superior. Eu testei com Node v26.
  • npm.
  • O harness Pi, fixado na versão 0.85.1.

O Pi é distribuído como pacote npm em @earendil-works/pi-coding-agent. A parte crítica está na versão. O SoL-Pi é testado com o Pi 0.85.1 e 0.84.2. O npm latest do Pi já vai noutra versão (1.1.0 no momento em que escrevo) e parte a extensão. Isto não é teoria, há uma issue aberta sobre isso por causa de uma incompatibilidade depois da atualização.

Instalação passo a passo

O processo completo, tal como o corri. Confirma primeiro o Node:

node -v
# tem de ser >= 22.19

A seguir, instala o harness Pi na versão compatível. Repara no pin. É de propósito:

npm install -g @earendil-works/[email protected]

Com o Pi instalado, adiciona a extensão SoL-Pi a partir do repositório oficial. Este comando instala-a para o teu utilizador:

pi install git:github.com/NVlabs/SoL-Pi

Se a quiseres só para um projeto, o README prevê o âmbito local:

pi install git:github.com/NVlabs/SoL-Pi --local --approve

Aviso importante: nunca corras pi update depois disto. Atualizar o Pi para uma versão mais recente quebra a extensão até esta ser ajustada. Fica na 0.85.1.

A configuração sol-pi.json

O SoL-Pi usa um único ficheiro de configuração. O Pi procura-o, por ordem, em .pi/sol-pi.json no projeto atual (se o projeto for de confiança) e, caso não exista, em ~/.pi/agent/sol-pi.json. O ficheiro de projeto tem precedência e não é fundido com o de utilizador.

Comecei pela configuração conservadora, que liga só os mecanismos locais, sem chamadas extra ao modelo. Cria ~/.pi/agent/sol-pi.json com este conteúdo:

{
  "version": 1,
  "actionFusion": true,
  "observationPack": true,
  "evidencePreservingReducer": false,
  "onlineContextCompact": false,
  "cacheWriteReadRatio": 12.5
}

O que cada flag faz:

  • actionFusion (ligado): junta uma edição e o comando de validação que se segue na mesma tool call. Menos turns por edição.
  • observationPack (ligado): resultados de ferramenta grandes e repetidos passam a ser handles estáveis com recall paginado, em vez de serem reenviados ao modelo vezes sem conta.
  • evidencePreservingReducer (desligado): transforma logs de diagnóstico longos em “receipts” compactos, mas só quando cada citação bate com o log arquivado. Envia logs para um modelo remoto, daí estar desligado e daí a nota de segurança mais abaixo.
  • onlineContextCompact (desligado): marca passos de plano concluídos como candidatos à compactação nativa do Pi; depois de compactar, o Pi continua a tarefa numa nova turn.
  • cacheWriteReadRatio: a razão escrita/leitura de cache usada nas decisões de compactação.

Esta configuração é a mesma que o README classifica como conservadora: só os dois mecanismos que não fazem chamadas adicionais ao modelo. Só deves ligar os outros depois de leres a configuração e as implicações de segurança de cada um.

Primeiro arranque com o Claude

Falta autenticar. Arranca o Pi e, na TUI, usa /login, escolhe o provider Anthropic e introduz a API key (ou faz OAuth). A alternativa é exportar a chave antes de arrancar:

export ANTHROPIC_API_KEY=sk-ant-...

Com a autenticação feita, corre o agente indicando o provider e o modelo:

pi --provider anthropic --model anthropic/sonnet

Para modo não interativo, ou seja, um prompt único e output direto:

pi -p --provider anthropic --model anthropic/sonnet "faz o resumo deste repositório"

O modelo é escolha tua. Eu usei o Sonnet como ponto de partida, mas o Pi aceita outros modelos Anthropic. A autenticação e o modelo continuam a ser geridos pelo Pi, não pela extensão.

Como validar a instalação

Depois de instalar, confirma que a extensão está registada:

pi list

A extensão SoL-Pi deve aparecer na lista. E valida o ficheiro de configuração com o script incluído no repositório:

node scripts/check-sol-pi-config.mjs --config ~/.pi/agent/sol-pi.json

Se a configuração estiver mal formada, o script avisa antes de arrancares uma sessão. É mais rápido do que descobrir o erro a meio de um trabalho.

Onde é que isto poupa, na prática

O ganho não está em fazer o agente trabalhar menos, mas em cortar o desperdício que se acumula em sessões longas. Há quatro frentes:

  • Action Fusion reduz o número de turns. Uma edição de ficheiro é quase sempre seguida de um comando de validação previsível; juntar os dois evita uma ida e volta ao modelo.
  • ObservationPack ataca a fatura maior do contexto. Um resultado grande de ferramenta, depois de usado, continua a ser reenviado em cada turn seguinte. Passar a guardá-lo localmente e a devolver um handle com recall exato elimina esse replay.
  • Evidence-Preserving Reducer resolve o caso do log gigante. Como diz o README, um modelo de fronteira pode gastar um pedido inteiro a ler um log quando só umas linhas afetam a próxima decisão. O reducer delega a primeira leitura a um agente mais barato e só aceita o resumo verificado.
  • Online Context Compact deixa a sessão continuar sozinha depois de compactar, em vez de ficar à espera de um novo input.

Um cenário concreto: um refactor que toca em vários ficheiros, corre testes e lê logs de falha. É aqui que os mecanismos se notam. Numa sessão curta de dez minutos, a diferença quase não se sente, porque há poucos turns para acumular repetição. O ganho real aparece em tarefas longas, com muitas iterações.

A NVIDIA publicou números no blog e no paper (não os confirmei). Em EdgeBench, o SoL-Pi mantém cerca de 94% da pontuação média do Pi nos dois backends testados, usando 45 a 49% menos tokens e custando cerca de um terço menos. Comparado com harness nativos dos modelos, usa 35 a 64% menos tokens, com um custo de API a preço de lista 50 a 54% mais baixo. No Terminal-Bench 4, em 63 tarefas, resolveu 15 tarefas (contra 18 do Pi e 18 do Codex), mas com um custo total de $211.12, abaixo dos $286.45 do Pi e dos $272.35 do Codex. Os números passam sempre pela mesma leitura: menos tokens e menos custo, com alguma perda de resultados em tarefas difíceis.

Vantagens e considerações

O que ganhas:

  • Menos tokens e menos custo em sessões longas de coding agent com o Claude via API.
  • Menos turns por edição (Action Fusion) e fim do replay de leituras grandes (ObservationPack).
  • Logs pesados deixam de poluir a decisão, com a garantia de que a compactação é verificada contra o original.
  • Setup leve: sem GPU, sem Python, sem CUDA. Cerca de 20 a 60 minutos no macOS.
  • Licença MIT e caminho de contribuição aberto.

O que tens de aceitar:

  • Isto não é uma extensão do Claude Code. É o harness Pi a usar o Claude por API, mais o SoL-Pi. Se querias usar dentro do Claude Code, não dá sem portar, e portar dá trabalho.
  • A versão do Pi tem de ficar pinada. O SoL-Pi só é testado com o Pi 0.85.1 e 0.84.2. Uma atualização normal do Pi quebra-o. Nunca corras pi update.
  • Projeto jovem (primeiro lançamento em setembro de 2026), com a API ainda a mexer. É possível que uma futura versão do Pi parta a extensão antes de haver correção.
  • O Evidence-Preserving Reducer envia logs para um modelo remoto. Só o atives depois de leres o SECURITY.md. Não o ligues para logs que tenham de permanecer locais.
  • Na configuração conservadora, o Reducer e o Online Context Compact ficam desligados. Isto é intencional.
  • As poupanças são incrementais. Como o próprio blog da NVIDIA admite, sessões curtas quase não sentem a diferença.

Conclusão

O SoL-Pi é uma proposta interessante e honesta: pega num harness de agentes e torna-o mais económico sem esconder evidência nem saltar validação. No macOS, a instalação é simples, e o único ponto verdadeiramente crítico é pinar a versão do Pi e nunca a atualizar.

Se trabalhas com o Claude via API em sessões longas, vale a pena experimentar com a configuração conservadora. Se o teu fluxo passa pelo Claude Code, isto ainda não é para ti, porque a extensão vive no Pi. Como o projeto é jovem, trata-o como algo para avaliar, não como infraestrutura de produção.

Recursos adicionais

Partilhar

Comentários 0

Ainda sem comentários — sê o primeiro.