ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Hermes 0.18.2 Learn命令:AI Agent技能自动化与经验沉淀实战

2026/8/10 7:19:05 拓冰建站 浏览量
Hermes 0.18.2 Learn命令:AI Agent技能自动化与经验沉淀实战 如果你最近在关注 AI Agent 领域可能会发现一个现象很多工具都在强调“自动化”但真正能让 AI 像人一样通过“学习”来掌握新技能并稳定复用的却少之又少。你教会它一次下次它可能就忘了或者换个场景就失效了。这种“一次性”的智能离我们期待的“数字员工”还差得很远。今天要深入探讨的Hermes 0.18.2 版本其核心更新Learn命令瞄准的正是这个痛点。它不是一个简单的功能新增而是一次对 AI Agent 能力范式的关键升级。很多人可能只看到了“新增了 Learn 命令”这个更新日志但它的真正价值在于让 AI Agent 具备了“经验沉淀”和“技能传承”的能力。简单来说Learn命令允许你将一次成功的、复杂的操作过程比如配置服务器、调试一段代码、处理特定格式的文件记录下来封装成一个可复用的“技能”Skill。之后无论是你自己还是团队其他成员都可以通过一个简单的指令让 Agent 自动调用这个技能完成同样的任务无需再次进行繁琐的引导或解释。本文将为你彻底拆解 Hermes 0.18.2 的Learn命令。我们不止步于“是什么”更要深入“为什么重要”、“解决了什么工程问题”、“具体怎么用”以及“有哪些实践中的坑”。无论你是想将 Hermes 集成到自己的自动化流程中还是单纯好奇下一代 AI Agent 的演进方向这篇文章都将提供可直接落地的操作指南和深度的技术洞察。1. 从“一次性脚本”到“可进化技能库”Learn 命令的核心价值在深入代码和配置之前我们必须先理解Learn命令试图解决的根本问题。传统的自动化脚本如 Bash、Python 脚本和 RPA机器人流程自动化工具虽然强大但它们本质上是“静态”和“脆弱”的静态脚本逻辑一旦写好难以适应微小的界面变化或流程调整。脆弱依赖固定的元素定位如 XPath、CSS Selector前端一个按钮 ID 改了整个脚本就可能崩溃。高门槛编写和维护这类脚本需要专业的编程知识。而以 ChatGPT、Claude 为代表的大语言模型LLM驱动的 Agent其优势在于强大的自然语言理解和动态决策能力。你可以用语言告诉它“帮我把这个文件夹里的图片压缩并上传到网盘”它就能尝试去完成。但问题是这个过程是“一次性”的无法沉淀这次成功的操作路径无法被系统地保存下来。无法复用下次遇到类似任务你需要重新描述一遍且结果可能不一致。无法协作你摸索出来的高效方法很难直接分享给团队其他成员。Learn命令的诞生正是在 LLM 的动态能力和传统自动化的可复用性之间架起了一座桥梁。它的核心价值体现在三个层面对个人提升效率与一致性。将你摸索出来的、复杂的、多步骤的操作例如“每次发布新版本前需要登录 Jenkins 构建、检查 SonarQube 报告、合并 Git 分支”记录成一个技能。以后只需说“执行发布前检查”Agent 就能自动完成杜绝人为遗漏。对团队实现知识资产化与标准化。团队中最熟悉某流程的专家可以将他的操作录制成技能分享给所有人。这相当于将个人经验转化为了团队的标准化操作程序SOP降低了培训成本提升了整体协作质量。对系统构建可进化的智能体生态。技能Skill可以被版本管理、组合调用。一个复杂的任务可以拆解为多个基础技能的串联。随着技能库的不断丰富Agent 的能力边界也在持续扩展形成一个真正“可成长”的智能系统。因此Hermes 0.18.2 的Learn不仅仅是一个命令它是 Hermes 从“单次任务执行工具”向“可持续积累的能力平台”演进的关键一步。2. Hermes 与 Learn 命令核心概念解析在动手之前我们先厘清几个关键概念避免后续混淆。Hermes一个开源的 AI Agent 框架/平台。它允许你创建能够理解自然语言指令、操作计算机如控制浏览器、读写文件、执行命令的智能体。你可以把它想象成一个给 AI 配了一个“鼠标和键盘”并提供了调度中心的系统。Skill技能这是 Hermes 中的核心能力单元。一个 Skill 封装了 Agent 完成特定任务所需的知识、操作逻辑和工具调用。在Learn命令出现前Skill 主要靠开发者手动编写代码通常是用 Python 定义一系列步骤。Learn命令的出现提供了一种“演示即编程”的方式来创建 Skill。Learn 命令Hermes 0.18.2 引入的新功能。它的作用是在你手动执行一次任务的过程中录制你的操作包括打开的应用程序、点击的位置、输入的文字、执行的命令等并基于这些操作记录自动生成一个对应的 Skill 定义。这个生成的 Skill 可以被保存、分享和后续调用。工作流程类比传统编程你需要用代码Python精确描述每一步逻辑 - 编译/解释 - 运行。Hermes Learn你像教一个新人一样手动操作一遍电脑 -Learn命令录制并分析你的操作 - 自动生成“操作手册”Skill - 以后 AI 就能按照这个“手册”自动执行。一个重要区分Learn生成的是“操作型”技能它记录的是你在图形界面GUI或命令行CLI上的具体交互。这对于自动化那些尚未提供 API 的旧系统、桌面应用或网页操作特别有用。而对于已经有清晰 API 的服务直接通过代码调用 API 来编写 Skill 仍然是更高效、更稳定的方式。3. 环境准备部署 Hermes 0.18.2要体验Learn命令首先需要一个运行中的 Hermes 环境。这里我们以在本地 Linux/macOS 系统上部署为例。Windows 用户可以通过 WSL2 获得类似体验。3.1 系统与依赖要求操作系统Ubuntu 20.04/macOS Monterey (12.0) / Windows 10 (需 WSL2)。本文以 Ubuntu 22.04 为例。Python版本 3.9 或 3.10。Python 3.11 可能存在兼容性问题建议使用 3.10。Node.js版本 16用于运行 Web UI。Git用于克隆代码库。Docker (可选)如果你想通过容器快速启动或需要隔离环境。3.2 安装步骤详解步骤一克隆代码库并进入目录打开终端执行以下命令# 克隆 Hermes 的主仓库 git clone https://github.com/Hermes-AI/Hermes.git # 进入项目目录 cd Hermes注意请确保网络通畅克隆仓库是后续所有操作的基础。步骤二创建并激活 Python 虚拟环境强烈建议使用虚拟环境避免污染系统 Python 包。# 创建虚拟环境命名为 hermes-env python3 -m venv hermes-env # 激活虚拟环境 # 对于 Linux/macOS: source hermes-env/bin/activate # 激活后命令行提示符前通常会显示 (hermes-env) # 对于 Windows (在 WSL2 或 CMD/PowerShell 中): # hermes-env\Scripts\activate步骤三安装 Python 依赖在项目根目录下通常会有requirements.txt或pyproject.toml文件。# 升级 pip 到最新版本 pip install --upgrade pip # 安装项目依赖请根据项目根目录的实际文件选择命令 # 如果存在 requirements.txt: pip install -r requirements.txt # 如果项目使用 poetry (有 pyproject.toml): # pip install poetry # poetry install安装过程可能会持续几分钟取决于网络速度和依赖数量。如果遇到某个包安装失败通常是版本冲突或网络问题可以尝试单独安装或搜索错误信息。步骤四配置环境变量与 API 密钥Hermes 需要连接大语言模型如 OpenAI 的 GPT-4来理解指令和规划任务。你需要准备相应的 API Key。获取一个 LLM 服务的 API Key例如OpenAI, Anthropic Claude, 或国内可用的合规大模型服务。在项目根目录创建或编辑一个.env文件cp .env.example .env # 如果存在示例文件 # 编辑 .env 文件 nano .env # 或使用 vim, code 等编辑器在.env文件中找到类似OPENAI_API_KEY的配置项填入你的密钥# 示例使用 OpenAI OPENAI_API_KEYsk-your-actual-openai-api-key-here # 如果你使用其他模型可能需要配置不同的变量如 # ANTHROPIC_API_KEYyour-claude-key # BASE_URLhttps://api.openai.com/v1 # 如果使用代理服务安全提醒切勿将.env文件提交到 Git 仓库确保.env已在.gitignore中。步骤五启动 Hermes 服务Hermes 通常包含后端服务和一个 Web 前端界面。# 启动后端服务 (具体启动命令请查阅项目 README常见的有) # 方式1: 使用 uvicorn 直接启动 uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # 方式2: 使用项目提供的脚本 # python scripts/start.py # 在另一个终端窗口激活虚拟环境后启动前端 Web UI cd hermes-webui # 进入前端目录具体路径请以项目结构为准 npm install # 安装前端依赖 npm run dev # 启动开发服务器启动成功后你应该能在浏览器中通过http://localhost:3000或类似地址访问 Hermes 的 Web 界面。4. Learn 命令实战录制你的第一个自动化技能假设我们有一个常见且繁琐的任务每日下载某个公开数据网站的 CSV 报告并用特定命名格式保存到本地文件夹。我们将使用Learn命令来教会 Hermes 完成这个任务。4.1 任务场景与规划目标自动化访问https://example-data.org/daily-report示例地址点击“Download CSV”按钮将文件保存到~/Downloads/daily_reports/目录并以报告_YYYY-MM-DD.csv格式命名。传统方式每天手动打开浏览器导航点击下载重命名文件。Hermes Learn 方式我们手动操作一遍让 Hermes 学习并生成技能。4.2 启动 Learn 模式在 Hermes 的 Web UI 中你应该能找到与 Agent 对话的界面。或者如果你使用 CLI也有相应的命令。 我们以 Web UI 为例在聊天输入框中输入指令/learn start 下载每日数据报告。/learn start是触发录制模式的命令。下载每日数据报告是你为这个即将生成的技能起的名字。按下回车。Hermes 会进入“学习模式”并可能给出提示如“我已进入学习模式。请开始演示‘下载每日数据报告’任务。完成后请输入/learn finish。”4.3 演示操作流程现在你就像屏幕录制一样开始手动执行任务。请严格按照你希望 AI 复现的步骤操作打开浏览器手动点击系统浏览器图标如 Chrome。输入网址在地址栏输入https://example-data.org/daily-report并访问。等待加载等待页面完全加载。定位元素找到页面上“Download CSV”按钮可能需要滚动。点击下载点击该按钮。这会触发文件下载。处理下载浏览器通常会弹出下载窗口或底部栏。关键步骤在“另存为”对话框中导航到目标文件夹~/Downloads/daily_reports/。如果文件夹不存在先创建它。关键步骤将默认文件名改为报告_2023-10-27.csv请使用当天的日期。这一步是教会 AI 命名规则的核心。点击“保存”。关闭浏览器可选如果你希望技能包含关闭浏览器的操作。演示过程中的要点节奏放慢操作不要太快给 Hermes 的记录系统足够的时间捕捉事件。意图清晰尽量使用明确、标准的界面元素如按钮、链接避免操作过于依赖像素坐标。一次成功尽量保证演示流程一次成功避免中途回退或错误操作否则这些也可能被记录。4.4 结束录制并生成技能操作演示完毕后回到 Hermes 的聊天界面。输入命令/learn finish。Hermes 会开始分析刚才录制的所有操作事件鼠标移动、点击、键盘输入、窗口焦点切换等。分析完成后它会生成一个 Skill 的配置文件通常是 YAML 或 JSON 格式并可能向你展示预览询问“技能‘下载每日数据报告’已生成。是否保存”确认保存。这个技能就会被添加到你的 Hermes 技能库中。5. 深入代码解读 Learn 生成的技能定义/learn finish之后Hermes 在后台究竟生成了什么理解这个输出是掌握Learn命令精髓的关键。让我们来看一个简化版的、可能生成的技能定义示例。文件位置生成的技能通常保存在~/.hermes/skills/或项目内的skills/目录下例如download_daily_report.yaml。# skills/download_daily_report.yaml name: download_daily_report description: 自动访问 example-data.org 网站并下载每日 CSV 报告以指定格式保存。 version: 1.0.0 author: your-username triggers: - type: command pattern: “下载今日报告” - type: schedule cron: “0 9 * * *” # 每天上午9点自动执行 steps: - name: 启动浏览器 action: desktop.open_application args: application: “Google Chrome” expects: - condition: window.title.contains(“Chrome”) timeout: 10 - name: 导航至数据页面 action: browser.navigate args: url: “https://example-data.org/daily-report” expects: - condition: browser.url.is(“https://example-data.org/daily-report”) timeout: 15 - condition: page.contains_element({“text”: “Daily Report”}) timeout: 10 - name: 定位并点击下载按钮 action: browser.click args: selector: “a.download-link:has-text(‘Download CSV’)” # 或者基于录制的坐标position: { x: 1200, y: 450 } expects: - condition: browser.download.started timeout: 30 - name: 处理下载对话框 action: desktop.handle_download args: save_dir: “~/Downloads/daily_reports” filename_template: “报告_{{ now().strftime(‘%Y-%m-%d’) }}.csv” # 使用模板引擎动态生成带日期的文件名 expects: - condition: file.exists(“~/Downloads/daily_reports/报告_*.csv”) timeout: 60 - name: 关闭浏览器 action: desktop.close_application args: application: “Google Chrome”代码解读与关键点结构清晰技能被定义为一系列顺序执行的steps。每个步骤都有name描述、action要执行的操作如browser.click、args参数和expects预期结果用于验证和等待。抽象与适配Learn并没有简单记录原始的鼠标坐标(x1200, y450)而是尝试理解你的意图并生成更通用的选择器如“a.download-link:has-text(‘Download CSV’)”。这使得技能在不同分辨率或页面微调后更具鲁棒性。这是Learn智能的核心体现。参数化与动态性注意filename_template参数。它使用了模板语法{{ now().strftime(‘%Y-%m-%d’) }}来动态插入当前日期。这意味着每次运行技能都会生成一个带当天日期的文件。这是从“录制固定操作”升维到“生成逻辑技能”的关键。触发机制triggers部分定义了如何触发这个技能。你可以通过聊天命令command手动触发也可以设置定时任务schedule让它自动运行。期望与容错expects定义了每个步骤成功后应该满足的条件。这为技能执行提供了基本的验证和超时机制如果某个条件在超时时间内未满足技能可以标记为失败或重试。通过分析生成的代码你可以看到Learn命令的目标是产生可维护、可理解、具有一定适应性的自动化脚本而不是一个脆弱的“宏录制”文件。6. 运行、验证与调试技能技能生成后如何验证它是否真的能工作6.1 触发技能执行方式一通过聊天命令在 Hermes Web UI 的聊天框中输入技能定义的触发命令例如下载今日报告。Hermes 会识别到这个命令并开始在后台执行download_daily_report技能。方式二通过技能库界面在 Web UI 的技能库页面找到“下载每日数据报告”技能点击“运行”按钮。方式三定时自动执行如果你配置了cron触发器技能会在指定时间自动运行。你需要在 Hermes 服务中确保定时任务调度器已启用。6.2 监控执行过程与日志技能执行时观察以下几点执行状态Web UI 上通常会有任务执行状态进行中、成功、失败。实时日志查看 Hermes 后端服务的控制台输出或者 Web UI 中的任务日志面板。日志会详细显示每个步骤的执行情况、动作和结果。# 后端服务控制台可能输出的日志示例 [INFO] 开始执行技能: download_daily_report [INFO] 步骤 [启动浏览器] 开始: actiondesktop.open_application [INFO] 步骤 [启动浏览器] 成功: 应用 Chrome 已启动。 [INFO] 步骤 [导航至数据页面] 开始: actionbrowser.navigate, url... [DEBUG] 等待条件: browser.url.is(‘https://...‘) [INFO] 步骤 [导航至数据页面] 成功: 页面加载完成。 [ERROR] 步骤 [定位并点击下载按钮] 失败: 未找到元素 selector‘a.download-link...‘桌面行为观察你的电脑桌面看浏览器是否被自动打开、页面是否导航、点击和下载是否发生。6.3 验证结果技能执行完毕后通过结果来验证检查目标文件夹前往~/Downloads/daily_reports/查看是否存在名为报告_2023-10-27.csv日期为执行当天的文件。检查文件内容打开下载的 CSV 文件确认数据完整正确。检查技能最终状态在 Web UI 中确认技能执行状态为“成功”。6.4 常见失败场景与初步调试如果技能执行失败请按以下顺序排查问题现象可能原因排查方式解决方案浏览器未启动或启动错误1. 系统中 Chrome 的路径或名称不匹配。2. 已有 Chrome 实例在运行造成冲突。查看日志中open_application步骤的错误信息。检查系统默认浏览器设置。1. 在技能 YAML 中将application: “Google Chrome”改为你系统上的准确名称如“chrome”或完整路径。2. 修改技能先尝试关闭已有实例或使用browser.connect连接现有实例。页面元素找不到1. 页面结构发生变化选择器失效。2. 页面加载太慢超时。3. 元素在 iframe 内。1. 查看日志中click或find_element步骤的详细错误。2. 手动打开页面用浏览器开发者工具检查目标元素的选择器是否还正确。1.更新选择器手动修改技能 YAML 文件中的selector参数使用更稳定属性如id,>下载对话框未弹出或处理失败1. 浏览器下载设置是“自动下载到固定文件夹”未触发对话框。2. 桌面环境不同如无 GUI 的服务器。3. 文件保存路径权限不足。1. 检查浏览器设置。2. 查看handle_download步骤的日志。3. 检查目标文件夹是否存在及可写。1.统一环境确保学习Learn和执行Run时的浏览器设置一致。2.修改技能逻辑如果自动下载则技能应改为监控下载文件夹而非处理对话框。3.使用绝对路径并确保权限正确。技能执行到一半卡住某个步骤的expects条件永远无法满足。查看日志找到最后一个成功步骤和第一个卡住的步骤。1. 检查该步骤的期望条件是否合理。2. 在技能中为该步骤添加retry重试策略。3. 在易失败的步骤后添加fallback备选动作。调试的核心思想Learn生成的技能是一个起点而不是终点。你需要像对待普通代码一样去调试和优化它。查看日志、理解每个步骤的意图、手动验证选择器是解决问题的关键。7. Learn 命令的局限性、边界与最佳实践Learn命令非常强大但它并非万能。理解它的边界才能更好地运用它。7.1 主要局限性对动态内容的适应性有限如果网页或应用的内容是高度动态、每次加载都不同的例如列表顺序随机基于一次录制生成的选择器很可能失效。无法处理复杂逻辑判断Learn记录的是线性操作流。如果任务需要根据运行时不同条件如“如果文件存在则跳过否则下载”走不同分支它无法自动生成这种if-else逻辑。这需要后期手动编辑技能代码。依赖稳定的界面如果应用程序的 UI 频繁改动维护技能的成本会很高。安全性录制过程可能包含敏感操作如输入密码。生成的技能文件会以明文保存这些操作步骤必须妥善保管避免泄露。切勿将包含敏感信息的技能文件上传至公开仓库。7.2 最佳实践指南为了让你的Learn技能更健壮、更易维护请遵循以下实践从简单、稳定的任务开始先尝试自动化那些步骤固定、界面变化少的任务建立信心和理解。演示时“演”得标准一些操作速度适中。尽量使用明确的、通过文本或ID标识的界面元素进行操作。避免使用鼠标滚轮进行复杂导航尽量使用点击链接或按钮。在需要输入文本的地方输入清晰、有代表性的内容。技能生成后立即进行一次测试运行这是最重要的步骤可以快速发现录制过程中未捕捉到的问题。编辑和优化生成的 YAML 文件强化选择器将可能脆弱的基于坐标或索引的选择器改为基于id、name、aria-label或稳定 CSS 类的选择器。添加等待与重试在关键的页面跳转、元素加载步骤后增加expects条件和足够的timeout。对于网络请求可以添加retry配置。参数化将可能变化的参数如网址、文件名、日期格式提取到技能文件的parameters部分使技能更灵活。版本管理你的技能将技能 YAML 文件纳入 Git 等版本控制系统。这样你可以追踪更改协同开发并在技能出错时快速回滚。建立技能文档为每个技能编写简短的 README说明其用途、输入参数、输出结果以及已知的依赖和限制。安全第一绝不录制输入密码的过程。对于需要认证的任务使用环境变量、密钥管理服务或安全的令牌注入方式。定期审查技能文件移除任何硬编码的敏感信息。8. 进阶将 Learn 技能融入自动化工作流单一的技能价值有限但当多个技能组合起来并与外部系统集成时就能构建强大的自动化工作流。场景每天早 9 点自动下载数据报告用 Python 脚本清洗数据将结果邮件发送给团队并更新内部仪表盘。实现思路技能1使用Learn创建download_daily_report技能本文示例。技能2编写一个传统的代码型 SkillPython调用 Pandas 清洗下载的 CSV 文件。技能3编写另一个 Skill调用邮件 API如 SMTP发送清洗后的数据。编排在 Hermes 中你可以通过一个“主技能”或工作流引擎来编排这三个技能。方式 A顺序触发。在download_daily_report技能的post_actions中配置成功完成后触发clean_data技能。方式 B定时任务链。配置一个定时任务其执行逻辑是依次调用这三个技能。方式 C使用更高级的工作流引擎。例如将 Hermes 技能暴露为 API由 Apache Airflow、Prefect 或 n8n 这类工具进行更复杂的调度和依赖管理。示例一个简单的顺序触发配置在技能 YAML 中# download_daily_report.yaml 末尾添加 on_success: - trigger_skill: clean_data_skill args: input_file: “~/Downloads/daily_reports/报告_{{ now().strftime(‘%Y-%m-%d’) }}.csv”通过这种方式Learn命令生成的 GUI 自动化技能可以与代码驱动的数据处理、API 调用等能力无缝结合形成端到端的自动化解决方案。Hermes 0.18.2 的Learn命令将 AI Agent 从“聪明的对话者”推进到了“善于观察和模仿的学习者”阶段。它降低了创建复杂自动化技能的门槛让业务专家无需深入编程细节也能将他们的流程知识转化为可执行的数字资产。然而真正的生产力提升不在于录制了一个技能而在于如何维护、组合和规模化这些技能。你需要像管理代码一样管理它们版本控制、代码审查、编写测试例如用模拟环境测试技能、建立部署流程。同时清醒地认识到其边界对于复杂的逻辑判断、高频变动的 UI 或涉及核心安全认证的场景仍需结合传统的自动化测试框架或 API 集成。下一步建议你动手实践从自动化一个你每天重复 3 次以上的简单电脑操作开始。阅读官方文档深入了解 Hermes Skill 的完整 YAML 规范掌握手动编写和调试技能的技巧。探索社区关注 Hermes 中文社区或 GitHub学习他人分享的优秀技能案例了解Learn命令的持续演进。技术的最终目的是解放人。Learn命令正是这样一把钥匙它试图将人类从重复、琐碎的数字劳动中解脱出来让我们能更专注于那些需要创造力和战略思考的高价值任务。现在是时候让你的电脑真正开始“学习”并为你工作了。