Pular para o conteúdo principal

ADK for Kotlin 1.0: confirmação vira schema de tool, não pedido no chat

· 3 min para ler
gui
Capa do conteúdo: ADK for Kotlin 1.0: confirmação vira schema de tool, não pedido no chat

O acontecimento

Em 9 de setembro de 2026 Guillaume Laforge anunciou no Google Developers Blog a GA do Agent Development Kit (ADK) for Kotlin 1.0. Código em github.com/google/adk-kotlin; docs em adk.dev. Artefatos Maven com.google.adk:google-adk-kotlin-core:1.0.0 e processor KSP na mesma versão.

O core é Kotlin Multiplatform, alinhado ao ADK 1.0 de Python e Java: multi-agent hierárquico, compactação de contexto, HITL, tools long-running, session resumable, interop Java, Vertex (VertexAiSessionService, VertexAiRagMemoryService, VertexAiMemoryBankService). Anotações @Tool e @Param geram schema em compile-time via KSP, com suspend e sem reflection em runtime.

No Android: LiteRT-LM, ML Kit GenAI (publicado como 1.0.0-beta), Firebase AI Logic, RoomSessionService, AppSearchMemoryService, arquivos no storage do app. O post mostra dois exemplos: triage de incidente de banco (tools + SkillToolset lendo SKILL.md) e assistente financeiro cuja transferFunds exige confirmação humana.

Por que importa

Kotlin já era linguagem de produto em Android e de serviço na JVM. O que faltava no ADK era paridade de core e um contrato de HITL que não dependesse de "o modelo pergunta se pode". Com requireConfirmation = true, o framework emite um function call sintético (REQUEST_CONFIRMATION_FUNCTION_CALL_NAME). A UI intercepta, o usuário toca Confirmar, o turno seguinte devolve FunctionResponse com CONFIRMED_KEY. O tool só então executa.

Isso é o mesmo desenho que o Muse resolve no Sentinel, em outro envelope: a autoridade de side-effect não vive no texto do LLM. No ADK, vive no schema do tool e no runner.

Skills (SKILL.md + assets sob progressive disclosure) separam SOP de código. O agent carrega o playbook sob demanda. Token de procedimento deixa de inflar o system prompt o tempo todo.

Aplicabilidade prática

Se o produto é Android ou serviço Kotlin:

  • Tool de efeito colateral nasce com requireConfirmation. Não peça "pode transferir?" no instruction.
  • Session em Room (ou equivalente) antes de HITL. Process death no meio da confirmação é o caso normal, não o de borda.
  • Skills para SOP; tools para I/O. Não cole playbook de incidente no prompt.
  • Separe rota on-device e rota nuvem no orquestrador. Mesmo agent, dois contratos de timeout, recusa e auditoria.
  • Java interop existe; não assuma que o time Java vai anotar @Tool do mesmo jeito. Defina o boundary.

Limitações e incertezas

Não compilei o 1.0. A leitura é o post do Laforge, o GitHub e a página de instalação do adk.dev. Releases do GitHub ainda listam 0.9.0 como último tag visível neste ciclo; o anúncio aponta artefatos 1.0.0 no Maven. Confira o repositório e o Maven Central no dia do pin, não só o blog. Não há claim independente de performance.

Fontes originais