hermes agent 是具备闭环学习、三层记忆与技能自生成能力的自进化ai智能体。其通过observe→execute→reflect→crystallize→reuse循环实现长期学习,依托短期/长期/程序化三层记忆架构支撑跨会话理解与技能沉淀,并采用kgateway统一接入多平台消息,确保安全、可扩展的自动化运行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

一、Gateway(网关守护进程)
Gateway 是 Hermes Agent 的统一接入与调度层,负责将来自 Telegram、Discord、Slack、CLI 或 API 的异构消息归一化为标准会话事件流。它不参与业务逻辑执行,而是确保所有渠道请求被正确识别会话 ID、校验权限并路由至对应 Agent 实例。
1、检查 gateway/ 目录下各平台适配器是否启用,确认 config.yaml 中 gateway.enabled 为 true。
2、验证 KGateway 是否监听预期端口,运行 netstat -tuln | grep :8000(默认 HTTP 端口)。
3、在 Telegram 平台发送 /start 指令,观察 logs/gateway.log 中是否出现 session_created 日志条目。
4、手动触发一次 CLI 入口:python run_agent.py --input "测试网关连通性",确认输出中包含 gateway_received 标识。
二、Agent 主控循环(run_agent.py 与 Session Agent Loop)
该模块是 Hermes 的执行中枢,驱动完整的 Observe→Execute→Reflect→Crystallize→Reuse 循环。它控制上下文组装、模型调用时机、工具分发决策及记忆回写节奏,而非简单转发用户输入。
1、定位 hermes-agent/run_agent.py 文件,确认 AIAgent 类的 _main_loop 方法是否被调用。
2、在 config.yaml 中设置 debug.loop_trace: true,重启后检查 logs/agent_loop.log 是否记录每轮 turn 的 action_type 和 tool_call。
3、向 Agent 发送含明确工具调用意图的指令(如“列出当前目录文件”),验证 model_tools.py 是否触发 filesystem.ls 工具注册路径。
4、观察 loop 结束后是否自动触发 background_review.py 启动反思阶段,日志中应出现 reflect_start 标记。
三、工具编排系统(model_tools.py 与 toolsets.py)
该系统实现工具的动态发现、语义匹配与安全分发。model_tools.py 负责运行时工具选择策略,toolsets.py 定义工具能力边界与元数据,二者协同完成“模型意图→工具调用→结果解析”的映射。
1、检查 tools/registry.py 中 register_tool() 调用是否覆盖全部已启用工具,确认 registry.list_all() 返回数量与 tools/ 下子模块数一致。
2、在指令中嵌入模糊工具描述(如“查一下服务器磁盘”),验证 model_tools.py 的 fuzzy_match_score 是否命中 tools/filesystem/df.py。
3、执行高危命令前,确认 approval.py 的 check_dangerous_pattern() 对 rm -rf、chmod 777 等模式返回 REJECTED_BY_POLICY。
4、修改某个工具的 description 字段(如将 httpx.get 的描述加入“支持重试”),验证下次模型调用时是否提升该工具在候选排序中的位置。
四、三层记忆架构(hermes_state.py 与 MEMORY.md / USER.md)
该架构通过 SQLite 存储 + FTS5 检索 + 冻结快照机制,实现跨会话的事实记忆(Episodic)、用户画像建模(User Profile)与程序化技能沉淀(Procedural)。MEMORY.md 与 USER.md 在每次新会话启动时作为只读快照注入,保障 prefix cache 效率。
1、检查 hermes_state.py 中 SqliteMemoryStore 初始化是否成功连接 db/hermes_memory.db。
2、执行 memory_tool(action="add", target="user", content="偏好使用 pnpm 而非 npm"),确认 db/hermes_memory.db 中 user_memory 表新增记录。
3、在新会话中提及“我的项目”,验证 context_compressor.py 是否触发 FTS5 查询,并将匹配的 MEMORY.md 片段注入 prompt_builder.py 的 system_prompt。
4、查看 skills/ 目录下是否存在以 deploy- 开头的 Markdown 文件,确认其 frontmatter 中 triggers 字段是否包含本次会话中使用的自然语言短语。
五、技能引擎(skills/ 与 skill_commands.py)
技能引擎将成功执行的多步任务自动抽象为结构化 Markdown 技能文件,并支持三级渐进式加载(摘要→步骤→注意事项)。skill_commands.py 提供 /skill list、/skill show deploy-nginx 等斜杠命令,实现人工干预与技能生命周期管理。
1、确认 skills/ 目录存在且可写,运行 ls -l skills/ | head -5 验证至少有 3 个 .md 文件。
2、执行 /skill list 命令,检查输出是否包含 name、version、triggers 三字段,且 triggers 非空。
3、调用 /skill show deploy-nextjs-app,确认返回内容严格匹配 skills/deploy-nextjs-app.md 的渲染结果。
4、手动编辑 skills/test-skill.md,修改其 version 为 2.0 并保存,随后执行 /skill reload test-skill,验证 logs/skill_loader.log 中出现 loaded_version: 2.0。
六、Honcho 用户建模模块(agent/context_compressor.py 与 agent/prompt_builder.py)
Honcho 模块执行辩证式用户建模,不仅记录显式陈述(如“我用 macOS”),还推理隐式偏好(如连续三次拒绝 Windows 专用方案 → 推断用户排斥 Windows 生态)。该建模结果直接影响上下文压缩策略与系统提示装配权重。
1、检查 agent/context_compressor.py 中 honcho_model.load() 是否成功加载 honcho_profile.db。
2、在连续三次对话中均对 Docker 方案表示否定,观察 honcho_profile.db 中 preference_scores 表内 docker_related 字段是否呈现下降趋势。
3、发起新会话并输入“帮我选个部署方式”,验证 prompt_builder.py 是否将 honcho 推理出的 cloud_provider_preference(如 aws_over_azure)注入 system_prompt 的 constraints 区域。
4、运行 python -m agent.skill_commands --list-honcho-rules,确认输出中包含 recent_rejections 和 inferred_constraints 两类规则条目。











