HermesAgent代码重构:遗留系统现代化改造

大墨大大_6521

大墨大大_6521

2026-04-27

1018人浏览

原创

hermes agent重构需五步:一、解耦调度与技能逻辑,新建skills包并动态加载;二、外置记忆路径配置,抽象memorybackend接口;三、提取kepa策略判定为可插拔组件;四、用mcpadapter统一模型协议适配;五、以pydantic schema中心化管理cli与gateway配置。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

hermesagent代码重构:遗留系统现代化改造

如果您正在维护基于Hermes Agent构建的遗留系统,发现其代码结构松散、模块耦合度高、技能注册逻辑分散或记忆加载路径硬编码,则可能是由于初始部署时未遵循可维护性设计原则所致。以下是针对Hermes Agent相关代码实施重构的具体步骤:

一、识别并解耦核心运行时与业务技能逻辑

原始Hermes Agent代码中,tool_dispatch.py常混杂模型路由判断、工具参数校验与具体业务执行逻辑,导致单文件职责过载、难以单元测试。重构目标是将“调度决策”与“技能实现”物理分离,为后续替换模型或扩展工具链预留接口边界。

1、在hermes/agent/目录下新建skills/子包,将原散落在model_tools.py和registry.py中的具体工具实现(如git_commit_analyze、log_search)迁移至此。

2、修改tool_dispatch.py,移除所有if tool_name == "xxx"分支,改用importlib.import_module按名称动态加载skills/下对应模块。

3、为每个技能模块定义统一入口函数execute(params: dict) -> dict,确保调用契约一致。

二、标准化记忆加载与序列化路径

当前Hermes Agent默认将MEMORY.md与USER.md硬编码于~/.hermes/memories/,导致多实例部署时记忆冲突、测试环境无法隔离。重构需将路径配置外置,并支持内存/文件/数据库三类后端抽象。

1、在hermes/config.py中新增MEMORY_BACKEND枚举项,值为"file"、"memory"或"redis"。

2、创建hermes/memory/backend.py,定义抽象基类MemoryBackend,声明load()与save()方法。

3、为每种后端实现子类:FileMemoryBackend读写本地Markdown;InMemoryBackend使用dict暂存;RedisMemoryBackend通过redis-py序列化存储。

4、修改prompt_builder.py中记忆注入逻辑,依据配置实例化对应后端并调用load()。

三、提取KEPA闭环中的策略判定层

Hermes Agent的KEPA(Knowledge, Experience, Policy, Action)自我进化能力依赖于对任务成败的实时判定与技能沉淀触发,但原始代码将判定逻辑嵌入run_agent.py主循环,造成策略与流程强绑定。重构需将其抽象为可插拔策略组件,便于灰度验证不同判定规则。

1、新建hermes/policy/包,在其中定义EvolutionPolicy抽象类,含should_evolve(task_result: dict) -> bool方法。

2、实现两个具体策略:SuccessCountPolicy(连续5次成功则触发)、ErrorRecoveryPolicy(从错误中恢复即触发)。

qwencloud-usage
qwencloud-usage

管理账户认证,查询使用量和计费。用于:登录、登出、查询使用量、查看账单、免费套餐配额、编程计划状态、按量付费

下载

3、在run_agent.py中移除内联判定代码,改为从配置读取策略类名,通过policy_factory.get_policy()获取实例并调用should_evolve()。

4、将策略选择开关暴露至config.yaml,键名为evolution_policy: success_count。

四、重构ACCP适配器以支持MCP协议热插拔

当前acp_adapter/仅适配Anthropic模型,若需接入百炼或Ollama等新模型,须修改多处硬编码字符串与参数映射。重构目标是将模型协议适配逻辑下沉为独立插件,实现MCP(Model Calling Protocol)标准兼容。

1、在hermes/runtime_provider/下创建mcp/子目录,定义MCPAdapter基类,声明to_mcp_request()与from_mcp_response()方法。

2、为Anthropic、Qwen、Llama-3分别实现子类,如AnthropicMCPAdapter,封装各自的消息格式转换逻辑。

3、修改runtime_provider.py中的get_provider()函数,依据配置中model_provider字段(如"anthropic-mcp")动态导入对应适配器。

4、删除原acp_adapter/目录,将其功能完全由mcp/子系统接管。

五、将CLI与Gateway配置统一至中心化Schema

目前cli.py与gateway/run.py各自维护一套命令行参数与环境变量解析逻辑,导致相同配置项(如API密钥路径、日志级别)需在两处同步修改,易引发不一致。重构需引入Pydantic V2 Schema统一描述配置契约,并由单一模块完成校验与加载。

1、新建hermes/config/schema.py,定义HermesConfig Pydantic模型,包含api_key_path: str、log_level: Literal["INFO", "DEBUG"]等字段及验证约束。

2、创建hermes/config/loader.py,提供load_config() -> HermesConfig函数,依次尝试从pyproject.toml、环境变量、命令行参数加载并合并。

3、修改cli.py主函数,移除argparse代码,直接调用load_config()并传入main()。

4、修改gateway/run.py,同样替换为load_config(),并将结果注入FastAPI的app.state.config。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

hermes agent hermesagent qwen

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Hermes Agent完整设置指南教程
Hermes Agent完整设置指南教程

此专题为您提供 HermesAgent最新、最全面的设置指南。内容涵盖从一键安装、模型配置(支持阿里云百炼等)到微信、钉钉等全平台接入的完整流程。无论您是新手还是进阶用户,都能在这里找到清晰的步骤说明与常见问题解答,助您快速部署并掌握这款能自我进化的AI代理,轻松开启智能化工作流。

2026.04.13

592

11

Hermes Agent完整部署教程
Hermes Agent完整部署教程

本专题聚焦开源AI智能体Hermes Agent,提供从入门到精通的完整部署教程。作为会“自我进化”的AI助手,它支持本地及云端私有化部署,具备持久记忆与技能自动沉淀能力。无论你是开发者还是效率追求者,这里都将助你快速搭建专属的“数字伙伴”,实现AI自主执行复杂任务,让工作效率倍增。

2026.04.13

454

20

HermesAgent下载安装完整教程
HermesAgent下载安装完整教程

本专区为您提供 HermesAgent最全面的安装与部署指南。作为由NousResearch推出的“可成长”AI智能体,Hermes支持Linux、macOS及WSL2环境。我们汇集了从官方推荐的一键脚本安装、手动源码部署,到Docker及云服务器(如腾讯云Lighthouse)搭建的保姆级教程。无论您是新手还是开发者,都能在此找到详细的配置步骤,助您快速拥有这位具备持久记忆与自我进化能力的AI助手。

2026.04.13

357

21

Hermes Agent使用指南汇总
Hermes Agent使用指南汇总

本专题将带你从零开始,全面掌握Hermes Agent的安装部署、核心配置、技能扩展与生态整合,无论你是想打造专属私人助手,还是探索AI自动化变现路径,这里都有最实用的实战指南。

2026.05.06

529

34

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

2026.10.21

20

15

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

2026.10.21

0

16

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

2026.10.21

0

16

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

120

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

80

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Hermes Agent中文文档
Hermes Agent中文文档

共0课时 | 0人学习