Pular para o conteúdo principal
O provider DEVIN do ChatCLI dirige o binário devin local em modo não-interativo e o usa puramente como transporte para alcançar a LLM por trás dele. Todo o resto — conversa, contexto anexado, memória, compaction, sessões, o protocolo de tools do agent/coder — fica no ChatCLI.
Por que um wrapper? Em deployments corporativos o Devin é customizado pela Cognition (API + integrações de IDE) e a API HTTP não é documentada. O CLI é a superfície suportada e carrega a própria autenticação SSO (devin auth login) — o ChatCLI nunca fala o protocolo privado, então mudanças do lado da Cognition são absorvidas pelo CLI deles, não por você.

Setup

  1. Instale o Devin CLI e autentique uma vez (SSO corporativo):
devin auth login
  1. Pronto — o ChatCLI registra o provider automaticamente quando o binário resolve (do PATH, ou DEVIN_CLI_PATH):
chatcli --provider DEVIN --model gpt-5.6-terra -p "olá"
# ou interativo: /switch --provider DEVIN
Sem API key, sem setup de OAuth no ChatCLI: a autenticação pertence ao binário devin. Sem o binário o provider simplesmente não aparece — mesma UX de um provider sem credencial.

Modelos

O catálogo espelha o que o CLI enterprise serve (29 modelos): a linha claude-* (sonnet-5, opus 4.5–4.8, haiku), gpt-5.x incluindo os tiers do 5.6 (sol/terra/luna), gemini-3.x, glm-5.2, kimi-k2.x, deepseek-v4-pro, e os swe-1.5swe-1.7-lightning da própria Cognition. Qualquer string de modelo passa direto — o catálogo é bookkeeping, não gate.
/switch --model swe-1.7-lightning
/switch --model claude-sonnet-4.6      # nota: os slugs do Devin usam pontos

Como o transporte funciona

  • Stateless por turno — o histórico inteiro achatado vai a cada chamada (nunca --resume), então o estado da conversa nunca se divide entre o ChatCLI e os servidores do Devin. Compaction, /session load e edições de contexto continuam funcionando sem mudança.
  • O agente interno não age — cada chamada roda em um diretório vazio novo com um preâmbulo de transporte que proíbe as tools nativas do Devin enquanto explicitamente respeita o protocolo textual de tools do próprio ChatCLI. Nos modos agent/coder o modelo vê o catálogo completo de tools do ChatCLI e emite o markup <tool_call .../> normalmente — quem executa é o ChatCLI, não o Devin.
  • Respostas limpas — a resposta é extraída entre marcadores sentinela, descartando o chrome do harness do Devin; prompt files são sempre coagidos a UTF-8 válido (o CLI rejeita bytes inválidos); as invocações são serializadas por processo, então trabalho em background (extração de memória) nunca disputa com um turno ativo.

Variáveis de ambiente

VariávelPropósitoDefault
DEVIN_MODELModelo defaultclaude-sonnet-4.6
DEVIN_CLI_PATHCaminho explícito do bináriodevin do PATH
DEVIN_CLI_PERMISSION_MODE--permission-mode passado ao CLIauto
DEVIN_CLI_AGENT_CONFIGArquivo agent-config declarativo (lockdown reforçado de tools)
DEVIN_CLI_TIMEOUTTeto por turno10m
DEVIN_CLI_SANDBOXPassa --sandbox (research preview)false
DEVIN_CLI_EXTRA_ARGSEscape hatch de args extras
Todas expostas em /config providers.

Limitações (honestas)

  • Sem report de tokens/custo — o CLI não expõe usage, então o cost tracker registra zero (o custo vive na assinatura Cognition; a camada de pricing nunca cobra um claude-*/gpt-* roteado como se fosse a API direta).
  • Latência de spawn — cada turno paga o start de um subprocess mais o overhead do harness do Devin. Se isso pesar no uso intenso do coder, um transporte persistente via ACP (devin acp) é a evolução natural.
  • Vision não atravessa — o transporte é texto plano; anexos de imagem nunca chegam ao modelo por trás.

Veja também