跳转到内容

代理技能

注意:这是一个实验性功能,通过 experimental.skills 启用。你也可以在 /settings 交互式界面中搜索“Skills”来切换此功能并管理其他与技能相关的设置。

代理技能允许你使用专业知识、程序化工作流程和特定任务资源来扩展Gemini CLI。基于 Agent Skills 开放标准,一个“技能”是一个自包含的目录,它将指令和资产打包成一个可发现的的能力。

与提供持久化项目范围内背景的通用上下文文件(GEMINI.md)不同,技能代表按需专业知识。这使得Gemini可以在不杂乱模型即时上下文窗口的情况下,维护大量的专业能力,如安全审计、云部署或代码库迁移。

Gemini根据你的请求和技能描述自主决定何时使用技能。当一个相关技能被识别时,模型会使用 activate_skill 工具“拉入”完成任务所需的完整指令和资源。

  • 共享专业知识: 将复杂的工作流程(如特定团队的PR审查过程)打包成一个任何人都可以使用的文件夹。
  • 可重复的工作流程: 通过提供程序化框架,确保复杂的分步任务能够一致地执行。
  • 资源捆绑: 在指令旁边包含脚本、模板或示例数据,以便代理拥有所需的一切。
  • 逐步披露: 初始只加载技能元数据(名称和描述)。详细的指令和资源只有在模型明确激活技能时才会显示,从而节省上下文令牌。

Gemini CLI从以下三个主要位置发现技能:

【项目技能】(《代码块7》):通常提交到版本控制并与团队共享的项目特定技能。 【用户技能】(《代码块8》):在所有项目中都可用的个人技能。 【扩展技能】:已安装的扩展中捆绑的技能。

**优先级:**如果多个技能具有相同的名称,则优先级较高的位置将覆盖优先级较低的位置:项目 > 用户 > 扩展

使用《代码块9》斜杠命令查看和管理可用的专业知识:

  • 《代码块10》(默认):显示所有发现的技能及其状态。
  • 《代码块11》:阻止使用特定的技能。
  • 《代码块12》:重新启用被禁用的技能。
  • 《代码块13》:从所有层级刷新发现的技能列表。

注意:《代码块14》和《代码块15》默认为《代码块16》范围。使用《代码块17》管理项目特定设置。

《代码块18》命令提供管理工具:

《代码块0》

技能是一个包含根目录下《代码块19》文件的目录。此文件使用YAML前缀元数据和Markdown说明。

《代码块1》

  • 《代码块20》:唯一标识符(小写字母、数字和破折号)。
  • 《代码块21》:最重要的字段。Gemini使用此字段来确定技能何时相关。关于所提供的专业知识要具体明确。
  • 正文:第二个《代码块22》以下的全部内容将作为专家程序指导注入到模型中。

《代码块2》

虽然您可以根据喜好自由地构建技能目录结构,但Agent Skills标准推荐以下约定:

可执行脚本(scripts/:代理可以运行的脚本(bash、python、node)。 静态文档、架构或示例数据(references/:代理可查阅的静态文档、架构或示例数据。 代码模板、样板或二进制资源(assets/:代码模板、样板或二进制资源。

当一个技能被激活时,Gemini CLI 向模型提供了一个技能目录的树状视图,使其能够发现并利用这些资源。

  1. 发现:在会话开始时,Gemini CLI 扫描发现层,并将所有启用技能的名称和描述注入系统提示中。
  2. 激活:当 Gemini 识别到一个与技能描述相匹配的任务时,它会调用 activate_skill 工具。
  3. 同意:您将在 UI 中看到一个确认提示,详细说明技能的名称、用途以及它将获得访问权限的目录路径。
  4. 注入:在您批准后:
    • SKILL.md 的正文和文件夹结构添加到对话历史中。
    • 将技能目录添加到代理的允许文件路径中,授予它读取任何捆绑资源的权限。
  5. 执行:模型继续使用激活的专业知识。它被指示在合理范围内优先考虑技能的程序指导。