还在手写Skill?hermes-agent 让 Agent 自己进化能力

简介: Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。

为了让 Agent 拥有特定的能力,我们不得不手动编写大量 Skill 代码、维护复杂的Prompt,并在"写技能 → 发现新问题 → 修改技能"的循环中反复消耗。这种"人工编排"的模式,不仅效率低下,更让 Agent 的能力被限制在开发者手动编写的边界内。


那么,Agent 能不能像人类一样,在解决问题的过程中自己总结经验,自己生成新的技能,实现"自我进化"?GitHub上 23k+ Star的 开源项目 hermes-agent 给出了一个解法。

01

痛点:Agent 面临的问题



了解了当前 Agent 面临的其中两类痛点问题,就能理解 hermes-agent 的设计逻辑

一类是能力边界问题。 这一问题是所有依赖手动编写 Skill 的 Agent 的共同局限:Agent 只能处理开发者预见到的场景和为其预置 Skill,面对动态变化的真实任务时,技能库很快就会失效或缺位。在动态场景中,就算找到了对应技能,随着任务场景变化也可能马上失败。

还有一类是生态安全问题,即社区贡献的 Skill 的安全性问题。


727e047d5175485384941278281ce3eb.png


hermes-agent 试图解决的正是“能力边界”问题——让 Agent 自己生成和维护技能,从而突破人工编排的上限。



02

hermes-agent 的解法:技能自动生成与自我进化



hermes-agent 的设计哲学与 OpenClaw 截然不同。如果说 OpenClaw 追求的是"广度",那么 hermes-agent 追求的则是"深度"。它的核心目标是构建一个能够随着时间推移不断成长的 Agent。

核心机制

hermes-agent 让Agent自己生长能力的核心机制在于其内置 Self-Improvement Loop(自我提升闭环)。这个闭环的本质,是将"能力生产"的工作从开发者手中交给了 Agent 本身。

当 Hermes-agent 面对一个复杂任务时,它的工作流程如下:失败 → 反思 → 生成 Skill → 存储 → 再使用。


db23ae8f70cc4e608a120538ad7a92e9.png

具体来说:Agent 在尝试解决问题的过程中,会不断地调用工具、遭遇错误、分析原因、调整策略。当它最终成功解决问题后,它会自动编写一个结构化的 Skill 文档,记录下解决该问题的步骤、可能遇到的陷阱以及验证方法。

这个新生成的 Skill 会被保存下来,遵循开源的 agentskills.io 标准,使其可以跨平台移植。下次遇到类似任务时,它会直接加载这个 Skill,而不是从头开始摸索。

这不是一个简单的"记忆"功能,而是一个真正技能自动生成

技能的自动生成

在 hermes-agent 中,技能不再是预先写死的代码,而是 Agent 在实践中总结出的经验池。通过内置的 skill_manage 工具,Agent 可以自主创建、更新和管理技能。

系统 Prompt 中内置了如下指令,驱动 Agent 在特定情形下主动生成技能:

# agent/prompt_builder.py

SKILLS_GUIDANCE = (
    "After completing a complex task (5+ tool calls), fixing a tricky error, "
    "or discovering a non-trivial workflow, save the approach as a "
    "skill with skill_manage so you can reuse it next time.\n"
    "When using a skill and finding it outdated, incomplete, or wrong, "
    "patch it immediately with skill_manage(action='patch') — don't wait to be asked. "
    "Skills that aren't maintained become liabilities."
)

换句话说,Hermes 并不依赖外部触发,而是在系统层面将"经验沉淀"写进了 Agent 的行为规范。一旦满足条件,Agent 就会调用 skill_managecreate 动作,生成一份标准格式的 SKILL.md 技能文档,包含 YAML frontmatter 元数据和 Markdown 正文两部分。

每一个自动生成的技能文档,都包含了完整的操作步骤、已知的边界条件、以及验证成功的方法。以创建 deploy-k8s 技能为例:

# ~/.hermes/skills/devops/deploy-k8s/SKILL.md
---
name: deploy-k8s
description: 将应用部署到 Kubernetes 集群,包含镜像构建、推送和滚动更新
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
  hermes:
    tags: [kubernetes, devops, deployment]
    related_skills: [docker-build, github-pr-workflow]
---
# Kubernetes 部署工作流
## 触发条件
需要将容器化应用部署到 K8s 集群时使用。
## 步骤
1. 构建并推送镜像:`docker build -t registry/app:$TAG . && docker push`
2. 更新 deployment:`kubectl set image deployment/app app=registry/app:$TAG`
3. 等待滚动更新:`kubectl rollout status deployment/app`
## 已知陷阱
- ImagePullBackOff:检查 registry 凭证是否已配置为 K8s Secret
- 滚动更新卡住:检查 readinessProbe 配置是否正确
## 验证
`kubectl get pods` 所有 Pod 状态为 Running 且 READY 列为 1/1。

当 Agent 决定创建上述技能时,实际执行的是如下工具调用:

# Agent 调用 skill_manage 创建新技能
skill_manage(
    action="create",a
    name="deploy-k8s",
    category="devops",
    content="""---
name: deploy-k8s
description: 将应用部署到 Kubernetes 集群,包含镜像构建、推送和滚动更新
...
---
# Kubernetes 部署工作流
..."""
)

# 返回:{"success": true, "message": "Skill 'deploy-k8s' created.","path": "devops/deploy-k8s"}

在底层,skill_manager_tool.py 中的 _create_skill 函数会依次完成:校验 name 格式与 frontmatter 结构、检查同名技能是否已存在、创建目录、原子写入 SKILL.md(使用临时文件 + os.replace() 防止写入中断导致文件损坏),最后对新技能执行安全扫描——与社区 Hub 安装的技能享有同等的安全审查待遇。

# tools/skill_manager_tool.py(节选)

def _create_skill(name: str, content: str, category: str = None) -> Dict[str, Any]:
    # 1. 校验名称(小写字母、数字、连字符,最长 64 字符)
    err = _validate_name(name)
    # 2. 校验 frontmatter 结构(必须包含 name 和 description 字段)
    err = _validate_frontmatter(content)
    # 3. 检查同名冲突(跨本地目录和外部目录全量搜索)
    existing = _find_skill(name)
    if existing:
        return {"success": False, "error": f"Skill '{name}' already exists."}
    # 4. 创建目录并原子写入 SKILL.md
    skill_dir = _resolve_skill_dir(name, category)
    skill_dir.mkdir(parents=True, exist_ok=True)
    _atomic_write_text(skill_dir / "SKILL.md", content)
    # 5. 安全扫描(与 Hub 安装技能同等待遇)
    scan_error = _security_scan_skill(skill_dir)
    if scan_error:
        shutil.rmtree(skill_dir, ignore_errors=True)  # 扫描失败则回滚
        return {"success": False, "error": scan_error}
    # 6. 清除系统 Prompt 缓存,使新技能立即生效
    clear_skills_system_prompt_cache(clear_snapshot=True)
    return {"success": True, "message": f"Skill '{name}' created.", ...}

技能创建完成后,系统会立即清除缓存,使新技能在当前会话中即刻可用——这意味着 Agent 在同一次任务中就能复用刚刚总结的经验。

这种从无到有的自动生成能力,打破了人工编写技能的瓶颈,让 Agent 能够适应各种未知的场景。

技能的自我进化

更重要的是,这些自动生成的技能并不是一成不变的。随着 Agent 处理更多类似的任务,它会不断完善和优化现有的技能文档,添加新的边界条件处理,优化执行步骤。

技能的生命周期并不止于"创建"。Hermes-agent 同样在系统层面规定了技能的维护义务:当 Agent 在使用某个技能时发现它"过时、不完整或有错误",必须立即修复,不必等待用户提示。

技能进化的核心工具是 patch 动作。 与 edit(全量替换)不同,patch 采用精准的 find-and-replace 方式,只修改需要变更的片段,大幅降低 Token 消耗。这是 Hermes 明确推荐的首选更新方式:

# Agent 发现技能如deploy-k8s中缺少对某个错误信息如 ImagePullBackOff 的处理,立即修补
skill_manage(
    action="patch",
    name="deploy-k8s",
    old_string="## 已知陷阱\n- ImagePullBackOff:检查 registry 凭证是否已配置为 K8s Secret",
    new_string="""## 已知陷阱
- ImagePullBackOff:检查 registry 凭证是否已配置为 K8s Secret
- CrashLoopBackOff:先用 `kubectl logs <pod>` 查看启动日志,通常是配置文件路径错误
- 节点资源不足:`kubectl describe node` 检查 CPU/Memory 是否有 Pressure 状态"""
)

# 返回:{"success": true, "message": "Patched SKILL.md in skill 'deploy-k8s' (1 replacement)."}

在底层,_patch_skill 函数调用了 fuzzy_find_and_replace,这意味着即便 Agent 提供的 old_string 存在轻微的空白符差异或缩进偏差,匹配依然能够成功——这是一个专门为 LLM 生成内容的不精确性而设计的容错机制。


# tools/skill_manager_tool.py(节选)

def _patch_skill(name, old_string, new_string, file_path=None, replace_all=False):
    target = skill_dir / "SKILL.md"  # 默认修改 SKILL.md
    content = target.read_text(encoding="utf-8")
    # 使用模糊匹配引擎,容忍空白符/缩进差异
    new_content, match_count, match_error = fuzzy_find_and_replace(
        content, old_string, new_string, replace_all
    )
    if match_error:
        # 匹配失败时返回文件预览,帮助 Agent 自我纠正
        return {"success": False, "error": match_error,
                "file_preview": content[:500]}
    # 校验 patch 后 frontmatter 结构仍然完整
    _validate_frontmatter(new_content)
    # 原子写入 + 安全扫描 + 回滚机制
    _atomic_write_text(target, new_content)
    ...


值得注意的是,patch 失败时系统会返回文件的前 500 字符作为预览,这是一个专门为 Agent 自我纠错设计的反馈机制——Agent 可以根据预览重新构造正确的 old_string,完成自主修复,无需人工介入。

除了修改 SKILL.md 正文,Agent 还可以通过 write_file 动作为技能添加辅助文件,例如将复杂的 API 文档写入 references 目录,或将可复用的脚本放入 scripts 目录,形成一个完整的技能知识包。

这种从有到优的自我进化,使得 Agent 的能力随着使用时间的增长而不断增强——就像一个经验丰富的工程师,每解决一个新问题,都会让他的技能树更加完整。


2f251d89de5d46b1b3632521c6c07eb1.png



03

不只是 Agent:hermes 还在为下一代模型采集训练数据



当然 Agent 处理任务的能力单靠 skill 是还不够,无论 Agent 设计得多么精妙,它的最终表现仍然受限于底层大语言模型(LLM)的推理和规划能力。Skill 可以让 Agent 更高效地执行已知任务,但面对真正需要深度推理的新问题,模型本身的能力才是最终的瓶颈。要突破这个现实约束,就必须让模型本身变得更强。

hermes-agent 的架构中隐藏着一个"大招":它与的强化学习(RL)框架 Atropos 进行了深度集成。在 hermes-agent 执行任务的过程中,它不仅会生成 Skill,还会完整记录下整个执行轨迹(Trajectory),包括所有的工具调用、环境反馈、推理过程以及最终的奖励评分(Reward)。

这些包含了丰富上下文和交互细节的 Trajectory 数据,是微调和训练下一代模型的高质量数据。

8ed7ad4dd0d54917a48abdcd41895f1c.png

hermes-agent 不仅仅是在让当前的 Agent 变强,它更像是一个不知疲倦的数据源,在真实世界的交互中不断积累高质量的训练数据资产。开发者可以并行生成数以千计的工具调用轨迹,导出这些数据,并用它们来微调模型。

这是一种从 Agent 到 Model 的能力迁今天 Agent 踩过的坑、总结的经验,明天就会成为新模型出厂自带的"本能"。hermes 不只是让 Agent 变强,而是在为更强的模型积累数据资产。


aca1058d7d704abdb8bfeb52096080f2.png



04

结语



从手动编写 Skill 到 Agent 自主生成、改进优化,hermes-agent 向我们展示了 Agent 发展的下一个重要阶段:自我进化。

当 Agent 成为一个长期运行的进程,能够不断积累关于你的代码库、工作流和决策模式的知识时,它就不再只是一个工具,而是真正意义上会成长的智能体。


4165c9d22c37478d92d3385c014b2f18.png


更深远的意义在于它展示了:Agent 在真实世界中的每一次交互,都在为下一代更强大的模型积累数据预料。这个从Agent 使用到模型进化的数据飞轮,才是 hermes-agent 最令人兴奋的地方。

(如果这篇文章对您有所帮助,请帮忙 关注 并 转发,谢谢!)


参考资料

[1] NousResearch. (2026 ). hermes-agent: The agent that grows with you. GitHub.

https://github.com/NousResearch/hermes-agent 

[2] Janakiram MSV. (2026 ). OpenClaw vs. Hermes Agent: The race to build AI assistants that never forget. The New Stack.

https://thenewstack.io/persistent-ai-agents-compared

[3] NousResearch. (2026 ). Hermes Agent v0.6.0 Release Notes. GitHub.

https://github.com/NousResearch/hermes-agent/blob/main/RELEASE_v0.6.0.md 


目录
相关文章
|
6天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
16696 10
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
17天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
28254 140
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
7天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4574 20
|
5天前
|
人工智能 API 开发者
阿里云百炼 Coding Plan 售罄、Lite 停售、Pro 抢不到?最新解决方案
阿里云百炼Coding Plan Lite已停售,Pro版每日9:30限量抢购难度大。本文解析原因,并提供两大方案:①掌握技巧抢购Pro版;②直接使用百炼平台按量付费——新用户赠100万Tokens,支持Qwen3.5-Max等满血模型,灵活低成本。
1419 3
阿里云百炼 Coding Plan 售罄、Lite 停售、Pro 抢不到?最新解决方案