最近在尝试将AI助手从简单的聊天机器人升级为能真正理解上下文、主动学习并执行复杂任务的智能体时我遇到了一个核心难题如何让AI不仅“听懂”指令还能“记住”我们的对话历史并基于经验自我进化市面上的许多AI Agent要么功能单一要么配置复杂要么学习成本极高。直到我深入研究了Hermes Agent才发现它几乎完美地解决了这些问题——它内置了闭环学习循环能从经验中创建技能并在使用中不断优化还能跨会话建立用户模型。更重要的是它部署极其灵活从5美元的VPS到GPU集群甚至无服务器架构都能运行成本近乎为零。本文将为你带来一份2026年最新、最全的Hermes Agent实战指南从零开始手把手带你完成环境部署、核心功能配置、代码实战开发并深入剖析其架构与最佳实践帮你彻底掌握这个“会成长的智能体”。1. Hermes Agent 核心概念与架构解析在开始动手之前我们必须先理解Hermes Agent究竟是什么以及它为何在众多AI Agent中脱颖而出。1.1 什么是 Hermes AgentHermes Agent是由Nous Research开发的一款自进化AI智能体。它的核心卖点不是简单的工具调用而是一个内置的学习循环Built-in Learning Loop。这意味着它能够从经验中创建技能完成复杂任务后Hermes会分析过程自动生成可复用的“技能”。在使用中改进技能每次使用技能时它都会根据反馈进行微调和优化。主动记忆与知识持久化它会定期“提醒”自己保存重要信息并构建跨会话的用户模型。搜索过往会话内置全文搜索FTS5和LLM摘要让你能快速找回过去的对话和决策。你可以把它想象成一个不仅会执行命令还会记笔记、总结经验、并越用越聪明的AI助手。1.2 核心架构与组件理解Hermes的架构有助于我们后续的配置和开发。其核心围绕以下几个部分构建智能体核心Agent Core处理与LLM的交互、工具调用决策和学习循环的逻辑中枢。工具系统Tools Toolsets提供了40开箱即用的工具如文件操作、网络搜索、代码执行等并支持通过工具集Toolset按需加载。技能系统Skills System这是Hermes的“大脑皮层”。技能是封装了特定任务逻辑通常是一系列工具调用和决策步骤的可执行单元。用户技能和系统技能都存放在~/.hermes/skills/目录下。记忆系统Memory包含会话记忆、长期记忆和用户画像Honcho dialectic user modeling确保智能体拥有上下文连续性。消息网关Messaging Gateway一个统一的接入层让你可以通过CLI、Telegram、Discord、Slack、WhatsApp、Signal等多种方式与同一个Hermes实例交互。调度器Cron Scheduler内置的定时任务系统可以用自然语言描述任务并指定在任何支持的平台上交付结果。模型提供者Providers支持高度灵活的模型后端。你可以使用Nous Portal、OpenRouter、OpenAI、Anthropic或自己的本地端点通过一条命令即可切换无代码绑定。1.3 Hermes Agent 的核心优势与同类项目相比Hermes的独特之处在于真正的闭环学习不仅是记录而是能生成和改进可执行的技能代码。部署灵活性支持六种终端后端——本地、Docker、SSH、Singularity、Modal和Daytona。后两者提供无服务器持久化闲置时几乎不产生费用。统一的多平台入口一套核心处处对话。你可以在电脑CLI上开始一个任务然后在上班路上用Telegram继续跟进。开源与开放标准采用MIT协议并兼容agentskills.io开放标准社区生态活跃。2. 环境准备与全平台安装指南Hermes Agent支持主流的操作系统。为了获得最佳体验建议系统已安装Python 3.11或更高版本。不过其安装脚本非常强大会自动处理大部分依赖。2.1 Linux / macOS / WSL2 安装对于大多数开发者而言Linux、macOS或Windows下的WSL2是最佳选择。安装只需一行命令curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash这个脚本会自动完成以下工作安装uv一个高性能的Rust Python包管理器。确保Python 3.11可用。安装Node.js、ripgrep、ffmpeg等必要工具。将Hermes及其依赖安装到~/.hermes目录下。将hermes命令添加到你的shell环境变量中。安装完成后需要重新加载shell配置然后即可启动source ~/.bashrc # 如果你使用bash对于zsh用户则是 source ~/.zshrc hermes # 启动交互式CLI开始聊天2.2 Windows 原生安装Hermes已完全支持原生Windows无需依赖WSL2。在PowerShell管理员身份运行中执行iex (irm https://hermes-agent.nousresearch.com/install.ps1)这个PowerShell脚本会在%LOCALAPPDATA%\hermes目录下创建独立环境。安装便携版Git BashMinGit约45MB与系统Git完全隔离。同样安装uv、Python等所有依赖。重要提示安装过程中Windows Defender或其他杀毒软件可能会将uv.exe误报为病毒。这是一个误报。uv是Astral公司官方开发的Python包管理工具。如果你遇到此问题可以将Hermes的bin目录添加到杀毒软件白名单中。2.3 安装后验证与初始化无论哪种方式安装首次运行前强烈建议运行设置向导它会引导你完成API密钥配置、模型选择等关键步骤hermes setup如果你想快速体验避免逐个收集OpenAI、搜索、TTS等不同服务的API密钥可以使用Nous Portal一站式服务。只需在安装后运行hermes setup --portal这个命令会通过OAuth登录Nous Portal自动设置模型提供商并启用工具网关Tool Gateway涵盖300模型、网页搜索、图像生成、语音合成和云端浏览器功能。3. 基础配置与核心功能上手安装完成后让我们通过几个核心命令快速上手Hermes的基本操作。3.1 启动与交互模式Hermes主要有两种交互入口CLI / TUI终端用户界面直接在终端中运行hermes命令会进入一个功能丰富的全屏文本界面支持多行编辑、命令补全、历史记录和流式工具输出。消息网关Messaging Gateway运行hermes gateway来启动网关服务然后可以在Telegram、Discord等平台上与你的Hermes机器人对话。我们先从CLI开始。在终端输入hermes你会看到一个提示符。直接输入你的问题例如“帮我列出当前目录下的文件。” Hermes会调用相应的工具来执行。3.2 核心管理命令在CLI中或者在任何聊天界面中都可以使用斜杠/命令来管理智能体。操作命令说明开始新会话/new或/reset清除当前对话上下文开始全新的对话。切换AI模型/model [provider:model]切换使用的LLM。例如/model openai:gpt-4o或/model nous:hermes-3。设置智能体人格/personality [name]加载预设的人格文件改变AI的回复风格和角色。重试/撤销/retry,/undo让AI重新生成上一个回复或撤销上一个工具调用步骤。管理技能/skills列出所有可用技能。使用/skill-name可以直接调用特定技能。查看使用情况/usage查看当前会话的Token使用情况。压缩上下文/compress当对话历史过长时让AI自动总结并压缩历史节省Token。中断当前任务CtrlC(CLI) 或/stop(消息平台)强制停止智能体正在执行的长耗时任务。3.3 配置文件与模型设置Hermes的配置文件位于~/.hermes/config.yamlLinux/macOS或%LOCALAPPDATA%\hermes\config.yamlWindows。你可以直接编辑它但更推荐使用命令进行管理。查看和设置配置# 查看当前所有配置 hermes config list # 设置特定的配置项例如默认模型 hermes config set provider defaultnous hermes config set model defaultnous:hermes-3 # 设置OpenAI API密钥如果你使用OpenAI hermes config set secrets.openai_api_keysk-your-api-key-here管理工具集工具集Toolset决定了智能体可以访问哪些能力。默认可能只启用基础工具。# 查看所有可用工具集 hermes tools list # 启用或禁用某个工具集例如启用“web”工具集以进行网络搜索 hermes tools enable web hermes tools disable code_interpreter # 禁用代码解释器如果需要4. 技能Skills系统深度实战技能系统是Hermes的灵魂它使得智能体能够学习和复用复杂操作。技能本质上是一段用自然语言描述、可由LLM解析和执行的“程序”或“工作流”。4.1 内置技能与社区技能运行/skills命令你会看到一系列内置技能例如create_skill: 根据对话历史创建一个新的技能。edit_file: 编辑文件。web_search: 进行网络搜索。run_shell: 运行shell命令。此外你还可以从社区技能中心Skills Hub添加更多技能。这些技能由社区贡献涵盖了从数据分析到自动化部署的各种场景。4.2 创建你的第一个自定义技能假设我们经常需要让Hermes检查一个网站的标题和状态码我们可以将这个流程固化为一个技能。在对话中创建技能 首先在CLI中让Hermes完成一次这个任务。你 请帮我检查 https://www.example.com 的HTTP状态码和网页标题。 Hermes: 它会调用相关工具执行并返回结果任务成功后输入命令/create_skill check_websiteHermes会分析刚才的对话历史自动生成一个名为check_website的技能描述并询问你是否确认创建。技能文件剖析 技能文件保存在~/.hermes/skills/user/目录下以.md格式存储。我们打开刚创建的check_website.md会看到类似以下内容# check_website ## Description Checks the HTTP status code and retrieves the title of a given website URL. ## Steps 1. Use the http_request tool to make a GET request to the provided URL. 2. Extract the status code from the response. 3. Parse the HTML response to find the title tag content. 4. Return a formatted message with the URL, status code, and title. ## Example Invocation User: “check_website https://www.example.com”这个文件用自然语言定义了技能的意图、步骤和调用示例。下次你只需要说“check_website https://csdn.net”Hermes就会自动执行这一系列步骤。4.3 高级技能开发编写技能函数对于更复杂、需要精确逻辑控制的技能你可以编写Python函数形式的技能。这提供了更强的灵活性和可编程性。创建技能文件 在~/.hermes/skills/user/目录下创建一个Python文件例如my_advanced_skill.py。编写技能代码# 文件路径~/.hermes/skills/user/my_advanced_skill.py from typing import Dict, Any from hermes.agent.skill import skill skill( nameanalyze_github_repo, descriptionFetches basic info and recent activity of a GitHub repository., examples[analyze_github_repo nousresearch/hermes-agent], ) async def analyze_github_repo(agent, repo: str) - Dict[str, Any]: 分析GitHub仓库信息。 Args: repo: 仓库名称格式为 owner/repo。 Returns: 包含仓库信息的字典。 # 1. 使用工具获取仓库信息这里假设有一个github_api工具 # 注意Hermes默认可能不包含此工具此处为示例逻辑。 import requests api_url fhttps://api.github.com/repos/{repo} # 在实际技能中应使用 agent.tools.call() 来调用已配置的工具 # 例如response await agent.tools.call(http_request, {url: api_url, method: GET}) # 这里为演示直接使用requests response requests.get(api_url) if response.status_code ! 200: return {error: fFailed to fetch repo: {response.status_code}} repo_data response.json() # 2. 获取最近提交示例 commits_url f{api_url}/commits commits_resp requests.get(commits_url, params{per_page: 5}) recent_commits commits_resp.json() if commits_resp.status_code 200 else [] # 3. 构建返回结果 result { repository: repo_data.get(full_name), description: repo_data.get(description), stars: repo_data.get(stargazers_count), forks: repo_data.get(forks_count), language: repo_data.get(language), recent_activity: [commit.get(commit, {}).get(message, )[:50] for commit in recent_commits[:3]], } # 4. 让Agent以友好格式输出结果 # 在技能中你可以直接返回数据Agent会处理展示。 # 也可以使用 agent.send_message() 直接发送消息。 output_message ( f仓库 **{result[repository]}** 分析结果\n f- 描述{result[description]}\n f- ⭐ Stars: {result[stars]}\n f- Forks: {result[forks]}\n f- 主要语言{result[language]}\n f- 最近提交{, .join(result[recent_activity])} ) await agent.send_message(output_message) return result注册与使用技能 保存文件后你需要重启Hermes的网关服务或者在CLI中使用/reload命令如果支持来加载新技能。之后你就可以直接使用了你 analyze_github_repo nousresearch/hermes-agent Hermes: 执行技能输出分析结果技能开发的核心要点装饰器skill用于声明技能元数据名称、描述、示例。函数参数第一个参数总是agent当前智能体实例后续参数是用户调用时传入的。工具调用在技能内部应使用await agent.tools.call(tool_name, arguments)来调用其他工具这是与Hermes工具系统交互的标准方式。异步支持技能函数必须是async的以支持非阻塞操作。5. 消息网关配置与多平台集成让Hermes脱离终端在你的日常通讯工具中运行能极大提升实用性。5.1 配置 Telegram 机器人以Telegram为例配置过程如下创建Bot在Telegram中搜索BotFather发送/newbot并按提示操作最终获得一个HTTP API Token。配置Hermeshermes gateway setup telegram按照交互式提示输入你从BotFather获得的Token。启动网关hermes gateway start与机器人对话在Telegram中找到你的机器人发送/start或任何消息Hermes就会在网关后端响应你。5.2 网关高级配置网关的配置文件通常位于~/.hermes/gateway_config.yaml。你可以在这里进行更精细的控制例如设置允许的用户ID限制哪些Telegram用户可以与你的机器人对话。配置工作目录为不同平台设置不同的文件系统访问根目录。启用/禁用特定平台。一个简化的配置示例如下# ~/.hermes/gateway_config.yaml telegram: enabled: true token: YOUR_BOT_TOKEN allowed_user_ids: - 123456789 # 你的Telegram用户ID workdir: /home/user/projects # 此平台下机器人的工作目录 discord: enabled: false # 暂时禁用Discord # token: ...启动网关后你就可以在任何地方通过手机给机器人发消息让它执行之前在CLI中能做的所有事情比如运行脚本、查询信息、甚至基于你之前的对话历史进行创作。6. 生产环境部署与最佳实践将Hermes用于个人助理和投入生产环境需要考虑的方面完全不同。6.1 部署模式选择本地开发机适合学习和轻度使用。注意长时间运行CLI会话可能占用资源。云服务器VPS推荐的方式。购买一个最低配的VPS如5美元/月通过SSH安装。然后使用tmux或systemd服务让hermes gateway在后台常驻。# 使用systemd创建后台服务 sudo nano /etc/systemd/system/hermes-gateway.service服务文件内容示例[Unit] DescriptionHermes Agent Gateway Afternetwork.target [Service] Typesimple Userubuntu WorkingDirectory/home/ubuntu EnvironmentPATH/home/ubuntu/.hermes/bin:/usr/local/bin:/usr/bin:/bin ExecStart/home/ubuntu/.hermes/bin/hermes gateway start Restartalways RestartSec10 [Install] WantedBymulti-user.target然后启用并启动服务sudo systemctl enable hermes-gateway sudo systemctl start hermes-gateway sudo systemctl status hermes-gateway # 查看状态无服务器模式Modal/Daytona这是Hermes最强大的特性之一。在这种模式下你的智能体环境在不活动时会“休眠”成本极低当有消息触发时环境会瞬间唤醒。具体配置需参考官方文档关于Modal和Daytona后端的部分。6.2 安全最佳实践最小权限原则在config.yaml中严格限制allowed_shell_commands只允许必要的命令。为Hermes进程创建一个专用的、权限受限的系统用户。在Docker容器中运行限制其网络和文件系统访问。敏感信息管理永远不要将API密钥、密码等硬编码在技能文件或配置文件中。使用hermes config set secrets.xxxvalue命令设置密钥它们会被加密存储。或者使用环境变量并在服务文件或Docker配置中注入。会话与记忆隔离如果多人使用同一个网关实例确保在配置中启用了conversation_isolation防止信息交叉。定期审查~/.hermes/memory/下的记忆文件必要时进行清理。6.3 性能监控与优化日志管理Hermes的日志默认输出到控制台。对于生产环境配置日志轮转和集中收集如使用journald或转发到ELK栈。hermes --log-file /var/log/hermes/agent.log --log-level INFO模型成本控制使用/usage命令监控Token消耗。对于非关键任务考虑切换到更经济的模型如claude-haiku。上下文管理长时间对话会导致上下文窗口膨胀增加成本和延迟。养成使用/compress命令的习惯或设置自动压缩策略。7. 常见问题排查与解决方案在实际使用中你可能会遇到一些典型问题。这里提供一个快速排查指南。问题现象可能原因解决方案安装脚本执行失败网络问题或系统缺少基础依赖如curl。1. 检查网络连接。2. 手动安装前置依赖sudo apt-get install -y curl git python3.11(Ubuntu)。3. 尝试分步安装先手动安装uv再克隆仓库安装。hermes命令未找到Shell环境变量未更新或安装路径不在PATH中。1. 执行source ~/.bashrc或重新打开终端。2. 手动添加PATHecho export PATH$HOME/.hermes/bin:$PATH ~/.bashrc。3. Windows下检查%LOCALAPPDATA%\hermes\bin是否在系统PATH中。模型调用失败提示API错误API密钥未设置、不正确或模型提供商服务异常。1. 运行hermes config list检查secrets配置。2. 使用hermes config set secrets.openai_api_keysk-...重新设置密钥。3. 运行hermes doctor进行诊断。4. 尝试切换模型提供商/model openrouter:claude-3.5-sonnet。工具调用失败如web_search对应工具集的API未配置或工具本身需要额外依赖。1. 运行hermes tools list确认工具是否已启用。2. 运行hermes tools enable web启用工具集。3. 检查该工具是否需要单独的API密钥如Serper API并在配置中设置。技能创建失败或无法调用技能描述不清晰或技能文件存在语法错误。1. 检查~/.hermes/skills/user/下对应的.md或.py文件。2. 对于Python技能查看Hermes日志是否有导入错误。3. 尝试用更简单、明确的步骤重新创建技能。Telegram机器人无响应网关未运行Token错误或网络问题。1. 运行hermes gateway status检查网关进程。2. 运行hermes gateway setup telegram重新配置Token。3. 确认服务器网络可以访问Telegram API。内存占用过高长时间运行积累了大量的对话历史和记忆。1. 定期使用/compress压缩旧会话。2. 清理~/.hermes/sessions/下的旧会话文件。3. 考虑调整记忆系统的持久化策略。如果以上方法无法解决可以运行hermes doctor命令它会进行全面的系统检查并给出修复建议。此外查阅项目GitHub Issues页面或加入Discord社区也是获取帮助的有效途径。8. 进阶集成MCP服务器扩展能力模型上下文协议Model Context Protocol, MCP是Hermes连接外部数据和服务的强大桥梁。通过MCP你可以让Hermes访问数据库、内部API、专有工具等。8.1 连接一个MCP服务器假设你有一个本地的MCP服务器提供了数据库查询能力。配置MCP服务器在Hermes配置文件中添加MCP服务器信息。# ~/.hermes/config.yaml mcp_servers: my_database_server: command: npx args: [-y, modelcontextprotocol/server-postgres, postgresql://user:passlocalhost/dbname] # 或者使用本地脚本 # command: python # args: [/path/to/your/mcp_server.py]重启Hermes加载新的MCP配置。使用新能力现在当你问Hermes“查询一下上个月的订单总数”时它就能通过MCP服务器调用数据库工具来获取答案。8.2 使用社区MCP服务器社区已经有很多优秀的MCP服务器例如computer-use-linux让Hermes控制Linux桌面。安装和使用通常很简单# 假设通过uvx安装一个MCP服务器 uvx install mcp-server-computer-use # 然后在Hermes配置中指向它通过MCPHermes的能力边界被极大地拓展了你可以将它接入几乎任何系统。从一行安装命令到构建能够学习、记忆并跨平台执行复杂任务的个性化AI智能体Hermes Agent展示了一条清晰的路径。它的核心价值在于将“一次性提示”变成了“可积累、可进化、可部署”的数字资产——技能。无论是作为个人效率助手还是作为复杂工作流的自动化引擎Hermes都提供了一个强大而灵活的基础。学习Hermes的最佳方式就是“用起来”。从一个简单的需求开始比如自动整理日报、监控网站状态让它创建第一个技能。然后逐步深入探索消息网关、定时任务和MCP集成。在这个过程中你会更深刻地理解智能体如何思考、如何行动以及如何将它们更好地融入你的开发生命周期。
2026年Hermes Agent实战指南:从零构建自进化AI智能体
最近在尝试将AI助手从简单的聊天机器人升级为能真正理解上下文、主动学习并执行复杂任务的智能体时我遇到了一个核心难题如何让AI不仅“听懂”指令还能“记住”我们的对话历史并基于经验自我进化市面上的许多AI Agent要么功能单一要么配置复杂要么学习成本极高。直到我深入研究了Hermes Agent才发现它几乎完美地解决了这些问题——它内置了闭环学习循环能从经验中创建技能并在使用中不断优化还能跨会话建立用户模型。更重要的是它部署极其灵活从5美元的VPS到GPU集群甚至无服务器架构都能运行成本近乎为零。本文将为你带来一份2026年最新、最全的Hermes Agent实战指南从零开始手把手带你完成环境部署、核心功能配置、代码实战开发并深入剖析其架构与最佳实践帮你彻底掌握这个“会成长的智能体”。1. Hermes Agent 核心概念与架构解析在开始动手之前我们必须先理解Hermes Agent究竟是什么以及它为何在众多AI Agent中脱颖而出。1.1 什么是 Hermes AgentHermes Agent是由Nous Research开发的一款自进化AI智能体。它的核心卖点不是简单的工具调用而是一个内置的学习循环Built-in Learning Loop。这意味着它能够从经验中创建技能完成复杂任务后Hermes会分析过程自动生成可复用的“技能”。在使用中改进技能每次使用技能时它都会根据反馈进行微调和优化。主动记忆与知识持久化它会定期“提醒”自己保存重要信息并构建跨会话的用户模型。搜索过往会话内置全文搜索FTS5和LLM摘要让你能快速找回过去的对话和决策。你可以把它想象成一个不仅会执行命令还会记笔记、总结经验、并越用越聪明的AI助手。1.2 核心架构与组件理解Hermes的架构有助于我们后续的配置和开发。其核心围绕以下几个部分构建智能体核心Agent Core处理与LLM的交互、工具调用决策和学习循环的逻辑中枢。工具系统Tools Toolsets提供了40开箱即用的工具如文件操作、网络搜索、代码执行等并支持通过工具集Toolset按需加载。技能系统Skills System这是Hermes的“大脑皮层”。技能是封装了特定任务逻辑通常是一系列工具调用和决策步骤的可执行单元。用户技能和系统技能都存放在~/.hermes/skills/目录下。记忆系统Memory包含会话记忆、长期记忆和用户画像Honcho dialectic user modeling确保智能体拥有上下文连续性。消息网关Messaging Gateway一个统一的接入层让你可以通过CLI、Telegram、Discord、Slack、WhatsApp、Signal等多种方式与同一个Hermes实例交互。调度器Cron Scheduler内置的定时任务系统可以用自然语言描述任务并指定在任何支持的平台上交付结果。模型提供者Providers支持高度灵活的模型后端。你可以使用Nous Portal、OpenRouter、OpenAI、Anthropic或自己的本地端点通过一条命令即可切换无代码绑定。1.3 Hermes Agent 的核心优势与同类项目相比Hermes的独特之处在于真正的闭环学习不仅是记录而是能生成和改进可执行的技能代码。部署灵活性支持六种终端后端——本地、Docker、SSH、Singularity、Modal和Daytona。后两者提供无服务器持久化闲置时几乎不产生费用。统一的多平台入口一套核心处处对话。你可以在电脑CLI上开始一个任务然后在上班路上用Telegram继续跟进。开源与开放标准采用MIT协议并兼容agentskills.io开放标准社区生态活跃。2. 环境准备与全平台安装指南Hermes Agent支持主流的操作系统。为了获得最佳体验建议系统已安装Python 3.11或更高版本。不过其安装脚本非常强大会自动处理大部分依赖。2.1 Linux / macOS / WSL2 安装对于大多数开发者而言Linux、macOS或Windows下的WSL2是最佳选择。安装只需一行命令curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash这个脚本会自动完成以下工作安装uv一个高性能的Rust Python包管理器。确保Python 3.11可用。安装Node.js、ripgrep、ffmpeg等必要工具。将Hermes及其依赖安装到~/.hermes目录下。将hermes命令添加到你的shell环境变量中。安装完成后需要重新加载shell配置然后即可启动source ~/.bashrc # 如果你使用bash对于zsh用户则是 source ~/.zshrc hermes # 启动交互式CLI开始聊天2.2 Windows 原生安装Hermes已完全支持原生Windows无需依赖WSL2。在PowerShell管理员身份运行中执行iex (irm https://hermes-agent.nousresearch.com/install.ps1)这个PowerShell脚本会在%LOCALAPPDATA%\hermes目录下创建独立环境。安装便携版Git BashMinGit约45MB与系统Git完全隔离。同样安装uv、Python等所有依赖。重要提示安装过程中Windows Defender或其他杀毒软件可能会将uv.exe误报为病毒。这是一个误报。uv是Astral公司官方开发的Python包管理工具。如果你遇到此问题可以将Hermes的bin目录添加到杀毒软件白名单中。2.3 安装后验证与初始化无论哪种方式安装首次运行前强烈建议运行设置向导它会引导你完成API密钥配置、模型选择等关键步骤hermes setup如果你想快速体验避免逐个收集OpenAI、搜索、TTS等不同服务的API密钥可以使用Nous Portal一站式服务。只需在安装后运行hermes setup --portal这个命令会通过OAuth登录Nous Portal自动设置模型提供商并启用工具网关Tool Gateway涵盖300模型、网页搜索、图像生成、语音合成和云端浏览器功能。3. 基础配置与核心功能上手安装完成后让我们通过几个核心命令快速上手Hermes的基本操作。3.1 启动与交互模式Hermes主要有两种交互入口CLI / TUI终端用户界面直接在终端中运行hermes命令会进入一个功能丰富的全屏文本界面支持多行编辑、命令补全、历史记录和流式工具输出。消息网关Messaging Gateway运行hermes gateway来启动网关服务然后可以在Telegram、Discord等平台上与你的Hermes机器人对话。我们先从CLI开始。在终端输入hermes你会看到一个提示符。直接输入你的问题例如“帮我列出当前目录下的文件。” Hermes会调用相应的工具来执行。3.2 核心管理命令在CLI中或者在任何聊天界面中都可以使用斜杠/命令来管理智能体。操作命令说明开始新会话/new或/reset清除当前对话上下文开始全新的对话。切换AI模型/model [provider:model]切换使用的LLM。例如/model openai:gpt-4o或/model nous:hermes-3。设置智能体人格/personality [name]加载预设的人格文件改变AI的回复风格和角色。重试/撤销/retry,/undo让AI重新生成上一个回复或撤销上一个工具调用步骤。管理技能/skills列出所有可用技能。使用/skill-name可以直接调用特定技能。查看使用情况/usage查看当前会话的Token使用情况。压缩上下文/compress当对话历史过长时让AI自动总结并压缩历史节省Token。中断当前任务CtrlC(CLI) 或/stop(消息平台)强制停止智能体正在执行的长耗时任务。3.3 配置文件与模型设置Hermes的配置文件位于~/.hermes/config.yamlLinux/macOS或%LOCALAPPDATA%\hermes\config.yamlWindows。你可以直接编辑它但更推荐使用命令进行管理。查看和设置配置# 查看当前所有配置 hermes config list # 设置特定的配置项例如默认模型 hermes config set provider defaultnous hermes config set model defaultnous:hermes-3 # 设置OpenAI API密钥如果你使用OpenAI hermes config set secrets.openai_api_keysk-your-api-key-here管理工具集工具集Toolset决定了智能体可以访问哪些能力。默认可能只启用基础工具。# 查看所有可用工具集 hermes tools list # 启用或禁用某个工具集例如启用“web”工具集以进行网络搜索 hermes tools enable web hermes tools disable code_interpreter # 禁用代码解释器如果需要4. 技能Skills系统深度实战技能系统是Hermes的灵魂它使得智能体能够学习和复用复杂操作。技能本质上是一段用自然语言描述、可由LLM解析和执行的“程序”或“工作流”。4.1 内置技能与社区技能运行/skills命令你会看到一系列内置技能例如create_skill: 根据对话历史创建一个新的技能。edit_file: 编辑文件。web_search: 进行网络搜索。run_shell: 运行shell命令。此外你还可以从社区技能中心Skills Hub添加更多技能。这些技能由社区贡献涵盖了从数据分析到自动化部署的各种场景。4.2 创建你的第一个自定义技能假设我们经常需要让Hermes检查一个网站的标题和状态码我们可以将这个流程固化为一个技能。在对话中创建技能 首先在CLI中让Hermes完成一次这个任务。你 请帮我检查 https://www.example.com 的HTTP状态码和网页标题。 Hermes: 它会调用相关工具执行并返回结果任务成功后输入命令/create_skill check_websiteHermes会分析刚才的对话历史自动生成一个名为check_website的技能描述并询问你是否确认创建。技能文件剖析 技能文件保存在~/.hermes/skills/user/目录下以.md格式存储。我们打开刚创建的check_website.md会看到类似以下内容# check_website ## Description Checks the HTTP status code and retrieves the title of a given website URL. ## Steps 1. Use the http_request tool to make a GET request to the provided URL. 2. Extract the status code from the response. 3. Parse the HTML response to find the title tag content. 4. Return a formatted message with the URL, status code, and title. ## Example Invocation User: “check_website https://www.example.com”这个文件用自然语言定义了技能的意图、步骤和调用示例。下次你只需要说“check_website https://csdn.net”Hermes就会自动执行这一系列步骤。4.3 高级技能开发编写技能函数对于更复杂、需要精确逻辑控制的技能你可以编写Python函数形式的技能。这提供了更强的灵活性和可编程性。创建技能文件 在~/.hermes/skills/user/目录下创建一个Python文件例如my_advanced_skill.py。编写技能代码# 文件路径~/.hermes/skills/user/my_advanced_skill.py from typing import Dict, Any from hermes.agent.skill import skill skill( nameanalyze_github_repo, descriptionFetches basic info and recent activity of a GitHub repository., examples[analyze_github_repo nousresearch/hermes-agent], ) async def analyze_github_repo(agent, repo: str) - Dict[str, Any]: 分析GitHub仓库信息。 Args: repo: 仓库名称格式为 owner/repo。 Returns: 包含仓库信息的字典。 # 1. 使用工具获取仓库信息这里假设有一个github_api工具 # 注意Hermes默认可能不包含此工具此处为示例逻辑。 import requests api_url fhttps://api.github.com/repos/{repo} # 在实际技能中应使用 agent.tools.call() 来调用已配置的工具 # 例如response await agent.tools.call(http_request, {url: api_url, method: GET}) # 这里为演示直接使用requests response requests.get(api_url) if response.status_code ! 200: return {error: fFailed to fetch repo: {response.status_code}} repo_data response.json() # 2. 获取最近提交示例 commits_url f{api_url}/commits commits_resp requests.get(commits_url, params{per_page: 5}) recent_commits commits_resp.json() if commits_resp.status_code 200 else [] # 3. 构建返回结果 result { repository: repo_data.get(full_name), description: repo_data.get(description), stars: repo_data.get(stargazers_count), forks: repo_data.get(forks_count), language: repo_data.get(language), recent_activity: [commit.get(commit, {}).get(message, )[:50] for commit in recent_commits[:3]], } # 4. 让Agent以友好格式输出结果 # 在技能中你可以直接返回数据Agent会处理展示。 # 也可以使用 agent.send_message() 直接发送消息。 output_message ( f仓库 **{result[repository]}** 分析结果\n f- 描述{result[description]}\n f- ⭐ Stars: {result[stars]}\n f- Forks: {result[forks]}\n f- 主要语言{result[language]}\n f- 最近提交{, .join(result[recent_activity])} ) await agent.send_message(output_message) return result注册与使用技能 保存文件后你需要重启Hermes的网关服务或者在CLI中使用/reload命令如果支持来加载新技能。之后你就可以直接使用了你 analyze_github_repo nousresearch/hermes-agent Hermes: 执行技能输出分析结果技能开发的核心要点装饰器skill用于声明技能元数据名称、描述、示例。函数参数第一个参数总是agent当前智能体实例后续参数是用户调用时传入的。工具调用在技能内部应使用await agent.tools.call(tool_name, arguments)来调用其他工具这是与Hermes工具系统交互的标准方式。异步支持技能函数必须是async的以支持非阻塞操作。5. 消息网关配置与多平台集成让Hermes脱离终端在你的日常通讯工具中运行能极大提升实用性。5.1 配置 Telegram 机器人以Telegram为例配置过程如下创建Bot在Telegram中搜索BotFather发送/newbot并按提示操作最终获得一个HTTP API Token。配置Hermeshermes gateway setup telegram按照交互式提示输入你从BotFather获得的Token。启动网关hermes gateway start与机器人对话在Telegram中找到你的机器人发送/start或任何消息Hermes就会在网关后端响应你。5.2 网关高级配置网关的配置文件通常位于~/.hermes/gateway_config.yaml。你可以在这里进行更精细的控制例如设置允许的用户ID限制哪些Telegram用户可以与你的机器人对话。配置工作目录为不同平台设置不同的文件系统访问根目录。启用/禁用特定平台。一个简化的配置示例如下# ~/.hermes/gateway_config.yaml telegram: enabled: true token: YOUR_BOT_TOKEN allowed_user_ids: - 123456789 # 你的Telegram用户ID workdir: /home/user/projects # 此平台下机器人的工作目录 discord: enabled: false # 暂时禁用Discord # token: ...启动网关后你就可以在任何地方通过手机给机器人发消息让它执行之前在CLI中能做的所有事情比如运行脚本、查询信息、甚至基于你之前的对话历史进行创作。6. 生产环境部署与最佳实践将Hermes用于个人助理和投入生产环境需要考虑的方面完全不同。6.1 部署模式选择本地开发机适合学习和轻度使用。注意长时间运行CLI会话可能占用资源。云服务器VPS推荐的方式。购买一个最低配的VPS如5美元/月通过SSH安装。然后使用tmux或systemd服务让hermes gateway在后台常驻。# 使用systemd创建后台服务 sudo nano /etc/systemd/system/hermes-gateway.service服务文件内容示例[Unit] DescriptionHermes Agent Gateway Afternetwork.target [Service] Typesimple Userubuntu WorkingDirectory/home/ubuntu EnvironmentPATH/home/ubuntu/.hermes/bin:/usr/local/bin:/usr/bin:/bin ExecStart/home/ubuntu/.hermes/bin/hermes gateway start Restartalways RestartSec10 [Install] WantedBymulti-user.target然后启用并启动服务sudo systemctl enable hermes-gateway sudo systemctl start hermes-gateway sudo systemctl status hermes-gateway # 查看状态无服务器模式Modal/Daytona这是Hermes最强大的特性之一。在这种模式下你的智能体环境在不活动时会“休眠”成本极低当有消息触发时环境会瞬间唤醒。具体配置需参考官方文档关于Modal和Daytona后端的部分。6.2 安全最佳实践最小权限原则在config.yaml中严格限制allowed_shell_commands只允许必要的命令。为Hermes进程创建一个专用的、权限受限的系统用户。在Docker容器中运行限制其网络和文件系统访问。敏感信息管理永远不要将API密钥、密码等硬编码在技能文件或配置文件中。使用hermes config set secrets.xxxvalue命令设置密钥它们会被加密存储。或者使用环境变量并在服务文件或Docker配置中注入。会话与记忆隔离如果多人使用同一个网关实例确保在配置中启用了conversation_isolation防止信息交叉。定期审查~/.hermes/memory/下的记忆文件必要时进行清理。6.3 性能监控与优化日志管理Hermes的日志默认输出到控制台。对于生产环境配置日志轮转和集中收集如使用journald或转发到ELK栈。hermes --log-file /var/log/hermes/agent.log --log-level INFO模型成本控制使用/usage命令监控Token消耗。对于非关键任务考虑切换到更经济的模型如claude-haiku。上下文管理长时间对话会导致上下文窗口膨胀增加成本和延迟。养成使用/compress命令的习惯或设置自动压缩策略。7. 常见问题排查与解决方案在实际使用中你可能会遇到一些典型问题。这里提供一个快速排查指南。问题现象可能原因解决方案安装脚本执行失败网络问题或系统缺少基础依赖如curl。1. 检查网络连接。2. 手动安装前置依赖sudo apt-get install -y curl git python3.11(Ubuntu)。3. 尝试分步安装先手动安装uv再克隆仓库安装。hermes命令未找到Shell环境变量未更新或安装路径不在PATH中。1. 执行source ~/.bashrc或重新打开终端。2. 手动添加PATHecho export PATH$HOME/.hermes/bin:$PATH ~/.bashrc。3. Windows下检查%LOCALAPPDATA%\hermes\bin是否在系统PATH中。模型调用失败提示API错误API密钥未设置、不正确或模型提供商服务异常。1. 运行hermes config list检查secrets配置。2. 使用hermes config set secrets.openai_api_keysk-...重新设置密钥。3. 运行hermes doctor进行诊断。4. 尝试切换模型提供商/model openrouter:claude-3.5-sonnet。工具调用失败如web_search对应工具集的API未配置或工具本身需要额外依赖。1. 运行hermes tools list确认工具是否已启用。2. 运行hermes tools enable web启用工具集。3. 检查该工具是否需要单独的API密钥如Serper API并在配置中设置。技能创建失败或无法调用技能描述不清晰或技能文件存在语法错误。1. 检查~/.hermes/skills/user/下对应的.md或.py文件。2. 对于Python技能查看Hermes日志是否有导入错误。3. 尝试用更简单、明确的步骤重新创建技能。Telegram机器人无响应网关未运行Token错误或网络问题。1. 运行hermes gateway status检查网关进程。2. 运行hermes gateway setup telegram重新配置Token。3. 确认服务器网络可以访问Telegram API。内存占用过高长时间运行积累了大量的对话历史和记忆。1. 定期使用/compress压缩旧会话。2. 清理~/.hermes/sessions/下的旧会话文件。3. 考虑调整记忆系统的持久化策略。如果以上方法无法解决可以运行hermes doctor命令它会进行全面的系统检查并给出修复建议。此外查阅项目GitHub Issues页面或加入Discord社区也是获取帮助的有效途径。8. 进阶集成MCP服务器扩展能力模型上下文协议Model Context Protocol, MCP是Hermes连接外部数据和服务的强大桥梁。通过MCP你可以让Hermes访问数据库、内部API、专有工具等。8.1 连接一个MCP服务器假设你有一个本地的MCP服务器提供了数据库查询能力。配置MCP服务器在Hermes配置文件中添加MCP服务器信息。# ~/.hermes/config.yaml mcp_servers: my_database_server: command: npx args: [-y, modelcontextprotocol/server-postgres, postgresql://user:passlocalhost/dbname] # 或者使用本地脚本 # command: python # args: [/path/to/your/mcp_server.py]重启Hermes加载新的MCP配置。使用新能力现在当你问Hermes“查询一下上个月的订单总数”时它就能通过MCP服务器调用数据库工具来获取答案。8.2 使用社区MCP服务器社区已经有很多优秀的MCP服务器例如computer-use-linux让Hermes控制Linux桌面。安装和使用通常很简单# 假设通过uvx安装一个MCP服务器 uvx install mcp-server-computer-use # 然后在Hermes配置中指向它通过MCPHermes的能力边界被极大地拓展了你可以将它接入几乎任何系统。从一行安装命令到构建能够学习、记忆并跨平台执行复杂任务的个性化AI智能体Hermes Agent展示了一条清晰的路径。它的核心价值在于将“一次性提示”变成了“可积累、可进化、可部署”的数字资产——技能。无论是作为个人效率助手还是作为复杂工作流的自动化引擎Hermes都提供了一个强大而灵活的基础。学习Hermes的最佳方式就是“用起来”。从一个简单的需求开始比如自动整理日报、监控网站状态让它创建第一个技能。然后逐步深入探索消息网关、定时任务和MCP集成。在这个过程中你会更深刻地理解智能体如何思考、如何行动以及如何将它们更好地融入你的开发生命周期。