尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Hermes Agent 自进化架构深度解析(四):Curator 与 Background Review——后台自治的核心
Curator 是 Hermes 自进化系统中最特殊的存在它不是用户调用的功能而是一个独立运行的后台进程。而 Background Review Fork 是它的手——一个拥有独立权限标记的 Agent 实例专门执行 curator 的决策。一、curator 不是功能是进程大多数 AI 助手的自动化意味着用户在某个菜单里点一下优化按钮。Hermes 的 curator 不需要用户点。它是一个独立进程有自己的状态文件.curator_state、调度周期、操作权限。它的存在对用户完全透明——没有 UI没有通知不打扰。用户只是某天发现Agent 自动创建的技能变少了重复的消失了过时的归档了。二、curator 做什么curator 的工作由tools/skill_usage.py中的状态转换逻辑驱动。每次运行时它执行以下步骤Step 1收集候选技能list_agent_created_skill_names()第 330 行枚举所有 curator 可以管理的技能def list_agent_created_skill_names() - List[str]: # 扫描 skills/ 下所有 SKILL.md # 排除 Hub 安装的 # 排除受保护的内置技能如 plan # 排除外部目录的 # 只返回 created_by agent 的Step 2检查使用频率对于每个候选技能读取.usage.json中的last_used_at和last_viewed_at。超过stale_after_days→ 标记STATE_STALE。超过archive_after_days→STATE_ARCHIVED→ 移到.archive/目录。这些阈值可以在config.yaml中配置curator: stale_after_days: 30 # 30 天未使用 → stale archive_after_days: 90 # 90 天未使用 → archived prune_builtins: false # 是否也管理内置技能默认 falseStep 3检测重复如果两个技能的 frontmatterdescription和内容高度相似curator 调用 LLM 做一次 consolidation pass——生成一个合并版本旧的两个归档。Step 4归档而非删除归档操作不是rm -rf。archive_skill()第 770 行将技能目录移到.archive/skill-timestamp/。用户可以通过hermes curator restore name恢复。三、is_curation_eligiblecurator 的边界检查curator 不会无差别操作。is_curation_eligible()第 447 行是每次操作前的硬检查def is_curation_eligible(skill_name: str) - bool: if is_hub_installed(skill_name): return False # 有外部上游 if is_bundled(skill_name): return _prune_builtins_enabled() if is_protected_builtin(skill_name): return False # 硬编码保护 ...特别值得注意的是PROTECTED_BUILTIN_SKILLS第 66 行PROTECTED_BUILTIN_SKILLS: Set[str] {plan,}plan是 Hermes 内置的/plan命令依赖的技能。如果 curator 不小心归档了它/plan就会变成 Unknown command。这个硬编码保护确保关键 UX 路径永远不会被 curator 破坏。_mutate()函数第 580 行在执行任何生命周期变更前都会检查这个条件。不是prompt 里提示 curator 别碰——是代码层面阻止了。四、Background Review Forkcurator 的执行器curator 决定应该做什么但实际修改技能文件需要一个 Agent。这就是 Background Review Fork。run_agent.py中的_spawn_background_review()创建一个独立的 Agent 实例——不是前台 Agent 的分身而是一个完整的、拥有自己工具调用上下文的进程。tools/skill_provenance.py定义了一个 ContextVar 来标记当前写入来源_write_origin: ContextVar[str] ContextVar(skill_write_origin, defaultforeground)Review fork 启动时这个 ContextVar 被设置为background_review。之后这个 fork 的所有工具调用都会携带这个标记。当 fork 中的 Agent 调用skill_manage(actioncreate)时# skill_manager_tool.py 第 1385-1389 行 if action create: if is_background_review(): # ← 检查 ContextVar mark_agent_created(name) # ← 标记为 agent 创建这是整个 provenance 链的关键环节。不是所有技能创建都标记——只有 Review fork 创建的才标记。此外Review fork 还有额外的安全限制只能修改它自己读过的技能——_background_review_read_before_write_guard()确保 fork 不能基于推断来修改技能外部技能目录写保护——_background_review_write_guard()检查技能是否在外部目录删除走 archive 而非硬删除——确保用户始终可以恢复五、curator_state 文件curator 的运行状态持久化在%LOCALAPPDATA%\hermes\skills\.curator_state{ last_run_at: 2026-07-05T10:34:0000:00, last_run_duration_seconds: null, last_run_summary: deferred first run, paused: false, run_count: 0 }安装后 curator 设置为deferred first run——等一个间隔周期后才首次执行。给用户时间自己创建技能curator 不会在探索阶段跳出来优化。用户可以通过 CLI 管理 curatorhermes curator status # 查看状态 hermes curator run --dry-run # 预览会做什么 hermes curator pause # 暂停 hermes curator resume # 恢复 hermes curator restore name # 恢复归档的技能六、为什么 Claude Code 做不到curator Background Review 这套机制对 Claude Code 来说在架构上就不可能。Claude Code 没有后台进程。它按需启动执行完退出。没有在用户不看的时候运行的概念。Claude Code 没有 ContextVar 权限标记。所有操作都在同一个上下文中——它无法区分用户让我做的和系统自动做的。Claude Code 没有 provenance。它不知道 CLAUDE.md 里哪些是你写的、哪些是它生成的。所以它不敢自动修改任何东西。这不是 Anthropic 做不出。这是产品定位。Claude Code 是一个按需工具。Hermes 是一个常驻系统。curator 只有在一个会持续运行的 Agent中才有意义。七、核心哲学curator 的设计回答了一个根本问题自治系统如何不越界答案不是让它更聪明——是让它在代码层面不可能越界ContextVar 在运行时标记操作来源is_curation_eligible在每次操作前做硬检查PROTECTED_BUILTIN_SKILLS硬编码保护关键功能外部目录写保护、只读技能只读归档而非删除、始终可恢复这就是 Hermes 的自治哲学在严格定义的边界内给你最大的自动化。边界之外一步都不多走。下一篇安全架构注入扫描、漂移检测与防死循环Hermes Agent 由 Nous Research 开发。本文基于 Hermes v0.18.0 源码分析。
RELATED

相关推荐

武汉潮酒派科技有限公司好不

武汉潮酒派科技有限公司好不

在当今竞争激烈的商业环境中,武汉潮酒派科技有限公司(简称:潮酒派)正凭借其独特的业务模式和强大的实力,在酒水即时零售领域崭露头角。一、深耕多行业,聚焦酒水即时零售潮酒派在无人售货领域深耕多年&#…

📅 2026/7/10 22:40:49
【网络分析仪超级神器】

【网络分析仪超级神器】

作为射频微波工程师,信号完整性工程师,或者测试工程师会经常用到矢量网络分析仪。需要获取大量网络分析仪测试结果,且对这些测试结果进行数据分析。基于这些需求,编写了一个网络分析仪使用小程序VnaTrace帮助工程师在使用网络分析…

📅 2026/7/12 19:49:57
美光财报“爆表“引爆全球:锁定A股存储业绩兑现的“先行指标“

美光财报“爆表“引爆全球:锁定A股存储业绩兑现的“先行指标“

爆点式开头:存储行情已由周期复苏转向结构性暴发!17%的盘前暴涨,这不仅是超预期,更是对存储赛道的暴力修正!全球存储巨头美光科技(Micron)最新财报正式揭晓,其实际表现彻底掀翻了市场…

📅 2026/7/30 3:11:17
MORE NEWS

更多资讯

📰

三步在本地跑通 Univer:把电子表格与文档编辑嵌入你的产品

三步在本地跑通 Univer:把电子表格与文档编辑嵌入你的产品 【免费下载链接】univer Univer is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server. 项目地址: https://gitcode.com/GitHub_T…

📰

Upscayl AI图像放大实战:批量放大一整文件夹500px图片到4倍

Upscayl AI图像放大实战:批量放大一整文件夹500px图片到4倍 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl Upsca…

📰

lm-eval自定义评估循环实操指南

lm-eval自定义评估循环实操指南 【免费下载链接】lm-evaluation-harness A framework for few-shot evaluation of language models. 项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness 给微调后的模型换一套自己的题目再测一遍,只需…

📰

Java新手实战:对象创建与异常处理避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

程序员如何高效平衡编码与会议时间

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

MATLAB三角形单元有限元求解器实现原理与工程调试

简介:本资源是一套面向工程力学、计算力学初学者及MATLAB编程实践者的三角形有限元分析完整实现代码包,聚焦二维线性三角形单元(Tri3)的刚度矩阵构建、边界条件处理与系统求解全流程。包内共13个.m文件,涵盖几何建模&a…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬