






















今天在 GitHub Trending 上看到一个有意思的项目:Hermes WebUI,它是 Hermes Agent 的官方 Web 界面,让你可以在浏览器里使用这个强大的自托管 AI 助手。
Hermes WebUI 是一个轻量级的深色主题 Web 应用,为 Hermes Agent 提供浏览器访问界面。它的设计目标是与 CLI 体验保持 1:1 的完全一致——终端里能做的,在 WebUI 里也都能做。
核心特性:
与其他工具的对比:
| 特性 | OpenClaw | Claude Code | Codex CLI | Hermes |
|---|---|---|---|---|
| 持久化记忆(自动) | 是 | 部分† | 部分 | 是 |
| 定时任务(自托管) | 是 | 否‡ | 否 | 是 |
| 消息平台访问 | 15+ | 部分 | 否 | 10+ |
| Web UI(自托管) | 仅仪表板 | 否 | 否 | 是 |
| 自改进技能 | 部分 | 否 | 否 | 是 |
| 开源 | 是 (MIT) | 否 | 是 | 是 |
† Claude Code 有 CLAUDE.md / MEMORY.md 项目上下文和滚动自动记忆,但不是完全自动的跨会话回忆
‡ Claude Code 有云管理的定时任务(Anthropic 基础设施)和会话范围的 /loop;没有自托管的 cron
Hermes WebUI 采用轻量级架构,没有构建步骤、没有框架、没有打包器,只使用 Python 和原生 JS。
server.py HTTP 路由和认证中间件 (~446 行)
api/
config.py # 配置发现、全局变量、模型检测 (~4139 行)
models.py # 会话模型和 CRUD (~1927 行)
streaming.py # SSE 引擎、run_agent、取消支持 (~4420 行)
routes.py # 所有 GET + POST 路由处理 (~9772 行)
profiles.py # 配置文件状态管理 (~1056 行)
static/
index.html # HTML 模板 (~1323 行)
style.css # CSS(含移动端响应式、主题)(~3767 行)
ui.js # DOM 助手、renderMd、工具卡片 (~7216 行)
sessions.js # 会话 CRUD、可折叠分组 (~3517 行)
messages.js # send()、SSE 处理、流式传输 (~2301 行)
panels.js # Cron、技能、记忆、配置面板 (~6480 行)
关键技术选型:
用户输入
↓
浏览器 JS (messages.js)
↓ HTTP POST /api/chat/start
Python server.py (routes.py)
↓ 调用 streaming.py
Hermes Agent (run_agent.py)
↓ SSE 流式返回
streaming.py → routes.py → 浏览器
↓ 实时渲染
ui.js (markdown 渲染、代码高亮、Mermaid 图表)
核心流式传输实现(streaming.py):
# 简化的 SSE 流式传输逻辑
async def run_agent(user_message, session_id):
# 1. 加载会话历史和配置
session = load_session(session_id)
config = load_config()
# 2. 调用 Hermes Agent
agent = AIAgent(config)
# 3. 流式返回 token
async for token in agent.generate_stream(user_message, session.history):
yield f"data: {json.dumps({'token': token})}\n\n"
# 4. 工具调用卡片
for tool_call in agent.tool_calls:
yield f"data: {json.dumps({'tool_call': tool_call})}\n\n"
方法一:一键引导脚本(推荐)
git clone https://github.com/nesquena/hermes-webui.git hermes-webui
cd hermes-webui
python3 bootstrap.py
引导脚本会自动:
/health 健康检查--no-browser)方法二:Docker 部署(5 分钟快速启动)
git clone https://github.com/nesquena/hermes-webui
cd hermes-webui
cp .env.docker.example .env
# 编辑 .env(如果你的主机 UID 不是 1000,例如 macOS 的 UID 从 501 开始)
docker compose up -d
# 打开 http://localhost:8787
启用密码保护(如果要将端口暴露到 127.0.0.1 之外):
echo "HERMES_WEBUI_PASSWORD=设置一个强密码" >> .env
docker compose up -d --force-recreate
方法三:手动启动
cd /path/to/hermes-agent # 或任何 sys.path 能找到 Hermes 模块的路径
HERMES_WEBUI_PORT=8787 venv/bin/python /path/to/hermes-webui/server.py
注意:使用 Agent 的 venv Python(或任何已安装 Hermes Agent 依赖的 Python 环境)。系统 Python 会缺少
openai、httpx等必需的包。
# 1. 克隆仓库
git clone https://github.com/nesquena/hermes-webui.git
cd hermes-webui
# 2. 运行引导脚本(会自动处理所有依赖)
python3 bootstrap.py
# 3. 如果需要通过 SSH 隧道远程访问
ssh -N -L 8787:127.0.0.1:8787 [email protected]
# 4. 在本地浏览器打开
open http://localhost:8787
1. 聊天和 Agent 交互
2. 会话管理
⋯ 下拉菜单)——固定、移动到项目、归档、复制、删除3. 工作区文件浏览器
workspace://path/to/file 在右侧预览窗格中打开文件1. 配置文件(Profiles)
config.yaml2. 定时任务(Cron)
3. 技能管理
4. 记忆管理
场景:使用 Hermes WebUI 管理开发项目
# 1. 创建项目并分配会话
在 WebUI 中:
- 点击侧边栏底部的"项目"图标
- 创建新项目 "MyApp 开发"
- 将相关会话移动到此项目
# 2. 使用工作区文件浏览器
- 在右侧面板中浏览项目文件
- 点击文件内联预览
- 使用 `workspace://path/to/file` 在聊天中引用文件
# 3. 设置定时任务
- 打开"任务"面板
- 创建 cron 作业:"每天 09:00 检查 GitHub Issues"
- 结果会自动推送到 Telegram/Discord
# 4. 利用持久化记忆
- Hermes 会记住你的项目结构、编码偏好、常用命令
- 跨会话保留上下文,无需重复解释
场景:通过 Tailscale 在手机上访问
# 1. 在服务器和手机上安装 Tailscale
# 2. 启动 WebUI 监听所有接口
HERMES_WEBUI_HOST=0.0.0.0 HERMES_WEBUI_PASSWORD=你的密码 ./start.sh
# 3. 在手机浏览器中打开
http://<服务器 Tailscale IP>:8787
# 4. 添加到主屏幕获得类 App 体验
问题:bootstrap.py 报错"Hermes Agent not found"
解决方案:
# 手动安装 Hermes Agent
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 或者设置环境变量指定 Agent 目录
export HERMES_WEBUI_AGENT_DIR=/path/to/hermes-agent
python3 bootstrap.py
问题:AIAgent not available 错误
原因:Python 环境缺少 Hermes Agent 依赖
解决方案:
# 使用 Agent 的 venv Python 启动 WebUI
~/path/to/hermes-agent/venv/bin/python /path/to/hermes-webui/server.py
# 或者将 Agent 目录添加到 PYTHONPATH
export PYTHONPATH=/path/to/hermes-agent
python3 server.py
问题:流式响应卡顿或延迟
解决方案:
问题:Windows 原生不支持 bootstrap.py
解决方案:
问题:Docker 部署时 .env: permission denied
解决方案:
# 在 .env 中设置
HERMES_SKIP_CHMOD=1
Hermes WebUI 是一个功能完整、架构清晰、易于部署的自托管 AI Agent Web 界面。它的核心价值在于:
如果你正在寻找一个可自托管的 AI Agent 解决方案,或者想要一个完整的 Web 界面来管理你的 Hermes Agent,Hermes WebUI 绝对值得一试。
相关链接:
P.S. 如果你喜欢这个项目,不妨给它点个 ⭐️,让更多人发现这个优秀的开源项目!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。