智能体桌面端
Hermes Agent 的原生桌面客户端,集成多模型、记忆、技能、定时任务与多种消息网关
English · 简体中文 · 日本語 · Español (LATAM)
本项目正在积极开发中。 功能可能会变化,某些内容可能出现问题。若你遇到问题或有想法,欢迎 提交 Issue。我们欢迎任何贡献!
Hermes Desktop 是一款原生桌面应用,用于安装、配置和与 Hermes Agent 进行交互——Hermes Agent 是一个具备工具使用、多平台消息发送和闭环学习能力的自我改进型 AI 助手。
无需手动管理 CLI,该应用一站式引导你完成安装、提供商配置和日常使用。它使用官方的 Hermes 安装脚本,将 Hermes 存储在 ~/.hermes,并提供一个图形界面用于聊天、会话、配置文件、记忆、技能、工具、日程安排、消息网关等。
赞助商
Atlas Cloud 是全模态、兼容 OpenAI 的 AI 推理平台(支持 DeepSeek、Qwen、GLM、Kimi、MiniMax 等)。在 Hermes Desktop 中选择 Atlas Cloud 作为提供商即可使用——基础 URL 已自动预配置。
安装
Windows
Windows 用户: 安装程序未进行代码签名。Windows SmartScreen 会在首次启动时发出警告——请点击“更多信息”→“仍然运行”。
WSL 用户: 如果安装程序卡在
正在切换到 root 用户以安装依赖项...,说明 Playwright 正在等待 sudo 密码,但没有可用的 TTY 读取密码。请临时授予安装过程无密码 sudo 权限,完成后恢复:echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/hermes-install # …重新运行安装程序;完成后: sudo rm /etc/sudoers.d/hermes-install跟踪于 #109。
Fedora (RPM)
sudo dnf install ./hermes-desktop-<版本>.rpm
Fedora 用户:
.rpm包未经 GPG 签名。如果你的系统强制要求签名检查,请在安装命令后追加--nogpgcheck。.rpm版本不支持自动更新(受electron-updater限制);更新时请重新安装新版本的.rpm。
预览
聊天![]() |
配置文件![]() |
模型![]() |
提供商![]() |
工具![]() |
技能![]() |
日程![]() |
网关![]() |
人格![]() |
看板![]() |
办公![]() |
设置![]() |
功能特性
- 引导式首次安装:为 Hermes Agent 提供带进度追踪和依赖解析的安装流程
- 本地或远程后端:在本地
127.0.0.1:8642运行 Hermes,或通过 URL + API 密钥将桌面应用连接到远程 Hermes API 服务器 - 多提供商支持:OpenRouter、Anthropic、OpenAI、Google (Gemini)、xAI (Grok)、Nous Portal、Qwen、MiniMax、Hugging Face、Groq,以及本地 OpenAI 兼容端点(LM Studio、Atomic Chat、Ollama、vLLM、llama.cpp)
- 流式聊天界面:支持 SSE 流式传输、工具进度指示器、Markdown 渲染和语法高亮
- Token 用量追踪:实时显示提示/补全 token 数量和费用(聊天底部),以及
/usage斜杠命令 - 22 个斜杠命令:
/new、/clear、/fast、/web、/image、/browse、/code、/shell、/usage、/help、/tools、/skills、/model、/memory、/persona、/version、/compact、/compress、/undo、/retry、/debug、/status等 - 会话管理:全文搜索(SQLite FTS5)、按日期分组的历史记录、跨对话恢复和搜索
- 配置文件切换:创建、删除和切换独立的 Hermes 环境,每个环境拥有独立的配置
- 14 个工具集:网页、浏览器、终端、文件、代码执行、视觉、图像生成、TTS、技能、记忆、会话搜索、澄清、委派、MoA 和任务规划
- 记忆系统:查看/编辑记忆条目、用户档案记忆、容量追踪,以及可发现的记忆提供者(Honcho、Hindsight、Mem0、RetainDB、Supermemory、ByteRover)
- 人格编辑器:编辑和重置你的助手的 SOUL.md 人格文件
- 已保存模型:跨提供商的模型配置的增删查改管理
- 定时任务:Cron 作业构建器(分钟、小时、每日、每周、自定义 cron),支持 15 种交付目标
- 16 种消息网关:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、电子邮件(IMAP/SMTP)、短信(Twilio/Vonage)、iMessage (BlueBubbles)、钉钉、飞书/Lark、企业微信、微信(iLink Bot)、Webhooks、Home Assistant
- Hermes Office (Claw3d):可视化 3D 界面,包含开发服务器和适配器管理
- 备份、导入与调试转储:从“设置”中进行完整数据备份/恢复和系统诊断
- 日志查看器:直接在“设置”屏幕中查看网关和代理日志
- 自动更新:通过 electron-updater 检查并安装更新
- 国际化就绪:包含覆盖所有屏幕的英文语言包的国际化框架,可供社区翻译
- 测试套件:对 SSE 解析器、IPC 处理器、Preload 接口、安装工具及常量验证的 Vitest 测试
工作原理
首次启动时,应用:
- 询问是希望 本地 运行 Hermes,还是连接到一个 远程 Hermes API 服务器。
- 本地模式: 检查 Hermes 是否已安装在
~/.hermes中;如果没有,则运行官方 Hermes 安装程序并解析依赖(Git, uv, Python 3.11+)。 - 远程模式: 提示输入远程 API URL 和 API 密钥,验证连接,并跳过本地安装。
- 提示选择一个 API 提供商或本地模型端点。
- 通过 Hermes 配置文件保存提供商配置和 API 密钥。
- 设置完成后启动主工作区。
在本地模式下,聊天请求通过 http://127.0.0.1:8642 并使用 SSE 流式传输。在远程模式下,应用使用相同的流协议与您配置的远程 URL 通信。桌面应用实时解析流,在到达时呈现工具进度、Markdown 内容和 token 使用情况。
屏幕
| 屏幕 | 描述 |
|---|---|
| Chat | 带斜杠命令、工具进度和 token 追踪的流式对话界面 |
| Sessions | 浏览、搜索和恢复过往对话 |
| Agents | 创建、删除和切换 Hermes 配置文件 |
| Skills | 浏览、安装和管理已捆绑与已安装的技能 |
| Models | 管理各提供商已保存的模型配置 |
| Memory | 查看/编辑记忆条目、用户画像,并配置记忆提供商 |
| Soul | 编辑当前配置文件的角色设定 (SOUL.md) |
| Tools | 启用或禁用单独的工具套件 |
| Schedules | 创建并管理带投递目标的定时任务 |
| Gateway | 配置和控制消息平台集成 |
| Office | Claw3d 可视化界面的设置与管理 |
| Settings | 提供商配置、凭据池、备份/导入、日志查看器、网络设置、主题 |
支持的提供商
赞助商
| 提供商 | 备注 |
|---|---|
| Atlas Cloud | 兼容 OpenAI 的网关 — DeepSeek、Qwen、GLM、Kimi、MiniMax 等 (atlascloud.ai) |
LLM 提供商
| 提供商 | 备注 |
|---|---|
| OpenRouter | 通过单一 API 访问 200+ 模型(推荐) |
| Anthropic | 直接访问 Claude |
| OpenAI | 直接访问 GPT |
| Google (Gemini) | Google AI Studio |
| xAI (Grok) | Grok 模型 |
| Nous Portal | 提供免费层级 |
| Qwen | QwenAI 模型 |
| MiniMax | 全球和中国端点 |
| Hugging Face | 通过 HF Inference 访问 20+ 开源模型 |
| Groq | 快速推理(语音/STT) |
| Local/Custom | 任何兼容 OpenAI 的端点 |
本地预设包含了 LM Studio、Atomic Chat、Ollama、vLLM 和 llama.cpp。
消息平台
Telegram、Discord、Slack、WhatsApp、Signal、Matrix/Element、Mattermost、Email (IMAP/SMTP)、SMS (Twilio & Vonage)、iMessage (BlueBubbles)、DingTalk、Feishu/Lark、WeCom、WeChat (iLink Bot)、Webhooks 和 Home Assistant。
工具集成
Exa Search、Parallel API、Tavily、Firecrawl、FAL.ai(图像生成)、Honcho、Browserbase、Weights & Biases 和 Tinker。
开发
前提条件
- Node.js 和 npm
- 用于 Hermes 安装程序的类 Unix shell 环境
- 首次安装时下载 Hermes 所需的网络访问
安装依赖
npm install
在开发模式下启动应用
npm run dev
运行检查
npm run lint
npm run typecheck
运行测试
npm run test
npm run test:watch
构建桌面应用
npm run build
平台打包:
npm run build:mac
npm run build:win
npm run build:linux
npm run build:rpm # Fedora/RHEL .rpm only
首次设置
当应用首次打开时,它会检测是否已有 Hermes 安装,或者为您提供安装选项。
界面中支持的设置路径:
OpenRouterAnthropicOpenAILocal LLM,通过兼容 OpenAI 的基础 URL
本地预设包含:
- LM Studio
- Atomic Chat
- Ollama
- vLLM
- llama.cpp
Hermes 文件管理在:
~/.hermes~/.hermes/.env~/.hermes/config.yaml~/.hermes/hermes-agent~/.hermes/profiles/— 配置文件目录(以名称命名)~/.hermes/state.db— 会话历史数据库~/.hermes/cron/jobs.json— 定时任务
密钥提供商
默认情况下,API 密钥存储在 ~/.hermes/.env 中( env 提供商)。无需任何配置 — 这与历史行为完全一致,对您不会有任何改变。
如果您不想将密钥保存在纯文本的 .env 文件中,可选的 command 提供商将通过运行您配置的辅助命令来解析密钥。解析顺序全局为:process.env → .env → 提供商 → 未设置。
每密钥辅助命令(请求的密钥名称会通过 $HERMES_SECRET_KEY 传入):
# ~/.hermes/config.yaml
secrets:
provider: command
command: secret-tool lookup hermes "$HERMES_SECRET_KEY"
或者,一个输出 dotenv 数据块的辅助命令(例如,解封到 tmpfs 的保险库):
secrets:
provider: command
command: "cat /run/user/1000/hermes-secrets.env"
辅助命令的标准输出可以是单个裸值(每密钥辅助命令),也可以是 KEY=VALUE 行(dotenv 数据块);两种格式均会被自动检测。
保险库 / 密钥管理器集成(无需 TPM)
command 提供商是 与保险库无关的 — 它运行您配置的任何辅助命令并读取其标准输出。辅助命令是唯一需要与您的密钥存储通信的组件。如果您没有 TPM 密封的密钥文件,以下方法均可正常工作,无需修改 Hermes 代码:
- KeePassXC(仅密码数据库,无密钥文件): 将
secrets.command指向一个小型kpxc-export.sh脚本,该脚本执行keepassxc-cli ls ~/secrets/hermes.kdbx <<<"$KPXC_PASSWORD"并将相关组导出为 dotenv。每次会话提示用户输入主密码一次。 - 使用仅短语密钥的 GnuPG:
gpg --batch --passphrase-fd 0 --decrypt ~/.keys/api-keys.gpg可直接作为command的值使用。通过文件描述符或环境变量传入短语,切勿通过 argv 传入。 pass(标准 Unix 密码管理器): 对于每密钥辅助命令,可使用command: "pass show hermes/$HERMES_SECRET_KEY",或使用一个小的包装脚本来实现 dotenv 数据块导出。secret-tool(libsecret/Gnome Keyring):command: "secret-tool lookup hermes $HERMES_SECRET_KEY"(以上已作为每密钥辅助命令的经典示例展示)。- Bitwarden CLI:
bw get item "$HERMES_SECRET_KEY" | jq -r .notes(在会话中执行bw unlock之后)。 - 1Password CLI:
op read "op://vault/$HERMES_SECRET_KEY/credential"。 - 带有用户管理权限的纯环境文件:
command: "cat ~/.config/hermes/secrets.env",配合chmod 600,且文件归您的用户所有。安全性不如保险库,但优于全局可读的.env。
关键点:任何在标准输出上打印值(按密钥)或 dotenv 数据块(列表模式)的帮助程序都能正常工作,Hermes 对帮助程序设置了 3 秒超时和 1 MiB 输出上限,因此运行异常的帮助程序无法阻塞应用。该提供者不对 TPM、FIDO2、智能卡或平台密钥链做任何假设。
安全模型:
- 命令字符串属于你自己的配置——信任级别与
.env相同。它通过/bin/sh -c执行,因此命令提供者仅适用于 POSIX 系统(Linux/macOS);Windows 仍使用环境提供者。 - 帮助程序继承进程环境以及
HERMES_SECRET_KEY;密钥名称作为数据传递,绝不会插入到 shell 字符串中。 - 严格的 3 秒超时(解析在主进程上同步执行——请保持帮助程序快速且非交互),1 MiB 输出上限,且 stderr 被丢弃。
- 解析后的值绝不会被记录或写入磁盘;失败时降级为“密钥未设置”,仅记录退出码/信号。
- 通过 gateway-spawn 的广播使用单次
list()调用,绝不会使用逐密钥的帮助程序循环。
权威来源:src/main/secrets/。
技术栈
- Electron 39 — 跨平台桌面 Shell
- React 19 — UI 框架
- TypeScript 5.9 — 主进程与渲染器进程的类型安全
- Tailwind CSS 4 — 实用优先的样式
- Vite 7 + electron-vite — 快速开发服务器与构建工具
- better-sqlite3 — 支持 FTS5 全文搜索的本地会话存储
- i18next — 国际化框架
- Vitest — 测试运行器
注意
- 桌面应用依赖上游 Hermes Agent 项目来实现 agent 行为与工具执行。
- 内置安装程序会使用
--skip-setup运行官方的 Hermes 安装脚本,然后在 GUI 中完成提供者配置。 - 本地模型提供者不需要 API 密钥,但兼容的服务器必须已经在运行。
- 对于网络访问受限的环境,支持替代的 npm 注册表路由。
贡献
欢迎贡献!请查看贡献指南开始。如果你不确定从何入手,可以查看开放的 issues。发现 bug 或有功能请求?提交 issue。
相关项目
有关核心 agent、文档和 CLI 工作流,请参见主 Hermes Agent 仓库:












