📌 项目地址nesquena/hermes-webui | ⭐ 9,868 颗星 | 🔧 Python | 📜 未标注

Hermes Agent 是一个自托管的自主 Agent,像守护进程一样跑在服务器上,通过终端或消息 App 访问。它带有持久记忆、技能系统和离线任务调度,运行时间越长,对环境的理解越准确。官方称它为“Sophisticated autonomous agent”。

Hermes WebUI 是官方配套的浏览器界面。README 里最关键的一句话是:“Full parity with the CLI experience – everything you can do from a terminal, you can do from this UI.” 我跑了跑 WebUI,验证了一下这句话。

验证 1:1 功能对等

我主要关注 WebUI 是否真的把 CLI 的高频操作全覆盖了。以下几个点,是每次与 Hermes Agent 交互都会用到的:

  • 会话切换
    CLI 里切换会话的流程:先 hermes session list 看所有会话 ID,找到目标会话,再 hermes session switch <id>。同时维护多个上下文(代码项目、资料整理、定时任务监控)时,每次切换都要在终端的文本输出里翻找。WebUI 左栏列出了所有会话,通过 project 和 tags 分组,单击就能切换。README 原文写的是“Left sidebar for sessions and navigation”,实际用起来就是省掉了查 ID 和手动输入 ID 的步骤。

  • 工具调用结果查看
    Agent 执行工具调用(比如修改文件、查询数据库)后,CLI 会把工具名、输入参数和返回值全部混在思考过程里,想复制某次工具调用的输出,得手动滚屏找开始和结束位置。WebUI 把每次工具调用做成一张独立的卡片,卡上清楚标注了“工具名”、“输入参数”、“返回值”。右键复制卡片内容就行,不用每次手动选中。README 里说的 tool call cards 就是这个东西。

  • 文件浏览和预览
    Hermes Agent 经常修改文件,CLI 里想查看修改后的文件内容,得先记下文件路径,然后手动 catless。WebUI 右侧有一个文件浏览器(README 说“right for workspace file browsing”),展开目录树,搜索文件名,点一下文件就能在侧边预览。我跑了几次测试,这个文件浏览器能直接看到 Agent 创建的文档,不用再切回终端。

  • 当前配置实时可见
    CLI 里当前用的 profile、workspace、模型取决于启动参数或环境变量,无法在运行时直接确认。WebUI 的 composer footer 底部始终显示这些信息,同时右侧有一个圆形的 context ring(原文说“A circular context ring shows token usage at a glance”),显示当前会话的 token 使用情况。我写长提示词时会瞥一眼 ring,如果快满了就手动清理上下文或换模型。CLI 要查 token 得另开终端调模型 API。

  • 安全访问
    README 里说可以通过 SSH tunnel 安全地访问 WebUI。设个密码后,就算同事能 ssh 到服务器,也看不到 Agent 的对话记录。CLI 本身没有账号密码机制,但 WebUI 提供了密码配置(在 Hermes Control Center 里设置)。

以上五点的操作,在 CLI 和 WebUI 里都能做,区别在于 WebUI 把每个操作的步骤缩短了。翻 ID 变成单击,cat 文件变成点文件树,手选结果变成右键复制。但没有任何功能是 WebUI 独占的,它没有新增 Agent 能力,也没有改变 Agent 的行为。

启动方式

README 给出了三种启动方式,都基于已有的 Hermes Agent 配置:

  • python bootstrap.py —— 适合从源码初始化
  • ./start.sh —— 适合已有 Hermes 环境,直接拉起 WebUI
  • ./ctl.sh —— 带 start/stop/status 参数的管理脚本

我跑 ./start.sh,几秒后终端显示本地端口。然后通过 SSH 隧道转发到笔记本浏览器。启动时 WebUI 自动读取已有的 Hermes Agent 配置文件,终端和 WebUI 可以同时运行。白天在电脑上操作,晚上在手机查定时任务输出——响应式布局基本够用。

Docker 部署也有单容器和多容器两种方式,README 里有说明,我还没试,但如果你已经有 Docker 环境,可以看看。

值得注意的设计细节

  • Composer Footer:底部始终显示当前 profile、workspace、模型,以及 token 用量环。在 CLI 里这些东西等于是“当前状态”,但没有被固定显示。这个设计减少了“我当前用的是哪个模型”这类需要确认的问题。

  • Hermes Control Center:在左栏底部启动,那里可以设置密码、调整主题、管理设置。密码保护是 CLI 没有的功能,WebUI 加了一层访问控制。

  • 三栏布局:左栏是会话和导航,中间是对话,右栏是文件浏览。这个布局在桌面浏览器上很好用,手机上会自动折叠为单栏(README 提了 mobile 支持)。

它解决的是什么问题?

Hermes Agent CLI 功能完整但操作繁琐。每个操作都需要一步或多步手动命令。WebUI 没有新增功能,但把高频操作从“终端命令链”变成了“固定布局上的几个点击和预览”。它解决的不是 Agent 能力问题,而是用户在运行时频繁执行的那些小动作的摩擦。

如果你的 Hermes Agent 已经跑起来,并且你觉得切换会话和看文件有点麻烦,可以试试。下载,启动,隧道,用。

几个局限

  • 不是独立的 Agent:它依赖已有的 Hermes Agent 配置和模型。如果你还没装 Hermes Agent,要先装。
  • 不是桌面原生应用:它是个 Web App,需要 Python 后端运行在服务器上,并通过浏览器访问。没有 Electron 版,没有离线安装包。
  • 不是 RAG:不是向量检索也不是知识库,它就是 Agent 的界面。不能直接用它搜索本地文件做 RAG,需要 Agent 自己实现了搜索工具。

Hermes WebUI 的价值在于,它证明了“一个 CLIs 工具的高频操作可以被打包成一个三层布局的 Web 应用,而不损失任何核心功能”。如果你有 Hermes Agent 在跑,可以花五分钟跑起来看看。如果没有,可以先从 Hermes Agent 开始。

这篇文章对你有帮助吗?

发表回复