跳到主要内容

Web 仪表板

Web 仪表板是一个基于浏览器的 UI,用于管理你的 Hermes Agent 安装。不必编辑 YAML 文件或运行 CLI 命令,你可以通过简洁的 Web 界面配置设置、管理 API 密钥和监控会话。

快速开始

hermes dashboard

这会启动本地 Web 服务器并在浏览器中打开 http://127.0.0.1:9119。仪表板完全在你的机器上运行——没有数据离开 localhost。

选项

标志默认值描述
--port9119Web 服务器运行的端口
--host127.0.0.1绑定地址
--no-open不自动打开浏览器
# 自定义端口
hermes dashboard --port 8080

# 绑定到所有接口(在共享网络上谨慎使用)
hermes dashboard --host 0.0.0.0

# 不打开浏览器启动
hermes dashboard --no-open

前置要求

Web 仪表板需要 FastAPI 和 Uvicorn。使用以下命令安装:

pip install hermes-agent[web]

如果你使用 pip install hermes-agent[all] 安装,Web 依赖已包含在内。

当你运行 hermes dashboard 而没有依赖项时,它会告诉你需要安装什么。如果前端尚未构建且 npm 可用,它会在首次启动时自动构建。

页面

状态

着陆页显示你的安装实时概览:

  • 代理版本和发布日期
  • 网关状态 — 运行/停止、PID、已连接平台及其状态
  • 活动会话 — 最近 5 分钟内活动的会话数
  • 最近会话 — 最近 20 个会话的列表,包含模型、消息数、token 使用量和对话预览

状态页面每 5 秒自动刷新。

配置

config.yaml 的基于表单的编辑器。所有 150+ 配置字段从 DEFAULT_CONFIG 自动发现并组织成选项卡类别:

  • model — 默认模型、提供商、基础 URL、推理设置
  • terminal — 后端(本地/docker/ssh/modal)、超时、shell 偏好
  • display — 皮肤、工具进度、恢复显示、微标设置
  • agent — 最大迭代次数、网关超时、服务层
  • delegation — 子代理限制、推理工作量
  • memory — 提供商选择、上下文注入设置
  • approvals — 危险命令审批模式(ask/yolo/deny)
  • 以及更多——config.yaml 的每个部分都有相应的表单字段

具有已知有效值的字段(终端后端、皮肤、审批模式等)渲染为下拉菜单。布尔值渲染为切换。其他都是文本输入。

操作:

  • 保存 — 立即将更改写入 config.yaml
  • 重置为默认值 — 将所有字段还原到默认值(点击保存后才保存)
  • 导出 — 将当前配置下载为 JSON
  • 导入 — 上传 JSON 配置文件以替换当前值
提示

配置更改在下一个代理会话或网关重启时生效。Web 仪表板编辑的 config.yaml 文件与 hermes config set 和网关读取的相同。

API 密钥

管理存储 API 密钥和凭证的 .env 文件。密钥按类别分组:

  • LLM 提供商 — OpenRouter、Anthropic、OpenAI、DeepSeek 等
  • 工具 API 密钥 — Browserbase、Firecrawl、Tavily、ElevenLabs 等
  • 消息平台 — Telegram、Discord、Slack 机器人令牌等
  • 代理设置 — 非秘密环境变量如 API_SERVER_ENABLED

每个密钥显示:

  • 当前是否已设置(带编辑后的值预览)
  • 它的用途描述
  • 提供商注册/密钥页面的链接
  • 用于设置或更新值的输入字段
  • 用于删除它的删除按钮

高级/不常用的密钥默认隐藏在切换后面。

会话

浏览和检查所有代理会话。每行显示会话标题、源平台图标(CLI、Telegram、Discord、Slack、cron)、模型名称、消息数、工具调用数以及上次活动的时间。实时会话用脉冲徽章标记。

  • 搜索 — 使用 FTS5 对所有消息内容进行全文搜索。结果显示高亮片段,展开时自动滚动到第一条匹配消息。
  • 展开 — 点击会话加载其完整消息历史。消息按角色(用户、助手、系统、工具)着色,并渲染为带语法高亮的 Markdown。
  • 工具调用 — 带工具调用的助手消息显示带有函数名和 JSON 参数的可折叠块。
  • 删除 — 用垃圾桶图标删除会话及其消息历史。

日志

查看代理、网关和错误日志文件,带过滤和实时追踪。

  • 文件 — 在 agenterrorsgateway 日志文件之间切换
  • 级别 — 按日志级别过滤:ALL、DEBUG、INFO、WARNING 或 ERROR
  • 组件 — 按源组件过滤:all、gateway、agent、tools、cli 或 cron
  • 行数 — 选择显示多少行(50、100、200 或 500)
  • 自动刷新 — 切换实时追踪,每 5 秒轮询新日志行
  • 颜色编码 — 日志行按严重程度着色(错误为红色,警告为黄色,调试为暗淡)

分析

从会话历史计算的用量和成本分析。选择时间段(7、30 或 90 天)查看:

  • 摘要卡片 — 总 token(输入/输出)、缓存命中率、总估计或实际成本,以及带日均值的总会话数
  • 每日 token 图表 — 堆叠条形图,显示每天的输入和输出 token 用量,悬停工具提示显示细分和成本
  • 每日细分表 — 每个日期的日期、会话数、输入 token、输出 token、缓存命中率和成本
  • 按模型细分 — 表显示每个使用的模型、其会话数、token 用量和估计成本

Cron

创建和管理计划 cron 作业,这些作业按重复计划运行代理提示。

  • 创建 — 填写名称(可选)、提示、crontab 表达式(例如 0 9 * * *)和交付目标(本地、Telegram、Discord、Slack 或电子邮件)
  • 作业列表 — 每个作业显示其名称、提示预览、计划表达式、状态徽章(启用/暂停/错误)、交付目标、上次运行时间和下次运行时间
  • 暂停/恢复 — 在活动状态和暂停状态之间切换作业
  • 立即触发 — 在正常计划外立即执行作业
  • 删除 — 永久删除 cron 作业

技能

浏览、搜索和切换技能及工具集。技能从 ~/.hermes/skills/ 加载并按类别分组。

  • 搜索 — 按名称、描述或类别过滤技能和工具集
  • 类别过滤器 — 点击类别标签缩小列表(例如 MLOps、MCP、红队、AI)
  • 切换 — 用开关启用或禁用单个技能。更改在下一个会话时生效。
  • 工具集 — 单独部分显示内置工具集(文件操作、Web 浏览等),带其活动/非活动状态、设置要求和包含工具列表
安全

Web 仪表板读取和写入你的 .env 文件,其中包含 API 密钥和密钥。它默认绑定到 127.0.0.1——只能从你的本地机器访问。如果绑定到 0.0.0.0,网络上的任何人都可以查看和修改你的凭证。仪表板本身没有身份验证。

/reload 斜杠命令

仪表板 PR 还向交互式 CLI 添加了 /reload 斜杠命令。通过 Web 仪表板(或直接编辑 .env)更改 API 密钥后,在活动 CLI 会话中使用 /reload 来获取更改而无需重启:

You → /reload
Reloaded .env (3 var(s) updated)

这将 ~/.hermes/.env 重新读入运行进程的环境中。当你通过仪表板添加了新的提供商密钥并想立即使用时,这很有用。

REST API

Web 仪表板暴露了前端使用的 REST API。你也可以直接调用这些端点进行自动化:

GET /api/status

返回代理版本、网关状态、平台状态和活动会话数。

GET /api/sessions

返回最近 20 个会话及元数据(模型、token 数、时间戳、预览)。

GET /api/config

以 JSON 形式返回当前 config.yaml 内容。

GET /api/config/defaults

返回默认配置值。

GET /api/config/schema

返回描述每个配置字段的架构——类型、描述、类别,以及适用时的选择选项。前端使用它为每个字段渲染正确的输入小部件。

PUT /api/config

保存新配置。Body: {"config": {...}}

GET /api/env

返回所有已知环境变量及其设置/未设置状态、编辑后的值、描述和类别。

PUT /api/env

设置环境变量。Body: {"key": "VAR_NAME", "value": "secret"}

DELETE /api/env

删除环境变量。Body: {"key": "VAR_NAME"}

GET /api/sessions/{session_id}

返回单个会话的元数据。

GET /api/sessions/{session_id}/messages

返回会话的完整消息历史,包括工具调用和时间戳。

GET /api/sessions/search

对消息内容进行全文搜索。查询参数:q。返回匹配的会话 ID 及高亮片段。

DELETE /api/sessions/{session_id}

删除会话及其消息历史。

GET /api/logs

返回日志行。查询参数:file(agent/errors/gateway)、lines(计数)、levelcomponent

GET /api/analytics/usage

返回 token 用量、成本和会话分析。查询参数:days(默认 30)。响应包含每日细分和按模型聚合。

GET /api/cron/jobs

返回所有配置的 cron 作业及其状态、计划和运行历史。

POST /api/cron/jobs

创建新的 cron 作业。Body: {"prompt": "...", "schedule": "0 9 * * *", "name": "...", "deliver": "local"}

POST /api/cron/jobs/{job_id}/pause

暂停 cron 作业。

POST /api/cron/jobs/{job_id}/resume

恢复暂停的 cron 作业。

POST /api/cron/jobs/{job_id}/trigger

立即在计划外触发 cron 作业。

DELETE /api/cron/jobs/{job_id}

删除 cron 作业。

GET /api/skills

返回所有技能及其名称、描述、类别和启用状态。

PUT /api/skills/toggle

启用或禁用技能。Body: {"name": "skill-name", "enabled": true}

GET /api/tools/toolsets

返回所有工具集及其标签、描述、工具列表以及活动/配置状态。

CORS

Web 服务器将 CORS 限制为仅限 localhost 来源:

  • http://localhost:9119 / http://127.0.0.1:9119(生产)
  • http://localhost:3000 / http://127.0.0.1:3000
  • http://localhost:5173 / http://127.0.0.1:5173(Vite dev 服务器)

如果你在自定义端口上运行服务器,该来源会自动添加。

开发

如果你在为 Web 仪表板前端做贡献:

# 终端 1:启动后端 API
hermes dashboard --no-open

# 终端 2:使用 HMR 启动 Vite dev 服务器
cd web/
npm install
npm run dev

http://localhost:5173 的 Vite dev 服务器将 /api 请求代理到 http://127.0.0.1:9119 的 FastAPI 后端。

前端使用 React 19、TypeScript、Tailwind CSS v4 和 shadcn/ui 样式组件构建。生产构建输出到 hermes_cli/web_dist/,FastAPI 服务器将其作为静态 SPA 提供服务。

更新时自动构建

当你运行 hermes update 时,如果 npm 可用,Web 前端会自动重建。这使仪表板与代码更新保持同步。如果未安装 npm,更新会跳过前端构建,hermes dashboard 会在首次启动时构建它。