← Voltar ao curso
Nível 3 — Automação e escala · Módulo 3.7 — Claude API e agentes sob medida

3.7.7 · Agent SDK

4 min de vídeo TEC

Objetivo: ao final, o consultor sabe que o Agent SDK é o Claude Code empacotado como biblioteca, roda um query em Python e em TypeScript, e escolhe entre as quatro formas de construir agente.

O que você precisa levar desta aula

  1. O Agent SDK é o Claude Code como biblioteca — mesmas ferramentas, mesmo loop, mesmo gerenciamento de contexto, rodando na sua infraestrutura, em Python ou TypeScript.
  2. Ele carrega o .claude/ do projeto automaticamente: a skill do módulo 2.4, o CLAUDE.md do 2.3 e o plugin do 3.3 continuam valendo dentro do agente embutido no produto. Nada é reescrito.
  3. Quatro formas de construir agente, separadas por duas perguntas — quem escreve o loop e quem hospeda. Só Managed Agents dá as duas coisas; o Agent SDK dá o loop e as ferramentas, mas a hospedagem é sua.

Python

pip install claude-agent-sdk
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
    options = ClaudeAgentOptions(
        system_prompt="Você é um assistente de projeto SAP da Wayon.",
        allowed_tools=["Read", "Grep", "Glob"],   # somente leitura
        permission_mode="acceptEdits",
        max_turns=15,
        cwd="/projetos/meridiano",
    )

    async for message in query(
        prompt="Liste os RICEFW cuja FS ainda não tem cenário de teste associado.",
        options=options,
    ):
        print(message)


asyncio.run(main())

Para conversa com mais de um turno, existe ClaudeSDKClient, que mantém o contexto entre perguntas:

from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock

async def main():
    async with ClaudeSDKClient() as client:
        await client.query("Quais RICEFW estão sem cenário de teste?")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

        await client.query("Desses, quais são de MM?")   # mantém o contexto anterior
        async for message in client.receive_response():
            ...

TypeScript

npm install @anthropic-ai/claude-agent-sdk
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Liste os RICEFW sem cenário de teste associado.",
  options: {
    allowedTools: ["Read", "Grep", "Glob"],
    maxTurns: 15,
    cwd: "/projetos/meridiano",
  },
})) {
  console.log(message);
}

A biblioteca existe só em Python e TypeScript. Em qualquer outra linguagem, o caminho documentado é rodar o CLI como subprocesso, com -p e --output-format json — que é exatamente o modo headless da aula 3.5.3.

As opções, e de onde elas vêm

Opção (Python / TypeScript) O que faz Módulo de origem
allowed_tools / allowedTools Ferramentas aprovadas sem perguntar 2.5 (permissões)
permission_mode / permissionMode Modo de permissão da sessão 2.5 · 3.4.1
max_turns / maxTurns Teto de rodadas de ferramenta 3.7.5
cwd Diretório de trabalho
mcp_servers / mcpServers Servidores MCP 3.1
system_prompt / systemPrompt Prompt de sistema, ou preset 3.6.1
model Modelo 3.7.2

A tabela resume o módulo inteiro: as decisões que você tomou nos módulos anteriores viram parâmetros de código. O que era configuração de ferramenta passa a ser argumento de função.

O que ele carrega sozinho

O SDK lê o .claude/ do projeto e o ~/.claude/ do usuário, como o Claude Code faria:

Recurso Vale dentro do SDK
Skills (.claude/skills/) Sim
CLAUDE.md e .claude/rules/ Sim
Slash commands Sim
Subagentes Sim
Hooks Sim
Plugins (por caminho local) Sim

É o arco do nível se fechando. A skill de FS escrita no módulo 2.4, empacotada em plugin no 3.3, rodando no CI no 3.5.5 — a mesma skill roda dentro do agente que a Wayon embute num produto do cliente, sem reescrever nada.

As quatro formas de construir agente

Quem escreve o loop Quem hospeda Ferramentas disponíveis Quando
Laço manual Você Você Só as suas Controle total, sem beta
Tool runner O SDK da API Você Só as suas O caso comum de agente com tool própria
Managed Agents Anthropic Anthropic Sandbox + MCP + suas Sessão longa, agendada, sem infra sua
Agent SDK O Agent SDK Você Arquivo, bash, busca + MCP + subagentes Agente de código ou de arquivo, na sua infra

preview — pode mudar · Managed Agents está em beta.

Duas confusões que essa tabela desfaz:

O que isso significa para a Wayon

O Agent SDK traz ferramentas que escrevem em disco e executam comando. Embutido num produto que toca pasta de projeto de cliente, ele é a mesma exposição do módulo 3.4, agora dentro de um produto entregue:

Cuidado Por quê
allowed_tools mínimo Somente leitura resolve mais casos do que parece
max_turns sempre Agente sem teto gasta sem teto
cwd apontando para pasta dedicada Limita o alcance do que ele pode tocar
Verificação do que saiu Auto mode não julga correção (aula 3.4.1)
Onde roda É infraestrutura da Wayon — e custo de sustentação

Regra Wayon Produto da Wayon construído com Agent SDK que toque pasta de cliente roda com allowed_tools mínimo, max_turns declarado e cwd restrito a diretório dedicado — nunca a raiz de um projeto. O resultado passa pela verificação do módulo 3.4 antes de chegar ao cliente. E a escolha entre Agent SDK e Managed Agents é registrada com a razão: uma põe a infraestrutura na Wayon, a outra na Anthropic, e as duas têm implicação de custo, de latência e de onde o dado do cliente é processado.

📖 Agent SDK overview · Python SDK · TypeScript SDK

Quiz — 4 questões

1.Qual é a diferença entre o tool runner (aula 3.7.3) e o Agent SDK?
  • a)Nenhuma relevante: são dois nomes para o mesmo utilitário do SDK

    São pacotes diferentes — anthropic e claude-agent-sdk — com propósitos diferentes.

  • b)O tool runner roda o laço sobre as ferramentas que você define; o Agent SDK já traz as ferramentas do Claude Code — arquivo, bash, busca

    Correto. Nomes parecidos, arsenais diferentes.

  • c)O tool runner roda na sua infraestrutura e o Agent SDK roda na infraestrutura da Anthropic

    Os dois rodam na sua infraestrutura; quem hospeda é Managed Agents.

Ver resposta e por quê
a) São pacotes diferentes — anthropic e claude-agent-sdk — com propósitos diferentes.
b) Correto. Nomes parecidos, arsenais diferentes.
c) Os dois rodam na sua infraestrutura; quem hospeda é Managed Agents.
2.Uma skill escrita no módulo 2.4 está em .claude/skills/ do projeto. O que acontece com ela num agente construído com o Agent SDK apontando para esse diretório?
  • a)É carregada automaticamente, como no Claude Code — o SDK lê o .claude/ do projeto

    Correto, e é o que fecha o arco skill → plugin → CI → produto sem reescrita.

  • b)Precisa ser convertida em tool com input_schema para o SDK reconhecer

    Skill não vira tool; o SDK carrega o formato original.

  • c)É ignorada: skills são recurso exclusivo dos apps e do CLI

    O Agent SDK carrega skills, comandos, CLAUDE.md, subagentes e hooks.

Ver resposta e por quê
a) Correto, e é o que fecha o arco skill → plugin → CI → produto sem reescrita.
b) Skill não vira tool; o SDK carrega o formato original.
c) O Agent SDK carrega skills, comandos, CLAUDE.md, subagentes e hooks.
3.A Wayon vai embutir um agente num produto e não quer manter servidor. Qual das quatro formas atende?
  • a)Agent SDK, porque a Anthropic executa a biblioteca

    O Agent SDK é biblioteca que roda na infraestrutura de quem a usa.

  • b)Tool runner, porque o loop roda no servidor da Anthropic

    O tool runner é um auxiliar do SDK e executa no processo de quem chama.

  • c)Managed Agents — é a única que fornece o loop e hospeda o ambiente de execução das ferramentas

    Correto. As outras três deixam a hospedagem com você.

Ver resposta e por quê
a) O Agent SDK é biblioteca que roda na infraestrutura de quem a usa.
b) O tool runner é um auxiliar do SDK e executa no processo de quem chama.
c) Correto. As outras três deixam a hospedagem com você.
4.Um produto da Wayon com Agent SDK vai rodar dentro da pasta de um projeto de cliente. Qual configuração é a mais importante?
  • a)model no mais capaz disponível, para reduzir a chance de erro

    Modelo melhor não substitui limite de alcance: o risco é o que a ferramenta pode tocar.

  • b)allowed_tools mínimo, max_turns declarado e cwd restrito a um diretório dedicado

    Correto. É a exposição do módulo 3.4 dentro de um produto entregue.

  • c)permission_mode em bypass, para o agente não travar em aprovação

    Bypass em pasta de cliente é o oposto da regra da aula 3.4.1 — execução desassistida fica em auto mode.

Ver resposta e por quê
a) Modelo melhor não substitui limite de alcance: o risco é o que a ferramenta pode tocar.
b) Correto. É a exposição do módulo 3.4 dentro de um produto entregue.
c) Bypass em pasta de cliente é o oposto da regra da aula 3.4.1 — execução desassistida fica em auto mode.