Hermes Desktop 是 Hermes Agent CLI 的 Electron 图形伴侣,调的是跟终端里完全相同的 agent/ 核心,外面套了个聊天窗口 + 侧边栏 + 文件预览 + provider 配置。如果你已经装好了 Hermes CLI(见姊妹文),Desktop 只差一条命令。本文讲它实际加了什么、CLI 和 GUI 之间的边界在哪、以及两边状态不一致时怎么排查。
同一套核心,不同外壳
Desktop 不是单独的 agent。它就是 NousResearch/hermes-agent monorepo 里的 apps/desktop/,跟 CLI 共享 agent/、cli.py、config、memory、skills、gateway。Electron 外壳主要加了:
- 真·聊天面板,带 Markdown 渲染和带语法高亮的代码块(终端用的是
rich,够用但朴素) - 侧栏分 session、定时任务、insights 摘要
- Provider / key 配置界面,Anthropic、OpenAI、Ollama 切换不用手改
config.yaml - 文件 diff 预览,比终端内置 diff pager 好读
- 装了
ffmpeg的话(Hermes 安装脚本会装)能用语音输入输出
状态共享:在终端里开的会话出现在 Desktop 的 session 列表里,反过来也是。memory、skills、定时任务在两边读的是同一份磁盘文件。
装与启动
Desktop 已经跟 Hermes CLI 一起装了——curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash 会把 hermes(CLI)和 hermes desktop(GUI 启动器)都放进 PATH。
hermes desktop底层做的事:拉起 Electron 进程,从同一份源码树加载 apps/desktop/,复用装好的 Python venv(不会重复装一套)。首次启动 3-5 秒,Electron 在热身。
Ubuntu 22.04 上 Electron 渲染需要 libnss3、libgbm1 等。Hermes 安装脚本会软依赖拉这些;如果是 minimal 系统装完 GUI 启动不了,多半是它:
sudo apt install -y libnss3 libgbm1 libatk-bridge2.0-0 libxkbcommon0 libxss1 libasound2Desktop 哪里强
终端快在键盘驱动工作——调用工具、for-loop 处理文件、管道接输出。Desktop 快在读。聊天面板把长 tool trace 渲染成可折叠 section,外加一个 “rendered artifact” 标签页能预览 HTML/SVG(终端做不到)。审批编辑时大多时间花在 diff 预览上,200 行带色高亮的 diff 永远比终端回滚好读。
定时任务方面,Desktop 的 Jobs 标签页是聚合的查询面:点任意一次运行看 trace、看结果、看 agent 提取的 insights。CLI 给你 hermes cron list 跟 hermes insights 两个独立命令,Desktop 拼到了一起。
CLI 仍然赢的地方
所有需要管道、脚本、无人值守的任务。Cron、hooks、子 agent 委派,以及你想跑一遍再 dry-run 进版本库的工作——这些只有 CLI。Desktop 是贴在现有 CLI 工作流上面的 UI,不是替换。
几个小坑
Desktop 启动时读一次 config.yaml;如果你在终端里改它时 Desktop 已经开着,需要重启 Desktop 才生效(无热重载)。memory 和 skill 文件会被监视、有热重载;只有 config 是静态的。
语音转录默认用本地 Whisper,首次用会下载 ~150MB。偏好云端转录就在 config.yaml 设 voice.provider = openai 并给 OPENAI_API_KEY。
Electron 的开发者工具 Ctrl+Shift+I 能开——想看你给 provider 发的网络请求时有用,调 token 成本异常时省事。
什么时候用哪个
通常两个都用。终端开着处理日常活,碰上要细看长 edit 或翻 agent 昨晚干过什么的时候切到 Desktop。两边状态共享得够好,切换不需要做任何额外事。
评论