adk-go
google/adk-go加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
如果你写过 Go 后端服务,一定熟悉这种节奏:定义 interface、实现 struct、用 context.Context 串起调用链、用 goroutine 处理并发。某天你要做一个"能自己查资料、写报告"的助手,发现手上的工具全是 Python 的——LangChain、LlamaIndex、各种 Agent 框架,Python 生态占了九成以上。想用 Go,选项要么是"跑个 Python sidecar",要么是从零撸一套 Agent 循环。
google/adk-go 就是给这个场景准备的:Google 官方把 Agent Development Kit(ADK)搬进了 Go 世界,2026 年 6 月 30 日 v2.0.0 GA,最新版本已到 v2.6.0(2026-10-13),仓库 8911 stars、987 forks、131 位贡献者。

ADK 是 Google 推出的 Agent 开发框架,最早成名于 Python 版(adk-python),随后扩展到 Java、Kotlin、TypeScript,Go 版是最新加入的一支。它的核心主张一句话概括:把软件工程原则搬进 AI Agent 开发——Agent 是可组合的模块,工具是可测试的接口,编排逻辑是能版本管理的代码,而不是一团塞在 prompt 里的自然语言。
ADK Go v2.0 引入了一次架构级重构:从"层级式 Agent 执行器"转为图式工作流引擎(Workflow Graph)。Agent、工具、函数都变成工作流图里的节点,通过边(edge)连接,支持条件分支、循环路由和人工介入暂停。配套新增 workflow 包,Event 结构体增加 IsolationScope、Routes、RequestedInput、Output、NodeInfo 五个字段支撑图路由与 HITL。

如果 ADK 让你想起什么,它更像 gRPC + Kubernetes 的组合体,而不是 LangChain 那种"胶水式" DSL:
agent.Agent 是 Go interface,自定义 Agent 只需传一个 Run 函数,ADK 负责调度前后的回调钩子——像实现一个 http.Handler。模块结构(仓库顶层 26 个包):agent(Agent 定义)、agentregistry(注册中心)、tool(工具与 toolset)、model(模型抽象层)、session(会话)、memory(记忆)、artifact(制品)、runner(执行器)、workflow(图式工作流)、plugin(插件)、server(服务端)、telemetry(可观测)、platform(平台抽象)。配套 cmd/launcher 提供多种启动形态:console(终端)、web(Web UI)、api、a2a、agentengine(Agent Engine)、prod、universal。
模型无关,但 Gemini 优先:官方说"optimized for Gemini, model-agnostic"。代码里 model/gemini 封装 Google genai SDK(v1.75.0),同时 github.com/openai/openai-go/v3 在依赖列表里,examples 下有 anthropic/、openai/、vertexai/ 目录,示例明确覆盖多模型接入。Vertex AI 集成走 cloud.google.com/go/aiplatform。
MCP 与 A2A 双协议:github.com/modelcontextprotocol/go-sdk v1.8.0 让 Agent 直接挂载外部 MCP 工具集;github.com/a2aproject/a2a-go v0.3.15 支持 Agent 间 A2A 通信,服务端有 server/adka2a 包。
可观测性:完整接入 OpenTelemetry(trace/metric/log 三件套 + OTLP exporter + GCP detector),telemetry 是一等公民而非事后补丁。
其他亮点:skills 示例包把"技能"概念引入(类似 Claude Code 的 skill 目录),支持 toolconfirmation(人工确认工具调用)、compaction(上下文压缩)、toolsearch(工具检索)、bidi(双向流式语音交互)、agentengine(托管部署)。
工程质量的硬指标:1459 个文件、1112 万行 Go 代码(11.1 MB)、373 个 _test.go 测试文件、golangci-lint 配置、7 条 CI workflow(含 apidiff 兼容性检查、nightly、release)。go.mod 要求 Go 1.26.10+。
go get google.golang.org/adk/v2,跑 examples/quickstart。前置条件只有 Go 工具链 + 一个模型 API Key(Gemini 最省事)。这是给"把 Agent 嵌进已有 Go 服务"的团队准备的,写完后 go build 出二进制直接上生产。cmd/launcher/web 启动 HTTP 服务并托管 adk-web 静态界面(构建产物在 cmd/launcher/web/webui/distr/),可通过 /run_live 做实时流式对话,另有 A2A、Pub/Sub、Eventarc 触发端点。scripts/adk-web/Dockerfile 是多阶段构建(Node 下载前端 → Go 编译),但仓库根目录没有 Dockerfile、没有 docker-compose,容器化属于"有路径、无一键"。google.golang.org/adk → .../adk/v2,session.NewEvent 签名加了 context.Context,自定义 session 存储若用刚性表结构需要加 5 个新字段。事件 schema 在 v2.2.0 前后序列化 key 还不一致,非 Go 的校验器要兼容两种形式——这是实打实的升级摩擦。main 构建,导致破坏性 UI 变更两个月无人察觉、页面大面积 404。可见前端产物管理仍在补课。ADK Go 2.0 的 GA 落点很有意思:2026 年正是"Agent 框架从 Python 独占走向多语言原生"的分水岭。Go 拿下了云原生主力语言这块阵地——Google 自己的 Cloud Run、Agent Engine 天然就是 Go 生态的大本营。同时 v2.0 的图式工作流引擎是这一代 Agent 框架的共同演进方向:确定性编排回归,以对抗纯 LLM 循环的不确定性和不可调试性。
还有一个容易被忽略的细节:官方提供了 adk.dev/llms.txt 和 llms-full.txt——机器可读的文档索引,明确告诉编码 Agent "把这个文件喂给 AI 就能写 ADK 代码"。这等于官方承认了"AI 写 Agent"正在成为主场景,框架文档要按 LLM 消费的方式重写。这是 2026 年开源项目的一个真实趋势标本。
结论:如果你在 Go 团队里做 Agent,ADK Go 几乎是你绕不开的选项——它是唯一一个既有大厂背书、又真正按 Go 工程师习惯设计的 Agent 框架,工程质量(测试密度、CI、apidiff、OTel)远超多数开源同类。但如果你已经在 Python 生态里深耕,ADK Go 的迁移收益主要在部署形态和并发性能上,而不是能力上限。