关于 adk-dev-guide
为基于 Google ADK 开发 Agent 的编码流程指南,涵盖从理解规格、实现和评估到部署的步骤,并强调代码保留及人工审批。
主要功能
- 01按 DESIGN_SPEC.md 明确需求
- 02指导实现与交互测试
- 03使用 evalsets 评估 Agent 行为
- 04部署前要求人工批准
- 05提供代码修改与故障处理规范
适用场景
- 01依照规格实现 ADK Agent
- 02用 adk eval 检查 Agent 行为
- 03在获批后为项目部署做准备
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ adk-docs --skill adk-dev-guide安装后在 Claude Code 中输入/adk-dev-guide确认已加载。
详细介绍
ADK 开发工作流与指南
会话连续性
如果这是一个较长的会话,请在每个阶段开始前重新阅读相关技能 —
编写代码前阅读 /adk-cheatsheet,运行评估前阅读 /adk-eval-guide,
部署前阅读 /adk-deploy-guide,搭建脚手架前阅读 /adk-scaffold。
上下文压缩可能会丢失之前的技能内容。
DESIGN_SPEC.md — 主要参考资料
重要提示:如果项目中存在 DESIGN_SPEC.md,它就是首要的事实来源。
请先阅读它,以了解:
- 功能需求与能力
- 成功标准与质量阈值
- Agent 行为约束
- 预期的工具与集成
规范就是你的契约。 所有实现决策都应与之保持一致。如有疑问,请查阅 DESIGN_SPEC.md。
阶段 1:理解规范
编写任何代码之前:
- 认真阅读
DESIGN_SPEC.md - 确定所需的核心能力
- 留意任何约束或 Agent 不应执行的事项
- 了解评估的成功标准
阶段 2:构建与实现
实现 Agent 逻辑:
- 在 Agent 目录中编写或修改代码(查看 Agent 指引文件,例如 GEMINI.md 或 CLAUDE.md,确定目录名称)
- 开发期间使用
make playground(或adk web .)进行交互式测试 - 根据用户反馈迭代实现
如需了解 ADK API 模式和代码示例,请使用 /adk-cheatsheet。
阶段 3:评估
这是最重要的阶段。 评估会使用评估集和评分指标端到端验证 Agent 的行为。
必须执行: 运行评估前启用 /adk-eval-guide。其中包含评估集架构、配置格式和关键注意事项。切勿跳过。
测试(pytest)不等于评估。 测试用于检查代码正确性,但无法说明 Agent 的行为是否正确。务必运行 adk eval。
- 从小规模开始:先使用 1-2 个示例评估用例,而不是完整套件
- 运行评估:
adk eval(如果项目有 Makefile,也可以使用make eval) - 与用户讨论结果
- 先修复问题,并迭代核心用例
- 只有核心用例通过后,才添加边缘用例和新场景
- 重复以上过程,直到达到质量阈值
预计需要在此阶段迭代 5-10 次以上。
阶段 4:部署
达到评估阈值后:
- 准备就绪后进行部署 — 部署选项请参阅
/adk-deploy-guide
重要提示:未经明确的人类批准,切勿部署。
编码 Agent 操作指南
原则 1:代码保留与隔离
执行代码修改时,首要目标是精准地进行手术式修改。你必须只修改用户请求直接指定的代码部分,同时严格保留所有周边及无关代码。
执行前必须核验:
完成任何代码替换前,请确认:
- 目标识别: 仅根据用户的明确指示,清楚界定要修改的具体行或表达式。
- 保留检查: 确保已识别目标之外的所有代码、配置值(例如
model、version、api_key)、注释和格式完全不变。
示例:
- 用户请求:“将 Agent 的指令改为提供食谱建议。”
- 错误(违规):
root_agent = Agent( name="recipe_suggester", model="gemini-1.5-flash", # 非预期修改 — 用户未要求更改模型 instruction="You are a recipe suggester." ) - 正确(符合要求):
root_agent = Agent( name="recipe_suggester", # 可以修改,与新用途相关 model="gemini-3-flash-preview", # 保留 instruction="You are a recipe suggester." # 可以修改,属于直接目标 )
原则 2:执行最佳实践
-
模型选择 — 严重:
- 除非得到明确要求,否则绝不要更改模型。 如果代码使用
gemini-3-flash-preview,就保持使用gemini-3-flash-preview。不要“升级”或“修正”模型名称。 - 创建新 Agent(而非修改现有 Agent)时,请使用 Gemini 3 系列:
gemini-3-flash-preview、gemini-3-pro-preview。 - 除非用户明确要求,否则不要使用较旧的模型(
gemini-2.0-flash、gemini-1.5-flash等)。
- 除非得到明确要求,否则绝不要更改模型。 如果代码使用
-
位置比模型更重要:
- 如果模型返回 404,几乎总是
GOOGLE_CLOUD_LOCATION的问题(例如,需要使用global而不是us-central1)。 - 通过更改模型名称来“修复” 404 属于违规行为——应修正位置。
- 某些模型(如
gemini-3-flash-preview)要求使用特定位置。请查看错误消息中的提示。
- 如果模型返回 404,几乎总是
-
ADK 内置工具导入(必须精准):
# 正确 - 导入工具实例 from google.adk.tools.load_web_page import load_web_page # 错误 - 导入模块,而非工具 from google.adk.tools import load_web_page将导入的工具直接传入
tools=[load_web_page],而不是tools=[load_web_page.load_web_page]。 -
运行 Python 命令:
- 始终使用
uv执行 Python 命令(例如,uv run python script.py) - 执行脚本前运行
make install(或uv sync) - 查阅
Makefile和README.md,了解可用命令(如果存在)
- 始终使用
-
打破无限循环:
- 如果连续 3 次或更多次遇到相同错误,立即停止
- 不要重试失败的操作——先修复根本原因
- 危险信号:锁定 ID 不断递增、名称不断追加 v5->v6->v7、反复说“我再试一次”
- 状态冲突(错误 409:资源已存在):使用
terraform import导入现有资源,而不是重试创建 - 工具 bug:继续操作前先修复源代码中的 bug——不要绕过它们
- 陷入困境时:直接运行底层命令(例如,
terraformCLI),而不是调用有问题的工具
-
故障排查:
- 首先查看
/adk-cheatsheet——其中涵盖了大多数常见模式 - 使用 Glob/Grep/Read 搜索已安装的 ADK 软件包(通过
python -c "import google.adk; print(google.adk.__path__[0])"查找;如果使用 uv,请运行uv run python) - 如需 ADK 文档索引,请使用
curl https://adk.dev/llms.txt - 遇到框架问题或 GCP 产品问题时,请查阅官方文档
- 遇到持续存在的错误时,针对性地使用 Google Search 往往能更快找到解决方案
- 首先查看
将脚手架用作参考
如果需要特定基础设施文件,但不想直接为当前项目创建脚手架,请使用 /adk-scaffold 技能在 /tmp/ 中创建临时参考项目,然后复制所需内容。
完整的 CLI 命令和选项请参阅 /adk-scaffold。
开发命令
通过 Agent Starter Pack CLI 创建的项目包含一个 Makefile,其中提供以下命令。
如需创建或增强项目,请参阅 /adk-scaffold 技能中的完整说明。
对于未通过脚手架创建的项目,请使用对应的 ADK CLI 命令。
| Make(通过脚手架创建) | 对应的 ADK CLI 命令 | 用途 |
|---|---|---|
make playground | adk web . | 交互式本地测试 |
make test | pytest | 运行单元测试和集成测试 |
make eval | adk eval <agent_dir> <evalset> | 对 evalset 运行评估 |
make lint | ruff check . | 检查代码质量 |
make setup-dev-env | —(仅限通过脚手架创建) | 设置开发基础设施(Terraform) |
make deploy | —(仅限通过脚手架创建) | 部署到开发环境(需要人工批准) |
技能版本
**故障排除提示:**如果你反复遇到错误、工具意外失败,或者这些技能中的说明似乎不完整,或引用了你找不到的功能,则这些技能可能已过时。运行:
npx skills check -g如果报告技能已过时,请告知用户进行更新:
npx skills update -g不要在每次会话中都运行此检查——仅在你怀疑问题是由技能过时导致时运行。