Hermes Agent执行任务共分五步:一、初始化代理循环并配置LLM、工具等;二、构建结构化API请求,注入记忆与匹配工具;三、解析并串行/并行执行tool_calls;四、满足条件时自动生成标准化Skill文件;五、按平台特性封装并推送响应,同步会话ID至数据库。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您尝试理解Hermes Agent如何完成一项用户指令,但对其内部执行链条不清晰,则可能是由于其多层抽象掩盖了实际运行时序。以下是Hermes Agent执行任务的完整步骤:
一、初始化代理循环
HermesAgentLoop类被实例化,加载服务器连接配置、工具启用状态、最大轮次限制与温度参数等基础设定,为后续任务处理建立稳定运行上下文。
1、调用hermes setup启动配置向导,完成LLM提供商选择与网关初始化。
2、执行hermes model命令显式指定模型,确保~/.hermes/config.yaml中model字段已正确写入可用模型标识符。
3、检查~/.hermes/tools/目录是否存在启用工具的符号链接,缺失时需手动运行hermes tool enable [tool_name]激活。
二、构建结构化API请求
系统依据当前会话历史、用户原始输入及已加载工具定义,组装符合OpenAI函数调用规范的JSON格式请求体,包含system prompt、messages数组与tools列表。
1、从~/.hermes/memories/MEMORY.md提取最近三次相关会话摘要,注入system message以维持上下文连贯性。
2、将用户输入解析为结构化意图,若含时间表达(如“每天早上8点”),自动触发cron scheduling工具预注册。
3、扫描工具集匹配关键词:检测到“arxiv”或“Hugging Face”时,强制包含web_extract工具;检测到“git”或“代码”时,注入git diff与pytest工具定义。
三、执行工具调用与响应处理
请求发送至配置的LLM服务端后,代理实时解析返回的tool_calls字段,按顺序调用对应本地工具,并将执行结果以message形式追加至对话历史,形成可回溯的执行轨迹。
1、对每个tool_call,通过tools/[tool_name].py加载执行模块,传入arguments字典作为参数。
2、若工具调用失败(如web_search返回HTTP 429),捕获异常并记录错误日志至~/.hermes/logs/,不中断主循环。
3、当单次响应含多个tool_calls时,按索引顺序串行执行;若启用tools/delegate_tool.py,则将子任务分发至独立子智能体并行处理。
四、技能提炼与持久化
任务完成后,系统自动判断是否满足Skill生成条件——工具调用≥5次、发生中途修复、或存在用户显式纠正行为,满足任一即触发技能文档自动生成流程。
1、在~/.hermes/skills/下创建以SHA-256哈希命名的YAML文件,内容包含name、description、steps与tool_calls序列。
2、该文件严格遵循agentskills.io开放标准,仅记录差异部分:若同一技能已有旧版本,新版本仅patch更新优化路径,不覆盖全量内容。
3、技能文件生成后立即加入本地全文检索索引,后续相同意图输入将优先检索并复用该Skill,跳过重新规划阶段。
五、会话状态同步与跨平台投递
执行结果经格式标准化后,由Gateway统一调度,根据消息来源平台特性(如飞书需卡片消息、Telegram支持Markdown)封装响应,并推送至原始发起渠道。
1、检查~/.hermes/gateway/config.yaml中对应渠道的enabled字段是否为true。
2、若原始请求来自飞书群聊,调用feishu_card_builder将文本结果转换为交互式卡片,嵌入“重试”与“查看技能”快捷按钮。
3、所有响应均附带唯一session_id,该ID同步写入SQLite数据库~/.hermes/sessions.db,支持后续session_search语义检索。


















