开源项目研究

Hermes Agent 何时真正公开:长期记忆、默认宿主执行与生产边界

以 GitHub 2026-02-25 20:18:51 UTC 首次公开记录和 2 月 27 日固定快照为边界,追踪 Hermes Agent 从消息入口、记忆与 Cron 到默认本地 shell 的执行链,并审计隔离、审批、许可证与商业化条件。

发布:2026/02/27更新:2026/03/12
Hermes Agent 从消息渠道经过 Gateway、会话记忆与模型循环,再按后端和运行上下文经过条件性危险命令检查,进入本地、Docker、SSH、Modal 等执行环境的控制面
图 1:本站依据 2026-02-27 固定 README、默认配置与终端环境源码重绘;它表达执行链与信任边界,不代表本站已部署 Hermes Agent。

时间与证据

本文研究的事件是 Nous Research 将 Hermes Agent 仓库从私有状态转为公开。GitHub Commit Search 页面的嵌入元数据记录:仓库对象创建于 2025-07-22T22:22:28Z,首次公开时间是 2026-02-25T20:18:51Z。后者对应北京时间 2 月 26 日 04:18:51,但本站在只有机器时间戳时统一使用 UTC 日历日,所以时间线事件日是 2 月 25 日。

这个事件不能写成“2025 年 7 月正式开源”,因为私有仓库创建不等于公众能够获得代码;也不能写成“v0.1.0 正式 Release”。T+2 的 pyproject.toml0.1.0package.json1.0.0,远端没有可用于证明首发的 v0.1.0 tag。本文只使用“仓库首次公开”这一可核验表述。

信息截止日是 2026 年 2 月 27 日。本文选用 f14ff3e 作为 T+2 可复核快照,其 commit time 为 2026-02-27T23:10:27Z,对应北京时间已经是 2 月 28 日 07:10:27。T+2 指事件日加两个 UTC 日历日,不是严格滚动 48 小时;f14ff3e 也只称“本文选用的快照”,不声称它是截止日前仓库所有分支中的最后提交。

同一 UTC 日历日还有一条独立安全修复 fbb1923,时间为 2026-02-27T16:53:46Z。它针对文档缓存路径、未知文件大小和文件内容进入提示上下文等边界增加防护,但不在 f14ff3e 的祖先链或树中。因此本文把它作为同期发布演化证据,不能倒填成所选快照已经包含的安全能力。

本文证据等级是 sourced。我重放了公开时间元数据,逐项检查固定 commit 下的 README、默认配置、环境工厂、LocalEnvironment 与审批代码,但没有安装 Hermes Agent、连接真实消息渠道或执行长期任务。文中的功能、隔离和安全机制都写成“固定文档或源码显示”,不写成本站运行结果。

当时发生了什么

从一次对话变成常驻控制面

T+2 README 将 Hermes Agent 描述为可以在服务器长期运行的 personal agent:它连接 Telegram、Discord、Slack、WhatsApp 与 CLI,通过 Gateway 维持会话和 Cron;同时保存 memory、skills、sessions、logs、配置和凭据。这里真正的新变量不是“模型又多会一种回答”,而是 外部事件能够在用户不盯着屏幕时触发带状态的工具执行

消息渠道 / CLI / 定时触发
-> Gateway 身份与会话
-> Memory / Skills / Cron / Session 状态
-> 模型 Agent loop 与工具选择
-> Local / Docker / SSH / Singularity / Modal 执行环境
-> 文件、网络、进程、账户与外部副作用

记忆使系统可以延续用户偏好和项目上下文,skills 使流程可以被保存和再次执行,Cron 使任务在无人交互时触发。三者共同增加长期价值,也共同扩大状态污染、供应链和恢复范围。错误不再只是一段不准确文字,还可能变成重复任务、过期技能、泄露日志或真实命令。

默认执行链最终落到宿主登录 shell

“支持沙箱”不能替代检查默认值。固定默认配置将 terminal.backend 设为 local;CLI 和多个消息渠道的默认工具预设包含 terminal;环境工厂把 local 映射到 LocalEnvironmentLocalEnvironment 最终在宿主工作目录调用:

[user_shell, "-lc", exec_command]

并以当前进程环境与附加环境的合并结果启动子进程。可核验结论是:默认终端后端不是容器,而是在当前宿主账户权限范围内,以登录 shell 执行命令并继承进程环境。具体读取哪些启动文件由 Bash、Zsh 等 shell 的规则决定;不能进一步夸大成“必然读取所有密钥”或“默认取得 root”。

这条默认链对商业部署非常关键。Gateway 若作为 systemd 服务长期运行,服务账户的文件权限、环境变量、工作目录、网络出口和可用命令就构成 Agent 的真实权限上限。仅在 Prompt 中要求“不要访问秘密”,不会改变操作系统权限。

五种后端不是五种同等级安全保证

T+2 README 推荐生产使用 SSH 独立机器、本机隔离使用 Docker、云端沙箱使用 Modal,并列出 Singularity 作为 HPC 方案。这些后端改变执行位置,但不能用一个“已沙箱”标签概括。

后端 实际改变 仍需单独治理
Local 直接使用 Gateway 宿主账户和工作目录 文件、环境变量、网络、sudo、进程与服务凭据
Docker 只读根文件系统、丢弃 capability、no-new-privileges、PID 限制 持久目录挂载、默认网络出口、镜像供应链与 Docker daemon 权限
SSH 把执行面转移到远端账户 远端账户权限、密钥、网络、持久状态与主机生命周期
Modal 把执行面放到云端沙箱 云账户权限、秘密注入、数据出口、计费和服务可用性
Singularity 在 HPC/无 root 场景使用容器环境 挂载路径、集群身份、共享存储与调度权限

Docker 文件系统隔离不等于断网;SSH 远端也不等于低权限。更稳妥的生产表述是“独立主机或一次性低权限账户 + 显式网络与秘密策略”,而不是笼统地承诺某个 backend 天然安全。

危险命令审批只是护栏

固定 tools/approval.py 的决策流 显示,审批基于有限的危险命令正则检测,并按顺序存在四类直接批准路径:env_typedockersingularitymodal;命令没有命中危险模式;对应 pattern_key 已在本 session 或永久允许集合中;或者 HERMES_INTERACTIVEHERMES_GATEWAY_SESSION 两个标志都不存在。最后一项是逻辑 AND,不是任意一个标志缺失就放行;同时,若两个上下文标志都不存在,单独设置 HERMES_EXEC_ASK 也会先命中该直通分支。

只有后端未被直通、危险模式未获允许,且至少存在交互 CLI 或 Gateway 上下文时,代码才会进入待审批或本地提示路径。交互提示选择 always 后,系统保存的是由正则派生的 pattern_key,而不是这条完整命令:它先加入 session 与永久集合,再写入 command_allowlist。因此,后续会话中命中同一模式键的命令可直接通过。这对阻止部分明显危险命令有价值,但不是逐命令授权,也不是通用授权引擎。

生产系统不能据此声称“所有写操作都会等待人工确认”。真正的硬边界还需要工具默认拒绝、参数 schema、资源级权限、租户上下文、一次性审批、审计和执行沙箱。本站的 MCP 权限网关实验 用最终上游状态验证了这些最小原语,但它是独立实验,不是 Hermes Agent 首发自带能力。

许可证与安全修复也是发布质量

f14ff3e 的 README、pyproject.tomlpackage.json 都声明 MIT,README 还链接根目录 LICENSE;但该快照的根目录实际上没有许可证正文。直到 3 月 7 日,提交 9ba5d399 才新增 21 行 MIT 文件,标题为 restore missing MIT license file。现有证据只能证明 3 月 7 日新增,不能无依据写成此前一定删除过。

这属于首发材料一致性问题,不等于“代码完全没有版权”,也不足以替读者作法律结论。企业在 T+2 采用时应固定 commit、保存许可文本并核对依赖许可,而不能只依赖 badge 或包元数据。

同日独立安全提交 fbb1923 说明文档入口本身也是攻击面:文件名、缓存路径、文件大小和进入 Prompt 的展示文本都会跨越不可信输入边界。提交信息不能证明已经发生公开攻击,也不能证明修复消除了全部路径遍历或提示注入风险;它只证明维护者在公开初期已经修改这些具体边界。

任务判断

假设一家小型跨境电商希望把 Hermes Agent 部署为常驻运营助理:Telegram 接收负责人指令,Slack 汇总团队消息,每天读取订单与广告数据生成简报,必要时运行脚本,并把结果发回手机。团队希望后续让它创建退款草稿和修改库存。

这个场景不能用“消息渠道已经接通”验收。上线前至少要回答:

  1. 哪些用户、群组和 bot token 可以进入 Gateway,未知发送者是否默认拒绝。
  2. 个人聊天、团队频道和 Cron 是否使用独立 session、workspace 与权限策略。
  3. terminal backend 是否仍是 local;服务账户能读取哪些文件、环境变量和网络地址。
  4. Memory、Skills、Cron 与日志分别由谁修改,是否有版本、来源、过期和回滚机制。
  5. 网页、附件和转发消息中的不可信内容能否直接触达 terminal、浏览器或外部 API。
  6. 退款、库存和发布等写操作能否限制参数、绑定一次性审批并保证幂等。
  7. 模型、渠道、脚本或主机失败后,如何停止任务、判断未知结果、撤销和恢复。
  8. 固定 commit 的许可证、第三方服务条款和数据留存是否满足部署要求。

合理的上线顺序不是一步到位开放 Shell,而是按副作用升级:

  • 阶段 0:只读研究。独立低权限环境,只允许固定数据源,输出简报但不写业务状态。
  • 阶段 1:生成草稿。可以生成回复、脚本或退款建议,由人检查后在原系统执行。
  • 阶段 2:有限写入。工具和参数白名单、一次性审批、幂等键、完整审计与停止开关同时成立。
  • 阶段 3:无人值守任务。只开放结果可验证、失败可恢复、损失上限明确的窄任务,并持续监控。

按 T+2 证据,Hermes Agent 可以进入隔离的只读原型;不能仅凭默认安装承诺多用户、公开入口、自动支付或任意宿主命令的生产安全。

工程影响

把长期状态当成供应链

传统依赖供应链关注 package、镜像和二进制。长期 Agent 还要把 memory、skills、Cron、Prompt、模型配置和历史 session 纳入供应链,因为它们都会影响未来动作。

每个 skill 至少需要来源、版本、哈希、所需工具、允许参数、网络域名和审查人;每个 Cron 需要创建者、下一次执行、最大运行时间、预算、输出渠道和关闭开关;Memory 应区分用户确认事实、模型推断和临时观察,避免一次错误永久污染后续决策。

身份、内容、动作和执行环境分层

可信渠道身份
-> 不可信内容标记与数据解析
-> 本地工具/参数策略
-> 高风险动作一次性审批
-> 隔离执行账户与网络出口
-> 权威业务状态 + 审计 + 恢复

渠道 allowlist 只能回答谁能发消息,不能证明他转发的网页安全;危险命令正则只能拦截已知字符串,不能判断业务语义;Docker 只能收缩部分宿主权限,不能替代 API 账户的最小权限。四层必须分别设门。

评测单位从回答升级为长期任务

长期 Agent 的评测不能只看单轮答案。至少需要记录任务成功率、错误写入率、审批率、重复执行率、未知结果率、P50/P95 完成时间、每个成功任务成本、人工接管时间和恢复时间。Cron 还要验证重启后是否重复触发,渠道断线后是否补发,审批超时后是否仍可能执行。

只有在固定周期、固定任务量和明确损失边界下取得这些数据,证据等级才可以从 sourced 升级到 field-tested

商业价值

Hermes Agent 释放的商业信号是:个人 Agent 正从按次问答转向连接用户现有渠道、状态和执行环境的常驻系统。潜在付费者包括需要跨渠道信息整理的创业者、顾问、运营团队、研究人员和小型服务组织。可收费部分更可能是托管部署、企业连接器、任务模板、权限策略、审计、备份和故障恢复,而不是模型对话本身。

单任务期望净价值
= 成功率 ×(节省人工分钟 × 单位时间价值 + 响应改善价值)
- 模型、渠道与基础设施成本
- 审批和复核人工成本
- 错误率 × 平均恢复或业务损失

只读汇总、定时巡检、明确数据源的研究任务更容易得到正值;共享个人浏览器、任意 Shell、支付和不可逆外部发布会提高错误损失。若每个动作都需长时间人工确认、任务频率又低,常驻 Agent 可能不如传统脚本或人工流程经济。

商业试点应预先限定为 90 天:前 30 天只运行只读与草稿任务,后 60 天也只开放可撤销、可核验的有限写入,并在固定任务集上记录至少四个连续周的结果。建议在试点前写死停止条件:任何未授权写入立即停止;若权威结果成功率低于 95%、未知结果率高于 0.5%、人工接管中位时间超过 5 分钟,或单任务期望净价值连续四周不为正,就不进入更高风险阶段。这些阈值是待验证的商业门槛,不是本文已经取得的实测成绩。

长期差异化更可能来自经过验证的任务数据、连接器、权限模板、失败样本和恢复记录,前提是它们能持续提高成功率或降低集成与风险成本。只更换模型或包装当前开源仓库,竞争者可以低成本复制,难以形成稳定壁垒。

局限与风险

第一,本文没有运行 Hermes Agent。消息稳定性、Cron 恢复、Memory 质量、终端兼容性和真实任务成功率都没有本站实测,因此不能把 README 功能写成 SLA。

第二,made_public_at 来自 GitHub 搜索页面嵌入数据,不是承诺长期稳定的 REST schema。本站保存了字段路径、抓取时间、输出以及完整 embeddedData 载荷和哈希;页面结构变化后重放命令仍可能需要调整。

第三,T+2 只代表快速迭代项目在特定 commit 与独立安全分支上的状态。当前 README、默认值、工具和许可可能已经变化;生产采用必须重新固定当前版本,不应照抄本文命令。

第四,隔离后端降低的是部分爆炸半径,不是绝对安全。网络出口、持久卷、远端账户、云秘密、Docker daemon 和业务 API 权限仍可能跨越容器边界。

第五,危险命令正则存在语义盲区。看似安全的命令可以通过脚本、解释器、工具组合或业务 API 产生高风险副作用;授权必须面向能力和资源,而不是只匹配命令文本。

第六,T+2 缺少根许可证正文是事实,但本文不替代法律审查。后续新增 MIT 文件也不能自动解决所有依赖、模型、渠道和数据的独立条款。

面试表达

30 秒结论: GitHub 元数据显示 Hermes Agent 在 2026 年 2 月 25 日 20:18:51 UTC 首次公开,不是 2025 年私有仓库创建时。它的意义不是多一个聊天 UI,而是把渠道、记忆、技能、Cron 和真实终端连接成常驻控制面。T+2 默认 terminal backend 是 local,会在宿主账户权限下用登录 shell 执行;所以生产采用必须先完成身份、工具参数授权、一次性审批、隔离账户、审计与恢复。

3 分钟展开: 我会先说明 UTC 时间和固定 commit,再沿默认配置、环境工厂、LocalEnvironment 追到 $SHELL -lc,证明“支持 Docker”不等于默认已隔离。然后比较 Local、Docker、SSH、Modal 的不同边界,解释危险命令正则为什么只是护栏。最后用跨境电商运营助理说明从只读、草稿到有限写入的分阶段验收,并以最终业务状态、重复执行率、接管和恢复评测长期 Agent。

如果追问“有 Gateway allowlist 是否足够”,答案是否定的。Allowlist 证明发送者身份,不证明网页和附件可信,也不限制已授权模型调用宿主工具。身份、内容、动作和执行环境必须分别设门。

如果追问“为什么不直接用 Docker”,答案是 Docker 可以收缩文件系统和 Linux capability,但持久挂载、网络出口、镜像、Docker daemon 与外部 API 凭据仍需治理。对高风险任务,独立低权限账户或一次性远端环境通常比在 Gateway 主机共享长期状态更容易控制爆炸半径。

复盘

站在 2026 年 7 月回看,Hermes Agent 最值得关注的变化是“长期存在”本身:Memory、Skills 和 Cron 让 Agent 能积累上下文并持续工作,也让错误和权限跨越单次会话。长期记忆增加使用价值,长期权限决定风险上限。

这次取证也说明,开源项目发布日期、仓库创建日、版本字段、tag、公开时间和许可证文件是不同证据。只看当前 README,会把私有开发期、后续修复和今天的能力压成一个错误时间点。

下一步应固定一个 Hermes Agent 版本,在隔离账户中验证四条真实链路:未知消息是否被拒绝、Cron 重启是否重复、恶意附件能否跨到 terminal、审批与 kill switch 是否阻止最终副作用。实验需要公开版本、配置、输入、调用轨迹、上游状态和恢复结果;在完成之前,本文保持 sourced

方法披露

本文使用 AI 工具协助资料整理、代码定位和图表草拟;事件日期、一手来源、引用语境、最终文字与判断由作者逐项复核并负责。

修订记录

  • 2026-02-27:初版发布;核验 GitHub UTC 公开时间、T+2 固定快照、默认 local 执行链、危险命令审批的四类直通条件与模式级永久允许、许可证缺口及同日独立安全修复。

Source ledger

来源账本

以下来源用于核对事实、日期与当时可用范围。厂商自报性能不视为本站独立复现。

  1. Hermes Agent repository publication metadata
    GitHub / Nous Research官方注册表记录同期证据来源发布:2026/02/25本站核验:2026/03/12
  2. Hermes Agent T+2 snapshot commit
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  3. Hermes Agent T+2 README
    Nous Research官方文档同期证据来源发布:2026/02/27本站核验:2026/03/12
  4. Hermes Agent T+2 default configuration
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  5. Hermes Agent T+2 terminal environment factory
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  6. Hermes Agent T+2 LocalEnvironment implementation
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  7. Hermes Agent T+2 dangerous command approval implementation
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  8. Hermes Agent T+2 approval direct-pass and decision flow
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  9. Hermes Agent T+2 session and permanent pattern allowlist
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  10. Hermes Agent T+2 permanent allowlist persistence
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  11. Document-processing security fix
    Nous Research官方仓库同期证据来源发布:2026/02/27本站核验:2026/03/12
  12. Post-cutoff: restore missing MIT license file(仅用于许可证时间线)
    Nous Research官方仓库事后复盘资料来源发布:2026/03/07本站核验:2026/03/12

讨论

正在加载评论...