发现Skill异常时,系统可自动触发patch修复;若未生效,可通过启用HERMES_SKILLS_AUTO_PATCH、复现错误日志验证,或手动调用skill_manage精准修补、基于错误日志反向生成补丁、回滚至前一版本四种方式修复。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 Hermes Agent 过程中发现某个已存 Skill 出现参数缺失、步骤失效或逻辑错误,系统可能已触发自动修复流程但未完全生效。以下是针对该问题的多种修复路径:
一、触发 Skill 补丁机制并验证 Patch 动作执行
Agent 在运行时若检测到 Skill 执行失败且满足自我修复条件(如连续两次调用返回 error、参数校验失败、工具调用异常退出),将自动调用 skill_manage(action='patch') 启动补丁流程。该动作会定位技能文件、生成差异补丁、执行模糊匹配替换,并完成安全扫描后原子写入。
1、确认当前会话已启用自我进化开关:检查环境变量 HERMES_SKILLS_AUTO_PATCH=true 是否已设置。
2、复现一次失败调用,例如执行 hermes skills run my_http_fetch --url https://invalid.example 触发异常。
3、观察终端输出中是否出现形如 [PATCH] Detected failure in skill 'my_http_fetch', initiating patch... 的日志行。
4、检查 ~/.hermes/skills/my_http_fetch/SKILL.md 修改时间戳是否更新,确认 patch 已落地。
二、手动调用 skill_manage 执行精准修复
当自动触发未发生或需干预修复逻辑时,可跳过检测阶段,直接调用 skill_manage 工具进行定向修补。此方式支持指定字段级修改、步骤重写与陷阱说明补充,适用于已知明确缺陷的场景。
1、进入 Skill 根目录:cd ~/.hermes/skills/my_http_fetch。
2、执行 patch 命令并传入修正内容:skill_manage --action patch --field steps --value "1、发起 GET 请求;2、校验 HTTP 状态码;3、解析 JSON 响应体"。
3、若需替换 YAML 定义中的 required 字段,使用:skill_manage --action patch --field required --value '["url", "timeout"]'。
4、运行 hermes skills validate my_http_fetch 验证补丁后结构完整性。
三、基于失败日志反向生成补丁内容
当 Skill 报错包含具体上下文(如 KeyError: 'timeout'、ConnectionTimeout、JSONDecodeError),Agent 可解析异常堆栈并提取缺失字段、超时阈值或响应格式要求,据此构造语义对齐的补丁指令。该路径依赖日志结构化能力与错误模式库匹配。
1、启用调试日志:hermes chat -q "run my_http_fetch" --log-level DEBUG。
2、捕获完整错误输出,定位最后一行异常类型及关键参数名,例如:KeyError: 'timeout'。
3、构造补丁命令:skill_manage --action patch --auto-repair --from-log,系统将自动读取最近一条 DEBUG 级错误日志并生成对应字段补全操作。
4、确认 ~/.hermes/skills/my_http_fetch/skill.yaml 中已新增 timeout: {type: integer, default: 30} 条目。
四、回滚至前一可用版本并比对差异
若补丁引入新问题或覆盖关键逻辑,可通过版本快照机制恢复至上一个通过验证的 Skill 状态。Hermes 默认为每次成功 patch 创建 Git commit,并保留最近三次有效版本的 SHA 引用。
1、进入 Skill 目录后初始化本地 Git(如未启用):git init && git add . && git commit -m "initial"。
2、列出历史 patch 提交:git log --oneline -n 5,识别含 [PATCH] 前缀的提交。
3、检出上一版:git checkout HEAD~1 -- SKILL.md skill.yaml。
4、运行 diff -u SKILL.md.bak SKILL.md 查看补丁前后步骤变更细节,人工判断是否保留某项修改。











