[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-google--adk-java":3,"tool-google--adk-java":62},[4,18,28,37,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":59,"last_commit_at":60,"category_tags":61,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,27],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":24,"env_os":99,"env_gpu":99,"env_ram":99,"env_deps":100,"category_tags":106,"github_topics":107,"view_count":24,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":126,"updated_at":127,"faqs":128,"releases":157},8001,"google\u002Fadk-java","adk-java","An open-source, code-first Java toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.","adk-java 是谷歌推出的开源 Java 工具包，专为构建、评估和部署复杂的 AI 智能体而设计。它主要解决了开发者在创建高级 AI 应用时，需要兼顾代码级精细控制与灵活部署的难题。通过“代码优先”的理念，adk-java 允许用户直接使用 Java 语言定义智能体的行为逻辑、任务编排及工具调用，从而实现了更 robust 的调试、版本管理和从本地到云端的无缝部署。\n\n这款工具特别适合熟悉 Java 生态的软件工程师和企业开发者，尤其是那些希望将 AI 智能体深度集成到 Google Cloud 服务中的团队。其核心技术亮点包括：拥有丰富的工具生态系统，支持预置工具、自定义函数及 OpenAPI 规范；支持模块化多智能体架构，可轻松组合多个专用智能体形成层级化系统；提供内置的开发界面（Dev UI），方便实时测试与调试；此外，它还保持了与 Python 版 ADK 高度一致的接口风格，并集成了 A2A 协议以支持远程智能体间的通信。无论是构建简单的搜索助手还是复杂的多智能体协作网络，adk-java 都能提供强大的技术支持。","# Agent Development Kit (ADK) for Java\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n[![Maven Central](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.adk\u002Fgoogle-adk)](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fcom.google.adk\u002Fgoogle-adk)\n[![r\u002Fagentdevelopmentkit](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-r%2Fagentdevelopmentkit-FF4500?style=flat&logo=reddit&logoColor=white)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fagentdevelopmentkit\u002F)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fgoogle\u002Fadk-java)\n\n\u003Chtml>\n    \u003Ch2 align=\"center\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_adk-java_readme_038fa4fec239.png\" width=\"256\"\u002F>\n    \u003C\u002Fh2>\n    \u003Ch3 align=\"center\">\n      An open-source, code-first Java toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.\n    \u003C\u002Fh3>\n    \u003Ch3 align=\"center\">\n      Important Links:\n      \u003Ca href=\"https:\u002F\u002Fgoogle.github.io\u002Fadk-docs\u002F\">Docs\u003C\u002Fa> &\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-samples\">Samples\u003C\u002Fa> &\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\">Python ADK\u003C\u002Fa>.\n    \u003C\u002Fh3>\n\u003C\u002Fhtml>\n\nAgent Development Kit (ADK) is designed for developers seeking fine-grained\ncontrol and flexibility when building advanced AI agents that are tightly\nintegrated with services in Google Cloud. It allows you to define agent\nbehavior, orchestration, and tool use directly in code, enabling robust\ndebugging, versioning, and deployment anywhere – from your laptop to the cloud.\n\n--------------------------------------------------------------------------------\n\n## ✨ Key Features\n\n-   **Rich Tool Ecosystem**: Utilize pre-built tools, custom functions, OpenAPI\n    specs, or integrate existing tools to give agents diverse capabilities, all\n    for tight integration with the Google ecosystem.\n\n-   **Code-First Development**: Define agent logic, tools, and orchestration\n    directly in Java for ultimate flexibility, testability, and versioning.\n\n-   **Modular Multi-Agent Systems**: Design scalable applications by composing\n    multiple specialized agents into flexible hierarchies.\n\n## 🚀 Installation\n\nIf you're using Maven, add the following to your dependencies:\n\n\u003C!-- x-release-please-released-start-version -->\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n  \u003CartifactId>google-adk\u003C\u002FartifactId>\n  \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n\u003C!-- Dev UI -->\n\u003Cdependency>\n    \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n    \u003CartifactId>google-adk-dev\u003C\u002FartifactId>\n    \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n\u003C!-- x-release-please-released-end -->\n\nTo instead use an unreleased version, you could use \u003Chttps:\u002F\u002Fjitpack.io\u002F#google\u002Fadk-java\u002F>;\nsee \u003Chttps:\u002F\u002Fgithub.com\u002Fenola-dev\u002FLearningADK#jitpack> for an example illustrating this.\n\n## 📚 Documentation\n\nFor building, evaluating, and deploying agents by follow the Java\ndocumentation & samples:\n\n*   **[Documentation](https:\u002F\u002Fgoogle.github.io\u002Fadk-docs)**\n*   **[Samples](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-samples)**\n\n## 🏁 Feature Highlight\n\n### Same Features & Familiar Interface As Python ADK:\n\n```java\nimport com.google.adk.agents.LlmAgent;\nimport com.google.adk.tools.GoogleSearchTool;\n\nLlmAgent rootAgent = LlmAgent.builder()\n    .name(\"search_assistant\")\n    .description(\"An assistant that can search the web.\")\n    .model(\"gemini-2.0-flash\") \u002F\u002F Or your preferred models\n    .instruction(\"You are a helpful assistant. Answer user questions using Google Search when needed.\")\n    .tools(new GoogleSearchTool())\n    .build();\n```\n\n### Development UI\n\nSame as the beloved Python Development UI.\nA built-in development UI to help you test, evaluate, debug, and showcase your agent(s).\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_adk-java_readme_e6333a321746.png\"\u002F>\n\n### Evaluate Agents\n\nComing soon...\n\n## 🤖 A2A and ADK integration\n\nFor remote agent-to-agent communication, ADK integrates with the\n[A2A protocol](https:\u002F\u002Fgithub.com\u002Fgoogle\u002FA2A\u002F).\nSee `a2a\u002FREADME.md` for end-to-end setup instructions and sample commands.\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Whether it's bug reports, feature\nrequests, documentation improvements, or code contributions, please see our\n[**Contributing Guidelines**](.\u002FCONTRIBUTING.md) to get started.\n\n## 📄 License\n\nThis project is licensed under the Apache 2.0 License - see the\n[LICENSE](LICENSE) file for details.\n\n## Preview\n\nThis feature is subject to the \"Pre-GA Offerings Terms\" in the General Service\nTerms section of the\n[Service Specific Terms](https:\u002F\u002Fcloud.google.com\u002Fterms\u002Fservice-terms#1). Pre-GA\nfeatures are available \"as is\" and might have limited support. For more\ninformation, see the\n[launch stage descriptions](https:\u002F\u002Fcloud.google.com\u002Fproducts?hl=en#product-launch-stages).\n\n--------------------------------------------------------------------------------\n\n*Happy Agent Building!*\n","# Java 版代理开发工具包 (ADK)\n\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n[![Maven Central](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.adk\u002Fgoogle-adk)](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fcom.google.adk\u002Fgoogle-adk)\n[![r\u002Fagentdevelopmentkit](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-r%2Fagentdevelopmentkit-FF4500?style=flat&logo=reddit&logoColor=white)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fagentdevelopmentkit\u002F)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fgoogle\u002Fadk-java)\n\n\u003Chtml>\n    \u003Ch2 align=\"center\">\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_adk-java_readme_038fa4fec239.png\" width=\"256\"\u002F>\n    \u003C\u002Fh2>\n    \u003Ch3 align=\"center\">\n      一个开源、以代码为中心的 Java 工具包，用于构建、评估和部署具有高度灵活性和可控性的复杂 AI 代理。\n    \u003C\u002Fh3>\n    \u003Ch3 align=\"center\">\n      重要链接：\n      \u003Ca href=\"https:\u002F\u002Fgoogle.github.io\u002Fadk-docs\u002F\">文档\u003C\u002Fa> &\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-samples\">示例\u003C\u002Fa> &\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\">Python ADK\u003C\u002Fa>。\n    \u003C\u002Fh3>\n\u003C\u002Fhtml>\n\n代理开发工具包 (ADK) 专为希望在构建与 Google Cloud 服务紧密集成的高级 AI 代理时获得精细控制和灵活性的开发者而设计。它允许您直接在代码中定义代理的行为、编排和工具使用方式，从而实现强大的调试、版本管理和部署能力——无论是在您的笔记本电脑上还是在云端。\n\n--------------------------------------------------------------------------------\n\n## ✨ 核心特性\n\n-   **丰富的工具生态系统**：利用预构建的工具、自定义函数、OpenAPI 规范，或集成现有工具，为代理赋予多样化的功能，同时与 Google 生态系统紧密集成。\n\n-   **以代码为中心的开发**：直接在 Java 中定义代理逻辑、工具和编排流程，以实现极致的灵活性、可测试性和版本管理。\n\n-   **模块化多代理系统**：通过将多个专业代理组合成灵活的层次结构，设计可扩展的应用程序。\n\n## 🚀 安装\n\n如果您使用 Maven，请将以下内容添加到您的依赖项中：\n\n\u003C!-- x-release-please-released-start-version -->\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n  \u003CartifactId>google-adk\u003C\u002FartifactId>\n  \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n\u003C!-- 开发 UI -->\n\u003Cdependency>\n    \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n    \u003CartifactId>google-adk-dev\u003C\u002FartifactId>\n    \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n\u003C!-- x-release-please-released-end -->\n\n如果您想使用尚未发布的版本，可以访问 \u003Chttps:\u002F\u002Fjitpack.io\u002F#google\u002Fadk-java\u002F>；请参阅 \u003Chttps:\u002F\u002Fgithub.com\u002Fenola-dev\u002FLearningADK#jitpack> 以获取相关示例。\n\n## 📚 文档\n\n如需构建、评估和部署代理，请参考 Java 文档及示例：\n\n*   **[文档](https:\u002F\u002Fgoogle.github.io\u002Fadk-docs)**\n*   **[示例](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-samples)**\n\n## 🏁 功能亮点\n\n### 与 Python ADK 具有相同的功能和熟悉界面：\n\n```java\nimport com.google.adk.agents.LlmAgent;\nimport com.google.adk.tools.GoogleSearchTool;\n\nLlmAgent rootAgent = LlmAgent.builder()\n    .name(\"search_assistant\")\n    .description(\"一个可以进行网络搜索的助手。\")\n    .model(\"gemini-2.0-flash\") \u002F\u002F 或您偏好的模型\n    .instruction(\"您是一位乐于助人的助手。必要时请使用 Google 搜索回答用户问题。\")\n    .tools(new GoogleSearchTool())\n    .build();\n```\n\n### 开发 UI\n\n与广受欢迎的 Python 开发 UI 相同。内置开发界面，帮助您测试、评估、调试并展示您的代理。\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_adk-java_readme_e6333a321746.png\"\u002F>\n\n### 评估代理\n\n即将推出……\n\n## 🤖 A2A 与 ADK 集成\n\n为了实现远程代理间的通信，ADK 集成了 [A2A 协议](https:\u002F\u002Fgithub.com\u002Fgoogle\u002FA2A\u002F)。请参阅 `a2a\u002FREADME.md` 获取端到端的设置说明和示例命令。\n\n## 🤝 贡献\n\n我们欢迎社区的贡献！无论是漏洞报告、功能请求、文档改进，还是代码贡献，请参阅我们的 **[贡献指南](.\u002FCONTRIBUTING.md)** 以开始参与。\n\n## 📄 许可证\n\n本项目采用 Apache 2.0 许可证授权——详细信息请参阅 [LICENSE](LICENSE) 文件。\n\n## 预览\n\n此功能受《服务特定条款》中“通用服务条款”部分的“GA 前产品条款”约束。GA 前功能按“现状”提供，可能支持有限。更多信息请参阅 [发布阶段说明](https:\u002F\u002Fcloud.google.com\u002Fproducts?hl=en#product-launch-stages)。\n\n--------------------------------------------------------------------------------\n\n*祝您构建愉快！*","# ADK for Java 快速上手指南\n\nAgent Development Kit (ADK) 是 Google 推出的开源 Java 工具包，旨在帮助开发者以“代码优先”的方式构建、评估和部署复杂的 AI 智能体（Agents）。它提供了对智能体行为、编排和工具调用的细粒度控制，并深度集成 Google Cloud 生态。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Windows, macOS 或 Linux\n*   **JDK 版本**：建议安装 JDK 17 或更高版本\n*   **构建工具**：Maven 3.6+ 或 Gradle\n*   **Google Cloud 配置**：\n    *   需要有效的 Google Cloud 项目。\n    *   需设置 `GOOGLE_APPLICATION_CREDENTIALS` 环境变量指向服务账号密钥文件，或已运行 `gcloud auth application-default login` 进行本地认证。\n    *   确保已启用 Vertex AI API 及相关所需服务。\n\n## 安装步骤\n\nADK for Java 已发布至 Maven Central，您可以直接在项目的 `pom.xml` 中添加依赖。\n\n### Maven 配置\n\n在 `pom.xml` 的 `\u003Cdependencies>` 部分添加以下内容：\n\n```xml\n\u003C!-- 核心库 -->\n\u003Cdependency>\n  \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n  \u003CartifactId>google-adk\u003C\u002FartifactId>\n  \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n\n\u003C!-- 开发 UI (可选，用于本地调试和可视化) -->\n\u003Cdependency>\n    \u003CgroupId>com.google.adk\u003C\u002FgroupId>\n    \u003CartifactId>google-adk-dev\u003C\u002FartifactId>\n    \u003Cversion>1.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n> **提示**：如果您需要使用尚未发布的快照版本，可以通过 JitPack 引入，具体参考项目仓库中的相关说明。\n\n## 基本使用\n\nADK for Java 采用了与 Python 版本相似的直观接口。以下是一个最简单的示例，展示如何创建一个具备 Google 搜索能力的 LLM 智能体。\n\n### 1. 创建智能体\n\n使用 `LlmAgent.builder()` 定义智能体的名称、描述、模型、指令以及绑定的工具。\n\n```java\nimport com.google.adk.agents.LlmAgent;\nimport com.google.adk.tools.GoogleSearchTool;\n\npublic class QuickStart {\n    public static void main(String[] args) {\n        \u002F\u002F 构建根智能体\n        LlmAgent rootAgent = LlmAgent.builder()\n            .name(\"search_assistant\")\n            .description(\"An assistant that can search the web.\")\n            .model(\"gemini-2.0-flash\") \u002F\u002F 指定使用的模型\n            .instruction(\"You are a helpful assistant. Answer user questions using Google Search when needed.\")\n            .tools(new GoogleSearchTool()) \u002F\u002F 绑定 Google 搜索工具\n            .build();\n        \n        \u002F\u002F 此处可添加运行逻辑或启动开发 UI\n        System.out.println(\"Agent created successfully: \" + rootAgent.getName());\n    }\n}\n```\n\n### 2. 使用开发 UI (Dev UI)\n\nADK 内置了一个强大的开发界面，帮助您测试、调试和展示智能体。如果您引入了 `google-adk-dev` 依赖，可以通过运行特定的主类或脚本来启动 Web 界面（具体启动方式请参考官方 Samples 仓库中的完整示例），从而在浏览器中直接与您的智能体交互。\n\n### 下一步\n\n*   **查看文档**：访问 [官方文档](https:\u002F\u002Fgoogle.github.io\u002Fadk-docs) 了解多智能体编排、自定义工具及评估功能。\n*   **获取示例**：浏览 [adk-samples](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-samples) 仓库获取更多完整的项目案例。","某大型电商企业的 Java 后端团队正在构建一个能自动处理复杂售后纠纷（如跨部门调货、退款审批）的智能客服系统。\n\n### 没有 adk-java 时\n- **逻辑耦合严重**：代理行为硬编码在庞大的业务类中，难以区分 AI 决策逻辑与传统业务规则，导致调试困难且容易引发回归错误。\n- **多代理协作混乱**：需要手动编写复杂的消息路由代码来协调“订单查询”、“库存检查”和“赔付计算”等多个独立模型，缺乏统一的编排机制。\n- **工具集成繁琐**：每次调用内部 REST API 或数据库时，都要重复编写大量的样板代码进行参数转换和异常处理，开发效率低下。\n- **测试与部署割裂**：缺乏原生的评估框架，只能在生产环境中“盲测”，无法在本地快速验证代理在不同纠纷场景下的反应准确性。\n\n### 使用 adk-java 后\n- **代码即逻辑**：利用 Code-First 特性，直接在 Java 代码中清晰定义每个代理的指令和状态流转，实现了业务逻辑与 AI 行为的解耦，版本控制更精准。\n- **层级化编排**：通过模块化功能轻松构建分层多代理系统，由一个根代理自动调度下属的专业子代理处理特定环节，大幅简化了协作流程。\n- **生态无缝对接**：直接复用预置工具或快速封装现有 OpenAPI 接口，让代理能像调用普通 Java 方法一样灵活使用企业内部服务。\n- **全链路可观测**：借助内置的开发 UI 和本地运行能力，团队可在部署前直观地单步调试代理思考过程，并量化评估其在各类纠纷中的解决率。\n\nadk-java 让 Java 开发者能以熟悉的编程范式，高效构建出可控、可测且深度集成企业服务的复杂智能代理系统。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_adk-java_038fa4fe.png","google","Google","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgoogle_c4bedcda.png","Google ❤️ Open Source",null,"opensource@google.com","GoogleOSS","https:\u002F\u002Fopensource.google\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle",[83,87,91],{"name":84,"color":85,"percentage":86},"Java","#b07219",98.7,{"name":88,"color":89,"percentage":90},"HTML","#e34c26",1.3,{"name":92,"color":93,"percentage":94},"JavaScript","#f1e05a",0,1474,325,"2026-04-15T17:27:36","Apache-2.0","未说明",{"notes":101,"python":102,"dependencies":103},"这是一个基于 Java 的开发工具包，需通过 Maven 构建。主要依赖 Google Cloud 服务及 Gemini 模型（如 gemini-2.0-flash）。支持通过 JitPack 使用未发布版本。包含内置的开发 UI 用于调试和评估代理。目前处于预览阶段（Pre-GA），按“原样”提供，支持可能有限。","不适用 (基于 Java)",[104,105],"com.google.adk:google-adk:1.1.0","com.google.adk:google-adk-dev:1.1.0",[14,36,15,13],[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],"agent","agents","ai","ai-agents","multi-agent","multi-agent-systems","agentic","agentic-ai","agentic-workflow","agents-sdk","aiagentframework","genai","genai-chatbot","llm","llms","multi-agent-system","multi-agents","multi-agents-collaboration","2026-03-27T02:49:30.150509","2026-04-20T16:32:53.553912",[129,134,138,143,148,153],{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},35820,"InMemorySessionService 的 deleteSession() 方法删除会话后为何会导致内存泄漏？","这是因为 deleteSession() 仅移除了 sessionId 到 Session 的映射，但留下了空的 userId 映射和 appName 映射。当大量用户创建和删除会话时，这些空的 ConcurrentHashMap 对象会累积，导致严重的内存泄漏（例如 100 万用户可能泄漏约 1GB 内存）。\n\n解决方案已在 PR #923 中提交：使用原子操作 `computeIfPresent()` 替代普通的 `get()` + `remove()`。当内部 Map 为空时，lambda 表达式返回 null，从而自动修剪（auto-prune）掉空的父级 Map 结构，确保线程安全且无额外锁开销。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F687",{"id":135,"question_zh":136,"answer_zh":137,"source_url":133},35821,"删除会话时，userState 和 appState 会被一并清除吗？","不会。这是有意设计的：\n- sessions（会话）：是短暂的对话上下文，删除会话时应被移除。\n- userState（用户状态）：存储用户特定的偏好或历史，旨在跨会话持久存在，不应随会话删除而丢失。\n- appState（应用状态）：所有用户共享的应用级配置，同样需要持久化。\n\n如果确实需要显式清理 userState 或 appState，应通过单独的 API（如 deleteUserState(appName, userId)）处理，而不是在 deleteSession() 中隐式执行，以防止意外数据丢失。",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},35822,"升级到 ADK 0.3.0 后，为什么日志显示\"Found 0 total agents\"且无法发现 Agent？","这通常是因为默认扫描路径配置变更导致的。在 0.3.0 版本中，如果 Agent 类位于特定的包（如 `agents` 包）中，可能需要显式配置源目录。\n\n解决方法是更新配置以指定正确的源目录。请检查并设置 `adk.agents.source-dir` 属性，确保其指向包含 Agent 类的正确路径（例如 `src\u002Fmain\u002Fjava` 或具体的包路径）。许多用户在更新源目录配置后成功解决了该问题。此外，请注意官方文档中的部分运行命令可能存在滞后，建议参考最新修复后的文档或社区确认的命令。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F456",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},35823,"在使用 Vertex AI 时，为何会收到关于 FunctionCall 和 FunctionResponse 中包含 id 字段的错误？","Vertex AI 的 v1 端点不接受 FunctionCall 和 FunctionResponse 中的 `id` 字段，但 ADK Java 版本默认会生成并发送该字段，从而导致请求失败。\n\n该问题已在后续版本中修复（参考相关 commit），逻辑类似于 Python ADK 的处理方式：在发送给 Vertex AI 之前移除 `id` 字段。如果您仍遇到此问题，请确保已升级到包含修复的最新版本。在代码层面，修复涉及在 `GeminiUtil.java` 或相关 Flow 类中，针对 Vertex AI 配置移除生成的 `adk-` 前缀 ID，确保发送给后端的数据符合 API 规范。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F557",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},35824,"如何在本地开发时自动检查代码格式和 License 头？","为了简化维护者和贡献者的工作，建议在 CI 构建中集成代码格式和 License 头的验证，并在本地开发中使用预提交钩子（pre-commit hooks）。\n\n推荐方案：\n1. 配置 pre-commit hook，集成 Google Java Code Formatter 和 License Header 检查器\u002F添加器。这样可以在提交代码前自动格式化代码并检查 License 头，避免在 PR 中进行琐碎的评论。\n2. 虽然也可以使用 Maven 插件集成格式化功能，但结合 pre-commit 能提供更流畅的本地开发体验（即使不安装 Python 也可通过其他方式配置，或直接使用 Maven 插件作为替代方案）。\n\n实施此策略可显著减少因格式或许可证问题导致的 PR 往返时间。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F168",{"id":154,"question_zh":155,"answer_zh":156,"source_url":147},35825,"Python ADK 和 Java ADK 在处理 Vertex AI 函数调用 ID 时有何不同？","主要差异在于 ID 的生命周期管理：\n- **Python ADK**：在 v1 端点返回不带 ID 的函数调用后，ADK 会临时填充一个带 `adk-` 前缀的 ID 用于内部处理，然后在发送回 v1 端点前将其移除。这种机制在 v1beta1 中也能正常工作，因为该版本不强制要求移除 ID。\n- **Java ADK**：早期版本同样会填充函数调用 ID，但缺乏对应的移除逻辑，导致带有 ID 的请求被发送至 Vertex AI 从而引发错误。\n\n修复方案是参照 Python 的实现，在 Java 代码流（如 `Functions.java`）中增加移除 ID 的逻辑，确保最终发送给 Vertex AI 的消息不包含该字段。",[158,163,168,173,178,183,188,193,198,203,208],{"id":159,"version":160,"summary_zh":161,"released_at":162},281014,"v1.1.0","## [1.1.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv1.0.0...v1.1.0) (2026-04-10)\n\n\n### 功能特性\n\n* 添加 ChatCompletionsRequest 对象 ([88eb0f5](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F88eb0f523c14266840ffc4b3d9ed827c9cdb1510))\n* 添加 ChatCompletionsResponse 对象 ([55becb8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F55becb81b6dcc15a9a82ec842a0096132813ae64))\n* 添加将 ChatCompletionsResponse 转换为 LlmResponse 的功能 ([ec88c64](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fec88c64d311946c1d427c4374be75d6163160478))\n* 为 ADK LangChain4j 集成库添加 README 文件 ([f861ef9](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Ff861ef9c0d5c6a5ef27e7be1d8ac27a399ba6fad))\n* 在 LlmRegistry 中添加对 Gemma 模型的支持 ([9d6cc80](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F9d6cc80660d81fc217d058b7c8edb1ff906e2c30))\n* 在事件中添加转录功能 ([cb9d2e3](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fcb9d2e3e9225c550fd1f1a1445cebe569d30a20a))\n* 实现追踪管理，添加 HITL 支持 ([7407e37](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F7407e37a043f7b25a66663eb04a6bafbef620583))\n* 支持并行代理中的子代理升级事件（问题 [#561](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F561)）([88c8b0e](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F88c8b0e5a4863fa623fa17ff616d13570b60c4d0))\n* 更新 BaseLlmFlow 后处理部分的事件 ID ([d0e1085](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd0e108510487d97d186052caa164649e1c90f176))\n\n\n### Bug 修复\n\n* 修复 A2A 协议中的分块流式传输和任务完成状态 ([c95f669](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fc95f669bb6fbadbf07d62a8ff8a3e533e17032f4))\n* 修复 ADK Runner 中的关键竞争条件 ([51f4d1f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F51f4d1f9a4d4d67a92f4a97989e5bd1ab24910e1))\n* 修复 ADK Runner 中的关键竞争条件 ([3091156](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F30911560ff2f928e40f6de9426c7c8295b16bacb))\n* 修复 ADK Runner 中的竞争条件和过时会话问题 ([7964e93](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F7964e93dc12c3d24079facfd5d64ed913ec082aa))","2026-04-10T14:03:01",{"id":164,"version":165,"summary_zh":166,"released_at":167},281015,"v1.0.0","## [1.0.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv1.0.0-rc.1...v1.0.0) (2026-03-30)\n\n\n### 功能特性\n\n* 向 `AgentExecutor` 添加 `InMemoryArtifactService`，并更新 `pom.xml` 依赖项 ([24f8d5e](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F24f8d5e2562e1c0812ce6e248500797d9801fafd))\n* 允许 `output_schema` 和工具共存 ([40ca6a7](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F40ca6a7c5163f711e02a54163d6066f7cd86e64d))\n\n\n### 错误修复\n\n* 在 Spring AI 的 `MessageConverter` 中添加对媒体\u002F图片的支持 ([8ab7f07](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F8ab7f072cdaa363e07b7a786044376c021c4c009))，关闭 [#705](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F705)\n* 为 `SetModelResponseTool` 添加模式验证（问题 [#587](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F587) 已实现，但补充了来自 PR [#603](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F603) 的测试）([cdc5199](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fcdc5199eb0f92cb95db2ee7ff139d67317968457))\n* 确保 `callbackContextData` 在会话更新过程中得以保留 ([d1e05ca](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd1e05caf524b7cafb3f321550659296ea70d9286))\n* **firestore:** 移除硬编码的依赖版本 ([6a5a55e](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F6a5a55eb3e531c6f8a7083712308c4800f680ca5))\n* 修复函数调用的追踪功能 ([84dff10](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F84dff10a3ee7f47e30a40409e56b5e9365c69815))\n* 处理 `AiMessage.text()` 为 null 的情况以防止 NPE，并添加单元测试（PR [#1035](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F1035)）([3e21e7a](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F3e21e7ac46b634341819b3543388a38caef85516))\n* 并行代理执行 ([677b6d7](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F677b6d7452aa28fab42d554d18c150d59ca88eec))\n* 从 `Runner` 中移除已弃用的方法 ([3633a7d](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F3633a7dd071265087ea2ff148d419969b0c888ef))\n* 解决 Claude 集成中 MCP 工具解析错误 ([5a2abbf](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5a2abbfe6f9e4e1ebdd5b918e34fcdb144603b5a))\n* 撤销对 `AbstractMcpTool` 的更改，保持响应中的 `text_output` 字段向后兼容 ([5f34d59](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5f34d598435a2a8d875a5dbb14344c201db0e75f))\n* 使用符合应用规范的代理名称 ([f3eb936](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Ff3eb936772740b7dc7a803a40d0d39fdbccc4af4))\n\n\n### 文档\n\n* 添加拉取请求模板 ([6bb721b](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F6bb721b9a6000dac9dfda498fb6dd2c45862e25c))\n\n\n### 其他杂项\n\n* 将发布版本设置为 1.0.0 ([dd1c941](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fdd1c94184835838fa47de024cf458c2ea0786aff))\n* 将版本设置为 1.0.0-rc.2 ([678b496](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F678b49653fa93606e2e57926213f0facaf9d6666))","2026-03-30T11:06:55",{"id":169,"version":170,"summary_zh":171,"released_at":172},281016,"v1.0.0-rc.1","## [1.0.0-rc.1](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.9.0...v1.0.0-rc.1) (2026-03-20)\n\n\n### ⚠ 重大变更\n\n* 移除接受 Optional 参数的 McpToolset 构造函数\n* 移除已弃用的 Example 处理器\n\n### 功能\n\n* 在 RemoteA2AAgent 中添加对 a2a 元数据的处理；新增元数据键的枚举类型 ([e51f911](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fe51f9112050955657da0dfc3aedc00f90ad739ec))\n* 向 BaseTool 添加类型安全的 runAsync 方法 ([b8cb7e2](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fb8cb7e2db6d5ce20f4d7a1b237bdc155563cf4bd))\n* 增强 LangChain4j，使其支持带有 parametersJsonSchema 的 MCP 工具 ([2c71ba1](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2c71ba1332e052189115cd4644b7a473c31ed414))\n* 修复代理转移时的上下文传播问题 ([9a08076](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F9a080763d83c319f539d1bacac4595d13b299e7e))\n* 实现 BigQuery Agent Analytics Plugin 的基础版本 ([c8ab0f9](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fc8ab0f96b09a6c9636728d634c62695fcd622246))\n* 初始化 AGENTS.md 文件 ([7ebeb07](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F7ebeb07bf2ee72475484d8a31ccf7b4c601dda96))\n* 传播 OTEL 上下文 ([8556d4a](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F8556d4af16ff04c6e3b678dcfc3d4bb232abc550))\n* 移除接受 Optional 参数的 McpToolset 构造函数 ([dbb1394](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fdbb139439d38157b4b9af38c52824b1e8405a495))\n* 将 CallbackUtil 方法中的返回值从 ImmutableList 改为 List ([8af5e03](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F8af5e03811dfd548830df43103c81a592c8bf361))\n* 更新 requestedAuthConfigs 及其构建器，使其采用通用的 Map 类型 ([f145c74](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Ff145c744482b6b25f29a0b718bd452065e39d930))\n* 将 App.plugins() 的返回值类型由 ImmutableList 更新为 List ([8ba4bfe](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F8ba4bfed3fa7045f3344329de7a39acddc64ee30))\n* 将 toolsets() 的返回值类型由 ImmutableList 更新为 List ([cd56902](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fcd56902b803d4f7a1f3c718529842823d9e4370a))\n* 更新 Session.state() 及其构建器，使其采用通用的 Map 类型 ([4b9b99a](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4b9b99ae7149a465ba2ae9b7496e01f669786553))\n* 将 stateDelta 构建器的输入参数由 ConcurrentMap 更新为 Map ([0d1e5c7](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F0d1e5c7b0c42cea66b178cf8fedf08a8c20f7fd0))\n\n\n### 错误修复\n\n* 修复 runAsyncImpl 中的空值处理 ([567fdf0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F567fdf048fee49afc86ca5d7d35f55424a6016ba))\n* 改进 processRequest_concurrentReadAndWrite_noException 测试用例 ([4eb3613](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4eb3613b65cb1334e9432960d0f864ef09829c23))\n* 在事件链中包含 saveArtifact 调用 ([551c31f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F551c31f495aafde8568461cc0aa0973d7df7e5ac))\n* 防止在迭代过程中会话事件被其他线程修改而导致 ConcurrentModificationException 异常 ([fca43fb](https:\u002F\u002Fgithub.com","2026-03-20T13:27:36",{"id":174,"version":175,"summary_zh":176,"released_at":177},281017,"v0.9.0","## [0.9.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.8.0...v0.9.0) (2026-03-13)\n\n\n### ⚠ 重大变更\n\n* 重构 ApiClient 构造函数层次结构，移除 Optional 参数\n* 移除已弃用的 LlmAgent.canonicalTools 方法\n* 移除已弃用的 LoadArtifactsTool.loadArtifacts 方法\n* 将 LoopAgent 的 maxIteration 字段及方法改为 @Nullable 类型，而非 Optional\n* 移除 EventActions 中的 Optional 参数\n* 移除 ComputerState.Builder 中已弃用的 url 方法\n* 移除 ResponseProcessor 中已弃用的 create 方法\n* 移除 McpAsyncToolset 的构造函数\n* 在 Event 类中使用 @Nullable 字段\n* 从 VertexCredential.Builder 中移除带有 Optional 参数的方法\n\n### 功能特性\n\n* 为 RemoteA2A 代理添加格式化功能，使其能够过滤掉之前的代理响应，并更新函数调用和响应的上下文 ([0d6dd55](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F0d6dd55f4870007e79db23e21bd261879dbfba79))\n* 在 LLM 录制中添加多条 LLM 响应，用于一致性测试 ([bdfb7a7](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fbdfb7a72188ce6e72c12c16c0abedb824b846160))\n* 在 VertexAiRagRetrieval 中添加对 Gemini 模型的支持 ([924fb71](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F924fb7174855b46a58be43373c1a29284c47dfa8))\n* 修复代理调用生成的跨度，使其具有正确的父跨度 ([3c8f488](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F3c8f4886f0e4c76abdbeb64a348bfccd5c16120e))\n* 修复代理调用生成的跨度，使其具有正确的父跨度 ([973f887](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F973f88743cabebcd2e6e7a8d5f141142b596dbbb))\n* 重构 ApiClient 构造函数层次结构，移除 Optional 参数 ([910d727](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F910d727f1981498151dea4cb91b9e5836f91e3ba))\n* 移除 ResponseProcessor 中已弃用的 create 方法 ([5e1e1d4](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5e1e1d434fa1f3931af30194422800757de96cb6))\n* 移除已弃用的 LlmAgent.canonicalTools 方法 ([aabf15a](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Faabf15a526ba525cdb47c74c246c178eff1851d5))\n* 移除已弃用的 LoadArtifactsTool.loadArtifacts 方法 ([bc38558](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fbc385589057a6daf0209a335280bf19d20b2126b))\n* 移除 ComputerState.Builder 中已弃用的 url 方法 ([a86ede0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa86ede007c3442ed73ee08a5c6ad0e2efa12998a))\n* 移除 CodeExecutionUtils 中接受 Optional 参数的 executionId 方法 ([be3b3f8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fbe3b3f8360888ea1f13796969bb19893c32727e0))\n* 移除 McpAsyncToolset 的构造函数 ([82ef5ac](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F82ef5ac2689e01676aa95d2616e3b4d8463e573e))\n* 移除 VertexCredential.Builder 中带有 Optional 参数的方法 ([0b9057c](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F0b9057c9ccab98ea58597ec55b8168e32ac7c9a6))\n* 移除 EventActions 中的 Optional 参数 ([b8316b1](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fb8316b1944ce17cc9208963cc09d900c379444c6))\n* 替换 Optio","2026-03-13T14:52:00",{"id":179,"version":180,"summary_zh":181,"released_at":182},281018,"v0.8.0","## [0.8.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.7.0...v0.8.0) (2026-03-06)\n\n\n### ⚠ 重大变更\n\n* 从 LiveRequest.Builder 中移除带有 Optional 参数的方法\n* 从 InvocationContext 中移除接受 Optional 参数的已弃用方法\n* 移除已弃用的 BaseToolset.isToolSelected 方法\n* 从 LlmResponse.Builder 的方法中移除 Optional 参数\n* 移除对旧版 `transferToAgent` 的支持，由 `transfer_to_agent` 取代\n\n### 功能特性\n\n* 为代理执行器添加回调功能 ([7e8f9dc](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F7e8f9dcf82fe7e62aee625fbfaa8673d238ff184))\n* 添加通过 A2A 协议公开代理的示例 ([e3ea378](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fe3ea378051e5c4e5e5031657467145779e42db55))\n* 为 EventsCompactionConfig 添加构建器 ([05fbcfc](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F05fbcfc933923ae711cd12e7fc9e587fd8e2685c))\n* 为 typeSafety 添加 SessionKey ([d899f6f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd899f6f4ad52c84cb4ac8c90d0dc88c22487029c))\n* 在 App 和 Runner 构建器上添加 plugin(Plugin... p) 辅助方法 ([dc1a192](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fdc1a192a81a92870aa5a4af27a9dc90e81cdaf67))\n* 在 RemoteA2AAgent 中实现部分事件聚合 ([e064067](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fe0640673d212b9849d312953f192f8da51fae85b))\n* 移除已弃用的 BaseToolset.isToolSelected 方法 ([d2f1145](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd2f11456c3a99edd43b3dc0d04743ae7e9390ded))\n* 移除 InvocationContext 中接受 Optional 参数的已弃用方法 ([88153c8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F88153c833697a9b9c6ec735a69f48a92cbdfc54b))\n* 移除 LiveRequest.Builder 中带有 Optional 参数的方法 ([84c62a4](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F84c62a48ef7b62641722824fe5ba1200606b7b17))\n* 移除 LlmResponse.Builder 方法中的 Optional 参数 ([a3ac436](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa3ac436bcfa241e90c07485e5da918ec8dbc2b4a))\n\n\n### 错误修复\n\n* 允许在 FunctionTool 中注入 ObjectMapper，默认使用 ObjectMapper（参见 [#473](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fissues\u002F473)）([71b1070](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F71b10701e753bddaa96d5e6579b759d2b9bb3e92))\n* 将 otel.version 降级至 1.51.0 ([117fedf](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F117fedf672bb67c4b078ac75ee81a7710452c5b5))\n* 确保 Gemini 3.1 模型的事件被正确缓冲 ([acffdb9](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Facffdb96bcd8133af99cb0b9426665ba73a83bbc))\n* 如果事件数量少于 2，则退出 rearrangeEventsForLatestFunctionResponse 函数 ([5bc3ef8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5bc3ef89e62eb3f32ba7e45657c9e40c88c3a5e9))\n* 修复了当第一部分内容为空时事件会被标记为空的问题；现在会检查所有部分是否有有意义的内容 ([a0cba25](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa0cba25d691f4be72bea22b0649ecf2d2c110736))\n* 为 Jackson 2.20.2 和 Spring Boot 4.0.2 做好 JSON 序列化的准备","2026-03-06T12:45:17",{"id":184,"version":185,"summary_zh":186,"released_at":187},281019,"v0.7.0","## [0.7.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.6.0...v0.7.0) (2026-02-27)\n\n\n### 功能特性\n\n* 添加 ComputerUse 工具 ([d733a48](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd733a480a7a787cb7c32fd3470ab978ca3eb574c))\n* 添加 AgentExecutor 配置 ([e0f7137](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fe0f7137253c9bd929fe3ea899e32f4b61f994986))\n* 在 GoogleSearchTool 中移除对 gemini-1 的支持 ([15255b4](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F15255b48285819c7d3aedb4470e91f37d1bcfaf4))\n* 将 Java ADK 中的 url_context 支持扩展至 Gemini 3 ([2c9d4dd](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2c9d4dd5eafe8efe3a2fb099b58e2d0f1d9cad98))\n* 将 Java ADK 中的 url_context 支持扩展至 Gemini 3 ([5f5869f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5f5869f67200831dcbb7ac10ad0d7f44410bc096))\n* 处理最终和错误的 TaskStatusUpdateEvents 事件 ([746e857](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F746e857d97c6f356ffe5c20be0ccae85d5a8f989))\n* 移除 BuiltInCodeExecutionTool 中的模型限制 ([1a593a9](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F1a593a996607904eed24b64bc63eecd7708710af))\n* 更新 AgentExecutor，使其在执行时构建新的运行器，无需再传递运行器实例 ([7218295](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F72182958586e59ccb3d7490cd207ec2837c5b577))\n\n\n### 错误修复\n\n* 默认将 Session 事件列表更改为线程安全实现 ([0b5ac92](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F0b5ac9214926200c3d65d64d8c10489847c29291))\n* 合并 EventActions 时对 stateDelta 映射进行深度合并 ([ff07474](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fff07474035baec910f0c3fa83b7b1646d8409ffd))\n* 在 GoogleMapsTool 中移除显式的 gemini-1 模型版本检查 ([7953503](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F7953503e61c547e40a1e1abbece73a99910766c1))\n* 改进 LlmAgent 模型名称解析及 Gemini-3 模型检测逻辑 ([313ce85](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F313ce8590982346bb8ac631b4bf88da76fb849a4))\n* 为 beforeToolCallback 调用创建函数参数的可变副本 ([64d3a77](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F64d3a775d68610d20c084678ffdc559cd467e627))\n\n\n### 文档更新\n\n* 更新注释中的参数名称 ([5262d4a](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5262d4ae3eca533e1a695e6e2e71c5845055ed5d))\n\n\n### 已知问题\n\n* Dev UI（`AdkWebServer`）服务器启动时会抛出 `java.lang.ClassNotFoundException: io.opentelemetry.sdk.internal.ScopeConfigurator` 错误。临时解决方法是手动将 `io.opentelemetry:opentelemetry-sdk-metrics` 依赖项升级至 1.59.0 版本。","2026-02-27T13:32:13",{"id":189,"version":190,"summary_zh":191,"released_at":192},281020,"v0.6.0","## [0.6.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.5.0...v0.6.0) (2026-02-19)\n\n\n### 功能特性\n\n* 在 SingleFlow 中添加 Compact 处理器 ([ee459b3](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fee459b3198d19972744514d1e74f076ee2bd32a7))\n* 为 LLM 流程中的事件压缩添加 Compaction RequestProcessor ([af1fafe](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Faf1fafed0470c8afe81679a495ed61664a2cee1a))\n* 向 InvocationContext 添加 ContextCacheConfig ([968a9a8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F968a9a8944bd7594efc51ed0b5201804133f350e))\n* 向 InvocationContext 添加事件压缩配置 ([8f7d7ea](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F8f7d7eac95cc606b5c5716612d0b08c41f951167))\n* 在 Java ADK 中添加事件压缩框架 ([dd68c85](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fdd68c8565ae43e30c2dd02bc956173ab199ebb56))\n* 在 CallbackContext 和 ToolContext 中添加 eventId ([ac05fde](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fac05fde31ec6a67baf7cacb6144f5912eca029ac))\n* 向 ComponentRegistry 添加 ExampleTool ([2e1b09f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2e1b09fdd07fb22839ea91bd109e409b44df4f82))\n* 添加响应转换器以支持多种 A2A 客户端事件 ([4e8de90](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4e8de90f13b995c908fc4c6f742bce836e7209db))\n* 向 TailRetentionEventCompactor 添加令牌使用阈值 ([9901307](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F9901307b1cb9be75f2262f116388f93cdcf3eeb6))\n* 向 EventsCompactionConfig 添加 tokenThreshold 和 eventRetentionSize ([588b00b](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F588b00bbd327e257a78271bf2d929bc52875115f))\n* 添加用于搜索的 VertexAiSearchTool 和 AgentTools ([b48b194](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fb48b194448c6799e08e778c4efa2d9c920f0c1fb))\n* 为 Runner、Agent 和 Plugins 添加 .close() 方法 ([495bf95](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F495bf95642b9159aa6040868fcaa97fed166035b))\n* 添加新的 `ArtifactService.saveAndReloadArtifact()` 方法 ([59e87d3](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F59e87d319887c588a1ed7d4ca247cd31dffba2c6))\n* 添加用于回调的临时上下文存储 ([ed736cd](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fed736cdf84d8db92dfde947b5ee84e7430f3ae6d))\n* 在 Runner 中添加 autoCreateSession 功能 ([6dd51cc](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F6dd51cc201b15aaa2cebb5372ece647c4484da06))\n* 添加 GlobalInstructionPlugin ([72e20b6](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F72e20b652b8d697e5dc0605db284e3b637f11bac))\n* 添加 OnModelErrorCallback ([dfd2944](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fdfd294448528a9e429ddbbb8e650e432b34fafb2))\n* 添加恢复和事件管理原语 ([2de03a8](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2de03a86f97eb602dee55270b910d0d425ae75e9))\n* 添加 TODO 文件以实现符合 Java 风格的代码 ([4ac1dd2](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4ac1dd2b6e480fefd4b0a9198b2e69a9c6334c40))\n* 向 BaseAgent 添加验证功能 ([5dfc000](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5dfc000c9019b4d11a33b35c71c2a04d1f657bf2))","2026-02-19T14:00:03",{"id":194,"version":195,"summary_zh":196,"released_at":197},281021,"v0.5.0","## 变更内容\n* 修复：将 Spring AI 更新至 1.1.0，并为 CI 设置 Ollama 条件测试，由 @ddobrin 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F574 中完成。\n* 新特性：支持在 RunConfig 中配置工具执行模式，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F620 中完成。\n* 测试：添加新测试并重新启用部分被忽略的测试，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F624 中完成。\n* 测试：为 Gemini3 交错模式下的历史记录重排添加测试，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F625 中完成。\n* 杂项：更新 Google GenAI 版本，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F627 中完成。\n* 杂项：更新 Mockito 版本，并添加 Byte-Buddy 依赖，以修复在某些 JDK 版本上运行测试的问题，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F638 中完成。\n* 修复：在通过 Apigee 调用 Gemini 模型时，为内置工具（如 GoogleSearch 和 BuiltInCodeExecutor）提供 ApigeeLLM 支持，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F635 中完成。\n* 修复：不再静默忽略 runLive() 抛出的异常，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F633 中完成。\n* 修复：支持 Function Tools 返回的非 Map 类型返回值，自动将其包装为 {\"result\": \u003Cvalue>}，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F639 中完成。\n* 重构：将 ConfigAgentLoader 设为公共类，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F640 中完成。\n* 新特性：在 LLM 响应和事件中添加模型版本信息，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F641 中完成。\n* 重构：将 InvocationContext 切换为使用构建器模式，而非重载构造函数，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F594 中完成。\n* 修复：允许使用旧版 \"transferToAgent(agentName)\" 方法以保持向后兼容性，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F646 中完成。\n* 修复：更新 HITL\u002FTool 工作流，使其能够正确暂停和恢复 Runner 操作，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F600 中完成。\n* 重构：更新 BasePlugin，使其接受 LlmRequest.Builder 进行回调，而非不可变的 LlmRequest，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F650 中完成。\n* ADK 相关变更，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F659 中完成。\n* 杂项：确保 LoopAgent 使用与其他代理相同的构建器层级结构，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F661 中完成。\n* 新特性：AgentTool.fromConfig()，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F660 中完成。\n* 重构：将 Runner 重构为实现构建器模式，而非不断增加构造函数，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F634 中完成。\n* 修复：在 ComponentRegistry 中注册 url_context 工具，由 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F666 中完成。\n* 文档：更新 ComponentRegistry 的文档，由 @copybara-service[bot] 在 https:\u002F\u002Fgithu","2025-12-17T15:18:12",{"id":199,"version":200,"summary_zh":201,"released_at":202},281022,"v0.4.0","## 变更内容\n* 功能：在 McpAsyncToolset 中添加构造函数，以便通过 @copybara-service[bot] 在 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F446 中注入 McpSessionManager\n* 重构：从 LlmAgent 中提取 ToolResolver 逻辑，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F444\n* 重构：简化 ComponentRegistry，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F447\n* 重构：清理 LlmAgent，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F450\n* 杂项（主分支）：发布 0.3.1-SNAPSHOT 版本，由 @release-please[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F442\n* 修复：澄清 load_artifact 提示信息，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F451\n* 修复！：当发生内部错误时不再静默失败，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F452\n* 修复：在 FunctionTool 异常处理中使用 SLF4J 的日志记录器，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F453\n* 杂项：当 `disallowTransferToParent` 为 true 时，不添加关于父代理的提示，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F457\n* 重构：从 VertexAiSessionServiceTest 中提取 MockApiAnswer，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F459\n* 重构：从 VertexAiSessionService 中提取 HTTP 请求调用，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F460\n* 修复：将包名更新为 com.example.helloworld，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F461\n* 测试：为 Gemini 添加了一些测试用例，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F458\n* 杂项！：更新 StreamableHttpServerParameters，以避免提及 SSE，并使其与其他 MCP 构建工具的结构保持一致，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F465\n* 功能：添加 A2A HTTP 端到端演示，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F464\n* 功能：在 McpAsyncToolset 中支持 toolFilters，与 McpToolset 保持一致，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F466\n* 修复：在 MCP 工具声明中包含输出模式，并添加文件系统示例，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F467\n* 杂项：将 a2a 目录添加到 copybara 配置中，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F468\n* 修复！：更新 basellmflow 后处理逻辑，允许在生成新事件之前先发出原始响应，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F469\n* 杂项：将 settings.json 重命名为 settings.recommendation.json，并增强 .gitignore 文件内容，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F471\n* 修复：更新 ADkWebServer 的 start() 方法，覆盖 socket 属性，以支持 Gemini Live API 的消息大小，由 @copybara-service[bot] 完成，见 https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fpull\u002F472\n* 修复：在使用 run_sse 端点时，避免因慢速代理而导致超时。","2025-11-25T22:04:40",{"id":204,"version":205,"summary_zh":206,"released_at":207},281023,"v0.3.0","### ⚠ 破坏性变更\n\n* 允许 `beforeModelCallback` 修改 LLM 请求\n* 将内存服务集成到 ADK 运行时中\n* 此更改要求用户更新配置，以提供服务账号 JSON 文件。这将启用与云服务的身份验证。\n\n### 功能特性\n\n* 添加 BaseToolset，并更新 McpToolset 以使用新接口（[2aa474d](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2aa474dc7106849029ab618a3e00304c25965235)）\n* 添加 BaseToolset，并更新 McpToolset 以使用新接口（[a211ac4](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa211ac4cdf7914c86ccdd4b67f1c5d6426b22250)）\n* 添加代码执行器（[5ffa984](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F5ffa9848afda1ba383dc602ed6d0419a5a55afbc)）\n* 通过 application.yml 属性添加可配置的 CORS 支持（[4d4fe25](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4d4fe257730d4f97ef64758a7b751823aa108dbe)）\n* 添加 ContainerCodeExecutor（[a0a1616](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa0a16167162641c6d4134c14aeb8b72acb119cd9)）\n* 为本地 ADK-Web Angular 添加 CORS 配置（[4d4fe25](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F4d4fe257730d4f97ef64758a7b751823aa108dbe)）\n* 在 README 中添加 DeepWiki 徽章（[2a44d51](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2a44d51901e634bfed1935fe94d42c8583363bc0)）\n* 添加 GeminiSchemaUtil，用于将 OpenAPI\u002FMCP 的 `JsonSchema` 转换为 `com.google.genai.types.Schema`（[1945fad](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F1945fad3e18311cbfd6bf27c80b7d344829a33fc)）\n* 向 LlmAgentConfig 添加 `include_contents` 选项，以控制是否在 LLM 请求中包含先前事件的内容（[2bfbc8f](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F2bfbc8fe03f521745528b7277688e3308adbc9b0)）\n* 添加指令状态注入绕过功能（[a3746ed](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa3746ed46cf8a616c26f440678d854d0500135fb)）\n* 为代理配置添加 MCP Toolset 支持（[bdc39f7](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fbdc39f738fda8e9f07f929a6b9b4a12a576e0413)）\n* 向 ReadOnlyContext 添加 `sessionId()` 和 `events()` 方法（[a348a30](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fa348a30f0833f17a13d2eea2aa248dbbcbfbc561)）\n* 添加在 YAML 中配置代理回调的支持（[27c0172](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002F27c01724d6e96da59379e54e3a9dcc138e494b47)）\n* 添加通过 YAML 配置 ADK 代理中的子代理支持（[d827eae](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fd827eaee3bc2313fac21568acf3f81f152ac9df7)）\n* 添加使用 'code' 键进行程序化子代理解析的支持（[c498d91](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fc498d911a6227bfec6df9516c75bc07b7d34fc99)）\n* 为 MCP 工具添加对可流式 HTTP 连接的支持（[bea3244](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Fbea3244c585012194b80754d476eee1b803dbecd)）\n* 添加对流式工具的支持（[fe1df53](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Ffe1df539ca1f5d68dfed997405758b5ac5b1b388)）\n* 向 LLM 响应模型添加使用元数据（[f5b8fda](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcommit\u002Ff5b8fd","2025-09-18T04:03:54",{"id":209,"version":210,"summary_zh":211,"released_at":212},281024,"v0.2.0","## [0.2.0](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-java\u002Fcompare\u002Fv0.1.0...v0.2.0) (2025-06-30)\r\n\r\n### Features\r\n\r\n*   LangChain4j Integration: Added experimental integration with LangChain4j to support third-party and local models. (0d1bb89)\r\n*   Enabled `FunctionTools` to be created for methods that return a `Single`, improving support for asynchronous operations. (cb49092)\r\n*   `FunctionTools` can now be created for object instances in addition to static methods. (71d7325)\r\n*   Added an `endInvocation` field to Event Actions, allowing developers to interrupt or explicitly stop the agent loop after a tool call. (1909869, 07989e2)\r\n*   Implemented `VertexAiRagRetrieval` using AI Platform APIs. (b5f17f3)\r\n*   Added support for chained callbacks for `before`\u002F`after` model, agent, and tool execution events. (1cf889d, 2501dc1, b55ed61)\r\n*   Add InMemoryMemoryService (c8fed2d)\r\n*   Development UI:\r\n    *   Save and reuse evaluation thresholds across runs. (f71ee0f)\r\n    *   Display the specific metric used in evaluation history. (cec9ef3)\r\n    *   Render HTML artifacts directly in the chat window. (49e8d85)\r\n    *   Added a button to export the current session to a JSON file. (0592dc5)\r\n    *   Updated minified web files to include all the latest UI changes. (bab4bd9)\r\n\r\n ### Bug Fixes\r\n\r\n*   Fixed an OpenTelemetry version mismatch caused by a Spring Boot dependency override. (94cadce)\r\n*   Correctly track state updates within callbacks. (8665637)\r\n*   Fixed a bug in `SessionUtils` that incorrectly filtered out previous events in chats for Vertex-stored sessions. (06529d2)\r\n*   Fixed a bug where listing events would fail if the session list was empty. (d4ec143)\r\n*   Removed an incorrect `auto-value` dependency that was causing confusing annotation processing messages during builds. (d8e5629)\r\n*   Fixed a bug when using `RunConfig` to save blob inputs as artifacts. (3762368)\r\n*   Fixed artifact loading by refactoring `BaseLlmFlow`'s `preprocess` and `postprocess` methods to be non-blocking and return a `Single`. (1331879, 94b061a)\r\n*   The agent description check now correctly handles `null` or empty strings. (a62c37d)\r\n*   Development UI:\r\n    *   Fixed an OAuth issue preventing proper authentication. (4a73947)\r\n    *   Fixed an issue where the web UI could not be served under a custom route. (590065c)\r\n    *   Fixed an issue where evaluation history cases could not be toggled. (6f94b23)\r\n\r\n### Documentation\r\n\r\n*   Added JitPack to the README as an installation option. (04dd583)\r\n*   Fixed broken Javadoc comments in `InstructionUtils`. (9681380)\r\n\r\n### Chores\r\n\r\n*   Introduced a parent POM to simplify the project structure and build process. (dc02503)\r\n*   Added the Maven Wrapper (`.\u002Fmvnw`) to ensure a consistent build environment for all contributors. (4a4007a)\r\n*   Applied extensive reformatting, style fixes, and code clarity improvements across the entire codebase. (891acac, 471bddb, bc43a23, etc)\r\n*   Renamed all internal references from \"Google ADK\" to \"ADK\" for consistency. (c31b2ee)\r\n*   The library now dynamically loads the project version from a `version.properties` file. (8c98a38)\r\n*   The process for creating Gemini model instances has been simplified. (fca01e7)\r\n*   Remove blocking calls from Runner and GcsArtifactService (79fc8a6)\r\n","2025-06-30T22:37:59"]