代理技能
注意:这是一个实验性功能,通过 experimental.skills 启用。你也可以在 /settings 交互式界面中搜索“Skills”来切换此功能并管理其他与技能相关的设置。
代理技能允许你使用专业知识、程序化工作流程和特定任务资源来扩展Gemini CLI。基于 Agent Skills 开放标准,一个“技能”是一个自包含的目录,它将指令和资产打包成一个可发现的的能力。
与提供持久化项目范围内背景的通用上下文文件(GEMINI.md)不同,技能代表按需专业知识。这使得Gemini可以在不杂乱模型即时上下文窗口的情况下,维护大量的专业能力,如安全审计、云部署或代码库迁移。
Gemini根据你的请求和技能描述自主决定何时使用技能。当一个相关技能被识别时,模型会使用 activate_skill 工具“拉入”完成任务所需的完整指令和资源。
- 共享专业知识: 将复杂的工作流程(如特定团队的PR审查过程)打包成一个任何人都可以使用的文件夹。
- 可重复的工作流程: 通过提供程序化框架,确保复杂的分步任务能够一致地执行。
- 资源捆绑: 在指令旁边包含脚本、模板或示例数据,以便代理拥有所需的一切。
- 逐步披露: 初始只加载技能元数据(名称和描述)。详细的指令和资源只有在模型明确激活技能时才会显示,从而节省上下文令牌。
技能发现层次
Section titled “技能发现层次”Gemini CLI从以下三个主要位置发现技能:
【项目技能】(《代码块7》):通常提交到版本控制并与团队共享的项目特定技能。 【用户技能】(《代码块8》):在所有项目中都可用的个人技能。 【扩展技能】:已安装的扩展中捆绑的技能。
**优先级:**如果多个技能具有相同的名称,则优先级较高的位置将覆盖优先级较低的位置:项目 > 用户 > 扩展。
在交互式会话中
Section titled “在交互式会话中”使用《代码块9》斜杠命令查看和管理可用的专业知识:
- 《代码块10》(默认):显示所有发现的技能及其状态。
- 《代码块11》:阻止使用特定的技能。
- 《代码块12》:重新启用被禁用的技能。
- 《代码块13》:从所有层级刷新发现的技能列表。
注意:《代码块14》和《代码块15》默认为《代码块16》范围。使用《代码块17》管理项目特定设置。
《代码块18》命令提供管理工具:
《代码块0》
技能是一个包含根目录下《代码块19》文件的目录。此文件使用YAML前缀元数据和Markdown说明。
《代码块1》
- 《代码块20》:唯一标识符(小写字母、数字和破折号)。
- 《代码块21》:最重要的字段。Gemini使用此字段来确定技能何时相关。关于所提供的专业知识要具体明确。
- 正文:第二个《代码块22》以下的全部内容将作为专家程序指导注入到模型中。
示例:团队代码审查员
Section titled “示例:团队代码审查员”《代码块2》
虽然您可以根据喜好自由地构建技能目录结构,但Agent Skills标准推荐以下约定:
可执行脚本(scripts/):代理可以运行的脚本(bash、python、node)。
静态文档、架构或示例数据(references/):代理可查阅的静态文档、架构或示例数据。
代码模板、样板或二进制资源(assets/):代码模板、样板或二进制资源。
当一个技能被激活时,Gemini CLI 向模型提供了一个技能目录的树状视图,使其能够发现并利用这些资源。
工作原理(安全性与隐私)
Section titled “工作原理(安全性与隐私)”- 发现:在会话开始时,Gemini CLI 扫描发现层,并将所有启用技能的名称和描述注入系统提示中。
- 激活:当 Gemini 识别到一个与技能描述相匹配的任务时,它会调用
activate_skill工具。 - 同意:您将在 UI 中看到一个确认提示,详细说明技能的名称、用途以及它将获得访问权限的目录路径。
- 注入:在您批准后:
- 将
SKILL.md的正文和文件夹结构添加到对话历史中。 - 将技能目录添加到代理的允许文件路径中,授予它读取任何捆绑资源的权限。
- 将
- 执行:模型继续使用激活的专业知识。它被指示在合理范围内优先考虑技能的程序指导。