【Skills 系统从入门到精通】第 19 篇:Skill Config Settings——config.yaml 中的 Skill 配置管理
本篇你将学到
- Skill Config Settings 的定位:非密钥配置的声明式管理
- metadata.hermes.config 字段的结构和各子字段含义
- 配置存储位置和注入机制
- hermes config migrate 自动提示机制
- 实战:为技能声明自定义配置项并验证注入
读完本篇,你将掌握技能配置管理的完整方案,能够为技能声明非敏感的参数化配置。
一、为什么需要 Skill Config
1.1 场景
上一篇文章讲了 API Key 等敏感信息的声明方式。但技能还有一些非敏感配置需求:
- 一个 Git 工作流技能需要知道默认分支名(
main还是master) - 一个部署技能需要知道部署目录路径
- 一个日志分析技能需要知道日志文件的默认位置
- 一个文档生成技能需要知道输出目录
这些信息不是敏感的(不需要加密),但需要个性化配置。把它们硬编码在技能中不够灵活——不同用户的配置不同。
1.2 三种方案的对比
| 方案 | 做法 | 问题 |
|---|---|---|
| 硬编码 | 写死在 SKILL.md 中 | 不灵活,换环境就要改技能文件 |
| 环境变量 | 用 .env 存非敏感数据 | 设计不当——.env 应该只放敏感信息 |
| Skill Config | 声明在 config.yaml 中 | ✅ 声明式、自动提示、注入到上下文 |
Skill Config Settings 是正确方案——它把非敏感配置放在 config.yaml 中,与敏感信息(.env)分离。
二、config 字段结构
2.1 声明方式
在metadata.hermes.config下声明配置项:
metadata:hermes:config:-key:deploy.default_branchdescription:"Default Git branch for deployments"default:"main"prompt:"What is your default deployment branch?"-key:deploy.output_dirdescription:"Directory for deployment output files"default:"~/deployments"prompt:"Where should deployment files be saved?"2.2 子字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
key | ✅ | 配置键名,点分隔的命名空间格式 |
description | 推荐 | 配置项的用途说明 |
default | 推荐 | 默认值,用户不配置时使用 |
prompt | 推荐 | 配置向导中显示的提示文字 |
2.3 命名规范
key 使用点分隔的命名空间格式:技能名.配置项
deploy.default_branch ← deploy 技能的默认分支配置 deploy.output_dir ← deploy 技能的输出目录 log-analysis.default_path ← log-analysis 技能的默认日志路径 weather.default_city ← weather 技能的默认城市三、配置的存储与注入
3.1 存储位置
Skill Config 存储在~/.hermes/config.yaml的skills.config节中:
# ~/.hermes/config.yamlskills:config:deploy.default_branch:"develop"deploy.output_dir:"/home/user/deployments"log-analysis.default_path:"/var/log/myapp"3.2 自动注入机制
当技能加载时,它的配置值会自动注入到 Agent 上下文中。Agent 知道每个配置的当前值,可以直接使用。
Agent 上下文(技能加载后): [技能内容] SKILL.md 正文 [配置注入] deploy.default_branch = "develop" deploy.output_dir = "/home/user/deployments"在技能正文中可以直接引用这些配置值:
## Procedure ### Step 1: Switch to default branch ```bash git checkout ${deploy.default_branch}Step 2: Prepare output directory
mkdir-p${deploy.output_dir}### 3.3 hermes config migrate 当用户安装了新技能或技能更新了配置声明时,`hermes config migrate` 会检测未配置的项并提示: ```bash hermes config migrateChecking for unconfigured skill settings... New settings found: deploy.default_branch (default: "main") What is your default deployment branch? [main]: develop deploy.output_dir (default: "~/deployments") Where should deployment files be saved? [~/deployments]: /opt/deploy ✓ Settings saved to config.yaml用户可以接受默认值或输入自定义值。
四、实战:为日志分析技能添加配置
4.1 技能编写
---name:log-analysisdescription:Use when analyzing server logs. Error extraction,pattern matching,root cause identification.version:1.1.0metadata:hermes:tags:[devops,logging]category:devopsconfig:-key:log-analysis.default_pathdescription:"Default log file directory"default:"/var/log"prompt:"Where are your application logs stored?"-key:log-analysis.max_linesdescription:"Maximum lines to process in one pass"default:"10000"prompt:"How many log lines to process at once?"-key:log-analysis.timezonedescription:"Timezone for log timestamps"default:"UTC"prompt:"What timezone are your logs in?"---# Log Analysis## Procedure### Step 1: Navigate to log directory```bash cd ${log-analysis.default_path}ls-lh*.logStep 2: Sample recent logs
# Process the most recent N linestail-n${log-analysis.max_lines}app.log|grep'ERROR'Step 3: Convert timezone if needed
# If logs are not in UTC, convertTZ=${log-analysis.timezone}date### 4.2 配置流程 首次使用时: ```bash hermes config migrateNew settings: log-analysis.default_path (default: "/var/log") Where are your application logs stored? /var/log/myapp log-analysis.max_lines (default: "10000") How many log lines to process at once? 5000 log-analysis.timezone (default: "UTC") What timezone are your logs in? Asia/Shanghai ✓ Settings saved.4.3 验证注入
在会话中加载技能后,Agent 自动知道配置值:
用户:/log-analysis 分析最近的错误 Agent:(自动使用 /var/log/myapp 作为日志目录,5000 行作为上限)用户不需要每次指定路径——配置自动注入了。
第四模块总结
至此,第四模块(条件激活与安全配置)的四篇全部完成:
你现在掌握了技能的全部配置能力——从平台过滤到工具集条件、从敏感信息保护到非敏感配置管理。接下来的第五模块将进入全系列的核心实践环节——手把手教你编写自己的技能。
下篇预告
下一篇开始第五模块"编写自己的 Skills"。第 20 篇将手把手带你完成第一个实战技能——从需求分析到 SKILL.md 编写、创建、验证的完整流程。
如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。