← Voltar ao blog
Aicerca de 7 min de leitura

O ThinkRail dá a cada agente a sua própria worktree

Publicado 2 de nov. de 2026
O ThinkRail dá a cada agente a sua própria worktree

A JetBrains tem o hábito de lançar ferramentas que assumem que já se sabe o que se está a fazer. O ThinkRail é diferente, e a diferença está numa frase do README: abrir um repositório git como projeto e cortar espaços de trabalho a partir dele como git worktrees.

É toda a tese, e é melhor do que «um IDE com IA». O ThinkRail é um projeto de incubadora da JetBrains, com cerca de 7.100 estrelas e 5.760 ganhas na última semana, e é construído em torno do pi, o agente de programação aberto. O que a JetBrains acrescentou não é um painel de conversa. É a canalização que permite a vários agentes trabalhar ao mesmo tempo sem se pisarem.

Worktrees em vez de esperança

Quem já correu dois agentes no mesmo repositório conhece o modo de falha. Um começa a editar auth.ts, o outro decide refatorar auth.ts, e o resto da tarde vai para arqueologia sobre um conflito de merge que ambos acreditam ter escrito.

A resposta do ThinkRail é que cada espaço de trabalho é uma worktree git com o seu próprio ramo e o seu próprio diretório. Os agentes trabalham em paralelo e nenhum toca no checkout principal. Faz-se merge do ramo de que se gosta e apagam-se os outros.

Por cima há uma arrumação simpática: os espaços de trabalho terminados e dormentes assentam sozinhos numa prateleira por projeto, quando o pull request é integrado ou fechado, ou ao fim de uma semana de silêncio, e voltam no momento em que se trabalha neles outra vez. Para quem já teve vinte ramos abandonados chamados fix-thing-2, esta é a funcionalidade que não sabia que queria.

Four identical wooden workbenches in a workshop, each lit by its own lamp

A barra superior acompanha a posição do ramo ativo em relação à origin e ao respetivo pull request, e deixa o passo seguinte a um clique: publicar, fazer push ou abrir um PR descrito a partir do plano, dos commits, do seu template ou de um rascunho escrito pelo agente. Com o PR aberto, mostra as verificações de CI e a decisão de revisão, e permite devolver ao agente as verificações falhadas ou um ramo divergente.

A parte de IDE é real, não é decoração

Separadores Monaco divisíveis, árvore de ficheiros com marcas de alterações git ao vivo, vista de ficheiros alterados, terminais e documentos, tudo limitado ao espaço de trabalho ativo. É possível deixar comentários de revisão ancorados em ficheiros e diffs e enviá-los para uma conversa como contexto estruturado. Ou abrir a worktree no IDE que se tem instalado, o que é a admissão honesta de que alguns de nós ainda querem o WebStorm.

As conversas fazem streaming com leitura de tokens e custo por sessão, o tipo de detalhe que só aparece quando quem constrói a ferramenta paga as próprias contas. É possível corrigir o rumo de um turno a decorrer, enfileirar um seguimento, delegar em subagentes e trabalhar sobre um plano partilhado que o agente atualiza enquanto se edita. Cada passo concluído pode ser commitado e revisto sozinho, o que é uma unidade de revisão bem melhor do que «aqui estão 38 ficheiros».

A paleta de comandos em ⌘K, ou dois toques na tecla Shift, encontra conversas, espaços de trabalho e projetos em todos os projetos abertos. Sem nada escrito, lista as conversas à espera, que é o defeito correto para uma ferramenta que corre muitas sessões.

Especificações como aquilo que sobrevive

A funcionalidade a que volto sempre é o grafo de especificações. Um conjunto ligado de ficheiros SPEC.md vive ao lado do código, e o agente lê-o, pesquisa-o e mantém-no através de ferramentas spec_* dedicadas. A ferramenta Specs, só de leitura, desenha o grafo como árvore no ambiente de trabalho.

O raciocínio é sólido. As janelas de contexto acabam. As sessões acabam. O que sobrevive é o que ficou escrito. A maioria das ferramentas para agentes trata «lembrar-se do plano» como um problema de memória; o ThinkRail trata-o como um problema de documentação, que é a versão que um humano também consegue ler seis meses depois.

É também a funcionalidade com mais probabilidade de apodrecer. Um grafo de especificações que o agente mantém e ninguém revê transforma-se numa descrição muito confiante e muito detalhada de software que já não existe. A ferramenta torna a manutenção barata; não a torna gratuita, e a disciplina fica do lado de quem usa.

Instalação

Duas formas, ambas cumulativas: um instalador nativo de ambiente de trabalho e uma CLI autónoma que abre a mesma aplicação no navegador. Ambas publicam SHA256SUMS na página de releases.

Linha de comandos em macOS ou Linux, e no Windows em Git Bash:

curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash

Windows, a partir de cmd ou PowerShell:

powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"

Depois:

thinkrail ~/code/my-repo

É preciso git no PATH e um fornecedor de modelos. Entre na aplicação com o JetBrains AI, ou ligue qualquer fornecedor através da autenticação do próprio pi. Não existem contas ThinkRail, que é uma frase que eu não esperava da JetBrains.

As compilações de ambiente de trabalho em Linux precisam de glibc 2.38 ou mais recente, com GTK 3, WebKitGTK 4.1, Ayatana AppIndicator 3 e librsvg 2 — na prática, Ubuntu 24.04 ou posterior. O atualizador só aparece quando o pacote traz uma identidade de feed HTTPS válida, portanto instalações anteriores a essa identidade precisam de uma instalação manual primeiro.

O detalhe que o torna portátil

O ThinkRail lê a configuração existente em ~/.pi/agent. Pode apontar-se para outro lado com PI_CODING_AGENT_DIR, para quem mantém um perfil de trabalho. Em Settings, Custom servers liga qualquer endpoint compatível com OpenAI — LiteLLM, sglang, vLLM, Ollama, LM Studio, llama.cpp — e escreve-o no models.json do pi, de modo que esses modelos aparecem tanto no seletor de conversa como na CLI.

Os servidores MCP do seu mcp.json também vêm, com o comportamento certo: o ThinkRail pergunta na conversa antes de chamadas que o servidor não marca como só de leitura, mantém os servidores definidos pelo repositório desligados até serem aprovados e faz o início de sessão nos servidores OAuth a partir das definições.

As extensões do agente são igualmente pragmáticas. As definições listam o que o agente recebe, permitem desligar cada uma e instalam qualquer pacote pi a partir da fonte — npm, git ou uma pasta local — para o utilizador ou para um repositório. As ferramentas de pergunta ao utilizador e de visualização são publicadas como pacotes separados, de modo que um pi simples num terminal tem as mesmas perguntas de escolha múltipla e os mesmos diagramas em linha.

O que eu vigiaria

Sete mil e seiscentas estrelas numa semana para um projeto de incubadora é muita atenção para algo que ainda não passou por um ciclo de lançamento da JetBrains. Os projetos de incubadora na JetBrains têm histórico de ou se tornarem produtos ou pararem em silêncio, e as betas têm o hábito de se tornar a versão de que se depende.

O outro risco é conceptual. É uma ferramenta muito completa, com muitas superfícies: worktrees, especificações, paletas, extensões, MCP, temas, tipos de letra, quatro idiomas incluídos com um caminho documentado para acrescentar outros. Cada uma delas é um sítio para configurar em vez de escrever código. O melhor desfecho para o ThinkRail é o modelo de worktrees tornar-se tão obviamente correto que ninguém fale dele, e o resto da aplicação sair da frente.

Experimente se já corre agentes em paralelo e a resposta atual é «várias janelas de terminal e dedos cruzados». Só o isolamento por worktree vale o download. Experimente como IDE normal e vai ver que ele não está a tentar ser um.

Artigos relacionados