Escrever um provedor

Um provedor ensina o AutoDev a conduzir mais uma CLI de agente. É um arquivo, gerado a partir de TypeScript, que transforma um prompt nos argumentos da CLI e a saída da CLI num resultado. Este guia segue o provedor de modelo da primeira linha até o pull request.

O que um provedor faz #

O AutoDev nunca roda um modelo próprio. Ele roda as CLIs de agente que você já usa, e um provedor é a parte que conhece uma CLI: quais argumentos passar para um prompt, como retomar uma sessão e como ler o que a CLI imprime. Entra um argv, sai um resultado.

Um provedor não tem lógica de sistema operacional. Ele não procura o programa, não abre shell e não trata caminhos do Windows: o runner do AutoDev faz isso, do mesmo jeito para todo provedor.

O ponto de partida é o modelo, providers/template-codex, um provedor real para o codex da OpenAI. Copie a pasta dele e renomeie:

text
providers/<your-name>/
  src/index.ts     the source
  captures/        real calls to your CLI, recorded below
  test/            your own tests
  meta.json        description, author, homepage
  provider.mjs     the built file, the only file anyone installs

Instale o kit no repositório: npm i -D @stefanolabs/autodev-provider-kit.

O que ele recebe, e o que não pode fazer #

O create(cfg, host) do seu provedor recebe em host tudo o que ele usa:

Um arquivo de provedor não pode fazer mais nada, por projeto:

A CLI que seu provedor conduz ainda pode fazer tudo o que essa CLI faz. Por isso um revisor lê os argumentos que todo provedor passa.

Declare só o que uma gravação mostra #

capabilities lista o que sua CLI sabe fazer: eventos ao vivo, retomar sessão, informar tokens, um modo só leitura e assim por diante. Cada um é false até uma gravação mostrar a CLI fazendo aquilo. false quer dizer "não verificado", nunca "ausente".

O contrato confere cada declaração contra suas gravações. Uma capacidade declarada que as gravações não mostram é uma cláusula reprovada, então comece com tudo false e ligue só o que você gravou.

Grave sua CLI #

O contrato roda sobre chamadas reais, então primeiro registre seu provedor localmente e grave:

bash
npx autodev-provider-kit build providers/<name>/src/index.ts -o providers/<name>/provider.mjs
autodev providers add providers/<name>/provider.mjs
autodev providers capture <name> hello --out providers/<name>/captures
autodev providers capture <name> resume --out providers/<name>/captures
autodev providers capture <name> tool-notice --out providers/<name>/captures

São quatro cenários:

Gerar, verificar e um turno real #

bash
npx autodev-provider-kit build providers/<name>/src/index.ts -o providers/<name>/provider.mjs
npx autodev-provider-kit check providers/<name>/provider.mjs --captures providers/<name>/captures

O check roda o que o AutoDev roda antes de registrar um provedor: a verificação do arquivo, o sandbox e as doze cláusulas do contrato sobre suas gravações. Cada problema aponta uma linha ou uma cláusula.

Depois escreva seus próprios testes em test/. Eles são obrigatórios e precisam cobrir pelo menos 80% das linhas de src/: os argumentos que você monta, a saída que você lê, os caminhos de falha. Os testes do modelo mostram o padrão, um host cujo runner anota os argumentos em vez de iniciar a CLI:

bash
npx vitest run providers/<name>/test --coverage.enabled --coverage.provider=v8 --coverage.include="providers/<name>/src/**" --coverage.thresholds.lines=80

Por último, rode um turno real: adicione um participante no seu provedor pelo painel do AutoDev, comece uma execução e guarde a linha que ele publicar na thread. As gravações provam a leitura; um turno prova que as ferramentas da thread chegam ao agente.

Envie #

Rode npm run index para regenerar o index.json e abra um pull request em stefanolabs/autodev-providers. O checklist pede:

Um revisor lê os argumentos que seu provedor monta, por inteiro. Depois do merge, qualquer pessoa pode instalá-lo com autodev providers add <nome> ou pela seção Comunidade do painel.