使用可复用技能构建 ADK Agent(第三部分):元技能与自扩展 Agent

2026-03-18 · 原文链接

这是关于使用可复用技能构建 ADK Agent 的三部分系列文章之第三部分

在第一和第二部分中,我们构建了现有的 ADK 技能——内联 SEO 检查清单、从目录加载的基于文件和外部技能,它们都通过 SkillToolset 连接并自动生成了三个工具。第三部分完成了闭环:Agent 编写自己的技能。

到本文结束时,你将了解如何:

克隆仓库 ↗

提示

元技能 (meta skill) 是旨在生成新 SKILL.md 文件的技能——它教 Agent 如何根据 agentskills.io 规范按需创建额外的技能。配备元技能的 Agent 变得具有自扩展性:它可以在运行时编写并加载新的技能定义,从而在无需人工干预的情况下扩展其自身能力。

前三个模式涵盖了现有的技能——由你编写(内联、基于文件)或由你寻找(外部)。模式 4 完成了闭环:Agent 自己编写新技能。

skill-creator 是一个内联技能,其指令解释了如何编写 SKILL.md 文件,其 resources 包含 agentskills.io 规范 和一个工作示例。这就是模式 1 中的 resources 字段变得至关重要的地方。

# agent.py — Pattern 4: Meta Skill
skill_creator = models.Skill(
    frontmatter=models.Frontmatter(
        name="skill-creator",
        description=(
            "Creates new ADK-compatible skill definitions from requirements."
            " Generates complete SKILL.md files following the Agent Skills"
            " specification at agentskills.io."
        ),
    ),
    instructions=(
        "When asked to create a new skill, generate a complete SKILL.md file.\n\n"
        "Read `references/skill-spec.md` for the format specification.\n"
        "Read `references/example-skill.md` for a working example.\n\n"
        "Follow these rules:\n"
        "1. Name must be kebab-case, max 64 characters\n"
        "2. Description must be under 1024 characters\n"
        "3. Instructions should be clear, step-by-step\n"
        "4. Reference files in references/ for detailed domain knowledge\n"
        "5. Keep SKILL.md under 500 lines — put details in references/\n"
        "6. Output the complete file content the user can save directly\n"
    ),
    resources=models.Resources(
        references={
            # Full content in agent.py — abbreviated here for readability
            "skill-spec.md": "# Agent Skills Specification (agentskills.io)...",
            "example-skill.md": "# Example: Code Review Skill...",
        }
    ),
)

资源将 agentskills.io 规范嵌入为 skill-spec.md,并将一个工作的代码审查技能嵌入为 example-skill.md。当被要求创建新技能时,Agent 加载 skill-creator,通过 load_skill_resource 读取两个参考资料,并生成一个符合规范的完整 SKILL.md。该模式灵感来自 obra/superpowers 的 writing-skills 技能,它教 Claude Code 如何编写新技能。

Lavi Nigam 通过提问进行了测试:“我需要一个用于审查 Python 代码安全漏洞的新技能。你能为此创建一个 SKILL.md 吗?” Agent 加载了 skill-creator,读取了规范和示例,并生成了一个完整的 python-security-review 技能——包含有效的 kebab-case 命名、涵盖输入验证、身份验证和加密的结构化指令,以及基于严重程度的报告格式。

Agent generates a python-security-review SKILL.md with frontmatter, instructions, and references

skill-creator 元技能生成了一个完整的 python-security-review SKILL.md,具有有效的 frontmatter、分步指令和基于严重程度的报告格式。

技能只是一个 SKILL.md 文件。LLM 可以生成文本。这意味着拥有编写技能之技能的 Agent 变得具有自扩展性——它可以按需创建新的领域专业知识,然后在下一个会话中通过 load_skill_from_dir 加载它。生成的技能遵循相同的 agentskills.io 规范,因此它们不仅可以在 ADK 中使用,还可以在任何兼容的 Agent 中使用。

构建 ADK 技能带给我的启示

技能改变 Agent 的决策方式,而不仅仅是它的知识。 当 Agent 加载技能时,它不仅获得了新信息,还获得了一种处理问题的新方式。技能重塑了 Agent 的推理过程,而不仅仅是参考资料。

对于简单的 SEO 审查,Agent 加载了一个技能。对于写作,并行加载了两个。对于技能创建,它链接了 load_skillload_skill_resourceload_skill_resource → 生成。L1 列表就像一个菜单——Agent 根据任务组合技能,系统提示词中无需进行编排。

质量的提升比 Token 使用量更显著。通过将博客作者的风格指南作为 L3 资源,在生成时就消除了反模式。Giorgio Crivellari 记录了类似的效果:他的 ADK 治理技能将代码正确率从 29% 提高到 99%。

元技能使其具有自扩展性——Agent 可以根据需求生成 SKILL.md 文件,遵循相同的 agentskills.io 规范,并在任何兼容的 Agent 之间通用。与其预先构建每项能力,不如构建一个元技能,让 Agent 生成其余部分。参阅 更多关于 ADK 的内容 以获取相关文章。

警告

运行 adk api_server 时,请使用 adk api_server . 而不是 adk api_server app/。ADK 会在目标目录中查找子应用——如果 app/ 包含 skills/ 子目录,它会将其发现为独立的“技能”应用,而不是将 app/ 视为你的应用。如果 Agent 没有加载,请使用 curl localhost:8000/list-apps 进行检查。

扩展 ADK 技能:脚本、多 Agent 与团队库

从这里开始有三个探索方向:

克隆 配套仓库,安装依赖项,设置 API 密钥,并在项目根目录运行 adk web . 以查看所有四种模式的运行情况。在 app/skills/ 下换入你自己的 SKILL.md 文件,或者让 skill-creator 为你的领域生成一个。

[📦

配套仓库

克隆仓库并运行所有四种技能模式

→](https://github.com/lavinigam-gcp/build-with-adk/tree/main/adk-agent-skills-tutorial) [📚

ADK 技能文档

在 ADK 中定义和使用技能的官方指南

→](https://google.github.io/adk-docs/skills/) [🌐

Agent 技能规范

被 40 多个 Agent 采用的开放标准

→](https://agentskills.io/specification)

系列总结

整个 Agent 工程系列中,我们构建了一个具有四种日益强大的技能模式的博客写作 Agent:

  1. 第一部分 — 概念:渐进式披露(L1/L2/L3)、项目设置以及在 Python 中定义的内联技能。
  2. 第二部分 — 生态系统:带有参考文档的基于文件的技能、来自社区仓库的外部技能、SkillToolset 内部原理以及多技能加载。
  3. 第三部分 — 元模式:编写新技能的技能、自扩展 Agent 以及模块化知识对质量的影响。

核心思想:技能将单体的系统提示词转变为模块化的知识层。Agent 决定加载什么、何时加载以及如何组合多个技能来完成复杂任务。这种从“所有内容始终存在”到“按需加载”的转变,改变的不只是 Token 效率,还有 Agent 自身的行为。

生态系统验证了这一点:Google 的 ADK 核心技能 使用相同的 SKILL.md 格式来教导编码 Agent 如何构建 ADK 应用——这一规范同时驱动着编写 Agent 的工具和 Agent 本身。

常见问题解答

生成的技能可以在同一个会话中加载吗? 是的。在元技能将新的 SKILL.md 文件写入磁盘后,你可以将其目录添加到 SkillToolset 中,Agent 即可立即使用。在实践中,重新加载带有新技能目录的 Agent 是最整洁的方法。

如何对生成的技能进行版本控制? 像对待任何其他代码产物一样对待生成的 SKILL.md 文件——将它们提交到 Git。元技能写入指定的输出目录,由你审查并提交生成的文件。这保留了审计追踪,并允许你随着时间的推移优化生成的技能。

如何防止 Agent 生成有害或错误的技能? 元技能的指令定义了输出格式和质量约束。你可以添加护栏(guardrails),例如要求特定章节、强制包含安全免责声明,或限制 Agent 可以生成技能的领域。生成的 SKILL.md 文件也是人类可读的,因此你可以在部署前对其进行审查。

元技能是否适用于 Gemini 以外的模型? 元技能模式与模型无关——它生成遵循 agentskills.io 规范的文本文件。任何能够遵循结构化输出指令的 LLM 都可以生成有效的 SKILL.md 文件。ADK 本身支持多种模型后端。

ADK 核心技能与元技能模式有什么关系? ADK 核心技能是涵盖 ADK 开发、评估、部署和可观测性的官方技能。本文中的元技能模式是按需生成技能。它们相辅相成:核心技能提供基础 ADK 知识,而元技能创建器则生成团队在 Google 提供的内容之外所需的特定领域技能。


参考资料

  1. Skills for ADK Agents — SkillToolset 和渐进式披露的官方 ADK 文档
  2. Agent Skills Specification — 定义 SKILL.md 格式的开放标准,已被 40 多个 Agent 采用
  3. What Are Agent Skills? — 技能作为可复用、模型无关能力的概览
  4. ADK Overview (Vertex AI) — Google Cloud 关于 Agent 开发套件的文档
  5. skills/models.pySkill, Frontmatter, Resources 类定义
  6. tools/skill_toolset.py — 带有自动生成工具的 SkillToolset 实现
  7. skills/_utils.pyload_skill_from_dir、验证、SKILL.md 解析
  8. skills_agent sample — 带有内联 + 基于文件技能的官方 ADK 示例
  9. awesome-claude-skills — 按领域组织的 100 多个生产技能
  10. content-research-writer — 本教程中使用的外部技能
  11. writing-skills (obra/superpowers) — 启发模式 4 的元技能编写模式
  12. adk-skill (Giorgio Crivellari) — 开源 ADK 治理技能
  13. Giorgio Crivellari — I Built an Agent Skill for Google’s ADK — 质量提升 245% 的案例研究
  14. Ravi Chaganti — Google ADK Agent Skills — 实践指南
  15. Sid Bharath — The Complete Guide to Google’s ADK
  16. Spring AI — Generic Agent Skills — 采用该规范的 Java 生态系统
  17. @antigravity — Intro to Agent Skills — 触发此构建的视频(8.5 万播放量)
  18. @liamottley_ — “SaaS is being replaced by SKILL.md files” — 562 个互动
  19. @Pavan_Belagatti — MCP vs Skills — 清晰的 MCP/技能区分
  20. @dAAAb — 15 Open-Source Agent Skills — 40 多个支持 agentskills.io 的 Agent
  21. @alexalbert__ — Agent Skills as open standard
  22. ADK Core Skills — 用于构建 ADK Agent 的官方技能

克隆仓库 ↗