需检查skill定义中required字段声明、验证运行时参数完整性、启用debug日志定位缺失项、为非关键参数设default值、排查多版本冲突。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在运行 Hermes Agent 时收到“技能参数缺失”提示,说明当前调用的 Skill 缺少必需的输入字段或环境变量未注入,导致执行链中断。以下是修复此问题的步骤:
一、检查 Skill 定义文件中的 required 参数声明
每个 Skill 必须在 YAML 或 JSON 格式的定义中明确列出 required 字段,否则运行时无法校验传入参数完整性。缺失该声明将导致参数校验跳过,但后续执行因无值而报错。
1、进入 Skill 所在目录,定位 skill.yaml 或 skill.json 文件。
2、确认文件根层级存在 required 字段,且其值为字符串数组,例如:required: ["query", "user_id"]。
3、若不存在 required 字段,手动添加并保存;若字段名拼写错误(如 "user_id" 写成 "userid"),需同步修正 Skill 调用逻辑中的参数键名。
二、验证运行时传入参数是否完整且命名一致
Hermes Agent 在调用 Skill 前会比对 required 列表与实际传入字典的 key 集合,任意缺失或大小写不匹配均触发该提示。
1、在调用 Skill 的上下文(如 chat 指令、gateway 消息解析层)中,检查构造参数字典的代码段。
2、确认所有 required 字段均被显式赋值,例如:{"query": "天气预报", "user_id": "usr_abc123"}。
3、若参数来自环境变量(如 ${ENV_VAR}),执行 echo $ENV_VAR 验证其非空;若为空,需在 ~/.bashrc 或启动脚本中 export 对应变量。
三、启用 Skill 参数调试日志并定位缺失项
Agent 默认不输出详细参数校验失败原因,需开启 debug 模式以获取缺失字段名称。
1、在命令行启动时添加 --log-level DEBUG 参数,例如:hermes chat -q "test" --log-level DEBUG。
2、观察日志中形如 "Missing required parameter: 'timeout'" 的提示行。
3、根据日志指出的具体字段名,回溯 Skill 定义与调用处,补全该字段的传入逻辑或默认值配置。
四、为缺失参数设置默认值避免硬性中断
对于非关键参数,可在 Skill 定义中声明 default 值,使校验通过后自动填充,而非直接报错。
1、编辑 skill.yaml,在 parameters 下对应字段添加 default 键,例如:timeout: {type: integer, default: 30}。
2、确保 default 值类型与 type 声明一致(如 string 类型不可设 default: 0)。
3、重新加载 Skill:执行 hermes skill reload
五、检查 Skill 加载路径与版本冲突
若系统中存在同名 Skill 的多个副本(如本地开发版与全局安装版),Agent 可能加载了未更新 required 声明的旧版本,导致参数校验失败。
1、运行 hermes skill list --verbose,查看各 Skill 的路径与 last_modified 时间戳。
2、确认当前生效 Skill 的路径指向最新修改的文件目录。
3、若存在冲突,删除旧版 Skill 文件,或使用 hermes skill install --force 强制覆盖安装。











