<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Hermes on 火炬树</title>
        <link>https://torchtree.com/tags/hermes/</link>
        <description>Recent content in Hermes on 火炬树</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>TorchTree Co., Ltd.</copyright>
        <lastBuildDate>Sun, 07 Jun 2026 07:24:48 +0800</lastBuildDate><atom:link href="https://torchtree.com/tags/hermes/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Hermes Kanban：让多个 AI Agent 像团队一样协作</title>
        <link>https://torchtree.com/post/hermes-kanban-multi-agent-collaboration/</link>
        <pubDate>Sun, 07 Jun 2026 07:24:48 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-kanban-multi-agent-collaboration/</guid>
        <description>&lt;img src="https://getnas.s3.bitiful.net/2026/06/----------------1.png" alt="Featured image of post Hermes Kanban：让多个 AI Agent 像团队一样协作" /&gt;&lt;h2 id=&#34;kanban-是什么&#34;&gt;Kanban 是什么
&lt;/h2&gt;&lt;p&gt;Hermes Agent 是一个开源 AI Agent 框架，支持在终端、Telegram、Discord、Slack 等多个平台上运行。它的 Kanban 功能是一套&lt;strong&gt;持久化的多 Agent 协作任务板&lt;/strong&gt;，让多个独立的命名 Agent（在 Hermes 中称为 profile）通过共享的任务队列协同工作，无需依赖脆弱的进程内子代理调度。&lt;/p&gt;
&lt;p&gt;每条任务是 SQLite 数据库中的一行记录，每次交接是任何人都可读写的持久数据，每个 worker 都是一个拥有独立身份和记忆的完整操作系统进程。这和 Hermes 原有的 &lt;code&gt;delegate_task&lt;/code&gt;（一次性函数调用式子代理派发）形成互补：&lt;code&gt;delegate_task&lt;/code&gt; 适合快速的一问一答，Kanban 适合需要持续状态、多角色接力、人类介入的工作流。&lt;/p&gt;
&lt;h2 id=&#34;它能做什么从一个真实场景说起&#34;&gt;它能做什么：从一个真实场景说起
&lt;/h2&gt;&lt;p&gt;假设你需要写一篇技术调研报告。传统做法是让一个 AI Agent 从头做到尾，结果往往是：调研深度不够、写作风格单一、中间方向偏离无人纠正。&lt;/p&gt;
&lt;p&gt;用 Kanban，流程变成这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你创建一个 triage 状态的任务：&amp;ldquo;调研 Hermes Kanban 功能，形成一篇面向开发者的分析报告&amp;rdquo;&lt;/li&gt;
&lt;li&gt;系统的自动编排器（decomposer）将它拆解为三个子任务：researcher 做信息采集、analyst 做综合分析、writer 负责成文&lt;/li&gt;
&lt;li&gt;两个 researcher 子任务并行执行，各自负责不同信息源&lt;/li&gt;
&lt;li&gt;它们完成后，analyst 自动启动，读取两份调研结果进行综合&lt;/li&gt;
&lt;li&gt;analyst 完成后，writer 启动，基于综合结果撰写报告&lt;/li&gt;
&lt;li&gt;整个过程中，你随时可以评论、调整方向、阻塞等待决策&lt;/li&gt;
&lt;li&gt;最终产出包含完整的审计轨迹：谁做了什么、花了多久、中间经历了几次迭代&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这不是概念设想，而是 Kanban 的标准工作模式。&lt;/p&gt;
&lt;h2 id=&#34;kanban-的核心概念有哪些&#34;&gt;Kanban 的核心概念有哪些
&lt;/h2&gt;&lt;p&gt;Kanban 由六个相互协作的组件构成。&lt;/p&gt;
&lt;p&gt;**Board（看板）**是独立的任务队列，拥有自己的 SQLite 数据库、工作目录和调度循环。单次安装可以创建多个 board，按项目或领域隔离。&lt;/p&gt;
&lt;p&gt;**Task（任务）**是看板中的基本单元，包含标题、正文、一个 assignee（指派的 profile 名称）、状态流转链（triage → todo → ready → running → blocked → done → archived），以及可选的 tenant 命名空间和幂等键。&lt;/p&gt;
&lt;p&gt;**Link（依赖）**记录任务之间的 parent → child 关系。当所有父任务完成后，子任务自动从 todo 提升为 ready，由调度器拾取执行。这实现了&amp;quot;扇出 + 扇入&amp;quot;的并行编排。&lt;/p&gt;
&lt;p&gt;**Comment（评论）**是 Agent 之间的通信协议。Agent 和人类都可以追加评论，worker 被（重新）调度时会读取完整的评论线程作为上下文。这本质上是任务维度的对话通道，不依赖主聊天的上下文窗口。&lt;/p&gt;
&lt;p&gt;**Workspace（工作空间）**是 worker 操作的目录。scratch 是临时目录，任务完成后自动清理；dir:&amp;lt;path&amp;gt; 指向一个现有的持久目录；worktree 是 Git worktree，适合编码任务。&lt;/p&gt;
&lt;p&gt;**Dispatcher（调度器）**是长驻循环，默认每 60 秒执行一轮：回收过期 claim → 检测崩溃的 worker → 提升 ready 任务 → 原子认领 → spawn 分配的 profile。它运行在 Hermes Gateway 进程内部，不需要单独管理。&lt;/p&gt;
&lt;h2 id=&#34;人类如何介入-agent-的工作过程&#34;&gt;人类如何介入 Agent 的工作过程
&lt;/h2&gt;&lt;p&gt;Kanban 和纯自动化批处理的根本区别在于，它在工作流的每个阶段都留了人类介入的入口。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;入口控制（Triage）&lt;/strong&gt;：任务可以创建在 triage 状态，相当于一个&amp;quot;停车场&amp;quot;。你可以先审视任务描述是否清晰、拆解是否合理，再决定是否推进到执行队列。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;执行中阻塞（Block/Unblock）&lt;/strong&gt;：Worker 在执行过程中遇到需要人类判断的决策时，会调用 &lt;code&gt;kanban_block&lt;/code&gt; 主动暂停。例如翻译任务中遇到专业术语需要确认，或者技术方案需要你选择方向。你做出决策后通过 unblock 解除阻塞，worker 继续执行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;持续评论（Comment）&lt;/strong&gt;：你随时可以往任务线程中追加评论，比如&amp;quot;请用中文写作，控制在 3000 字以内&amp;quot;或&amp;quot;这个方向不对，请参考 X 的做法&amp;quot;。Worker 下次被调度时会读取这些评论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;产出审查（Runs）&lt;/strong&gt;：每次执行尝试都记录在 task_runs 表中。你可以查看每次尝试的耗时、结果摘要、错误信息，不满意可以修改任务描述后重新调度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Goal 模式的验收标准&lt;/strong&gt;：创建任务时指定验收标准，worker 会在每轮结束后自检是否满足。写得越明确，产出越可控。&lt;/p&gt;
&lt;h2 id=&#34;kanban-支持哪些协作模式&#34;&gt;Kanban 支持哪些协作模式
&lt;/h2&gt;&lt;p&gt;Kanban 不是一种固定的编排方式，而是支持多种协作模式的基础设施。官方文档列出了九种典型模式：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;形状&lt;/th&gt;
          &lt;th&gt;场景示例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Fan-out&lt;/td&gt;
          &lt;td&gt;N 个同角色并行&lt;/td&gt;
          &lt;td&gt;同时调研 5 个技术方案&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pipeline&lt;/td&gt;
          &lt;td&gt;角色链式接力&lt;/td&gt;
          &lt;td&gt;采集 → 分析 → 写作 → 审查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;投票/仲裁&lt;/td&gt;
          &lt;td&gt;N 并行 + 1 汇总&lt;/td&gt;
          &lt;td&gt;3 个研究员 → 1 个审查员综合&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长期日志&lt;/td&gt;
          &lt;td&gt;同 profile + 共享目录 + cron&lt;/td&gt;
          &lt;td&gt;每日自动生成 Obsidian 日记&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人机交互&lt;/td&gt;
          &lt;td&gt;worker block → 人类 comment → unblock&lt;/td&gt;
          &lt;td&gt;需要决策确认的任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;@mention&lt;/td&gt;
          &lt;td&gt;行内路由&lt;/td&gt;
          &lt;td&gt;在评论中 @reviewer 请求审查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;线程 workspace&lt;/td&gt;
          &lt;td&gt;每个聊天线程一个独立看板&lt;/td&gt;
          &lt;td&gt;多项目并行管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fleet farming&lt;/td&gt;
          &lt;td&gt;一个 profile 管理 N 个对象&lt;/td&gt;
          &lt;td&gt;同时管理 50 个社交账号&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Triage specifier&lt;/td&gt;
          &lt;td&gt;一行想法 → 系统展开为完整任务规格&lt;/td&gt;
          &lt;td&gt;快速捕捉粗略想法&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;任务如何分配给不同-agent&#34;&gt;任务如何分配给不同 Agent
&lt;/h2&gt;&lt;p&gt;Kanban 不要求必须有多个 profile。单个 profile 就能使用，此时它就是一个带持久化、可重试、可审计的工作队列。多 profile 是为了专业分工。&lt;/p&gt;
&lt;p&gt;任务分配有三种精度档位：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;手动指派&lt;/strong&gt;：创建任务时显式指定 &lt;code&gt;--assignee &amp;lt;profile-name&amp;gt;&lt;/code&gt;，你完全控制谁做什么。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Orchestrator 自动分配&lt;/strong&gt;：Orchestrator agent 读取你的 profile 列表和描述，根据任务内容决定分配给哪个 profile。精度取决于 profile 描述的质量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auto-decomposer&lt;/strong&gt;：triage 任务进入后，系统使用辅助 LLM 读取 profile roster，自动拆解为子任务图并路由到最合适的专家。如果 LLM 选了一个不存在的 profile，任务会 fallback 到默认 assignee。&lt;/p&gt;
&lt;h2 id=&#34;两个入口同一个数据库&#34;&gt;两个入口，同一个数据库
&lt;/h2&gt;&lt;p&gt;Kanban 的设计有一个重要的架构选择：它有两套操作界面，但后端共享同一个 SQLite 数据库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 通过工具调用&lt;/strong&gt;：dispatcher spawn 每个 worker 时，自动在模型的 schema 中注入 &lt;code&gt;kanban_*&lt;/code&gt; toolset（&lt;code&gt;kanban_show&lt;/code&gt;、&lt;code&gt;kanban_complete&lt;/code&gt;、&lt;code&gt;kanban_block&lt;/code&gt; 等）。Worker 直接调用这些工具，不走命令行。这样做的好处是：无论 worker 的终端后端是本地、Docker 还是 SSH 远程，工具调用始终能访问到数据库；结构化 JSON 参数避免了 shell 引号问题；普通聊天会话零 schema 占用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人类通过 CLI 或斜杠命令&lt;/strong&gt;：&lt;code&gt;hermes kanban create/list/show/...&lt;/code&gt; 或在聊天平台中 &lt;code&gt;/kanban create/list/show/...&lt;/code&gt;。参数格式完全相同，两个入口的读写结果一致。&lt;/p&gt;
&lt;p&gt;此外还有一个 Dashboard GUI，提供拖拽式看板界面，支持内联创建、多选批量操作、依赖编辑、实时 WebSocket 更新。&lt;/p&gt;
&lt;h2 id=&#34;什么场景适合用-kanban&#34;&gt;什么场景适合用 Kanban
&lt;/h2&gt;&lt;p&gt;Kanban 的适用边界可以用一句话划清：&lt;strong&gt;当你需要的不只是一个答案，而是一条有状态、可中断、可追溯的工作流水线时，Kanban 才值得启动。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;三类任务是它的甜区：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需要多角色接力&lt;/strong&gt;：研究 → 分析 → 写作 → 审查这种多阶段管道，每个阶段需要不同的专业能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要人类中途介入&lt;/strong&gt;：翻译确认术语、调研调整方向、敏感操作需要审批&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要并行执行 + 结果汇总&lt;/strong&gt;：N 个同类 worker 同时跑不同子任务，完成后自动触发汇总&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;反过来说，简单问答、一次性小任务、纯自动化无人值守流水线，用 &lt;code&gt;delegate_task&lt;/code&gt; 或 cron 就够了，不需要 Kanban 的额外开销。&lt;/p&gt;
&lt;h2 id=&#34;与-delegate_task-的对比&#34;&gt;与 delegate_task 的对比
&lt;/h2&gt;&lt;p&gt;这两个能力看起来相似，但定位完全不同：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;delegate_task&lt;/th&gt;
          &lt;th&gt;Kanban&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;形状&lt;/td&gt;
          &lt;td&gt;函数调用（fork → join）&lt;/td&gt;
          &lt;td&gt;持久化消息队列 + 状态机&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;父子关系&lt;/td&gt;
          &lt;td&gt;阻塞等子返回&lt;/td&gt;
          &lt;td&gt;创建后 fire-and-forget&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;子代理身份&lt;/td&gt;
          &lt;td&gt;匿名子代理&lt;/td&gt;
          &lt;td&gt;带持久记忆的命名 profile&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;可恢复性&lt;/td&gt;
          &lt;td&gt;失败就失败&lt;/td&gt;
          &lt;td&gt;block → unblock → re-run；crash → reclaim&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人机交互&lt;/td&gt;
          &lt;td&gt;不支持&lt;/td&gt;
          &lt;td&gt;任何时候可以 comment / unblock&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;每任务 agent 数&lt;/td&gt;
          &lt;td&gt;一次调用 = 一个子代理&lt;/td&gt;
          &lt;td&gt;N 个 agent 跨任务生命周期&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;审计追踪&lt;/td&gt;
          &lt;td&gt;上下文压缩后丢失&lt;/td&gt;
          &lt;td&gt;永久保存在 SQLite 中&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话区分：&lt;code&gt;delegate_task&lt;/code&gt; 是函数调用；Kanban 是工作队列，每次交接都是任何 profile 或人类可见可编辑的行。&lt;/p&gt;
&lt;h2 id=&#34;快速上手&#34;&gt;快速上手
&lt;/h2&gt;&lt;p&gt;从聊天平台操作同样简单：&lt;code&gt;/kanban create &amp;quot;调研 AI Agent 框架生态&amp;quot; --assignee researcher&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Kanban 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban-tutorial&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Kanban Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent 浏览器工具的用户登录实现方案</title>
        <link>https://torchtree.com/post/hermes-browser-login-auth/</link>
        <pubDate>Wed, 15 Apr 2026 10:42:16 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-browser-login-auth/</guid>
        <description>&lt;p&gt;Hermes Agent 的浏览器工具将身份验证统一纳入常规的页面交互流程，并配合不同后端的状态持久化能力来完成登录态的保持。本文基于 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt; 源码的直接分析，梳理其在处理“需要登录才能访问的网站”时的五种具体操作方案。&lt;/p&gt;
&lt;h2 id=&#34;一交互式自动化登录通用方案&#34;&gt;一、交互式自动化登录（通用方案）
&lt;/h2&gt;&lt;p&gt;这是最基础的方案，适用于所有后端。Agent 通过标准的浏览器操作链模拟人类登录：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;browser_navigate(url)&lt;/code&gt; — 打开登录页&lt;/li&gt;
&lt;li&gt;&lt;code&gt;browser_type(ref, text)&lt;/code&gt; — 在用户名/密码输入框中填写内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;browser_click(ref)&lt;/code&gt; 或 &lt;code&gt;browser_press(&amp;quot;Enter&amp;quot;)&lt;/code&gt; — 点击登录按钮或提交表单&lt;/li&gt;
&lt;li&gt;&lt;code&gt;browser_snapshot()&lt;/code&gt; — 确认登录是否成功（页面跳转、出现个人中心等）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_tool.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_tool.py&lt;/code&gt;&lt;/a&gt; 的实现中，&lt;code&gt;browser_type&lt;/code&gt; 底层调用的是 &lt;code&gt;fill&lt;/code&gt; 命令，会先清空输入框再键入文本，避免残留旧内容。这种方式零配置、通用性强，但面对 CAPTCHA、2FA、二维码或强反 bot 检测时容易失败。&lt;/p&gt;
&lt;h2 id=&#34;二持久化浏览器-profile--cookie&#34;&gt;二、持久化浏览器 Profile / Cookie
&lt;/h2&gt;&lt;p&gt;对于需要反复访问的登录网站，Hermes 提供了跨任务保留登录态的能力，核心载体是 &lt;strong&gt;Camofox 后端&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;camofox-的-managed-persistence&#34;&gt;Camofox 的 Managed Persistence
&lt;/h3&gt;&lt;p&gt;当环境变量 &lt;code&gt;CAMOFOX_URL&lt;/code&gt; 指向本地 Camofox 服务器，并在 &lt;code&gt;config.yaml&lt;/code&gt; 中启用持久化：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_camofox_state.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_camofox_state.py&lt;/code&gt;&lt;/a&gt; 会根据当前 Hermes profile 生成一个**确定性的 **&lt;code&gt;**userId**&lt;/code&gt;，并映射到固定本地目录（&lt;code&gt;~/.hermes/browser_auth/camofox/&lt;/code&gt;）。Camofox 服务器收到相同 &lt;code&gt;userId&lt;/code&gt; 时会复用同一浏览器 profile，因此 cookies、localStorage、IndexedDB 等登录状态可以跨任务保留。&lt;/p&gt;
&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_tool.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_tool.py&lt;/code&gt;&lt;/a&gt; 的清理逻辑中，当 managed persistence 启用时，Agent 会执行 &lt;strong&gt;soft cleanup&lt;/strong&gt;——仅释放本地内存跟踪，不销毁服务端的浏览器上下文，从而确保 session cookies 得以保留。&lt;/p&gt;
&lt;h2 id=&#34;三javascript-注入程序化身份验证&#34;&gt;三、JavaScript 注入（程序化身份验证）
&lt;/h2&gt;&lt;p&gt;Hermes 的 &lt;code&gt;browser_console&lt;/code&gt; 工具支持传入 &lt;code&gt;expression&lt;/code&gt; 参数，在页面上下文中执行任意 JavaScript（相当于 DevTools Console）。这允许 Agent 直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取/设置 Cookie：&lt;code&gt;document.cookie = &amp;quot;session_id=xxx&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;操作 localStorage：&lt;code&gt;localStorage.setItem(&#39;token&#39;, &#39;xxx&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;注入 JWT 或 API Token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该能力在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_tool.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_tool.py&lt;/code&gt;&lt;/a&gt; 的 &lt;code&gt;_browser_eval&lt;/code&gt; 中实现，Camofox 后端也提供了对应的 &lt;code&gt;/tabs/{tabId}/eval&lt;/code&gt; REST 端点。适用于开发者已拥有用户 session token、需要跳过登录表单的场景。&lt;/p&gt;
&lt;h2 id=&#34;四人机协作登录&#34;&gt;四、人机协作登录
&lt;/h2&gt;&lt;p&gt;当遇到强反 bot、CAPTCHA、二维码登录或 SSO 时，Hermes 提供了两种人机协作路径，但二者的交互形态差异很大。&lt;/p&gt;
&lt;h3 id=&#34;41-camofox--vnc实时可操作浏览器窗口&#34;&gt;4.1 Camofox + VNC：实时可操作浏览器窗口
&lt;/h3&gt;&lt;p&gt;这是代码中&lt;strong&gt;唯一&lt;/strong&gt;为人类用户提供了可直接点击、输入、扫码的浏览器界面的方案。&lt;/p&gt;
&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_camofox.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_camofox.py&lt;/code&gt;&lt;/a&gt; 中，初始化时会探测 Camofox 服务器的 &lt;code&gt;/health&lt;/code&gt; 端点。如果服务器返回 &lt;code&gt;vncPort&lt;/code&gt;，Hermes 会将其缓存为 &lt;code&gt;_vnc_url&lt;/code&gt;，并在每次 &lt;code&gt;camofox_navigate()&lt;/code&gt; 调用后把该地址写入返回结果：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人类用户看到的界面&lt;/strong&gt;：在自己的浏览器中打开 &lt;code&gt;vnc_url&lt;/code&gt;，通常是一个 &lt;strong&gt;noVNC Web 客户端&lt;/strong&gt;，显示远程桌面级别的浏览器窗口。用户可以直接点击按钮、填写表单、扫描二维码、拖动滑块完成 CAPTCHA，也可以观看 Agent 的自动化操作并随时接管。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;协作流程&lt;/strong&gt;：Agent 检测到登录或验证受阻后，会将 &lt;code&gt;vnc_url&lt;/code&gt; 发送给用户，随后停止发送浏览器操作指令，等待用户反馈“已完成登录/验证”，再继续后续自动化。如果同时启用了 &lt;code&gt;managed_persistence&lt;/code&gt;，用户通过 VNC 登录一次后，后续任务可直接复用该登录态。&lt;/p&gt;
&lt;h3 id=&#34;42-browser_vision截图回传的静态辅助&#34;&gt;4.2 &lt;code&gt;browser_vision&lt;/code&gt;：截图回传的静态辅助
&lt;/h3&gt;&lt;p&gt;这是所有后端都可使用的通用方案，但它是&lt;strong&gt;单向的&lt;/strong&gt;。Agent 调用 &lt;code&gt;browser_vision&lt;/code&gt; 后，会将当前页面截图保存到本地，并通过 &lt;code&gt;MEDIA:&amp;lt;path&amp;gt;&lt;/code&gt; 以图片附件形式发到聊天对话中。&lt;/p&gt;
&lt;p&gt;用户&lt;strong&gt;只能看、不能点&lt;/strong&gt;。典型 workflow 是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agent 操作到验证页，发现被拦截&lt;/li&gt;
&lt;li&gt;Agent 截图并回传，用户看到例如短信验证码输入框&lt;/li&gt;
&lt;li&gt;Agent 通过对话询问用户验证码&lt;/li&gt;
&lt;li&gt;用户回复数字，Agent 继续用 &lt;code&gt;browser_type&lt;/code&gt; 填入&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;该方案对需要人类直接操作网页元素的场景（如点击“我不是机器人”复选框、拖动拼图、扫码登录）基本无效。&lt;/p&gt;
&lt;h2 id=&#34;五连接已登录的现有浏览器cdp-override&#34;&gt;五、连接已登录的现有浏览器（CDP Override）
&lt;/h2&gt;&lt;p&gt;Hermes 支持通过 &lt;code&gt;BROWSER_CDP_URL&lt;/code&gt; 环境变量连接到一个现有的 Chrome DevTools Protocol (CDP) 端点。用户可以：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在本地启动一个普通 Chrome（带 &lt;code&gt;--remote-debugging-port&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;手动登录目标网站&lt;/li&gt;
&lt;li&gt;将 Chrome 的 CDP websocket 地址交给 Hermes&lt;/li&gt;
&lt;li&gt;Agent 直接在该已登录的浏览器实例中执行操作&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nousresearch/hermes-agent/blob/main/tools/browser_tool.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tools/browser_tool.py&lt;/code&gt;&lt;/a&gt; 中，&lt;code&gt;_get_cdp_override()&lt;/code&gt; 会读取该环境变量，&lt;code&gt;_get_session_info()&lt;/code&gt; 则会创建对应的 CDP session，完全绕过本地启动和云 provider。&lt;/p&gt;
&lt;h2 id=&#34;六安全与防护&#34;&gt;六、安全与防护
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;browser_navigate&lt;/code&gt; 的实现中，有一道针对凭据外泄的安全检查。Agent 会解码 URL 并扫描其中是否包含 API key 或 token 前缀，一旦发现即阻断导航：&lt;/p&gt;
&lt;p&gt;这防止了 prompt injection 攻击通过导航链接将用户的敏感凭证外泄。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;实现方式&lt;/th&gt;
          &lt;th&gt;最佳适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;自动化表单登录&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;navigate&lt;!-- raw HTML omitted --&gt; → &lt;!-- raw HTML omitted --&gt;type&lt;!-- raw HTML omitted --&gt; → &lt;!-- raw HTML omitted --&gt;click&lt;!-- raw HTML omitted --&gt;/&lt;!-- raw HTML omitted --&gt;press&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;普通用户名密码登录，无强反 bot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;持久化 Profile/Cookie&lt;/td&gt;
          &lt;td&gt;Camofox &lt;!-- raw HTML omitted --&gt;managed_persistence&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;需要长期、反复访问同一网站&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;JS 注入 Token/Cookie&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;browser_console(expression=&amp;hellip;)&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;已有 session token，需快速跳过登录&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人机协作（VNC 实时）&lt;/td&gt;
          &lt;td&gt;Camofox 后端 + &lt;!-- raw HTML omitted --&gt;vnc_url&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;CAPTCHA、二维码、SSO 等复杂验证&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人机协作（截图辅助）&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;browser_vision&lt;!-- raw HTML omitted --&gt; + 对话回传&lt;/td&gt;
          &lt;td&gt;验证码回传等轻协作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;连接已登录浏览器&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;BROWSER_CDP_URL&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;用户已有登录环境，Agent 仅做后续操作&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;整体而言，Hermes 的登录策略 = &lt;strong&gt;交互式表单填写&lt;/strong&gt; + &lt;strong&gt;后端状态保持&lt;/strong&gt; + &lt;strong&gt;人机协作兜底&lt;/strong&gt;。在默认的本地 &lt;code&gt;agent-browser&lt;/code&gt; CLI 后端和云端 Browserbase / Browser Use 后端中，代码层面并未为人类预留可直接操作的浏览器界面；若需真正的实时人机协作，&lt;strong&gt;Camofox + VNC&lt;/strong&gt; 是目前代码中最完整的实现路径。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent Docker 容器化运行完全指南</title>
        <link>https://torchtree.com/post/hermes-agent-docker-guide/</link>
        <pubDate>Mon, 13 Apr 2026 15:39:21 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-agent-docker-guide/</guid>
        <description>&lt;h2 id=&#34;两种-docker-交互方式&#34;&gt;两种 Docker 交互方式
&lt;/h2&gt;&lt;p&gt;Hermes Agent 与 Docker 的交互存在两种不同模式，官方文档对此有明确区分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;在 Docker 中运行 Hermes&lt;/strong&gt;（本文重点）：Agent 本身运行在容器内部，所有用户数据通过挂载卷持久化到宿主机。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker 作为终端后端&lt;/strong&gt;：Agent 运行在宿主机，但具体命令执行在 Docker 沙箱中完成。该模式需通过 &lt;code&gt;terminal.backend&lt;/code&gt; 配置启用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下讨论均围绕第一种模式展开。&lt;/p&gt;
&lt;h2 id=&#34;快速开始三种运行方式&#34;&gt;快速开始：三种运行方式
&lt;/h2&gt;&lt;h3 id=&#34;1-首次初始化setup-向导&#34;&gt;1. 首次初始化（setup 向导）
&lt;/h3&gt;&lt;p&gt;该命令启动交互式安装向导，将 API 密钥写入 &lt;code&gt;~/.hermes/.env&lt;/code&gt;。此步骤只需执行一次。&lt;/p&gt;
&lt;h3 id=&#34;2-gateway-模式后台常驻&#34;&gt;2. Gateway 模式（后台常驻）
&lt;/h3&gt;&lt;p&gt;适用于 Telegram、Discord、Slack、WhatsApp 等消息平台的长期接入。&lt;/p&gt;
&lt;h3 id=&#34;3-交互式-cli-模式&#34;&gt;3. 交互式 CLI 模式
&lt;/h3&gt;&lt;p&gt;用于临时开启一个聊天会话。&lt;/p&gt;
&lt;h3 id=&#34;持久化数据目录结构&#34;&gt;持久化数据目录结构
&lt;/h3&gt;&lt;p&gt;容器内 &lt;code&gt;/opt/data&lt;/code&gt; 映射到宿主机 &lt;code&gt;~/.hermes/&lt;/code&gt;，是 Hermes 所有状态的单一真相源，包含：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;内容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;.env&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;API 密钥与秘密&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;config.yaml&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;所有 Hermes 配置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;SOUL.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Agent 人格/身份定义&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;sessions/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;对话历史&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;memories/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;持久化记忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;skills/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;已安装技能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;cron/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;定时任务定义&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;hooks/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;事件钩子&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;logs/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;运行时日志&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;skins/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;自定义 CLI 皮肤&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;容器化运行-vs-宿主机直接运行&#34;&gt;容器化运行 vs 宿主机直接运行
&lt;/h2&gt;&lt;h3 id=&#34;容器化的主要优势&#34;&gt;容器化的主要优势
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;优势&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;环境一致性&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;官方镜像已预装 Python、Node.js、Playwright + Chromium、ripgrep、ffmpeg、WhatsApp bridge 等全部依赖，宿主机运行则需手动配置虚拟环境与浏览器。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;依赖隔离&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Hermes 的 Node 版本、Playwright 浏览器二进制等不会与宿主机其他项目冲突。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;无状态升级&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;镜像本身无状态，所有数据保存在挂载目录。升级时只需 &lt;!-- raw HTML omitted --&gt;docker pull&lt;!-- raw HTML omitted --&gt; 新镜像即可，不丢失配置。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;资源可控&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;可通过 &lt;!-- raw HTML omitted --&gt;&amp;ndash;memory&lt;!-- raw HTML omitted --&gt;、&lt;!-- raw HTML omitted --&gt;&amp;ndash;cpus&lt;!-- raw HTML omitted --&gt; 明确限制容器资源，防止浏览器自动化或长任务耗尽宿主机资源。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;可移植性&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;备份 &lt;!-- raw HTML omitted --&gt;~/.hermes&lt;!-- raw HTML omitted --&gt; 目录后，可在任意机器上通过相同挂载命令快速恢复完整环境。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;适合长期驻留&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;docker run -d &amp;ndash;restart unless-stopped&lt;!-- raw HTML omitted --&gt; 非常适合将 Hermes 作为后台 Gateway 服务运行。&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;容器化的主要劣势&#34;&gt;容器化的主要劣势
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;劣势&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;并发限制&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;官方文档明确禁止两个容器同时挂载同一数据目录。宿主机单进程运行天然不存在此问题。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;权限问题&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;容器默认以 &lt;!-- raw HTML omitted --&gt;root&lt;!-- raw HTML omitted --&gt; 启动，写入 &lt;!-- raw HTML omitted --&gt;~/.hermes&lt;!-- raw HTML omitted --&gt; 的文件在宿主机可能归属 root，导致后续宿主机直接运行时遇到权限错误。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;浏览器工具需额外配置&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Playwright/Chromium 在容器内需要共享内存，必须添加 &lt;!-- raw HTML omitted --&gt;&amp;ndash;shm-size=1g&lt;!-- raw HTML omitted --&gt;，否则可能崩溃。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;镜像体积较大&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;基于 Debian 且包含完整浏览器引擎，镜像比纯 Python 环境大得多。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;调试多一层&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;查看日志、修改代码、运行测试均需通过 &lt;!-- raw HTML omitted --&gt;docker exec&lt;!-- raw HTML omitted --&gt; 或 &lt;!-- raw HTML omitted --&gt;docker logs&lt;!-- raw HTML omitted --&gt; 操作，不如宿主机开发直接。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;排查成本&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;若 &lt;!-- raw HTML omitted --&gt;.env&lt;!-- raw HTML omitted --&gt; 缺失或配置错误，容器会立即退出，新手需要查看 &lt;!-- raw HTML omitted --&gt;docker logs&lt;!-- raw HTML omitted --&gt; 才能定位；宿主机交互运行则能直接看到报错输出。&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;选择建议&#34;&gt;选择建议
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优先选 Docker&lt;/strong&gt;：追求开箱即用、快速部署、长期后台运行 Gateway，或宿主机环境复杂不愿手动配置依赖的场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先选宿主机&lt;/strong&gt;：需要频繁开发调试、对文件权限敏感、重度使用浏览器自动化且希望最小化资源开销的场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若计划混用（Docker 跑 Gateway + 宿主机 CLI 调试），需特别注意容器生成的文件权限问题。&lt;/p&gt;
&lt;h2 id=&#34;两个关键实践问题&#34;&gt;两个关键实践问题
&lt;/h2&gt;&lt;h3 id=&#34;1-gateway-前台运行时如何执行其他子命令&#34;&gt;1. Gateway 前台运行时如何执行其他子命令？
&lt;/h3&gt;&lt;p&gt;容器启动命令 &lt;code&gt;hermes gateway run&lt;/code&gt; 为前台进程。执行其他子命令有两种方式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式 A：对运行中的容器执行 &lt;strong&gt;&lt;code&gt;**docker exec**&lt;/code&gt;&lt;/strong&gt;（推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式 B：启动一次性临时容器&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-容器化环境下-profiles-是否可用&#34;&gt;2. 容器化环境下 Profiles 是否可用？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;可用，但需要显式指定 &lt;strong&gt;&lt;code&gt;**HERMES_HOME**&lt;/code&gt;&lt;/strong&gt; 环境变量。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从 &lt;code&gt;hermes_constants.py&lt;/code&gt; 源码可以看出，Hermes 已明确处理 Docker 场景下的 profile 路径识别：当 &lt;code&gt;HERMES_HOME&lt;/code&gt; 指向 &lt;code&gt;&amp;lt;root&amp;gt;/profiles/&amp;lt;name&amp;gt;&lt;/code&gt; 时，系统能正确解析其根目录。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用示例&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;只要 &lt;code&gt;-v ~/.hermes:/opt/data&lt;/code&gt; 挂载正确，profile 数据就会在宿主机持久化。entrypoint.sh 还会自动创建 &lt;code&gt;home/&lt;/code&gt; 子目录，使 git、ssh、npm 等子进程的配置也能落入持久卷中。&lt;/p&gt;
&lt;p&gt;若未显式指定 &lt;code&gt;HERMES_HOME&lt;/code&gt;，则默认使用 &lt;code&gt;/opt/data&lt;/code&gt;，等价于宿主机直接运行 &lt;code&gt;hermes&lt;/code&gt;（不带 &lt;code&gt;-p&lt;/code&gt; 参数）的默认 profile 模式。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Hermes Agent 的 Docker 容器化部署通过单一挂载卷实现了配置与镜像的解耦，既保留了无状态升级的优势，又确保了数据的持久化。对于希望将 Hermes 作为长期后台 Gateway 的用户，Docker 是最省心的方案。&lt;/p&gt;
&lt;p&gt;但在实际使用中需要注意三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;严禁同一数据目录并发挂载多个容器&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;子命令优先通过 &lt;strong&gt;&lt;code&gt;**docker exec**&lt;/code&gt;&lt;/strong&gt; 执行&lt;/strong&gt;，避免启动冲突容器；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profiles 在 Docker 中完全支持&lt;/strong&gt;，核心操作是通过 &lt;code&gt;-e HERMES_HOME=/opt/data/profiles/&amp;lt;name&amp;gt;&lt;/code&gt; 显式指定路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你还在宿主机与容器化之间犹豫，可以先通过 Docker 完成 setup 向导并试用 Gateway 模式，确认稳定后再决定是否长期采用。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent Discord 配置与会话隔离完全指南</title>
        <link>https://torchtree.com/post/hermes-agent-discord-setup-session-isolation/</link>
        <pubDate>Mon, 13 Apr 2026 10:12:01 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-agent-discord-setup-session-isolation/</guid>
        <description>&lt;p&gt;Hermes Agent 作为功能完备的 AI 助手平台，支持通过 Discord Bot 形式接入服务器。本文基于实际部署经验，系统梳理从 Bot 创建到会话隔离配置的完整流程，并解答部署过程中可能遇到的典型问题。&lt;/p&gt;
&lt;h2 id=&#34;一discord-bot-创建与基础配置&#34;&gt;一、Discord Bot 创建与基础配置
&lt;/h2&gt;&lt;h3 id=&#34;1-创建-discord-application&#34;&gt;1. 创建 Discord Application
&lt;/h3&gt;&lt;p&gt;访问 &lt;a class=&#34;link&#34; href=&#34;https://discord.com/developers/applications&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord Developer Portal&lt;/a&gt;，点击 &lt;strong&gt;New Application&lt;/strong&gt;，填写应用名称后进入管理界面。在 General Information 页面记录 &lt;strong&gt;Application ID&lt;/strong&gt;，后续生成邀请链接时需要用到。&lt;/p&gt;
&lt;h3 id=&#34;2-配置-bot-与关键权限&#34;&gt;2. 配置 Bot 与关键权限
&lt;/h3&gt;&lt;p&gt;进入左侧 &lt;strong&gt;Bot&lt;/strong&gt; 标签页，此处需要完成三项关键设置：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bot 身份设置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Public Bot：建议保持 ON，以便使用 Discord 提供的标准邀请链接&lt;/li&gt;
&lt;li&gt;可在此页面上传 Bot 头像和横幅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Token 获取&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;点击 Reset Token 生成 Bot Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;该 Token 仅显示一次&lt;/strong&gt;，务必妥善保存，后续写入 Hermes 的 &lt;code&gt;.env&lt;/code&gt; 文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Privileged Gateway Intents（关键步骤）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;页面下方找到 Privileged Gateway Intents 区域，&lt;strong&gt;必须开启以下两项&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Intent&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;是否必须&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Server Members Intent&lt;/td&gt;
          &lt;td&gt;访问成员列表、解析用户名&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Message Content Intent&lt;/td&gt;
          &lt;td&gt;读取消息文本内容&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;是&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：Message Content Intent 是 Bot 能够正常响应的前提。若未开启，Bot 虽能在线并接收事件，但无法获取消息文字内容，表现为&amp;quot;在线但不回复&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;3-生成邀请链接并授权&#34;&gt;3. 生成邀请链接并授权
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方式一：Installation 标签页（推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左侧进入 Installation → 开启 Guild Install&lt;/li&gt;
&lt;li&gt;Install Link 选择 Discord Provided Link&lt;/li&gt;
&lt;li&gt;Scopes 勾选 &lt;code&gt;bot&lt;/code&gt; 和 &lt;code&gt;applications.commands&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Permissions 选择：View Channels、Send Messages、Read Message History、Embed Links、Attach Files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方式二：手动构造 URL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将 YOUR_APP_ID 替换为 Application ID，访问该链接选择服务器完成授权。&lt;/p&gt;
&lt;h2 id=&#34;二hermes-环境配置&#34;&gt;二、Hermes 环境配置
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;~/.hermes/.env&lt;/code&gt; 文件中添加：&lt;/p&gt;
&lt;p&gt;获取 User ID 的方式：Discord 设置 → Advanced → 开启 Developer Mode，右键点击自己的用户名选择 Copy User ID。&lt;/p&gt;
&lt;p&gt;启动 Gateway：&lt;/p&gt;
&lt;p&gt;可选环境变量：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;变量&lt;/th&gt;
          &lt;th&gt;默认值&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_REQUIRE_MENTION&lt;/td&gt;
          &lt;td&gt;true&lt;/td&gt;
          &lt;td&gt;频道中是否需要 @Bot 才响应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_AUTO_THREAD&lt;/td&gt;
          &lt;td&gt;true&lt;/td&gt;
          &lt;td&gt;@mention 时自动创建 Thread（推荐保持开启）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_FREE_RESPONSE_CHANNELS&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;无需 @mention 即可响应的频道 ID&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_IGNORED_CHANNELS&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;Bot 完全不理会的频道黑名单&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三会话隔离机制详解&#34;&gt;三、会话隔离机制详解
&lt;/h2&gt;&lt;p&gt;Hermes 通过 &lt;code&gt;session_key&lt;/code&gt; 区分不同会话，Discord 场景下的默认行为如下：&lt;/p&gt;
&lt;h3 id=&#34;1-dm私聊-天然隔离&#34;&gt;1. DM（私聊）— 天然隔离
&lt;/h3&gt;&lt;p&gt;每个 DM 对话拥有独立的 &lt;code&gt;session_key&lt;/code&gt;，无需 @mention，所有消息自动归入同一会话。&lt;/p&gt;
&lt;h3 id=&#34;2-服务器频道--默认按用户隔离&#34;&gt;2. 服务器频道 — 默认按用户隔离
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;config.yaml&lt;/code&gt; 中的全局设置控制此行为：&lt;/p&gt;
&lt;p&gt;当该值为 &lt;code&gt;true&lt;/code&gt; 时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alice 在 #research 频道 @Bot，Bot 为她维护独立会话&lt;/li&gt;
&lt;li&gt;Bob 在同一频道 @Bot，Bot 为他维护&lt;strong&gt;完全不同的独立会话&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;两人互不共享上下文、Token 消耗、运行状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若设为 &lt;code&gt;false&lt;/code&gt;，整个频道共享一个会话。&lt;/p&gt;
&lt;h3 id=&#34;3-thread子区线程-核心隔离手段&#34;&gt;3. Thread（子区/线程）— 核心隔离手段
&lt;/h3&gt;&lt;p&gt;Discord Thread 是 Hermes 实现会话隔离的关键机制：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thread 与父频道隔离&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thread 的 &lt;code&gt;session_key&lt;/code&gt; 包含 &lt;code&gt;thread_id&lt;/code&gt;，因此 Thread 内对话与父频道完全隔离&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Thread 内默认共享&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;thread_sessions_per_user&lt;/code&gt; 默认为 &lt;code&gt;false&lt;/code&gt;，同一 Thread 内的所有用户共享一个会话（适合协作场景）&lt;/li&gt;
&lt;li&gt;若需 Thread 内也按用户隔离，设置 &lt;code&gt;thread_sessions_per_user: true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动创建 Thread（强烈推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DISCORD_AUTO_THREAD&lt;/code&gt; 默认为 &lt;code&gt;true&lt;/code&gt;，其工作机制：&lt;/p&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次 @mention = 一个新的 Thread = 一个全新的隔离会话&lt;/li&gt;
&lt;li&gt;Thread 内后续回复无需再次 @mention&lt;/li&gt;
&lt;li&gt;不同任务天然处于不同会话，完全避免上下文污染&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;四问题排查频道-mention-无响应&#34;&gt;四、问题排查：频道 @mention 无响应
&lt;/h2&gt;&lt;p&gt;若 DM 可正常工作但频道 @mention 无响应，按以下顺序排查：&lt;/p&gt;
&lt;h3 id=&#34;1-检查-message-content-intent最常见原因&#34;&gt;1. 检查 Message Content Intent（最常见原因）
&lt;/h3&gt;&lt;p&gt;进入 Discord Developer Portal → 你的 Application → Bot → Privileged Gateway Intents，确认 &lt;strong&gt;Message Content Intent 已开启&lt;/strong&gt;，点击 Save Changes。&lt;/p&gt;
&lt;h3 id=&#34;2-检查-bot-频道权限&#34;&gt;2. 检查 Bot 频道权限
&lt;/h3&gt;&lt;p&gt;在 Discord 中，右键频道 → Edit Channel → Permissions，确认 Bot 角色拥有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View Channels&lt;/li&gt;
&lt;li&gt;Read Message History&lt;/li&gt;
&lt;li&gt;Send Messages&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-检查环境配置&#34;&gt;3. 检查环境配置
&lt;/h3&gt;&lt;h3 id=&#34;4-终极解决方案重新授权&#34;&gt;4. 终极解决方案：重新授权
&lt;/h3&gt;&lt;p&gt;若确认以上设置均正确但仍无法响应，尝试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将 Bot 踢出服务器&lt;/li&gt;
&lt;li&gt;使用新的邀请链接重新授权（确保权限整数包含所需权限）&lt;/li&gt;
&lt;li&gt;重新启动 hermes gateway&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;实际部署经验表明，重新授权往往能解决问题，可能是 Discord 端权限缓存未刷新导致。&lt;/p&gt;
&lt;h2 id=&#34;五最佳实践配置&#34;&gt;五、最佳实践配置
&lt;/h2&gt;&lt;p&gt;推荐配置实现&lt;strong&gt;最大化隔离&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;~/.hermes/.env&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;~/.hermes/config.yaml&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;此配置下的交互体验：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 #general @Bot &amp;ldquo;帮我写 Python 脚本&amp;rdquo; → Bot 自动创建 Thread A，任务在隔离环境运行&lt;/li&gt;
&lt;li&gt;再次 @Bot &amp;ldquo;分析这份文档&amp;rdquo; → Bot 创建 Thread B，又是一个全新会话&lt;/li&gt;
&lt;li&gt;同事也在 #general @Bot → 获得独立的 Thread C，互不干扰&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六会话管理命令&#34;&gt;六、会话管理命令
&lt;/h2&gt;&lt;p&gt;在任意对话中可使用以下命令：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/reset&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;重置当前会话，开启全新空会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/title 任务名称&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;为当前会话命名，便于后续查找&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/sethome&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;将当前频道设为 Home Channel，用于接收定时任务输出&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;隔离层级&lt;/th&gt;
          &lt;th&gt;默认行为&lt;/th&gt;
          &lt;th&gt;控制方式&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DM vs 频道&lt;/td&gt;
          &lt;td&gt;完全隔离&lt;/td&gt;
          &lt;td&gt;天然&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;不同用户同频道&lt;/td&gt;
          &lt;td&gt;按用户隔离&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;group_sessions_per_user: true&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;不同 Thread&lt;/td&gt;
          &lt;td&gt;完全隔离&lt;/td&gt;
          &lt;td&gt;天然（&lt;!-- raw HTML omitted --&gt;thread_id&lt;!-- raw HTML omitted --&gt; 参与 session key）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;同 Thread 不同用户&lt;/td&gt;
          &lt;td&gt;共享会话&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;thread_sessions_per_user: true&lt;!-- raw HTML omitted --&gt; 可开启隔离&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;同用户同频道不同任务&lt;/td&gt;
          &lt;td&gt;共享会话&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;依靠 &lt;!-- raw HTML omitted --&gt;DISCORD_AUTO_THREAD=true&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt; 自动开 Thread&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;保持 &lt;code&gt;DISCORD_AUTO_THREAD=true&lt;/code&gt;（默认开启）是最简单有效的防污染手段，让每次 @mention 都落入全新 Thread 会话中，从根本上避免同一频道内多任务互相干扰。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes 微信集成：认证机制、配置字段与接入流程</title>
        <link>https://torchtree.com/post/hermes-weixin-integration/</link>
        <pubDate>Sat, 11 Apr 2026 13:18:51 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-weixin-integration/</guid>
        <description>&lt;p&gt;Hermes Agent 近期新增了微信（WeChat）渠道集成支持。本文梳理其认证机制、配置字段、接入流程及主要约束，供需要将 Hermes 接入微信的用户参考。&lt;/p&gt;
&lt;h2 id=&#34;认证机制&#34;&gt;认证机制
&lt;/h2&gt;&lt;p&gt;微信集成采用 &lt;strong&gt;iLink Bot API&lt;/strong&gt; 的二维码扫码登录方式，无需 Webhook，通过长轮询（Long Polling）接收消息。认证流程在本地完成，凭据自动保存到 &lt;code&gt;~/.hermes/weixin/accounts/&lt;/code&gt;，后续无需重复扫码。&lt;/p&gt;
&lt;h2 id=&#34;配置字段&#34;&gt;配置字段
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;WEIXIN_ACCOUNT_ID&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;iLink Bot 账号 ID，扫码登录后自动获取&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;WEIXIN_TOKEN&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;iLink Bot 鉴权 token&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;WEIXIN_BASE_URL&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;API 端点，留空使用 iLink 默认服务地址&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;WEIXIN_DM_POLICY&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;私聊策略，见下方说明&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;WEIXIN_GROUP_POLICY&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
          &lt;td&gt;群消息策略，见下方说明&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;访问策略&#34;&gt;访问策略
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;私聊（DM）策略&lt;/strong&gt;（&lt;code&gt;WEIXIN_DM_POLICY&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;open&lt;/code&gt;：接受任何人的私聊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;allowlist&lt;/code&gt;：仅接受白名单用户&lt;/li&gt;
&lt;li&gt;&lt;code&gt;disabled&lt;/code&gt;：关闭私聊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pairing&lt;/code&gt;：需要配对确认&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;群消息策略&lt;/strong&gt;（&lt;code&gt;WEIXIN_GROUP_POLICY&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;open&lt;/code&gt;：接受所有群的消息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;allowlist&lt;/code&gt;：仅接受白名单群&lt;/li&gt;
&lt;li&gt;&lt;code&gt;disabled&lt;/code&gt;：关闭群消息（个人账号默认值）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;接入流程&#34;&gt;接入流程
&lt;/h2&gt;&lt;p&gt;执行后选择 Weixin，按提示用微信手机 App 扫描终端中显示的二维码，在手机上确认登录。凭据由 hermes 自动保存，无需手动配置 token 字段。&lt;/p&gt;
&lt;h2 id=&#34;媒体能力&#34;&gt;媒体能力
&lt;/h2&gt;&lt;p&gt;适配器原生支持图片、视频、文件和语音消息。CDN 传输使用 AES-128-ECB 加密/解密，由 hermes 在内部处理，对使用方透明。&lt;/p&gt;
&lt;h2 id=&#34;主要约束&#34;&gt;主要约束
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;单实例限制&lt;/strong&gt;：同一个 token 在同一时刻只能被一个 hermes 实例使用。多实例接入需要对应多个独立账号。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;群消息默认关闭&lt;/strong&gt;：个人微信账号的 &lt;code&gt;WEIXIN_GROUP_POLICY&lt;/code&gt; 默认值为 &lt;code&gt;disabled&lt;/code&gt;，需要显式设置才能接收群消息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;消息自动分段&lt;/strong&gt;：超过 4000 字的回复会按语义边界自动拆分发送。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;去重窗口&lt;/strong&gt;：5 分钟内的重复消息会被过滤，防止重复处理。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes 自定义 AI Provider 配置方法梳理</title>
        <link>https://torchtree.com/post/hermes-custom-ai-provider-setup/</link>
        <pubDate>Sat, 11 Apr 2026 03:56:24 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-custom-ai-provider-setup/</guid>
        <description>&lt;p&gt;本文整理自社区实践与底层源码 review，旨在客观呈现 Hermes 中自定义 AI Provider 的安全配置路径，并标注用户经验与代码实现之间的差异和补充说明。&lt;/p&gt;
&lt;h2 id=&#34;用户实践中的配置流程&#34;&gt;用户实践中的配置流程
&lt;/h2&gt;&lt;p&gt;以下步骤来源于 Herald 的实际操作经验，描述了他总结的“安全添加第三方自定义 AI Provider”的完整流程。&lt;/p&gt;
&lt;h3 id=&#34;第一步准备-provider-基本信息&#34;&gt;第一步：准备 Provider 基本信息
&lt;/h3&gt;&lt;p&gt;在开始前，需要确认以下信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;base url&lt;/strong&gt;：API 端点地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api key&lt;/strong&gt;：访问密钥&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;model name&lt;/strong&gt;：模型名称&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二步交互式添加-custom-provider&#34;&gt;第二步：交互式添加 custom provider
&lt;/h3&gt;&lt;p&gt;通过 &lt;code&gt;hermes model&lt;/code&gt; 命令进入交互式向导：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;填写 &lt;strong&gt;base url&lt;/strong&gt; 和 &lt;strong&gt;模型名&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api key 留空&lt;/strong&gt;（该字段为选填项）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文尺寸&lt;/strong&gt;知道可填，不知道可留空&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第三步修改配置文件中的-provider-名称&#34;&gt;第三步：修改配置文件中的 provider 名称
&lt;/h3&gt;&lt;p&gt;交互添加后，默认会以 base url 命名 provider。用户可手动修改 &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;，将名称改为更具可读性的形式。例如：&lt;/p&gt;
&lt;h3 id=&#34;第四步通过-credential-pool-添加-api-key&#34;&gt;第四步：通过 credential pool 添加 api key
&lt;/h3&gt;&lt;p&gt;执行以下命令为自定义 provider 添加密钥：&lt;/p&gt;
&lt;p&gt;底层实现中，该命令会将密钥写入独立的 credential pool 存储，而不会落入 &lt;code&gt;config.yaml&lt;/code&gt;。这样可避免配置文件中的密钥明文泄漏风险。&lt;/p&gt;
&lt;h3 id=&#34;第五步重启-gateway&#34;&gt;第五步：重启 gateway
&lt;/h3&gt;&lt;p&gt;配置和密钥添加完成后，&lt;strong&gt;重启 gateway&lt;/strong&gt; 即可生效。&lt;/p&gt;
&lt;h2 id=&#34;底层源码视角的补充与修正&#34;&gt;底层源码视角的补充与修正
&lt;/h2&gt;&lt;p&gt;以下分析基于对 Hermes 底层代码的直接阅读，对前述流程进行验证和补充。&lt;/p&gt;
&lt;h3 id=&#34;1-custom_providers-名称解析的灵活性&#34;&gt;1. &lt;code&gt;custom_providers&lt;/code&gt; 名称解析的灵活性
&lt;/h3&gt;&lt;p&gt;代码层面，&lt;code&gt;model.provider&lt;/code&gt; 支持两种写法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;custom:kimi-plan&lt;/code&gt;：带 &lt;code&gt;custom:&lt;/code&gt; 前缀的 slug，可直接定位 &lt;code&gt;custom_providers&lt;/code&gt; 中的对应条目&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom&lt;/code&gt;：传统写法，此时依赖 &lt;code&gt;base_url&lt;/code&gt; 来匹配 &lt;code&gt;custom_providers&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户示例中的 &lt;code&gt;provider: custom:kimi-plan&lt;/code&gt; 是完全符合底层预期的写法。底层在解析时大小写不敏感，且会自动将空格替换为 &lt;code&gt;-&lt;/code&gt;，因此命名容错空间较大。&lt;/p&gt;
&lt;h3 id=&#34;2-上下文尺寸自动探测的完整链路&#34;&gt;2. 上下文尺寸自动探测的完整链路
&lt;/h3&gt;&lt;p&gt;用户提到“不知道可以留空让程序自动探测”，这一点底层确实有完整支持，但探测逻辑有明确的优先级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;custom_providers&lt;/code&gt; 中 &lt;code&gt;models.&amp;lt;model&amp;gt;.context_length&lt;/code&gt; 的手写配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地缓存&lt;/strong&gt; &lt;code&gt;~/.hermes/context_length_cache.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;models.dev / OpenRouter 元数据缓存&lt;/strong&gt;（当 base_url 属于已知 provider 时，如 &lt;code&gt;api.kimi.com&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;直接探测端点&lt;/strong&gt; &lt;code&gt;/models&lt;/code&gt;（对 local / ollama / vLLM / LM Studio 等特别有效）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文递减探测&lt;/strong&gt;（从 128K 逐步向下尝试，直到 API 不返回上下文超限错误）&lt;/li&gt;
&lt;li&gt;最终 fallback 到 &lt;strong&gt;128K&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，留空自动探测&lt;strong&gt;对标准 OpenAI-compatible 端点通常有效&lt;/strong&gt;；若端点 &lt;code&gt;/models&lt;/code&gt; 返回格式不标准或未包含 &lt;code&gt;context_length&lt;/code&gt;，则可能退回到 128K 默认值。&lt;/p&gt;
&lt;h3 id=&#34;3-hermes-auth-add-的密钥存储机制&#34;&gt;3. &lt;code&gt;hermes auth add&lt;/code&gt; 的密钥存储机制
&lt;/h3&gt;&lt;p&gt;底层代码路径为 &lt;code&gt;agent/credential_pool.py&lt;/code&gt; 和 &lt;code&gt;hermes_cli/auth_commands.py&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_normalize_provider(&amp;quot;kimi-plan&amp;quot;)&lt;/code&gt; 发现匹配 &lt;code&gt;custom_providers&lt;/code&gt; 中的名称后，将其规范化为 &lt;code&gt;custom:kimi-plan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;生成 &lt;code&gt;PooledCredential&lt;/code&gt; 条目，写入 credential pool 持久化存储&lt;/li&gt;
&lt;li&gt;运行时，&lt;code&gt;runtime_provider.py&lt;/code&gt; 的 &lt;code&gt;_try_resolve_from_custom_pool()&lt;/code&gt; 会优先从 pool 读取密钥&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API key &lt;strong&gt;不会进入&lt;/strong&gt; &lt;em&gt;config.yaml&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;该机制天然支持多 key 轮询（&lt;code&gt;fill_first&lt;/code&gt;、&lt;code&gt;round_robin&lt;/code&gt;、&lt;code&gt;random&lt;/code&gt; 等策略）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-关于重启-gateway的适用范围&#34;&gt;4. 关于“重启 gateway”的适用范围
&lt;/h3&gt;&lt;p&gt;需要区分运行模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI 模式&lt;/strong&gt;：改完配置、添加 auth 后，下一次调用即生效，&lt;strong&gt;无需重启&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway 模式&lt;/strong&gt;（作为后台服务接收 Telegram / Discord / Slack 消息）：&lt;code&gt;model.provider&lt;/code&gt; 和 &lt;code&gt;model.default&lt;/code&gt; 在启动时加载并缓存，因此&lt;strong&gt;需要重启 gateway&lt;/strong&gt; 才能感知变更&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;流程对照总结&#34;&gt;流程对照总结
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;用户描述&lt;/th&gt;
          &lt;th&gt;底层验证&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;hermes model&lt;!-- raw HTML omitted --&gt; 交互添加，不填 api key&lt;/td&gt;
          &lt;td&gt;正确&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;_model_flow_custom&lt;!-- raw HTML omitted --&gt; 支持此操作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;手动修改 &lt;!-- raw HTML omitted --&gt;custom_providers&lt;!-- raw HTML omitted --&gt; 的 name&lt;/td&gt;
          &lt;td&gt;正确&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;name&lt;!-- raw HTML omitted --&gt; 可自定义，slug 为 &lt;!-- raw HTML omitted --&gt;custom:&amp;lt;name&amp;gt;&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;hermes auth add &amp;lt;provider&amp;gt; &amp;ndash;api-key&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;正确&lt;/td&gt;
          &lt;td&gt;写入 credential pool，避开 config.yaml&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;留空 context_length 自动探测&lt;/td&gt;
          &lt;td&gt;部分正确&lt;/td&gt;
          &lt;td&gt;标准端点有效，非标准端点可能 fallback 128K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;重启 gateway 使用&lt;/td&gt;
          &lt;td&gt;基本正确&lt;/td&gt;
          &lt;td&gt;CLI 无需重启，gateway 需要重启&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;额外建议&#34;&gt;额外建议
&lt;/h2&gt;&lt;p&gt;如果你已经通过 &lt;code&gt;hermes auth add&lt;/code&gt; 将 key 存入了 credential pool，建议进一步检查 &lt;code&gt;config.yaml&lt;/code&gt; 中是否残留有此前交互时意外写入的 &lt;code&gt;api_key&lt;/code&gt; 字段，并予以清理，以确保配置文件中不存在任何密钥明文。&lt;/p&gt;
&lt;h2 id=&#34;为-auxiliary-任务配置自定义-provider-的注意事项&#34;&gt;为 auxiliary 任务配置自定义 Provider 的注意事项
&lt;/h2&gt;&lt;p&gt;Hermes 的 &lt;code&gt;auxiliary&lt;/code&gt; 系统（负责图片理解、上下文压缩、网页摘要等侧边任务）与主对话模型在读取 API Key 时的逻辑并不完全相同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心差异&lt;/strong&gt;：当 auxiliary 任务使用 named custom provider 时，如果该 provider 没有显式指定 &lt;code&gt;key_env&lt;/code&gt;，底层不会 fallback 到 &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; 或 &lt;code&gt;OPENROUTER_API_KEY&lt;/code&gt;，而是直接发送 &lt;code&gt;Bearer no-key-required&lt;/code&gt;，导致服务商返回 &lt;strong&gt;401 Unauthorized&lt;/strong&gt;。更糟糕的是，部分 API 网关（如 SiliconFlow）在鉴权层拒绝请求之前，可能已经在网关接入层记录了输入 token 并产生计费。&lt;/p&gt;
&lt;p&gt;因此，**只要你的自定义 provider 需要 API Key 认证，就必须在 &lt;strong&gt;&lt;code&gt;**custom_providers**&lt;/code&gt;&lt;/strong&gt; 中显式设置 **&lt;code&gt;**key_env**&lt;/code&gt;，例如：&lt;/p&gt;
&lt;p&gt;随后在 &lt;code&gt;auxiliary&lt;/code&gt; 中直接引用该 provider 名称即可：&lt;/p&gt;
&lt;h2 id=&#34;多模型配置建议&#34;&gt;多模型配置建议
&lt;/h2&gt;&lt;p&gt;不要在 &lt;code&gt;custom_providers&lt;/code&gt; 里为同一个 endpoint 创建多个 entry。Hermes 在解析 named custom provider 时只会命中列表里&lt;strong&gt;第一个匹配 name 的 entry&lt;/strong&gt;，后续同名的 entry 会被忽略。&lt;/p&gt;
&lt;p&gt;如果你需要为同一个 provider 配置多个模型的上下文长度，请使用 &lt;code&gt;models&lt;/code&gt; 子字典：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;model&lt;/code&gt; 字段（与 &lt;code&gt;models&lt;/code&gt; 同级）不是必须的。若省略，Hermes 会 fallback 到你在 &lt;code&gt;model.default&lt;/code&gt; 中配置的主模型，或最终使用 &lt;code&gt;gpt-4o-mini&lt;/code&gt;。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>深入解析 Hermes Agent 会话管理机制与设置技巧</title>
        <link>https://torchtree.com/post/hermes-session-management/</link>
        <pubDate>Fri, 10 Apr 2026 12:20:30 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-session-management/</guid>
        <description>&lt;h2 id=&#34;会话存储架构&#34;&gt;会话存储架构
&lt;/h2&gt;&lt;p&gt;Hermes Agent 自动将每一次对话保存为 session，以支持对话恢复、跨会话检索和完整的历史管理。其底层采用双存储结构：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SQLite 数据库 (&lt;/strong&gt;&lt;code&gt;**~/.hermes/state.db**&lt;/code&gt;&lt;strong&gt;)&lt;/strong&gt;：存储结构化元数据，利用 FTS5 插件实现高效的全文检索。记录内容包括 Session ID、来源平台、用户 ID、唯一标题、模型配置、系统提示词快照、完整消息历史及 Token 统计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSONL 转录文件 (&lt;/strong&gt;&lt;code&gt;**~/.hermes/sessions/**&lt;/code&gt;&lt;strong&gt;)&lt;/strong&gt;：存储原始对话转录，包含详细的工具调用过程与结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;会话来源与隔离机制&#34;&gt;会话来源与隔离机制
&lt;/h2&gt;&lt;p&gt;Hermes 支持多种来源（Source），包括 &lt;code&gt;cli&lt;/code&gt;、&lt;code&gt;telegram&lt;/code&gt;、&lt;code&gt;discord&lt;/code&gt;、&lt;code&gt;slack&lt;/code&gt; 等。针对不同场景，采用了不同的隔离策略：&lt;/p&gt;
&lt;h3 id=&#34;1-群聊隔离逻辑&#34;&gt;1. 群聊隔离逻辑
&lt;/h3&gt;&lt;p&gt;在 Discord 频道、Slack 频道等共享上下文中，Hermes 默认启用 &lt;code&gt;group_sessions_per_user: true&lt;/code&gt;。这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个发送者拥有独立的 session 历史。&lt;/li&gt;
&lt;li&gt;不同用户的长任务不会相互污染上下文。&lt;/li&gt;
&lt;li&gt;中断处理和运行状态按用户隔离。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若需将群组视为一个共享的“房间大脑”，可将该项设为 &lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;2-线程隔离&#34;&gt;2. 线程隔离
&lt;/h3&gt;&lt;p&gt;在 Slack 等支持线程的平台中，线程是主要的隔离边界。在同一线程内的对话将沿用同一会话，而新线程则会开启新会话。&lt;/p&gt;
&lt;h2 id=&#34;cli-会话管理&#34;&gt;CLI 会话管理
&lt;/h2&gt;&lt;h3 id=&#34;1-对话恢复&#34;&gt;1. 对话恢复
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;恢复最近会话&lt;/strong&gt;：使用 &lt;code&gt;hermes --continue&lt;/code&gt; 或 &lt;code&gt;hermes -c&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按 ID 或标题恢复&lt;/strong&gt;：使用 &lt;code&gt;hermes --resume &amp;lt;ID/Title&amp;gt;&lt;/code&gt; 或 &lt;code&gt;hermes -r &amp;lt;ID/Title&amp;gt;&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;恢复时，Hermes 会显示一个紧凑的摘要面板（Recap Panel），通过颜色标识区分用户（金点）与助手（绿点），并折叠工具调用过程。可通过 &lt;code&gt;display.resume_display: minimal&lt;/code&gt; 关闭该面板。&lt;/p&gt;
&lt;h3 id=&#34;2-会话命名与-lineage&#34;&gt;2. 会话命名与 Lineage
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自动命名&lt;/strong&gt;：系统在首轮交互后自动生成 3-7 个词的描述性标题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;手动命名&lt;/strong&gt;：在 session 中使用 &lt;code&gt;/title &amp;lt;name&amp;gt;&lt;/code&gt; 命令，或通过 &lt;code&gt;hermes sessions rename &amp;lt;ID&amp;gt; &amp;lt;name&amp;gt;&lt;/code&gt; 修改。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动血统 (Lineage)&lt;/strong&gt;：当会话因上下文压缩而分裂出续篇时，标题会自动递增（如 &lt;code&gt;my project&lt;/code&gt; → &lt;code&gt;my project #2&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-管理命令速查&#34;&gt;3. 管理命令速查
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;列表&lt;/strong&gt;：&lt;code&gt;hermes sessions list&lt;/code&gt; (支持 &lt;code&gt;--source&lt;/code&gt; 筛选)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导出&lt;/strong&gt;：&lt;code&gt;hermes sessions export &amp;lt;file&amp;gt;.jsonl&lt;/code&gt; (支持单会话导出)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;删除&lt;/strong&gt;：&lt;code&gt;hermes sessions delete &amp;lt;ID&amp;gt;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;清理&lt;/strong&gt;：&lt;code&gt;hermes sessions prune&lt;/code&gt; (默认清理 90 天前已结束的会话)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;统计&lt;/strong&gt;：&lt;code&gt;hermes sessions stats&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;跨会话检索session_search&#34;&gt;跨会话检索：&lt;code&gt;session_search&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Hermes 内建 &lt;code&gt;session_search&lt;/code&gt; 工具，允许 Agent 检索历史对话以找回丢失的上下文。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;工作流&lt;/strong&gt;：利用 SQLite FTS5 进行相关性排序 → 聚合 Top N 个 session → 提取匹配点前后约 100K 字符 → 调用快速摘要模型生成结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持语法&lt;/strong&gt;：支持简单关键词、精确短语 (&lt;code&gt;&amp;quot;...&amp;quot;&lt;/code&gt;)、布尔运算 (&lt;code&gt;OR&lt;/code&gt;, &lt;code&gt;NOT&lt;/code&gt;) 及前缀匹配 (&lt;code&gt;*&lt;/code&gt;)。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gateway-会话重置策略&#34;&gt;Gateway 会话重置策略
&lt;/h2&gt;&lt;p&gt;对于消息平台会话，Hermes 提供了四种重置策略 (&lt;code&gt;reset_policy&lt;/code&gt;)：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;idle&lt;/code&gt;：空闲 N 分钟后重置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;daily&lt;/code&gt;：每天固定时间重置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;both&lt;/code&gt;：两者取其先。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;none&lt;/code&gt;：永不自动重置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在自动重置前，Agent 会获得一个 Turn 用以将重要信息保存至 Memory 或 Skills。此外，含有活跃后台进程的会话不会被自动重置。&lt;/p&gt;
&lt;h2 id=&#34;核心配置技巧&#34;&gt;核心配置技巧
&lt;/h2&gt;&lt;h3 id=&#34;1-上下文压缩-compression&#34;&gt;1. 上下文压缩 (&lt;code&gt;compression&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;为了在长对话中维持性能，Hermes 采用分段压缩机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;threshold&lt;/code&gt;: 设置触发压缩的上下文百分比（默认 0.50）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;target_ratio&lt;/code&gt;: 压缩后保留的中间内容比例（默认 0.20）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;protect_last_n&lt;/code&gt;: 强制保留最近 N 条消息不被压缩（默认 20）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-关键配置项汇总&#34;&gt;2. 关键配置项汇总
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;配置项&lt;/th&gt;
          &lt;th&gt;推荐值&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;display.resume_display&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;full&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;恢复会话时显示历史回顾面板&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;group_sessions_per_user&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;true&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;群聊中按用户隔离会话，防止上下文污染&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;compression.enabled&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;true&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;自动压缩长对话，防止触碰模型 Context Limit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;compression.threshold&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;0.50&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;达到 50% 上限时开始摘要压缩&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/sessions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Agent Sessions Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent Slack 使用指南：从高效对话到精细化配置</title>
        <link>https://torchtree.com/post/hermes-slack-guide/</link>
        <pubDate>Fri, 10 Apr 2026 09:55:33 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-slack-guide/</guid>
        <description>&lt;p&gt;Hermes Agent 在 Slack 中的集成旨在提供一个高效、可隔离且可自定义的交互环境。为了确保在多人协作的频道中能够精准调度 AI 而不干扰他人，理解其交互逻辑和配置项至关重要。&lt;/p&gt;
&lt;h2 id=&#34;核心交互规则&#34;&gt;核心交互规则
&lt;/h2&gt;&lt;h3 id=&#34;1-显式唤起-mention&#34;&gt;1. 显式唤起 (@mention)
&lt;/h3&gt;&lt;p&gt;在 Slack 频道中，Hermes 默认采用“被动响应”模式。这意味着简单的文本消息会被忽略，必须通过 &lt;code&gt;@mention&lt;/code&gt; (例如 &lt;code&gt;@Hermes&lt;/code&gt;) 明确唤起机器人。&lt;/p&gt;
&lt;p&gt;这一设计旨在防止 AI 在高频讨论的频道中产生不必要的干扰，确保只有在用户明确需要时才介入对话。&lt;/p&gt;
&lt;h3 id=&#34;2-线程作为上下文隔离单元&#34;&gt;2. 线程作为上下文隔离单元
&lt;/h3&gt;&lt;p&gt;Slack 的 Thread（线程）是 Hermes 管理上下文的核心机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;上下文继承&lt;/strong&gt;：在已有线程中 @mention Hermes，它会继承该线程的历史记录并在此回复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;独立会话&lt;/strong&gt;：不同线程之间的上下文是完全隔离的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多人并行&lt;/strong&gt;：即使在同一个频道中，不同用户与 Hermes 的对话历史也是分离的，只要各自在独立的线程中进行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;高频使用技巧&#34;&gt;高频使用技巧
&lt;/h2&gt;&lt;h3 id=&#34;任务隔离一事一线程&#34;&gt;任务隔离：一事一线程
&lt;/h3&gt;&lt;p&gt;为了避免上下文混淆，最有效的实践是&lt;strong&gt;将每一个独立任务绑定到一个独立的线程&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作流程&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;发起新任务 → 创建新消息并 @mention Hermes → 开启新线程。&lt;/li&gt;
&lt;li&gt;追问或迭代 → 在该线程内回复。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优势&lt;/strong&gt;：当需要并行处理多个任务（如：同时进行“代码审查”和“文档编写”）时，可以通过切换线程来快速切换上下文，而无需向 AI 重新解释背景。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;结构化首条指令&#34;&gt;结构化首条指令
&lt;/h3&gt;&lt;p&gt;为了提高响应质量，建议首条指令包含以下要素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;任务目标&lt;/strong&gt;：明确要解决的问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;约束条件&lt;/strong&gt;：输出格式、禁忌项或特定参考资料。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预期结果&lt;/strong&gt;：希望得到的最终交付物形式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;配置项深度解析&#34;&gt;配置项深度解析
&lt;/h2&gt;&lt;p&gt;Hermes 的 Slack 行为可以通过 &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt; 进行精细化调整。&lt;/p&gt;
&lt;h3 id=&#34;1-线程回复行为-reply_in_thread&#34;&gt;1. 线程回复行为 (&lt;code&gt;reply_in_thread&lt;/code&gt;)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;platforms.slack.extra.reply_in_thread&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认值&lt;/strong&gt;：&lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行为&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;&lt;code&gt;true&lt;/code&gt;：频道内的首条指令会在新线程里回复。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;false&lt;/code&gt;：频道内的首条指令会直接回复到主频道流。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边界&lt;/strong&gt;：无论此项如何设置，已经在线程中的消息始终会在线程内回复。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-响应触发机制-require_mention&#34;&gt;2. 响应触发机制 (&lt;code&gt;require_mention&lt;/code&gt;)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;路径&lt;/strong&gt;：&lt;code&gt;require_mention&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认值&lt;/strong&gt;：&lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行为&lt;/strong&gt;：决定是否必须通过 &lt;code&gt;@mention&lt;/code&gt; 才能激活机器人。在多人协作频道中，建议保持为 &lt;code&gt;true&lt;/code&gt;，以避免误触发。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-自定义触发模式-mention_patterns&#34;&gt;3. 自定义触发模式 (&lt;code&gt;mention_patterns&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;除了标准的 &lt;code&gt;@mention&lt;/code&gt;，还可以通过 &lt;code&gt;mention_patterns&lt;/code&gt; 配置自定义口令唤起。&lt;/p&gt;
&lt;p&gt;示例配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：在特定工作流中简化唤起操作，无需频繁输入 &lt;code&gt;@&lt;/code&gt; 符号。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-可对话用户白名单-slack_allowed_users&#34;&gt;4. 可对话用户白名单 (&lt;code&gt;SLACK_ALLOWED_USERS&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;Hermes 还支持通过 Slack Member ID 限定&lt;strong&gt;哪些用户可以与 bot 对话&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;配置方式&lt;/strong&gt;：设置环境变量 &lt;code&gt;SLACK_ALLOWED_USERS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;值类型&lt;/strong&gt;：Slack Member ID 列表，而不是用户名或 display name&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全行为&lt;/strong&gt;：如果不设置该白名单，网关会默认拒绝所有消息，作为安全措施&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;只允许特定成员调用 bot&lt;/li&gt;
&lt;li&gt;避免频道里无关成员误触发&lt;/li&gt;
&lt;li&gt;在测试环境里限制使用范围&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;推荐配置组合&#34;&gt;推荐配置组合
&lt;/h2&gt;&lt;p&gt;根据不同场景，建议采用以下配置策略：&lt;/p&gt;
&lt;h3 id=&#34;场景-a多人协作企业频道推荐&#34;&gt;场景 A：多人协作/企业频道（推荐）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：极高稳定性，零干扰。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;require_mention: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reply_in_thread: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mention_patterns&lt;/code&gt;: 保持精简或为空。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;场景-b个人小规模快速迭代频道&#34;&gt;场景 B：个人/小规模快速迭代频道
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：极速唤起，低摩擦。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;require_mention: false&lt;/code&gt; (谨慎使用) 或配置丰富的 &lt;code&gt;mention_patterns&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reply_in_thread: true&lt;/code&gt; (依然建议开启，以维持上下文隔离)。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结slack-使用口诀&#34;&gt;总结：Slack 使用口诀
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;频道先 @，任务一线程一事，换题另起 thread，多人并行不串线。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;信息来源&#34;&gt;信息来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/messaging/slack/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes Slack 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/messaging/slack/#configuration-options&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration Options&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes profiles：在一台设备上给多人提供独立 AI 助手</title>
        <link>https://torchtree.com/post/hermes-profiles/</link>
        <pubDate>Fri, 10 Apr 2026 08:34:20 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-profiles/</guid>
        <description>&lt;h2 id=&#34;什么是-profiles&#34;&gt;什么是 profiles
&lt;/h2&gt;&lt;p&gt;Hermes 的 profiles 功能，提供的是一组彼此隔离的运行环境。每个 profile 都有自己的配置、密钥、人格设定、记忆、会话、技能、定时任务和状态库。换句话说，它不是在同一个会话里分出几个角色，而是在同一台设备上建立多个独立的 Hermes 空间。&lt;/p&gt;
&lt;p&gt;这类隔离带来的直接结果是：不同用途、不同身份、不同用户之间不会互相污染上下文。一个 profile 可以专门给自己用，一个给家人用，一个给朋友用，也可以按项目、按角色、按工作流拆开。&lt;/p&gt;
&lt;h2 id=&#34;它是怎样工作的&#34;&gt;它是怎样工作的
&lt;/h2&gt;&lt;p&gt;创建 profile 之后，Hermes 会自动为它生成独立的命令入口。比如创建一个名为 &lt;code&gt;coder&lt;/code&gt; 的 profile 后，就可以直接使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;coder chat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coder setup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coder gateway start&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 profile 不只是一个配置文件夹，而是一个可以直接启动和管理的独立 agent 单位。&lt;/p&gt;
&lt;h2 id=&#34;profile-管理命令&#34;&gt;Profile 管理命令
&lt;/h2&gt;&lt;h3 id=&#34;创建-profile&#34;&gt;创建 Profile
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;选项&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;&amp;ndash;clone&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;复制 config.yaml、.env、SOUL.md，但使用新的会话和记忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;&amp;ndash;clone-all&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;复制全部内容，相当于完整快照&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;&amp;ndash;clone-from&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;指定源 profile，而非当前 profile&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;列出和切换&#34;&gt;列出和切换
&lt;/h3&gt;&lt;h3 id=&#34;使用-profile-的方式&#34;&gt;使用 Profile 的方式
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方式一：命令别名（自动生成）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;创建 profile 后，Hermes 会自动在 &lt;code&gt;~/.local/bin/&lt;/code&gt; 下生成同名命令：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式二：-p 参数&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;查看详情&#34;&gt;查看详情
&lt;/h3&gt;&lt;p&gt;输出示例：&lt;/p&gt;
&lt;h3 id=&#34;导入和导出&#34;&gt;导入和导出
&lt;/h3&gt;&lt;h3 id=&#34;删除-profile&#34;&gt;删除 Profile
&lt;/h3&gt;&lt;p&gt;:::warning&lt;/p&gt;
&lt;p&gt;删除操作不可恢复，会同时停止网关、移除服务并删除所有数据。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2 id=&#34;profile-文件结构&#34;&gt;Profile 文件结构
&lt;/h2&gt;&lt;p&gt;每个 profile 存储在 &lt;code&gt;~/.hermes/profiles/&amp;lt;name&amp;gt;/&lt;/code&gt;，包含：&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;h3 id=&#34;1-给不同人提供独立助手&#34;&gt;1. 给不同人提供独立助手
&lt;/h3&gt;&lt;p&gt;最直接的用途，是在同一台设备上给家人或朋友各自创建一个独立的 Hermes。每个人都能拥有自己的配置、记忆和使用习惯，不需要理解底层运维细节。&lt;/p&gt;
&lt;h3 id=&#34;2-多项目隔离&#34;&gt;2. 多项目隔离
&lt;/h3&gt;&lt;p&gt;如果你同时维护多个项目，可以把每个项目放进不同 profile。这样模型设置、技能、会话历史和 cron 任务都不会互相干扰。&lt;/p&gt;
&lt;h3 id=&#34;3-多角色并行&#34;&gt;3. 多角色并行
&lt;/h3&gt;&lt;p&gt;你可以把一个 profile 作为个人助理，另一个作为代码助手，再另一个作为研究助手。它们的行为风格、插件、记忆和任务状态都可以单独配置。&lt;/p&gt;
&lt;h3 id=&#34;4-实验和备份&#34;&gt;4. 实验和备份
&lt;/h3&gt;&lt;p&gt;当你想测试一套新配置、新技能，或者想保留当前状态做一个可回退的副本时，&lt;code&gt;--clone-all&lt;/code&gt; 很适合。它可以把当前环境完整复制出来，再在新 profile 上继续试验。&lt;/p&gt;
&lt;h2 id=&#34;能解决什么问题&#34;&gt;能解决什么问题
&lt;/h2&gt;&lt;p&gt;profiles 主要解决的是&amp;quot;单一 agent 不够分、上下文容易串、配置难隔离&amp;quot;的问题。&lt;/p&gt;
&lt;p&gt;具体来说，它可以减少：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会话历史混在一起&lt;/li&gt;
&lt;li&gt;不同用户的记忆冲突&lt;/li&gt;
&lt;li&gt;API 密钥和模型配置互相覆盖&lt;/li&gt;
&lt;li&gt;定时任务、技能、插件互相影响&lt;/li&gt;
&lt;li&gt;一个 agent 既要扮演多个身份，又没有清晰边界&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，profiles 更像是一种&amp;quot;隔离式多租户&amp;quot;能力：同一台机器上，可以同时运行多个互不干扰的 Hermes 实例。&lt;/p&gt;
&lt;h2 id=&#34;和-subagent-的区别&#34;&gt;和 subagent 的区别
&lt;/h2&gt;&lt;p&gt;profiles 和 subagent 不是一回事。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;profiles&lt;/strong&gt;：长期独立环境，适合多人、多身份、多项目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;subagent&lt;/strong&gt;：临时派出去执行单个任务的工作单元，适合并行研究、拆分任务、快速协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以把 profiles 理解为&amp;quot;各自独立的房间&amp;quot;，把 subagent 理解为&amp;quot;临时派出去做事的人&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;一个比较实用的理解&#34;&gt;一个比较实用的理解
&lt;/h2&gt;&lt;p&gt;如果你希望一台设备上同时服务不同人，而且每个人都像拥有自己的专属 AI 助手，那么 profiles 就是 Hermes 提供的基础能力。它让复杂的多用户使用方式变成可管理、可隔离、可复制的结构。&lt;/p&gt;
&lt;p&gt;这也是它和很多只强调单会话工作流的方案相比，最有价值的地方之一。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 梦境功能：让 AI 助手自动沉淀长期记忆</title>
        <link>https://torchtree.com/post/openclaw-dreaming/</link>
        <pubDate>Thu, 09 Apr 2026 14:51:23 +0800</pubDate>
        
        <guid>https://torchtree.com/post/openclaw-dreaming/</guid>
        <description>&lt;p&gt;OpenClaw 在 2026.4.5 版本正式推出了 &lt;strong&gt;Dreaming（梦境）&lt;/strong&gt; 功能。概念来自人类睡眠时大脑整理记忆的过程：趁夜深人静，把白天零散的经历提炼成真正值得记住的东西。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;在没有 Dreaming 之前，OpenClaw 的记忆是这样工作的：对话过程中产生的短期信号（用户的偏好、习惯、反复提到的事情）存在每日日志文件里，但并不会自动升级为长期记忆。时间一长，这些信号就沉在文件堆里，AI 不会主动去回顾，等于白积累。&lt;/p&gt;
&lt;p&gt;Dreaming 的作用就是在后台默默做这件事：&lt;strong&gt;把高质量的短期信号自动提炼、写入长期记忆（&lt;/strong&gt;&lt;code&gt;**MEMORY.md**&lt;/code&gt;&lt;strong&gt;）&lt;/strong&gt;，让 AI 下次一开口就能想起来，而不需要每次重新交代背景。&lt;/p&gt;
&lt;h2 id=&#34;三个阶段像人类睡眠一样&#34;&gt;三个阶段，像人类睡眠一样
&lt;/h2&gt;&lt;p&gt;Dreaming 内部分三个阶段运行：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Light Sleep（浅睡）&lt;/strong&gt;：扫描近期的短期记忆和对话记录，去重、暂存候选项，记录哪些内容被反复强化。这个阶段不写入长期记忆，只是整理候选。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deep Sleep（深睡）&lt;/strong&gt;：对候选项打分，用六个维度加权评估（相关性 0.30、频率 0.24、查询多样性 0.15、时效性 0.15、整合度 0.10、概念丰富度 0.06）。只有通过阈值的内容才会被追加到 &lt;code&gt;MEMORY.md&lt;/code&gt;，门槛相当严格：最低分 0.8、最少被回忆 3 次、最少来自 3 个不同查询。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REM&lt;/strong&gt;：从短期轨迹中提取模式和反思信号，生成主题摘要，写入 &lt;code&gt;DREAMS.md&lt;/code&gt;（一份人类可读的&amp;quot;梦境日记&amp;quot;）。不直接写长期记忆，但会影响下次 Deep Sleep 的判断。&lt;/p&gt;
&lt;p&gt;这三个阶段各自独立调度，合起来就是一次完整的&amp;quot;睡眠&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;token-消耗情况&#34;&gt;token 消耗情况
&lt;/h2&gt;&lt;p&gt;Dreaming 每天自动运行，必然会产生额外的 token 开销。系统内置了一个跳过机制：每次运行前先检查是否有未整合的新内容，&lt;strong&gt;7 天内没有新内容就直接退出，仅消耗约 2K token&lt;/strong&gt;；有内容可处理时才完整跑三个阶段，完整跑一次大约消耗 150K token。&lt;/p&gt;
&lt;p&gt;实际累积下来的额外消耗取决于对话频率和内容密度，具体情况有待观察。&lt;/p&gt;
&lt;h2 id=&#34;如何启用&#34;&gt;如何启用
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;openclaw.json&lt;/code&gt; 中加入以下配置，重启服务即可：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;frequency&lt;/code&gt; 是标准 cron 表达式，这里设置的是每天凌晨 3 点运行。&lt;code&gt;timezone&lt;/code&gt; 确保时间以本地时区解释，否则默认 UTC 会让 3 点变成上午 11 点。&lt;/p&gt;
&lt;p&gt;有一个已知 bug（&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/issues/62098&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#62098&lt;/a&gt;）：通过 Web 控制台的开关启用会创建结构错误的配置。&lt;strong&gt;直接编辑 JSON 文件没有这个问题&lt;/strong&gt;，是目前最稳妥的方式。&lt;/p&gt;
&lt;h2 id=&#34;运行效果验证&#34;&gt;运行效果验证
&lt;/h2&gt;&lt;p&gt;启用后可以通过以下方式查看运行情况：&lt;/p&gt;
&lt;p&gt;Dreaming 运行完成后，&lt;code&gt;DREAMS.md&lt;/code&gt; 会记录这次&amp;quot;睡眠&amp;quot;的摘要——哪些内容被提炼了，哪些被丢弃了，以及整体的反思。类似一本可以翻阅的日记。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent 功能总览</title>
        <link>https://torchtree.com/post/hermes-agent-overview/</link>
        <pubDate>Thu, 09 Apr 2026 10:03:48 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-agent-overview/</guid>
        <description>&lt;p&gt;Hermes Agent 是 Nous Research 维护的开源 AI agent 框架。它把 CLI、消息网关、模型切换、工具调用、记忆、定时任务、MCP、子代理和多实例配置放在同一套系统里，适合需要长期运行和跨平台协作的工作流。&lt;/p&gt;
&lt;h2 id=&#34;功能总览&#34;&gt;功能总览
&lt;/h2&gt;&lt;h3 id=&#34;1-交互入口&#34;&gt;1. 交互入口
&lt;/h3&gt;&lt;p&gt;Hermes 提供多个入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hermes&lt;/code&gt; CLI&lt;/li&gt;
&lt;li&gt;消息网关：Telegram、Discord、Slack、WhatsApp、Signal、Email、SMS、Matrix、Mattermost、Home Assistant、DingTalk、Feishu、WeCom&lt;/li&gt;
&lt;li&gt;slash commands&lt;/li&gt;
&lt;li&gt;CLI 子命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在终端里处理任务，也可以在聊天平台里发起和继续同一段会话。&lt;/p&gt;
&lt;h3 id=&#34;2-模型与-provider&#34;&gt;2. 模型与 provider
&lt;/h3&gt;&lt;p&gt;Hermes 支持多种模型提供方，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nous Portal&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Gemini / Google AI Studio&lt;/li&gt;
&lt;li&gt;Z.AI / GLM&lt;/li&gt;
&lt;li&gt;Kimi / Moonshot&lt;/li&gt;
&lt;li&gt;MiniMax&lt;/li&gt;
&lt;li&gt;自定义 endpoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它还支持会话内切换模型，以及 provider fallback，用来降低单一 provider 故障、限流或价格变动带来的影响。&lt;/p&gt;
&lt;h3 id=&#34;3-工具系统&#34;&gt;3. 工具系统
&lt;/h3&gt;&lt;p&gt;官方文档里列出的工具范围包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;terminal&lt;/li&gt;
&lt;li&gt;file&lt;/li&gt;
&lt;li&gt;web&lt;/li&gt;
&lt;li&gt;browser&lt;/li&gt;
&lt;li&gt;vision&lt;/li&gt;
&lt;li&gt;code execution&lt;/li&gt;
&lt;li&gt;delegation&lt;/li&gt;
&lt;li&gt;skills&lt;/li&gt;
&lt;li&gt;session search&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;cronjob&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;tts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以把模型从“生成文本”扩展到“调用工具完成任务”。&lt;/p&gt;
&lt;h3 id=&#34;4-记忆与用户画像&#34;&gt;4. 记忆与用户画像
&lt;/h3&gt;&lt;p&gt;Hermes 提供跨会话记忆和用户画像能力，常见组件包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;user profile&lt;/li&gt;
&lt;li&gt;session search&lt;/li&gt;
&lt;li&gt;memory provider 插件，例如 Honcho、Mem0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以保存偏好、历史任务、常用设置和上下文，减少每次重新说明的成本。&lt;/p&gt;
&lt;h3 id=&#34;5-自动化&#34;&gt;5. 自动化
&lt;/h3&gt;&lt;p&gt;Hermes 提供几类自动化能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cron 定时任务&lt;/li&gt;
&lt;li&gt;后台任务完成通知&lt;/li&gt;
&lt;li&gt;长任务持续运行&lt;/li&gt;
&lt;li&gt;任务状态和会话持续记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样 agent 可以在无人值守时继续工作，适合报告生成、例行检查、夜间任务和长流程处理。&lt;/p&gt;
&lt;h3 id=&#34;6-协作能力&#34;&gt;6. 协作能力
&lt;/h3&gt;&lt;p&gt;Hermes 支持把工作拆成多个并行单元：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;subagent&lt;/li&gt;
&lt;li&gt;parallel workstreams&lt;/li&gt;
&lt;li&gt;session 绑定&lt;/li&gt;
&lt;li&gt;shared thread sessions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以把独立工作流拆开执行，减少单线程阻塞。&lt;/p&gt;
&lt;h3 id=&#34;7-多实例与-profiles&#34;&gt;7. 多实例与 profiles
&lt;/h3&gt;&lt;p&gt;Profiles 允许同一安装里运行多个隔离实例。每个 profile 有自己的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置&lt;/li&gt;
&lt;li&gt;记忆&lt;/li&gt;
&lt;li&gt;sessions&lt;/li&gt;
&lt;li&gt;skills&lt;/li&gt;
&lt;li&gt;gateway service&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以把不同项目、不同身份或不同工作流分开管理。&lt;/p&gt;
&lt;h3 id=&#34;8-openclaw-迁移&#34;&gt;8. OpenClaw 迁移
&lt;/h3&gt;&lt;p&gt;Hermes 提供了 OpenClaw 迁移路径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hermes claw migrate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hermes claw migrate --dry-run&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hermes claw migrate --preset user-data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hermes claw migrate --preset full&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openclaw-migration&lt;/code&gt; skill&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以把旧环境中的 persona、memory、skills、allowlist、消息配置和部分工作区内容迁入 Hermes。&lt;/p&gt;
&lt;h2 id=&#34;版本里能看到的重点&#34;&gt;版本里能看到的重点
&lt;/h2&gt;&lt;p&gt;从 release notes 看，Hermes 的发展重点主要集中在这些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;provider 和模型切换&lt;/li&gt;
&lt;li&gt;fallback provider chain&lt;/li&gt;
&lt;li&gt;多实例 profiles&lt;/li&gt;
&lt;li&gt;网关平台扩展&lt;/li&gt;
&lt;li&gt;MCP 接入&lt;/li&gt;
&lt;li&gt;安全和配置校验&lt;/li&gt;
&lt;li&gt;插件体系&lt;/li&gt;
&lt;li&gt;后台任务通知&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明它的定位更偏向一个可编排的 agent 平台，而不是单一聊天界面。&lt;/p&gt;
&lt;h2 id=&#34;适合的使用场景&#34;&gt;适合的使用场景
&lt;/h2&gt;&lt;p&gt;Hermes 比较适合下面几类工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要长期上下文的个人协作&lt;/li&gt;
&lt;li&gt;需要在终端和消息平台之间切换的工作流&lt;/li&gt;
&lt;li&gt;需要定时任务或后台执行的任务&lt;/li&gt;
&lt;li&gt;需要 provider 容错和切换的场景&lt;/li&gt;
&lt;li&gt;需要把经验沉淀成技能和记忆的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;官方文档：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hermes-agent.nousresearch.com/docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README：&lt;code&gt;README.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Release notes：&lt;code&gt;RELEASE_v0.6.0.md&lt;/code&gt;、&lt;code&gt;RELEASE_v0.8.0.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw 迁移：&lt;code&gt;optional-skills/migration/openclaw-migration/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;本文基于 Hermes Agent 官方仓库、文档站点与 release notes 整理。&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 的“梦境”功能是什么：一次把短期记忆变成长记忆的后台系统</title>
        <link>https://torchtree.com/post/openclaw-dreaming-feature/</link>
        <pubDate>Thu, 09 Apr 2026 06:14:13 +0800</pubDate>
        
        <guid>https://torchtree.com/post/openclaw-dreaming-feature/</guid>
        <description>&lt;p&gt;OpenClaw 的 Dreaming 功能，指的是 &lt;code&gt;memory-core&lt;/code&gt; 里的后台记忆整合机制。它处理近期对话、日记、回放片段和短期信号，再决定哪些内容进入长期记忆，哪些内容只保留为可审查的过程记录。&lt;/p&gt;
&lt;h2 id=&#34;背景与定义&#34;&gt;背景与定义
&lt;/h2&gt;&lt;p&gt;官方文档将 Dreaming 定义为 &lt;strong&gt;background memory consolidation system&lt;/strong&gt;。该功能默认关闭，属于 &lt;strong&gt;experimental&lt;/strong&gt; 范畴，需要用户显式开启。&lt;/p&gt;
&lt;p&gt;Dreaming 相关输出分成两类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;机器状态&lt;/strong&gt;：写入 &lt;code&gt;memory/.dreams/&lt;/code&gt;，用于保存 recall store、phase signals、checkpoint 和锁信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可读叙事&lt;/strong&gt;：写入 &lt;code&gt;DREAMS.md&lt;/code&gt; 或 &lt;code&gt;dreams.md&lt;/code&gt;，用于展示 Dream Diary 和阶段摘要。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;长期记忆仍然写入 &lt;code&gt;MEMORY.md&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;调研范围&#34;&gt;调研范围
&lt;/h2&gt;&lt;p&gt;本文只围绕三件事展开：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dreaming 在 OpenClaw 中的职责是什么；&lt;/li&gt;
&lt;li&gt;最近一次更新补了哪些能力；&lt;/li&gt;
&lt;li&gt;这套机制有哪些明确边界。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;功能机制&#34;&gt;功能机制
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;阶段&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;结果&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Light&lt;/td&gt;
          &lt;td&gt;整理近期短期材料，做去重、分组和初步筛选&lt;/td&gt;
          &lt;td&gt;不写入长期记忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;REM&lt;/td&gt;
          &lt;td&gt;提炼主题、反思和模式，形成反思信号&lt;/td&gt;
          &lt;td&gt;不写入长期记忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Deep&lt;/td&gt;
          &lt;td&gt;对候选内容评分并决定是否晋升&lt;/td&gt;
          &lt;td&gt;写入 &lt;!-- raw HTML omitted --&gt;MEMORY.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;从官方描述看，这套设计有三个明显特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阶段职责分离，避免把所有输入直接写进长期记忆。&lt;/li&gt;
&lt;li&gt;Dream Diary 作为叙事层存在，和长期记忆写入分开。&lt;/li&gt;
&lt;li&gt;phase policy、thresholds 和 storage behavior 被视为内部实现细节，不作为用户侧核心配置暴露。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，Dreaming 更接近一条记忆加工流水线，而不是单一功能按钮。&lt;/p&gt;
&lt;h2 id=&#34;最近更新增加了什么&#34;&gt;最近更新增加了什么
&lt;/h2&gt;&lt;p&gt;根据 GitHub 官方 release notes，v2026.4.9 与 Dreaming 相关的新增点集中在四类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grounded REM backfill&lt;/strong&gt;：支持历史 &lt;code&gt;rem-harness --path&lt;/code&gt; 回放，把旧日记重新送入 Dreaming 流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diary commit/reset flows&lt;/strong&gt;：补齐日记的提交与重置流程，便于回看和修正回放结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structured Dreams UI&lt;/strong&gt;：新增结构化 diary view，包含时间线导航、backfill/reset 控件和可追踪的 dreaming summary。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grounded Scene lane&lt;/strong&gt;：单独显示历史回放产生的 staged 结果，并提供安全的清理动作，避免与正常在线材料混在一起。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;release notes 还提到对 grounded backfill 输入、日记写入、状态 payload 和 diary action classification 的加固，重点包括保留 source-day 标签、拒绝缺失或符号链接目标，以及规范 gateway backfill 的日记标题与元数据。&lt;/p&gt;
&lt;h2 id=&#34;官方文档中的边界&#34;&gt;官方文档中的边界
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dreaming 是 &lt;strong&gt;opt-in&lt;/strong&gt;，默认关闭。&lt;/li&gt;
&lt;li&gt;它负责记忆整合，不替代长期记忆本身。&lt;/li&gt;
&lt;li&gt;Dream Diary 主要用于人类查看，不是 promotion source。&lt;/li&gt;
&lt;li&gt;phase policy、thresholds 和 storage behavior 不属于用户层公开配置接口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类边界设计的作用，是把“可解释性”和“自动晋升”分开：用户能看到过程，但不会把过程输出直接当成最终记忆。&lt;/p&gt;
&lt;h2 id=&#34;实际含义&#34;&gt;实际含义
&lt;/h2&gt;&lt;p&gt;从产品角度看，Dreaming 解决的是三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少人工整理记忆的成本；&lt;/li&gt;
&lt;li&gt;把短期噪音和真正有价值的内容区分开；&lt;/li&gt;
&lt;li&gt;保留一条可回放、可审查的记忆形成链路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的重点不在命名，而在于把长期记忆的形成过程做成一个可管理系统。&lt;/p&gt;
&lt;h2 id=&#34;已知边界与注意事项&#34;&gt;已知边界与注意事项
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;该功能是实验性功能，默认关闭。&lt;/li&gt;
&lt;li&gt;内容晋升依赖评分和阈值，结果会受输入质量影响。&lt;/li&gt;
&lt;li&gt;历史回放如果边界不清晰，可能把噪音带回记忆流程，因此官方加入了 grounded lane 和输入校验。&lt;/li&gt;
&lt;li&gt;Dream Diary 是解释层，不应与真正的长期记忆写入混为一谈。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;OpenClaw 的 Dreaming 功能，是围绕长期记忆整合设计的后台系统：Light、REM、Deep 三阶段协作，Dream Diary 提供过程可视化，最新更新则把历史回放、结构化查看和安全清理补了起来。它更适合被理解为“记忆加工与晋升机制”，而不是一个独立的对话特性。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub Release v2026.4.9：&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/releases/tag/v2026.4.9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/openclaw/openclaw/releases/tag/v2026.4.9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dreaming 概念文档：&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/blob/main/docs/concepts/dreaming.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/openclaw/openclaw/blob/main/docs/concepts/dreaming.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Memory config reference：&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/blob/main/docs/reference/memory-config.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/openclaw/openclaw/blob/main/docs/reference/memory-config.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;相关源码：&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/blob/main/extensions/memory-core/src/dreaming.ts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dreaming.ts&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/blob/main/extensions/memory-core/src/dreaming-narrative.ts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dreaming-narrative.ts&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw/blob/main/extensions/memory-core/src/short-term-promotion.ts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;short-term-promotion.ts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>从 OpenClaw 到 Hermes：单指令自动完成角色迁移</title>
        <link>https://torchtree.com/post/openclaw-to-hermes-role-migration/</link>
        <pubDate>Wed, 08 Apr 2026 05:55:11 +0800</pubDate>
        
        <guid>https://torchtree.com/post/openclaw-to-hermes-role-migration/</guid>
        <description>&lt;p&gt;执行 &lt;code&gt;hermes claw migrate&lt;/code&gt; 后，你的配置文件和技能已迁移到 Hermes，但 Agent 的认知可能仍停留在 OpenClaw 时代。它可能仍自称 &amp;ldquo;Aris&amp;rdquo;，尝试访问 &lt;code&gt;~/.openclaw/&lt;/code&gt; 目录，使用已不存在的工具。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：发送一条指令，让 Agent 自动检查并修复自身的身份认同和工作逻辑。&lt;/p&gt;
&lt;h2 id=&#34;角色说明&#34;&gt;角色说明
&lt;/h2&gt;&lt;p&gt;在继续之前，需要明确两个身份：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;身份&lt;/th&gt;
          &lt;th&gt;所属框架&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Aris&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;OpenClaw&lt;/td&gt;
          &lt;td&gt;原 OpenClaw 生态中的 AI 助手名称，在你的历史配置中使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Helix&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Hermes&lt;/td&gt;
          &lt;td&gt;迁移到 Hermes 后的新身份，需要 Agent 自我认知为此&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;当 Agent 说 &amp;ldquo;我是 Aris&amp;rdquo; 时，它仍在用 OpenClaw 的身份认同运行。你需要让它更新为 &amp;ldquo;我是 Helix&amp;rdquo;。&lt;/p&gt;
&lt;h2 id=&#34;问题背景&#34;&gt;问题背景
&lt;/h2&gt;&lt;h3 id=&#34;官方迁移命令的局限&#34;&gt;官方迁移命令的局限
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;hermes claw migrate&lt;/code&gt; 处理&lt;strong&gt;数据层面&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复制配置文件到 &lt;code&gt;~/.hermes/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;迁移技能到 &lt;code&gt;~/.hermes/skills/openclaw-imports/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;转移记忆文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它&lt;strong&gt;不修改文件内容&lt;/strong&gt;。如果 SOUL.md 写着 &amp;ldquo;我是 Aris&amp;rdquo;，迁移后 Agent 仍这样认为。&lt;/p&gt;
&lt;h3 id=&#34;典型症状&#34;&gt;典型症状
&lt;/h3&gt;&lt;p&gt;迁移后如果 Agent 出现以下行为，说明需要角色适配：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;症状&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;自称 &amp;ldquo;Aris&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;身份认同未更新&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;访问 &lt;!-- raw HTML omitted --&gt;~/.openclaw/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;路径认知错误&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;调用 &lt;!-- raw HTML omitted --&gt;memory_search&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;使用 OpenClaw 特有工具&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;提到 &amp;ldquo;OpenClaw 提供上下文&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;框架认知错误&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;单指令自动化方案&#34;&gt;单指令自动化方案
&lt;/h2&gt;&lt;p&gt;你不需要手动编辑文件。发送以下指令给 Agent，它会自动完成全部检查和修复：&lt;/p&gt;
&lt;p&gt;Agent 将自动执行上述检查，直接修改文件，并向你报告变更摘要。&lt;/p&gt;
&lt;h2 id=&#34;技术细节供参考&#34;&gt;技术细节（供参考）
&lt;/h2&gt;&lt;p&gt;如果你想了解 Agent 具体会检查什么，以下是技术细节：&lt;/p&gt;
&lt;h3 id=&#34;身份声明位置&#34;&gt;身份声明位置
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;文件&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;SOUL.md&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/SOUL.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;全局身份和性格定义&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MEMORY.md&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/memories/MEMORY.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Agent 的个人笔记（限制 2,200 字符）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;USER.md&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/memories/USER.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;用户画像（限制 1,375 字符）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;关键差异对比&#34;&gt;关键差异对比
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;OpenClaw (Aris)&lt;/th&gt;
          &lt;th&gt;Hermes (Helix)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;身份&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;我是 Aris&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;我是 Helix&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;框架&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;OpenClaw&lt;/td&gt;
          &lt;td&gt;Hermes Agent (Nous Research)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;主目录&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.openclaw/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;记忆存储&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;.jsonl&lt;!-- raw HTML omitted --&gt; 文件&lt;/td&gt;
          &lt;td&gt;SQLite + FTS5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;技能查询&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;memory_search&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;skills_list&lt;!-- raw HTML omitted --&gt; + &lt;!-- raw HTML omitted --&gt;skill_view&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;记忆限制&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;无明确限制&lt;/td&gt;
          &lt;td&gt;2,200 / 1,375 字符&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;实际变更示例&#34;&gt;实际变更示例
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;SOUL.md 变更：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MEMORY.md 变更：&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;验证结果&#34;&gt;验证结果
&lt;/h2&gt;&lt;p&gt;Agent 完成自检后，会输出类似以下的报告：&lt;/p&gt;
&lt;h2 id=&#34;手动验证可选&#34;&gt;手动验证（可选）
&lt;/h2&gt;&lt;p&gt;如果你想手动确认迁移结果：&lt;/p&gt;
&lt;h2 id=&#34;参考文档&#34;&gt;参考文档
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;官方迁移指南：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/guides/migrate-from-openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Migrate from OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;记忆系统：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/memory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Persistent Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;上下文文件：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/context-files&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Context Files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;基于 Hermes Agent v0.7.0 实际迁移经验整理。&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent vs OpenClaw：选型与迁移指南</title>
        <link>https://torchtree.com/post/hermes-openclaw-migration-guide/</link>
        <pubDate>Tue, 07 Apr 2026 15:09:25 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-openclaw-migration-guide/</guid>
        <description>&lt;h2 id=&#34;项目简介&#34;&gt;项目简介
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Hermes Agent&lt;/strong&gt; 是由 Nous Research 开发的开源 AI Agent 框架，采用 MIT 许可证。其核心设计理念是构建一个能够随使用时间增长而自我改进的 Agent 系统。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;链接&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;官网&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;hermes-agent.nousresearch.com&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GitHub&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;github.com/NousResearch/hermes-agent&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最新版本&lt;/td&gt;
          &lt;td&gt;v0.7.0（截至 2026 年 4 月）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Stars&lt;/td&gt;
          &lt;td&gt;33.2k&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Issues&lt;/td&gt;
          &lt;td&gt;786 open / 543 closed&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;核心特性&#34;&gt;核心特性
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内置学习循环&lt;/strong&gt;：从经验自动生成和优化技能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分层记忆系统&lt;/strong&gt;：session / persistent / skill / archive 四层架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多平台支持&lt;/strong&gt;：Telegram、Discord、Slack、WhatsApp、Signal、Email、CLI、飞书、钉钉、企业微信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;子代理委托&lt;/strong&gt;：支持并行任务处理（单 Agent 内的多线程，非多 Agent 通信）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定时自动化&lt;/strong&gt;：内置 cron 调度器，支持自然语言配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沙箱环境&lt;/strong&gt;：本地、Docker、SSH、Singularity、Modal 五种后端&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安装方法&#34;&gt;安装方法
&lt;/h2&gt;&lt;h3 id=&#34;快速安装&#34;&gt;快速安装
&lt;/h3&gt;&lt;p&gt;支持平台：Linux、macOS、WSL2（不支持原生 Windows）&lt;/p&gt;
&lt;h3 id=&#34;初始配置&#34;&gt;初始配置
&lt;/h3&gt;&lt;h3 id=&#34;基本命令&#34;&gt;基本命令
&lt;/h3&gt;&lt;h2 id=&#34;从-openclaw-迁移&#34;&gt;从 OpenClaw 迁移
&lt;/h2&gt;&lt;p&gt;Hermes 提供了官方的迁移工具，支持从 OpenClaw（及 legacy Clawdbot/Moldbot）导入配置。&lt;/p&gt;
&lt;h3 id=&#34;迁移命令&#34;&gt;迁移命令
&lt;/h3&gt;&lt;h3 id=&#34;迁移范围&#34;&gt;迁移范围
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;数据类型&lt;/th&gt;
          &lt;th&gt;OpenClaw 源&lt;/th&gt;
          &lt;th&gt;Hermes 目标&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;人设定义&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/SOUL.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/SOUL.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;直接复制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工作区指令&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/AGENTS.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;指定目录&lt;/td&gt;
          &lt;td&gt;需 &lt;!-- raw HTML omitted --&gt;&amp;ndash;workspace-target&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长期记忆&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/MEMORY.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/memories/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;解析合并，去重&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;用户画像&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/USER.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/memories/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;同上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;每日记忆&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/memory/*.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;合并到主记忆&lt;/td&gt;
          &lt;td&gt;全部合并&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Skills&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;workspace/skills/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.hermes/skills/openclaw-imports/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;支持冲突处理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模型配置&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;agents.defaults.model&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;config.yaml&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;支持 fallback&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MCP 服务器&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;mcp.servers.*&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;mcp_servers.*&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;完整迁移&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;迁移注意事项&#34;&gt;迁移注意事项
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Provider 配置需重新验证&lt;/strong&gt;：Hermes 不继承 OpenClaw 的 provider API keys，需重新配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skill 兼容性&lt;/strong&gt;：部分 OpenClaw 生态的 skill 可能需要适配或寻找替代品&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多 Agent 架构差异&lt;/strong&gt;：OpenClaw 的 multi-agent routing 在 Hermes 中没有直接对应实现&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;官方迁移指南：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/guides/migrate-from-openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hermes-agent.nousresearch.com/docs/guides/migrate-from-openclaw/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;与-openclaw-的核心差异&#34;&gt;与 OpenClaw 的核心差异
&lt;/h2&gt;&lt;h3 id=&#34;1-上下文管理策略&#34;&gt;1. 上下文管理策略
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;OpenClaw&lt;/th&gt;
          &lt;th&gt;Hermes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;存储格式&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;.jsonl&lt;!-- raw HTML omitted --&gt; 文件&lt;/td&gt;
          &lt;td&gt;SQLite + FTS5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;记忆分层&lt;/td&gt;
          &lt;td&gt;文件系统分层&lt;/td&gt;
          &lt;td&gt;四层架构（session/persistent/skill/archive）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;检索方式&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;memory_search&lt;!-- raw HTML omitted --&gt; 主动调用&lt;/td&gt;
          &lt;td&gt;自动动态加载 + 周期性提示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;记忆持久化&lt;/td&gt;
          &lt;td&gt;手动管理&lt;/td&gt;
          &lt;td&gt;Agent 主动固化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键区别&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenClaw 依赖用户主动调用记忆检索，适合需要精确控制记忆使用的场景&lt;/li&gt;
&lt;li&gt;Hermes 采用更自动化的记忆管理，声称可以降低 token 使用，但缺乏公开的量化对比数据&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-技能skill系统&#34;&gt;2. 技能（Skill）系统
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;OpenClaw&lt;/th&gt;
          &lt;th&gt;Hermes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;创建方式&lt;/td&gt;
          &lt;td&gt;手动编写 SKILL.md&lt;/td&gt;
          &lt;td&gt;手动编写 + 自动生成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;学习机制&lt;/td&gt;
          &lt;td&gt;静态配置&lt;/td&gt;
          &lt;td&gt;内置学习循环，从经验生成 procedural skills&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;生态丰富度&lt;/td&gt;
          &lt;td&gt;成熟（ClawHub 有大量社区 skill）&lt;/td&gt;
          &lt;td&gt;较新，生态仍在建设中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;技能标准&lt;/td&gt;
          &lt;td&gt;OpenClaw Skill 规范&lt;/td&gt;
          &lt;td&gt;兼容 agentskills.io 开放标准&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实际体验&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;Hermes 的自动生成技能功能在简单任务上表现尚可，但复杂业务逻辑仍需手动编写和调优。OpenClaw 的成熟生态在短期内仍有优势。&lt;/p&gt;
&lt;h3 id=&#34;3-子代理与并行处理&#34;&gt;3. 子代理与并行处理
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Hermes 的委托模式&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重要澄清&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hermes 支持的是&lt;strong&gt;单 Agent 内的子任务并行&lt;/strong&gt;（subagent delegation）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持多 Agent 之间的通信和协作&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;每个子代理有独立的会话、终端和工具集，但只有最终摘要返回父代理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这与 OpenClaw 的 multi-agent routing（多 Agent 独立运行、相互通信）是不同的架构模式。&lt;/p&gt;
&lt;h3 id=&#34;4-平台接入与网关&#34;&gt;4. 平台接入与网关
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能&lt;/th&gt;
          &lt;th&gt;OpenClaw&lt;/th&gt;
          &lt;th&gt;Hermes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;国际平台&lt;/td&gt;
          &lt;td&gt;Telegram、Discord、Slack&lt;/td&gt;
          &lt;td&gt;Telegram、Discord、Slack、WhatsApp、Signal、Email&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;国内平台&lt;/td&gt;
          &lt;td&gt;QQ、飞书&lt;/td&gt;
          &lt;td&gt;飞书、钉钉、企业微信&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;网关架构&lt;/td&gt;
          &lt;td&gt;多 channel 独立配置&lt;/td&gt;
          &lt;td&gt;统一 gateway 进程&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;跨平台连续性&lt;/td&gt;
          &lt;td&gt;有限&lt;/td&gt;
          &lt;td&gt;原生支持（单一会话跨平台）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;语音支持&lt;/td&gt;
          &lt;td&gt;依赖插件&lt;/td&gt;
          &lt;td&gt;内置语音备忘录转录&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;更新&lt;/strong&gt;：Hermes 在 v0.7.0 已新增对飞书、钉钉、企业微信的支持，国内平台适配正在快速完善中。&lt;/p&gt;
&lt;h2 id=&#34;已知问题与限制&#34;&gt;已知问题与限制
&lt;/h2&gt;&lt;h3 id=&#34;1-生态成熟度&#34;&gt;1. 生态成熟度
&lt;/h3&gt;&lt;p&gt;基于 GitHub Issues 的观察（786 open issues）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高频问题&lt;/strong&gt;：配置迁移、模型兼容性、定时任务调度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平台适配&lt;/strong&gt;：部分平台（如 Matrix）存在 typing indicator 延迟问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全相关&lt;/strong&gt;：子进程环境变量继承可能导致凭证泄漏风险（Issue #6032）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-实际使用中的坑&#34;&gt;2. 实际使用中的坑
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;必须显式传递上下文&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;子代理完全独立于父代理的会话，如果不显式传递文件路径、错误信息、项目结构，子代理对 &amp;ldquo;我们刚才讨论的 bug&amp;rdquo; 一无所知。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不好的委托&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确的委托&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id=&#34;3-社区反馈摘要&#34;&gt;3. 社区反馈摘要
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;正面&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;迁移工具比预期顺利&lt;/li&gt;
&lt;li&gt;开箱即用的体验较好&lt;/li&gt;
&lt;li&gt;定时任务功能实用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;负面&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill 生态不如 OpenClaw 丰富&lt;/li&gt;
&lt;li&gt;某些 OpenClaw 内置功能需要手动配置&lt;/li&gt;
&lt;li&gt;新版本迭代快，文档有时滞后&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;选型建议&#34;&gt;选型建议
&lt;/h2&gt;&lt;h3 id=&#34;适合选择-hermes-的情况&#34;&gt;适合选择 Hermes 的情况
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;希望减少手动维护 skill 的工作量&lt;/li&gt;
&lt;li&gt;主要使用单一 Agent，不需要多 Agent 协作&lt;/li&gt;
&lt;li&gt;重视跨平台会话连续性&lt;/li&gt;
&lt;li&gt;使用 Telegram、Discord、飞书、钉钉等平台&lt;/li&gt;
&lt;li&gt;愿意接受较新的、快速迭代的项目&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;不建议迁移的情况&#34;&gt;不建议迁移的情况
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;依赖 QQ 等特定国内平台（Hermes 暂不支持 QQ）&lt;/li&gt;
&lt;li&gt;需要多 Agent 独立运行和相互通信&lt;/li&gt;
&lt;li&gt;已经建立了大量自定义 OpenClaw skill，迁移成本过高&lt;/li&gt;
&lt;li&gt;需要稳定成熟的生态支持&lt;/li&gt;
&lt;li&gt;对自动化技能生成有疑虑，偏好手动控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;混合使用策略&#34;&gt;混合使用策略
&lt;/h3&gt;&lt;p&gt;部分用户反馈的实践经验：&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Hermes&lt;/th&gt;
          &lt;th&gt;OpenClaw&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;上手难度&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;较低（开箱即用）&lt;/td&gt;
          &lt;td&gt;中等（需要配置）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;定制能力&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;生态丰富度&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;较新，在建设中&lt;/td&gt;
          &lt;td&gt;成熟&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;多 Agent 支持&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;不支持&lt;/td&gt;
          &lt;td&gt;支持（multi-agent routing）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;记忆管理&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;自动化&lt;/td&gt;
          &lt;td&gt;手动控制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;国内平台&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;飞书、钉钉、企业微信&lt;/td&gt;
          &lt;td&gt;QQ、飞书&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;代码生成&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;有内置学习循环&lt;/td&gt;
          &lt;td&gt;依赖 skill&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Hermes Agent 是一个设计精良的 AI Agent 框架，特别适合希望快速上手、减少维护工作的用户。但它&lt;strong&gt;不是 OpenClaw 的替代品&lt;/strong&gt;，两者在架构理念上有本质差异。&lt;/p&gt;
&lt;p&gt;如果你重视开箱即用的体验和自动化能力，Hermes 值得一试。如果你需要精细控制、多 Agent 协作或 QQ 平台支持，OpenClaw 仍是更成熟的选择。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最终建议&lt;/strong&gt;：两者可以共存。在独立项目中试用 Hermes，保留现有的 OpenClaw 配置，根据实际需求决定长期使用方案。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Hermes Agent 官网：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hermes-agent.nousresearch.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;迁移指南：&lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/guides/migrate-from-openclaw/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hermes-agent.nousresearch.com/docs/guides/migrate-from-openclaw/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/openclaw/openclaw&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;本文基于官方文档和公开信息整理，版本信息截至 2026 年 4 月。&lt;/em&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
