ADK para Kotlin 1.0 ya está disponible: agentes para JVM y Android
Google lanzó ADK para Kotlin 1.0 con un núcleo multiplataforma, herramientas tipadas con KSP y extensiones para Android. Así puedes evaluarlo con seguridad.
11 de septiembre de 2026 · Leopoldo Benavente Cadena · 10 min de lectura
Google anunció el 9 de septiembre de 2026 la disponibilidad general de Agent Development Kit (ADK) para Kotlin 1.0. El SDK está pensado para crear agentes con Kotlin en la JVM, Android y otros destinos compatibles con Kotlin Multiplatform. La propuesta es interesante para equipos que ya trabajan con Kotlin porque permite definir herramientas y orquestación en código, conservar tipos del lenguaje y reutilizar parte de la lógica entre servidor y móvil.
La noticia no significa que cualquier agente esté listo para producción después de añadir una dependencia. Un agente puede invocar APIs, leer información sensible o ejecutar acciones irreversibles. Antes de conectarlo a un sistema real hay que probar sus herramientas, limitar permisos, registrar decisiones y exigir confirmación para operaciones delicadas.
TL;DR
- ADK para Kotlin 1.0 llegó a disponibilidad general el 9 de septiembre de 2026.
- El núcleo Kotlin Multiplatform es independiente del backend de modelos, el proveedor de sesiones y el sistema de memoria.
- KSP genera esquemas de herramientas a partir de
@Tooly@Param, con funcionessuspendy sin reflexión en tiempo de ejecución para ese registro.- El SDK incluye patrones multiagente, compactación de contexto, conversaciones de varios turnos, human-in-the-loop, reanudación de sesiones e interoperabilidad con Java.
- Android añade integraciones con LiteRT-LM, Firebase AI Logic, Room, AppSearch y ML Kit; el anuncio marca ML Kit como beta.
- La interfaz ADK Web del quickstart es para desarrollo y depuración, no para producción.
Qué es ADK para Kotlin 1.0
ADK es un kit para definir agentes, herramientas, sesiones y flujos de ejecución desde código. En la versión 1.0 para Kotlin, Google sitúa el núcleo sobre Kotlin Multiplatform y evita acoplarlo a un único proveedor de modelos o sistema de memoria. Eso permite pensar en una arquitectura por módulos: el agente y sus contratos pueden vivir en el núcleo, mientras que el almacenamiento o el modelo se eligen según el destino.
Según el anuncio oficial, la versión 1.0 busca paridad funcional con ADK 1.0 Core en capacidades como:
- jerarquías multiagente, donde un agente delega tareas a agentes especializados;
- compactación de contexto y conversaciones de varios turnos;
- flujos de confirmación y participación humana (human-in-the-loop);
- herramientas anotadas con
@Tooly@Param; - pausa, serialización y reanudación de sesiones;
- interoperabilidad para llamar agentes Kotlin desde aplicaciones Java;
- servicios de sesión, memoria RAG y memoria persistente en Enterprise Agent Platform/Vertex AI.
Estas son capacidades del SDK descritas por Google. La calidad de una respuesta, la seguridad de una herramienta o la disponibilidad de un modelo siguen dependiendo de la aplicación y de su configuración.
KSP: contratos de herramientas generados en compilación
Una herramienta es una función que el agente puede solicitar para obtener datos o ejecutar una operación. ADK usa anotaciones de Kotlin y Kotlin Symbol Processing (KSP) para generar las definiciones de llamada durante la compilación. El resultado es un contrato tipado que puede incluir parámetros documentados y funciones suspend, sin registrar las herramientas mediante reflexión en tiempo de ejecución.
En un servicio real, una herramienta debería ser pequeña, validable y lo más cercana posible a una operación segura. Es preferible exponer getOrderStatus(orderId) que entregar al modelo una consulta SQL genérica o una función capaz de ejecutar cualquier comando.
Quickstart en la JVM
La guía oficial de Kotlin usa Gradle, Kotlin/JVM y Java 17. Estas versiones corresponden al ejemplo consultado el 11 de septiembre de 2026; vuelve a comprobar la documentación antes de copiar la configuración en un proyecto nuevo:
plugins {
kotlin("jvm") version "2.1.20"
id("com.google.devtools.ksp") version "2.1.20-2.0.1"
application
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.google.adk:google-adk-kotlin-core:1.0.0")
ksp("com.google.adk:google-adk-kotlin-processor:1.0.0")
}
kotlin {
jvmToolchain(17)
}El procesador KSP genera la extensión generatedTools() usada por el agente. Si el plugin de KSP, el compilador de Kotlin y el procesador no son compatibles, el fallo aparecerá durante la compilación; no lo soluciones desactivando la generación sin entender qué contrato pierde el agente.
Un agente y una herramienta sintética
El siguiente ejemplo se basa en el quickstart oficial, pero devuelve una hora fija para mantenerlo reproducible. No llama a una API externa ni debe recibir secretos:
package com.example.agent
import com.google.adk.kt.agents.Instruction
import com.google.adk.kt.agents.LlmAgent
import com.google.adk.kt.annotations.Param
import com.google.adk.kt.annotations.Tool
import com.google.adk.kt.models.Gemini
class TimeService {
@Tool
fun getCurrentTime(
@Param("Nombre de la ciudad") city: String
): Map<String, String> = mapOf(
"city" to city,
"time" to "10:30"
)
}
object HelloTimeAgent {
@JvmField
val rootAgent = LlmAgent(
name = "hello_time_agent",
description = "Devuelve la hora de una ciudad.",
model = Gemini(
name = "gemini-flash-latest",
apiKey = System.getenv("GOOGLE_API_KEY")
?: error("Falta GOOGLE_API_KEY")
),
instruction = Instruction(
"Ayuda al usuario y usa getCurrentTime para consultar la hora."
),
tools = TimeService().generatedTools()
)
}generatedTools() es generado por KSP a partir de las anotaciones; si tu IDE todavía no lo reconoce, ejecuta la tarea de compilación de Gradle y revisa la configuración del procesador. El nombre gemini-flash-latest es el usado por el quickstart consultado y puede cambiar; verifica qué modelo y método de autenticación están disponibles para tu proyecto.
El punto de entrada puede usar el REPL incorporado:
package com.example.agent
import com.google.adk.kt.runners.ReplRunner
fun main() {
ReplRunner(HelloTimeAgent.rootAgent).start()
}Para ejecutarlo, carga GOOGLE_API_KEY desde un gestor de secretos o desde una variable local que no se suba al repositorio y ejecuta gradle run. La clave nunca debe aparecer en build.gradle.kts, en el código, en una aplicación Android distribuida ni en los logs.
El servidor web es para desarrollo
La guía también permite añadir google-adk-kotlin-webserver:1.0.0 y arrancar AdkDevServer para probar el agente desde un navegador local:
import com.google.adk.kt.webserver.AdkServerConfig
import com.google.adk.kt.webserver.dev.AdkDevServer
fun main() {
val server = AdkDevServer(
AdkServerConfig.inMemory(HelloTimeAgent.rootAgent)
)
server.start(wait = true)
}La documentación oficial advierte que ADK Web no está pensado para despliegues de producción. Úsalo para inspeccionar el agente y probar conversaciones; para un servicio real define autenticación, autorización, límites de frecuencia, observabilidad, almacenamiento y un servidor de aplicación con su propio modelo de amenazas.
Qué cambia en Android
El anuncio de Google agrega extensiones Android-first para combinar ejecución local, servicios de nube y componentes de persistencia. Entre las piezas descritas están:
- LiteRT-LM, para escenarios de modelos en el dispositivo;
- ML Kit, marcado como beta en el anuncio;
- Firebase AI Logic, para orquestar flujos híbridos con servicios de Firebase;
- Room, para persistir sesiones en Android;
- AppSearch, para memoria indexada localmente;
- almacenamiento de archivos privado de la aplicación para artefactos.
La elección no es “local o nube” como una decisión binaria. Un agente puede usar un modelo local para una tarea privada y recurrir a un servicio remoto para otra, pero cada ruta tiene requisitos de memoria, conectividad, latencia, coste y protección de datos. Verifica qué extensión está estable, cuál está en beta y qué datos salen del dispositivo.
Anuncio 1.0 frente a la guía Android vigente
Hay una diferencia importante entre las dos fuentes oficiales consultadas. El anuncio de Google enumera módulos Android con versiones 1.0.0 (y ML Kit como 1.0.0-beta) como parte de ADK para Kotlin 1.0. Sin embargo, la guía vigente de Android Developers consultada el 11 de septiembre de 2026 muestra para Android el artefacto separado google-adk-kotlin-core-android:0.1.0 y el procesador 0.1.0, y advierte que no debe añadirse junto con el artefacto JVM. Esta guía no presenta el bloque de dependencias del anuncio como una configuración Android verificada.
Por eso, el bloque 1.0.0 de este artículo se refiere únicamente al quickstart JVM. Para un proyecto Android, sigue la guía Android vigente y vuelve a comprobar las coordenadas antes de copiar nada:
dependencies {
// Configuración Android indicada por la guía consultada.
implementation("com.google.adk:google-adk-kotlin-core-android:0.1.0")
ksp("com.google.adk:google-adk-kotlin-processor:0.1.0")
}No mezcles google-adk-kotlin-core:1.0.0 del quickstart JVM con google-adk-kotlin-core-android:0.1.0. La guía Android también exige revisar Android Studio, compileSdk 34 o posterior, minSdk 24 o posterior y la forma de obtener el modelo; estos valores pueden cambiar. ML Kit y los módulos 1.0.0 anunciados deben tratarse como información del anuncio hasta que la documentación Android publique coordenadas compatibles.
Confirmación humana para acciones sensibles
Una de las capacidades destacadas es el flujo de confirmación humana. Es una buena base para una herramienta que pueda modificar datos, pero no reemplaza las reglas de autorización de tu sistema. La confirmación debe ser comprensible, mostrar el objetivo y el alcance de la acción y ocurrir antes de ejecutarla.
Como mínimo, una herramienta que envíe dinero, borre información, cambie permisos o reinicie infraestructura debería tener:
- esquema estricto y validación del lado servidor;
- identidad y permisos del usuario que solicita la acción;
- límites de importe, registros afectados, tiempo y frecuencia;
- vista previa de lo que se hará;
- confirmación explícita y no ambigua;
- idempotencia, timeout y posibilidad de rollback;
- auditoría sin secretos ni datos innecesarios;
- pruebas de prompt injection, reintentos y respuestas incompletas.
El ejemplo financiero del anuncio es demostrativo y Google aclara que no está diseñado para cumplir requisitos de conformidad. No uses un ejemplo de transferencia como base directa para un sistema bancario.
Sesiones, memoria y privacidad
ADK para Kotlin 1.0 distingue la sesión de la memoria. La sesión mantiene el contexto de una interacción; la memoria puede indexar o recuperar información para futuras consultas. Room y AppSearch pueden ser útiles en Android, mientras que los servicios de Vertex AI aparecen como opciones para escenarios de plataforma empresarial.
Antes de activar persistencia, define:
- qué datos se guardan y durante cuánto tiempo;
- si el usuario puede ver, exportar o eliminar su historial;
- qué contenido puede llegar a un modelo remoto;
- cómo se cifran los datos en reposo y en tránsito;
- qué identificadores se usan para recuperar una sesión;
- cómo se separan los usuarios y los entornos;
- cómo se borran artefactos y memorias al cerrar una cuenta.
Guardar una conversación localmente no la vuelve automáticamente privada: los registros, copias de seguridad, telemetría y errores también pueden contener contenido sensible.
Checklist antes de una prueba real
Antes de mostrar un agente a usuarios externos, comprueba:
- ¿Las dependencias de ADK, Kotlin, KSP y Java son compatibles y están fijadas?
- ¿La clave o credencial se carga desde un gestor seguro y no aparece en el APK, el repositorio ni los logs?
- ¿Cada herramienta tiene argumentos validados, permisos mínimos y timeouts?
- ¿Las acciones irreversibles exigen confirmación humana y pueden auditarse?
- ¿Las respuestas del modelo se tratan como datos no confiables?
- ¿Se probaron inyección de instrucciones, reintentos, timeouts y caída del proveedor?
- ¿Se definieron límites de coste, tokens, frecuencia y tamaño de contexto?
- ¿La sesión y la memoria tienen retención, borrado y aislamiento entre usuarios?
- ¿ADK Web quedó limitado a desarrollo local?
- ¿Hay un procedimiento de rollback y una forma de desactivar una herramienta?
En un primer piloto, usa herramientas simuladas que devuelvan datos sintéticos. Mide latencia, errores, consumo y tasa de confirmaciones antes de conectar APIs de producción.
Conclusión
ADK para Kotlin 1.0 ofrece una ruta atractiva para equipos que quieren definir agentes y herramientas en Kotlin, compartir parte del núcleo entre JVM y Android y conservar contratos tipados generados con KSP. Sus capacidades de orquestación, sesiones y confirmación humana cubren piezas importantes de un prototipo serio.
La decisión de producción requiere más que la versión 1.0: prueba el modelo, limita las herramientas, protege las credenciales, revisa qué datos persisten y diseña una salida segura cuando el proveedor o la red fallen. Empieza con un agente JVM y herramientas sintéticas; después evalúa Android, memoria local y servicios de nube de forma separada.
Fuentes oficiales
- ADK para Kotlin 1.0 — Google Developers Blog — anuncio, capacidades, módulos Android y ejemplo de confirmación humana, 9 de septiembre de 2026.
- Quickstart de Kotlin — documentación de ADK — dependencias 1.0.0, KSP, JVM 17,
GOOGLE_API_KEY, REPL y servidor web de desarrollo. - Repositorio oficial google/adk-kotlin — código, muestras y licencia del SDK.
- ADK para Android — Android Developers — integración Android y guía específica de plataforma.
- Documentación de Agent Development Kit — documentación viva y referencias de APIs.
Comentarios