如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://hermes-agent.nousresearch.com/ 是一款运行在服务器上的高级自主代理,可通过终端或消息应用访问,它能记住所学知识,运行时间越长能力越强。
Hermes WebUI 是 https://hermes-agent.nousresearch.com/ 的轻量级深色主题浏览器 Web 应用界面。与 CLI 体验完全一致——所有可在终端执行的操作,都能通过此 UI 完成。无需构建步骤、无需框架、无需打包工具,仅需 Python 和原生 JS。
布局:三面板设计。左侧边栏用于会话和导航,中间为聊天区域,右侧为工作区文件浏览。模型、配置文件和工作区控制项位于输入框底部——在输入过程中始终可见。圆形上下文环可直观显示令牌使用情况。所有设置和会话工具都在Hermes Control Center(侧边栏底部的启动器)中。
支持完整配置文件的浅色模式
自定义设置,配置密码
带有内联预览的工作区文件浏览器
会话项目、标签和工具调用卡片
这使你通过 Hermes 环境的 SSH 隧道安全访问时,能获得与 Hermes CLI 几乎1:1 的功能对等的便捷 Web UI。单命令即可启动,单命令即可通过 SSH 隧道在本地计算机上访问。Web UI 的每一部分都使用你现有的 Hermes 代理和模型,无需任何额外设置。
bootstrap.py / start.sh / ctl.sh大多数 AI 工具每次会话都会重置。它们不知道你是谁、你在做什么工作,也不知道你的项目遵循什么约定。你每次都要重新解释自己。
Hermes 跨会话保留上下文,在你离线时运行计划任务,并且运行时间越长,对环境的理解就越深入。它使用你现有的 Hermes 代理设置和模型,无需额外配置即可启动。
与其他代理工具的区别:
与同类工具对比(领域正在快速变化——完整分析见 docs/why-hermes.md):
| 特性 | OpenClaw | Claude Code | Codex CLI | OpenCode | Hermes |
|---|---|---|---|---|---|
| 持久化记忆(自动) | 是 | 部分† | 部分 | 部分 | 是 |
| 计划任务(自托管) | 是 | 否‡ | 否 | 否 | 是 |
| 消息应用访问 | 是(15+ 平台) | 部分(/ 预览版) | 否 | 否 | 是(10+) |
| Web UI(自托管) | 仅仪表盘 | 否 | 否 | 是 | 是 |
| 自我改进技能 | 部分 | 否 | 否 | 否 | 是 |
| Python / ML 生态系统 | 否(Node.js) | 否 | 否 | 否 | 是 |
| 支持多模型提供商 | 是 | 否(仅 Claude) | 是 | 是 | 是 |
| 开源 | 是(MIT) | 否 | 是 | 是 | 是 |
† Claude Code 有 CLAUDE.md / MEMORY.md 项目上下文和滚动自动记忆,但无完整的跨会话自动回忆功能
‡ Claude Code 有云托管计划任务(Anthropic 基础设施)和会话范围的 /loop;无自托管 cron
最接近的竞争对手是 OpenClaw——两者都是持续运行、自托管、开源的代理,具备记忆、cron 和消息功能。主要区别:Hermes 将自动编写和保存自己的技能作为核心行为(OpenClaw 的技能系统以社区市场为中心);Hermes 在更新时更稳定(OpenClaw 有文档记录的版本回归问题,且 ClawHub 曾发生涉及***技能的安全事件);Hermes 原生运行在 Python 生态系统中。完整对比见 docs/why-hermes.md。
运行仓库引导程序:
git clone https://github.com/nesquena/hermes-webui.git hermes-webui
cd hermes-webui
python3 bootstrap.py
或继续使用 shell 启动器:
./start.sh
对于自托管 VM 或家庭实验室安装,ctl.sh 封装了常见的守护进程生命周期命令,无需 fuser 或 pkill:
./ctl.sh start # 后台守护进程,PID 位于 ~/.hermes/webui.pid
./ctl.sh status # PID、运行时间、绑定的主机/端口、日志路径、/health
./ctl.sh logs --lines 100 # 查看 ~/.hermes/webui.log 的最后 100 行
./ctl.sh restart
./ctl.sh stop
ctl.sh start 在守护进程包装器后台以前台/无浏览器模式运行引导程序,将日志写入 ~/.hermes/webui.log,并支持 .env 文件及内联覆盖(例如 HERMES_WEBUI_HOST=0.0.0.0 ./ctl.sh start)。
停止服务器。每种启动方式都有自己的停止路径,因为只有
ctl.sh start会写入 PID 文件(~/.hermes/webui.pid):
启动方式 停止方法 python3 bootstrap.py在终端中按 Ctrl-C(前台运行) ./ctl.sh start./ctl.sh stop(发送 SIGTERM,等待后发送 SIGKILL)分离的 bootstrap.py(无--foreground)或./start.sh通过 lsof -i :8787(或ss -tlnp)查找 PID 并kill
./ctl.sh stop无法停止直接通过bootstrap.py或start.sh启动的服务器——它仅管理自己启动的进程。
两个可选的自托管部署功能——将动态会话回忆预填充附加到浏览器对话(Joplin/Obsidian/Notion/llm-wiki 路由器),以及通过运行中的Hermes Gateway路由浏览器聊天——在 docs/advanced-chat-setup.md 中有详细说明。大多数用户不需要这两个功能。
引导程序将:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash)。/health 端点响应。--no-browser 参数。[!NOTE] 此引导程序暂不支持原生 Windows。请使用 Linux、macOS 或 WSL2。如需在 Windows/WSL 中设置登录自动启动,请参阅
docs/wsl-autostart.md。
python -m venv venv → pip install -r requirements.txt → pwsh .\start.ps1(脚本会自动发现 venv\Scripts\python.exe)。venv/bin/python,ELF 格式)无法被原生 Windows Python 调用,因此请使用上述原生安装方法。如果需要完整的 bootstrap.py + Linux 运行时,WSL2 仍可作为并行安装选项使用。如果安装后提供程序设置仍未完成,引导向导会引导你通过 hermes model 命令完成设置,而非在浏览器中复现完整的 CLI 设置流程。
有关向导的分步指南、提供程序选择、本地模型服务器 Base URL 以及安全重新运行的说明,请参阅 docs/onboarding.md。
如果有 AI 助手协助安装、重新安装、引导、提供程序设置或首次运行支持,请让其在执行命令或检查日志前阅读 docs/onboarding-agent-checklist.md。
HERMES_WEBUI_PASSWORD 环境变量或设置面板启用config.yaml 中配置 webui_oidc.issuer、client_id、allow_claim 和 allow_values,或设置对应的 HERMES_WEBUI_OIDC_* 环境变量。只有这四个参数均存在时 OIDC 才会启用,若配置不完整,启动时会打印警告。\login 路径下的极简深色主题登录页面docker run(不使用compose)docker pull ghcr.io/nesquena/hermes-webui:latest
docker run -d \
-e WANTED_UID=$(id -u) -e WANTED_GID=$(id -g) \
-v ~/.hermes:/home/hermeswebui/.hermes \
-e HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui \
-v ~/workspace:/workspace \
-p 127.0.0.1:8787:8787 \
ghcr.io/nesquena/hermes-webui:latest
docker build -t hermes-webui .
docker run -d \
-e WANTED_UID=$(id -u) -e WANTED_GID=$(id -g) \
-v ~/.hermes:/home/hermeswebui/.hermes \
-e HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui \
-v ~/workspace:/workspace \
-p 127.0.0.1:8787:8787 \
hermes-webui
如果希望将agent和WebUI放在独立容器中(出于隔离目的,或因为您已在其他位置运行agent网关):
# Agent + WebUI
docker compose -f docker-compose.two-container.yml up -d
# Agent + 仪表盘 + WebUI
docker compose -f docker-compose.three-container.yml up -d
两个compose文件默认使用命名Docker卷,通过设计解决了UID/GID问题。如果需要绑定挂载来共享现有主机目录,请参见 docs/docker.md 获取完整迁移方案。
[!IMPORTANT] 已知限制 (#681):在双容器设置中,从WebUI触发的工具会在WebUI容器中运行,而非agent容器。如果需要WebUI文件系统上有git/node等工具,请使用单容器设置、扩展WebUI Dockerfile,或使用社区https://github.com/sunnysktsang/hermes-suite%E3%80%82
[!IMPORTANT] 源码边界说明 (#2453):多容器设置默认将
hermes-agent-src以只读方式挂载到WebUI中。这可防止WebUI端的源码重写,但仍是实现耦合的桥梁,而非稳定的Agent API边界。有关当前源码/API解耦清单,请参见docs/rfcs/agent-source-boundary.md。
| 症状 | 可能原因 | 解决方法 |
|---|---|---|
启动时出现 PermissionError | 绑定挂载上的UID不匹配 | 在 .env 中设置 UID=$(id -u) |
.env: permission denied (#1389) | fix_credential_permissions() 强制设置为0600权限 | 在 .env 中设置 HERMES_SKIP_CHMOD=1 |
| 工作区显示为空 | /workspace 挂载上的UID不匹配 | 在 .env 中设置 UID=$(id -u) |
聊天中出现 git: command not found | 双容器架构限制 (#681) | 使用单容器或扩展Dockerfile |
| WebUI无法找到agent源码 | hermes-agent-src 卷配置错误 | 按原样使用compose文件中的命名卷 |
Podman共享 .hermes 失败 | Podman 3.4 keep-id 限制 | 使用Podman 4+或单容器 |
WebUI访问 localhost 主机API失败 | 容器内的 localhost 指容器本身,而非您的主机 (#3012) | Docker Desktop上使用 http://host.docker.internal: ,Podman上使用 http://host.containers.internal: |
使用 sudo docker compose 后WebUI无法看到 ~/.hermes | ${HOME} 解析为root用户的主目录 (#3006) | 以普通用户身份运行Compose,或使用 sudo -E 传递绝对路径的 HERMES_HOME/HERMES_WORKSPACE |
有关上述每种情况的详细说明,请参见 docs/docker.md。
[!NOTE] 默认情况下,Docker Compose 绑定到
127.0.0.1(仅本地主机)。要在网络上公开,请将docker-compose.yml中的端口更改为"8787:8787",并设置HERMES_WEBUI_PASSWORD以启用身份验证。
入门指南
docs/why-hermes.md — 为何选择Hermes、其核心设计理念,以及与Claude Code / Codex / OpenCode / Cursor的详细对比docs/onboarding.md — 首次运行向导、提供商设置、本地模型服务器基础URL,以及安全重运行说明docs/troubleshooting.md — 常见故障的诊断流程(例如"AIAgent not available")使用与自定义
THEMES.md — 主题+皮肤系统及自定义主题指南docs/workspace-git.md — 工作区Git控制功能docs/EXTENSIONS.md — 管理员控制的WebUI扩展注入部署与运维
docs/remote-access.md — SSH隧道、Tailscale和手机访问(包括社区ARM64-Android实地报告)docs/advanced-chat-setup.md — 自托管部署的可选动态召回预填充和基于网关的浏览器聊天功能docs/docker.md — Docker Compose配置、常见故障及绑定挂载迁移docs/supervisor.md — launchd、systemd、supervisord、runit和s6进程管理器配置docs/wsl-autostart.md — Windows登录时自动启动WSL2docs/onboarding-agent-checklist.md — 助手引导安装/重新安装的安全规则和通过/失败检查贡献与设计
CONTRIBUTING.md — 贡献风格、PR要求和本地验证ARCHITECTURE.md — 系统设计、所有API端点、实现说明TESTING.md — 手动浏览器测试计划和自动化覆盖率参考DESIGN.md — 设计标记和"冷静控制台"设计方向docs/UIUX-GUIDE.md — 源自设计文档和视觉资源的UI/UX原则docs/CONTRACTS.md — 供贡献者和代理使用的项目协议/RFC/设计索引docs/rfcs/README.md — 针对大型架构和持久性提案的RFC索引发布历史与计划
CHANGELOG.md — 每个版本的发布说明ROADMAP.md — 功能路线图和迭代历史SPRINTS.md — 包含CLI + Claude功能对等目标的未来迭代计划CONTRIBUTORS.md — 完整的社区贡献者名单Hermes WebUI的构建离不开开源社区的帮助。每一个PR——无论是直接合并、整合到批量发布中,还是从大型提案中提取的部分——都在塑造这个项目,我们感谢所有花时间做出贡献的人。
已有304位贡献者提交的代码被纳入发布版本。完整且持续更新的贡献者名单——包括所有提交过1-2个PR的贡献者,以及在设计和架构工作方面的特别感谢名单——详见CONTRIBUTORS.md。以下是部分主要贡献者的快照:
| # | 贡献者 | PR数量 | 首次→最新版本 |
|---|---|---|---|
| 1 | https://github.com/franksong2702 | 289 | v0.49.3 → v0.51.721 |
| 2 | https://github.com/rodboev | 265 | v0.51.223 → v0.51.731 |
| 3 | https://github.com/Michaelyklam | 157 | v0.50.240 → v0.51.198 |
| 4 | https://github.com/ai-ag2026 | 116 | v0.50.279 → v0.51.519 |
| 5 | https://github.com/bergeouss | 80 | v0.48.0 → v0.51.527 |
| 6 | https://github.com/AJV20 | 57 | v0.51.93 → v0.51.346 |
| 7 | https://github.com/dso2ng | 43 | v0.50.227 → v0.51.578 |
| 8 | https://github.com/Sanjays2402 | 27 | v0.50.292 → v0.51.484 |
| 9 | https://github.com/starship-s | 27 | v0.50.123 → v0.51.638 |
| 10 | https://github.com/Hinotoi-agent | 23 | v0.50.10 → v0.51.522 |
详见CONTRIBUTORS.md获取所有304位贡献者的完整排名列表——包括3个及以上PR的表格、1-2个PR的名单,以及对设计和架构贡献的特别感谢说明。
https://github.com/franksong2702 — 最活跃的外部贡献者(180个PR,v0.49.3 → v0.51.384)
作为任期最长的外部贡献者,他的贡献包括:会话标题保护(#301)、面包屑工作区导航(#302)、嵌入式工作区终端(#1099)、基于工作树的会话创建(#2053)、入门文档(#2052)、编辑器页脚容器查询、流式会话侧边栏例外(#1327)、会话辅助进程修复、定时任务输出保留(#1295)、配置文件默认工作区持久化、手动/compress异步启动/状态端点(#2128)、生命周期总览#2057中的工作树状态显示(#2109)+ 受保护删除(#2156)、会话渲染后去重(#2166)、原生WebUI快速路径(#2170)、尾部窗口响应裁剪(#2171)、过期流保护扩展(#2158)、CSP报告收集器(#2160),以及在移动/响应式设计、会话侧边栏和工作区状态机方面的大量优化工作。
https://github.com/Michaelyklam — 近期版本最活跃的贡献者(118个PR,v0.50.240 → v0.51.198)
生产环境Docker强化(#1921,移除具有sudo权限的临时用户)、配置文件作用域的技能端点(#1903)、配置文件作用域HERMES_HOME下的网关PID解析(#1901)、配置文件感知的AIAgent缓存(#1898/#1904)、反斜杠LaTeX分隔符(#1848)、Codex配额错误显示(#1770)、shell路由HTML 503错误(#1836)、过期看板客户端恢复(#1828)、上下文自动压缩提示框生命周期(#1988)、/goal命令(#1866)、看板详情视图滚动(#1916)、CLI会话工具元数据保留(#1778)、繁体中文看板本地化补充(#1979)、v0.51.51移动版Insights分桶/布局(#2120/#2121)、Hermes运行适配器RFC(#2105,用于#1925)、从当前位置分叉的绝对索引(#2198,用于#2184)、opencode-go自定义提供程序重叠路由(#2204,用于#1894)。
https://github.com/rodboev — Windows/跨平台正确性+测试可靠性(83个PR,v0.51.223 → v0.51.384)
一系列广泛且持续的改进,重点是确保项目在Linux之外的系统上正常运行:ctl.sh的Windows进程树终止修复(#3670)、Windows本地全套件信号/孤儿进程处理、斜杠命令自动完成优化,以及数十个发布批次中交付的大量前端和基础设施修复。
https://github.com/bergeouss — 提供程序管理UI+Docker强化(70个PR,v0.48.0 → v0.51.385)
用于从设置中添加/编辑自定义提供程序的提供程序管理UI、OAuth提供程序状态检测(#1552)、双容器Docker设置、配置文件隔离强化(每个配置文件的.env密钥)、用户在设置→提供程序中看到的大部分内容、“在Finder中显示”上下文菜单(#1551)、网关状态卡片(#1552)、活动项目筛选器自动分配会话(#1550)、更新横幅中的“新增功能?”链接(#1549)、OpenRouter免费层实时获取(#1548)、凭据池401自我修复(#1553)、模型选择器中的内联提供程序芯片+组模型计数(#1644)。
https://github.com/ai-ag2026 — 会话恢复+审计基础设施(75个PR,v0.50.279 → v0.51.367)
自主AI贡献者(由Hermes Agent驱动),专注于耐用性:基于state.db的边车协调(#2041)、启动时恢复孤立的.json.bak文件(#2035)、只读会话恢复审计端点(#2036、#2040)、/health中的活动运行生命周期(#2039)、docs/rfcs/turn-journal.md中的崩溃安全轮次日志RFC(#2042)、仅追加轮次日志助手(#2059)、生命周期事件层(#2062)、Content-Security-Policy-Report-Only头(#2084)、每个定时任务的提示框切换(#2100)、分叉会话压缩谱系隔离(#2014)。
https://github.com/dso2ng — 会话谱系+诊断(30个PR,v0.50.227 → v0.51.327)
用于有限会话图诊断的/api/session/lineage-report/端点(#2012)、过期Mermaid渲染错误清理(#1337)、session_source="fork"的延续链隔离(#2063)、侧边栏徽章展开时延迟加载谱系报告(#2130),以及大量关于会话加载的前端可靠性修复。
https://github.com/jasonjcwu — 编辑器+对话记录优化(16个PR,v0.50.227 → v0.51.132)
通过活动轨道点击折叠侧边栏(#2054,整合#1884+#1924)、编辑器芯片灯箱(#1758)、工具密集型首轮的标题修复、会话切换期间的静默压缩状态(#2185)、并发发送丢失修复(#2186)、对话记录中的引导消息徽章(#2187),以及一系列前端优化修复。
https://github.com/Jordan-SkyLF — 实时流+用户体验优化(12个PR,v0.50.18 → v0.51.66)
工作区回退解析的初始冲刺、实时推理卡片(#366、#367、#394–#397),以及近期的一系列改进:提供程序配额卡片上的手动“刷新用量”按钮(#2150)、取消轮次状态分类(#2151)、Firefox侧边栏滚动稳定性(#2200)、早期临时会话标题(#2202)、目标感知的“新增功能?”更新横幅链接(#2207),以及设置中MCP工具溢出修复(#2210)。
https://github.com/aronprins — v0.50.0 UI全面改造(PR #242,以及9个后续PR)
项目最大的单一贡献:完整的UI重新设计,将模型/配置文件/工作区控件移至编辑器底部,用Hermes控制中心(标签式模态框)替换齿轮图标设置面板,移除活动栏以支持内联编辑器状态,通过⋯操作下拉菜单重新设计会话列表,并添加工作区面板状态机。此外还有聊天记录重新设计(#587)、侧边栏整理(#584)、三列布局重构(#899)、明暗主题+强调色皮肤(#627),以及共享的confirm()/prompt()对话框替换(从#242中提取的PR #251)。
https://github.com/iRonin — 安全强化冲刺(PR #196–#204)
六个连续且专注的安全PR:会话内存泄漏修复(过期令牌清理)、CSP+Permissions-Policy头、30秒慢客户端连接超时、通过环境变量支持可选HTTPS/TLS、自更新的上游分支跟踪修复,以及文件浏览器API中的CLI会话支持。这种专注、高质量的安全工作使自托管工具更加可信。
https://github.com/lucasrc — 身份验证强化三部曲(PR #2191、#2192、#2193)
三个协同安全PR均在v0.51.57中发布:具有PBKDF2密钥分离的线程安全登录速率限制器、设置保存时的密码哈希缓存失效,以及完整的64字符HMAC-SHA256会话签名(带有向后兼容的迁移桥)。这种清晰分解的安全工作可作为三个独立部分进行审查。
https://github.com/LumenYoung — 流处理热路径正确性(8个PR,v0.51.47 → v0.51.99)
原始的过期流写回保护(#2136——后续两个版本扩展的bug类别)、网关状态alive-null分类(#2075)、压缩横幅锚点对齐(#2182),以及压缩完成时上下文进度环自动刷新(#2188)。每个PR都在代码库中最脆弱的子系统之一中进行了小而精确的修复。
https://github.com/dobby-d-elf — 前端可靠性+动画优化(15个PR,v0.51.38 → v0.51.161)
删除目录时的工作区回退(#2138)、iPhone PWA底部滚动修复(#2143)、新的“活动:X个工具”编辑器底部微光动画(#2203),以及后续的动画调整(#2212)。
https://github.com/JKJameson — 编辑器+会话优化(10个PR)
每个会话的持久编辑器草稿(#1956),以及编辑器和会话侧边栏的大量优化。
来自真实用户的反馈,见证轩辕镜像的优质服务