abc小站

2026-09-11

Google ADK for Kotlin 1.0:Kotlin 也能写生产级 AI Agent 了

写 AI Agent,很多人第一反应是 Python。Kotlin / Android / JVM 这边,官方脚手架也补齐了。

写 AI Agent,很多人第一反应是 Python。

文档多,示例多,框架也多。

Java 这边,也有一套官方路线。

但是,如果你日常写的是 Kotlin----尤其是做 Android,或者 JVM 服务端----你会发现另一件事:

模型调用可以做,真正把 Agent 做成可上线的东西,仍然很散。

工具怎么定义?多轮对话上下文怎么压?敏感操作怎么让人确认?进程杀掉以后,会话怎么恢复?

这些事,往往要自己拼好几套库。

2026 年 9 月 9 日,Google Developers Blog 发了一篇文章。

作者是 Developer Advocate Guillaume Laforge。

标题很直接:Announcing ADK for Kotlin 1.0

ADK 全称是 Agent Development Kit。

Kotlin 版到了 1.0,正式 GA。

它到底解决什么问题?

简单说,ADK for Kotlin 想给 Kotlin / Java / Android 开发者,一套惯用、轻量、可组合的 Agent 开发工具。

0.1.0 时期,目标就已经摆在那里。

1.0 的变化,是把这套东西推到了生产可用。

核心是 Kotlin Multiplatform(KMP)。

它对具体模型后端、会话存储、记忆系统保持无关。

你可以在本地跑,也可以接云端。

官方还强调一点:它不只给 Android。

服务端 Kotlin 开发者,同样可以用惯用 Kotlin 写法,做企业侧 Agent 和智能应用。

换句话说,同一套核心,覆盖 JVM 服务端和 Android 端上场景

跟 Python / Java 版对齐了什么?

很多人会问:Kotlin 版是不是功能缩水版?

官方的说法是:与 ADK Python、ADK Java 的 1.0 Core 功能对齐。

具体包括这些能力:

1、层级多代理。可以把任务拆给专门的子 Agent,再串起来。

2、上下文压缩与多轮对话。历史太长时,用摘要把上下文压回 Token 上限以内。

3、人在回路(HITL)与确认流。敏感动作可以先暂停,等人确认,再继续执行。

4、长跑工具,以及基于注解的工具。用 Kotlin 写工具,自动生成 schema。

5、会话可恢复。进行中的交互可以暂停、序列化,之后再恢复。

6、Java 互操作。现有 Java 应用可以直接调用 ADK Kotlin Agent。

7、企业平台集成。对接 Vertex AI 的 session、RAG memory、memory bank 等服务(例如 VertexAiSessionServiceVertexAiRagMemoryServiceVertexAiMemoryBankService)。

这些能力听起来抽象,落到工程里其实都是硬需求。

没有多代理,复杂流程只能塞进一个巨大 prompt。

没有上下文压缩,长对话很快会撞 Token 墙。

没有确认流,转账、删数据这类动作就很危险。

没有会话恢复,App 被系统杀掉,Agent 状态也就丢了。

所以,1.0 对齐的不是名词清单,而是生产环境里绕不开的那些缺口。

工具:注解 + 编译期生成

Agent 要能做事,就得有工具。

ADK for Kotlin 的做法,很 Kotlin。

你用普通 Kotlin 类写服务,再给方法加上 @Tool@Param

构建时,靠 KSP(Kotlin Symbol Processing)在编译期生成函数调用定义。

官方特别强调三点:

类型安全的 schema;

支持 suspend 函数;

零运行时反射。

这很重要。

很多动态 schema 方案,依赖运行时反射。

手机端和严格的服务端环境,反射成本、体积、启动时间都不划算。

编译期生成,等于把"告诉模型这个工具长什么样"这件事,提前做完。

官方示例里,有一个数据库故障排查 Agent。

工具包括:拉服务指标、查最近部署、通知值班频道。

例如 getServiceMetrics 可以是 suspend 函数;notifyOnCall 则是普通函数。

构建完成后,KSP 会生成类似 InfrastructureDiagnosticsService().generatedTools() 的扩展。

你把生成好的工具列表交给 Agent,不用手写一长串 JSON schema。

对开发者来说,工具定义更像普通业务代码,而不是另一套 DSL。

Skills:把 SOP 从代码里拆出来

光有工具还不够。

真实线上排障,往往还有标准作业流程(SOP)。

先看哪些指标,再对照最近发布,再读安全规则,最后才通知人。

这些流程如果全写进 system prompt,又长又难维护。

ADK 引入了 Skills。

机制是 SkillToolset,配合 SKILL.md,做 progressive disclosure(渐进披露)。

什么叫渐进披露?

大白话就是:先告诉模型有哪些技能可用;真正需要时再加载完整 SOP;附属资源(比如规则文件)也只在必要时读取。

这样可以少占 Token。

官方示例把数据库故障排查 SOP 放在 src/main/resources/skills/database-incident-triage/SKILL.md

文件头用 front matter 写清名称、描述、允许使用的工具。

正文则是分步清单:先查遥测,再关联部署,再读 mitigation 规则,最后通知频道。

Agent 配置时,一边挂编译期生成的 tools,一边挂 SkillToolset

工具负责"能做什么";Skills 负责"按什么流程做"。

分工清楚以后,代码和文档各管一块,后面改 SOP 也不必大改工具实现。

一个官方示例在干什么?

官方用 InMemoryRunner 跑了一个事故分诊演示。

模型字段里写的是 gemini-3.8-flash

这只是演示代码里的模型名,不是本文要介绍的新模型发布。

流程大致是:

收到数据库延迟告警;

发现并加载对应 skill;

调用 getServiceMetrics,看到连接池接近打满;

再调用 fetchRecentDeployments,把根因落到最近一次部署;

最后通知 #production-alerts,并给出回滚建议。

它展示的不是"模型有多聪明",而是 Agent 框架怎么把工具、技能、事件循环串成可运行闭环。

对开发者更有用的,其实是这套闭环能不能复制到自己的业务里。

Android:端上、混合、可持久化

服务端示例讲完,官方又回到移动端。

现代手机 AI,一边要云端推理能力,一边要端上隐私、速度和离线可靠。

ADK for Kotlin 1.0 给 Android 做了模块化扩展,贴近常见 Android 架构组件。

素材和博文里点到的能力,大致是这些:

LiteRT-LM:端上本地模型路径。

ML Kit(beta):端上能力扩展。

Firebase AI Logic:混合云工作流,例如经由 Firebase 调用云端模型。

Room:会话持久化,进程重启后聊天历史还在。

AppSearch:端上全文索引记忆。

文件 artifact:生成的对账单、回执等,落到应用私有文件存储。

官方还有一个金融助手示例。

Agent 通过 Firebase AI 接模型(演示里同样写了 gemini-3.8-flash)。

转账工具用 @Tool(requireConfirmation = true) 标成需要明确批准。

Runner 配置里:

RoomSessionService 管会话;

AppSearchMemoryService 管记忆;

FileArtifactService 管产物文件。

执行时是两轮:

第一轮,用户请求转账,Agent 发出确认请求并暂停;

第二轮,用户在 UI 里确认,Agent 再真正执行 transferFunds

官方也写明:这个例子只做演示,不满足真实合规要求。

但工程含义很清楚。

敏感动作默认不自动落地;状态要能活过进程死亡;记忆和文件要走 Android 现成组件。

这比"在 App 里塞一个聊天框"更接近可上线产品。

怎么引入依赖?

入门很直接。

在模块的 build.gradle.kts 里加入:

dependencies {
    // ADK Kotlin Core + KSP
    implementation("com.google.adk:google-adk-kotlin-core:1.0.0")
    ksp("com.google.adk:google-adk-kotlin-processor:1.0.0")

    // 可选 Android 扩展
    implementation("com.google.adk:google-adk-kotlin-mlkit-android:1.0.0-beta")
    implementation("com.google.adk:google-adk-kotlin-litertlm:1.0.0")
    implementation("com.google.adk:google-adk-kotlin-firebase-android:1.0.0")
}

核心是 google-adk-kotlin-core:1.0.0,再配同版本 KSP processor。

Android 扩展按需加:ML Kit、LiteRT-LM、Firebase。

文档入口是 adk.dev

代码仓库是 github.com/google/adk-kotlin

官方还提供模块架构说明、Android Agent 指南、示例集,以及 Java 互操作示例。

如果你已有 Java 代码库,也不必推倒重来,可以直接互调。

哪些人值得看?

我觉得,至少三类人可以打开文档试一下。

第一类,是已经在写 Kotlin 服务端的人。

你们不一定要迁到 Python,也能用惯用语法搭多代理、工具、会话恢复。

第二类,是 Android 开发者。

如果产品需要端上推理、云端推理,或者两者混合,同时还要 Room / AppSearch 这类本地持久化,ADK 把拼图收拢了。

第三类,是已有 Java Agent 资产、想逐步引入 Kotlin 的团队。

官方把 Java 互操作当成一等能力,而不是事后补丁。

反过来,如果你主要做快速实验、脚本原型,Python ADK 可能仍然更顺手。

工具选语言,最终还是看团队日常写什么,以及要上线到哪里。

小结

Google ADK for Kotlin 1.0 已经 GA。

它用 KMP 核心对齐 ADK Python / Java 1.0 的多代理、上下文压缩、HITL、注解工具、会话恢复、Java 互操作和 Vertex AI 相关服务。

工具侧靠 @Tool / @Param + KSP 编译期生成 schema,支持 suspend,不做运行时反射。

Skills 侧靠 SkillToolsetSKILL.md,按需加载流程和资源。

Android 侧补上 LiteRT-LM、ML Kit(beta)、Firebase AI Logic,以及 Room、AppSearch、文件 artifact。

依赖从 com.google.adk:google-adk-kotlin-core:1.0.0 起步,文档看 adk.dev,代码看 google/adk-kotlin。

如果你一直觉得"Agent 框架都是 Python 的事",这篇文章至少说明一件事:

Kotlin 这边,官方也把生产级脚手架补齐了。

值不值得换,不必先争论生态高低。

打开仓库,把官方事故分诊或金融助手示例跑通,比看十篇趋势稿更有用。

(完)

来源:Google Developers Blog:ADK for Kotlin 1.0