This commit is contained in:
@@ -1,350 +1,274 @@
|
||||
<img width="100%" alt="HERMES DESKTOP" src="assets/header.webp" />
|
||||
<!-- WEHUB_ZH_README -->
|
||||
> [!NOTE]
|
||||
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
|
||||
> [English](./README.en.md) · [原始项目](https://github.com/fathah/hermes-desktop) · [上游 README](https://github.com/fathah/hermes-desktop/blob/HEAD/README.md)
|
||||
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
|
||||
|
||||
<img width="100%" alt="HERMES DESKTOP" src="previews/header.webp" />
|
||||
|
||||
<br/>
|
||||
<p align="center">
|
||||
<a href="https://x.com/HermesOneApp"><img src="https://img.shields.io/badge/Follow Us-000000?style=for-the-badge&logo=x" alt="Twitter"></a>
|
||||
<a href="https://discord.gg/Fqu72h8z"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
|
||||
<a href="https://hermes-agent.nousresearch.com/docs/"><img src="https://img.shields.io/badge/Docs-hermes--agent.nousresearch.com-FFD700?style=for-the-badge" alt="文档"></a>
|
||||
<a href="https://t.me/hermes_agent_desktop"><img src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white" alt="Telegram"></a>
|
||||
<a href="https://github.com/fathah/hermes-desktop/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT"></a>
|
||||
<a href="https://hermesone.org"><img src="https://img.shields.io/badge/Download-Releases-FF6600?style=for-the-badge" alt="Releases"></a>
|
||||
<a href="https://hermesone.org/"><img src="https://img.shields.io/badge/Download-Releases-FF6600?style=for-the-badge" alt="下载"></a>
|
||||
<a href="https://github.com/fathah/hermes-desktop/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/fathah/hermes-desktop?style=for-the-badge&color=FFD700&label=Stars" alt="Stars">
|
||||
</a>
|
||||
<a href="https://github.com/fathah/hermes-desktop/releases/">
|
||||
<img src="https://img.shields.io/github/downloads/fathah/hermes-desktop/total?style=for-the-badge&color=00B496&label=Total%20Downloads" alt="Downloads">
|
||||
<img src="https://img.shields.io/github/downloads/fathah/hermes-desktop/total?style=for-the-badge&color=00B496&label=Total%20Downloads" alt="下载量">
|
||||
</a>
|
||||
<a href="https://bankr.bot/launches/0xfda75f77a22b4f4b783bbbb21915ef64d149bba3">
|
||||
<img src="https://img.shields.io/badge/Token-$HD-purple?style=for-the-badge&logo=ethereum" alt="Downloads">
|
||||
</a>
|
||||
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">English</a> ·
|
||||
<a href="README.zh-CN.md">简体中文</a> ·
|
||||
<a href="README.ja-JP.md">日本語</a> ·
|
||||
<a href="README.es-LATAM.md">Español (LATAM)</a>
|
||||
</p>
|
||||
> **本项目处于活跃开发阶段。** 功能可能会发生变化,某些功能也可能会失效。如果您遇到问题或有好的想法,请 [提交 Issue](https://github.com/fathah/hermes-desktop/issues)。欢迎贡献代码!
|
||||
|
||||
<p align="center">
|
||||
|
||||
|
||||
|
||||
<a href="https://www.star-history.com/fathah/hermes-desktop">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/badge?repo=fathah/hermes-desktop&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/badge?repo=fathah/hermes-desktop" />
|
||||
<img alt="Star History Rank" src="https://api.star-history.com/badge?repo=fathah/hermes-desktop" />
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
## 语言
|
||||
|
||||
- English: `README.md`
|
||||
- 简体中文: `README.zh-CN.md`
|
||||
- 日本語: `README.ja-JP.md`
|
||||
|
||||
> **This project is in active development.** Features may change, and some things might break. If you run into a problem or have an idea, [open an issue](https://github.com/fathah/hermes-desktop/issues). Contributions are welcome!
|
||||
Hermes Desktop 是一款原生的桌面应用程序,用于安装、配置并与 [Hermes Agent](https://github.com/NousResearch/hermes-agent) 进行聊天——这是一款具备工具调用、多平台消息传递和闭环学习能力的自我进化的 AI 助手。
|
||||
|
||||
Hermes One is a community maintained native desktop app for installing, configuring, and chatting with [Hermes Agent](https://github.com/NousResearch/hermes-agent) — a self-improving AI assistant with tool use, multi-platform messaging, and a closed learning loop.
|
||||
无需手动管理命令行界面 (CLI),该应用可在一个统一界面中引导您完成安装、提供商设置以及日常使用。它使用官方的 Hermes 安装脚本,将 Hermes 存储在 `~/.hermes` 目录下,并为您提供涵盖聊天、会话、配置、记忆、技能、工具、计划任务、消息网关等功能的图形界面。
|
||||
|
||||
Instead of managing the CLI by hand, the app walks through install, provider setup, and day-to-day usage in one place. It uses the official Hermes install script, stores Hermes in `~/.hermes`, and gives you a GUI for chat, sessions, profiles, memory, skills, tools, scheduling, messaging gateways, and more.
|
||||
## 安装
|
||||
|
||||
[](https://ko-fi.com/D1D41ZEKFO)
|
||||
<a href="https://hermesone.org/"><img width="380" alt="Download Now" src="previews/download.webp" /></a>
|
||||
|
||||
## Sponsors
|
||||
### Windows
|
||||
|
||||
> [Want to appear here?](mailto:fathah@hermesone.org)
|
||||
> **Windows 用户注意:** 安装程序未进行代码签名。首次启动时 Windows SmartScreen 会弹出警告——请点击“更多信息” → “仍要运行”。
|
||||
|
||||
<details open>
|
||||
<summary>Click to collapse</summary>
|
||||
<br/>
|
||||
<table>
|
||||
|
||||
<tr>
|
||||
<td width="180"><a href="ttps://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hermes-desktop"><img src="assets/partners/atlascloud.webp" alt="Atlas Cloud" width=""></a></td>
|
||||
<td> <a href="https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hermes-desktop">Atlas Cloud</a> is a full-modal, OpenAI-compatible AI inference platform. Use it in Hermes One by selecting <b>Atlas Cloud</b> as your provider. The base URL is pre-configured automatically. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="180"><a href="https://www.greptile.com/?utm_source=hermes-desktop"><img src="assets/partners/greptile.webp" alt="Greptile" width=""></a></td>
|
||||
<td> <a href="https://www.greptile.com/?utm_source=hermes-desktop">Greptile</a> is an AI code reviewer. It reviews and tests pull requests with full context of the codebase. It catches bugs, flags regressions, and leaves inline review comments on every PR automatically. </td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
## Install
|
||||
|
||||
<a href="https://hermesone.org"><img width="380" alt="Download Now" src="previews/download.webp" /></a>
|
||||
|
||||
<details>
|
||||
<summary>Windows</summary>
|
||||
<br/>
|
||||
|
||||
> **Windows users:** The installer is not code-signed. Windows SmartScreen will warn on first launch — click "More info" → "Run anyway".
|
||||
|
||||
> **WSL users:** If the installer stalls at `Switching to root user to install dependencies...`, Playwright is waiting for a sudo password that has no TTY to read from. Grant passwordless sudo for the install, then revert when finished:
|
||||
> **WSL 用户注意:** 如果安装程序停滞在 `Switching to root user to install dependencies...`,这说明 Playwright 正在等待输入 sudo 密码,但在没有 TTY 的情况下无法读取。请在安装期间授予无密码的 sudo 权限,完成后再恢复:
|
||||
>
|
||||
> ```bash
|
||||
> echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/hermes-install
|
||||
> # …re-run the installer; once it finishes:
|
||||
> # …重新运行安装程序;完成后执行:
|
||||
> sudo rm /etc/sudoers.d/hermes-install
|
||||
> ```
|
||||
>
|
||||
> Tracked in [#109](https://github.com/fathah/hermes-desktop/issues/109).
|
||||
> 详情请见 [#109](https://github.com/fathah/hermes-desktop/issues/109)。
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Fedora (RPM)</summary>
|
||||
<br/>
|
||||
### Fedora (RPM)
|
||||
|
||||
```bash
|
||||
sudo dnf install ./hermes-desktop-<version>.rpm
|
||||
```
|
||||
|
||||
> **Fedora users:** The `.rpm` is not GPG-signed. If your system enforces signature checking, append `--nogpgcheck` to the install command. Auto-update is not supported for `.rpm` builds (limitation of `electron-updater`); reinstall the new `.rpm` to update.
|
||||
> **Fedora 用户注意:** `.rpm` 包没有 GPG 签名。如果您的系统强制检查签名,请在安装命令后添加 `--nogpgcheck`。`.rpm` 构建不支持自动更新(这是 `electron-updater` 的限制);若要更新,请重新安装新的 `.rpm` 包。
|
||||
|
||||
</details>
|
||||
|
||||
## Preview
|
||||
## 预览
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Chat</b><br/><img width="100%" alt="Chat" src="previews/chat.png" /></td>
|
||||
<td width="50%" align="center"><b>Profiles</b><br/><img width="100%" alt="Profiles" src="previews/profiles.png" /></td>
|
||||
<td width="50%" align="center"><b>聊天 (Chat)</b><br/><img width="100%" alt="Chat" src="previews/chat.png" /></td>
|
||||
<td width="50%" align="center"><b>配置 (Profiles)</b><br/><img width="100%" alt="Profiles" src="previews/profiles.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Models</b><br/><img width="100%" alt="Models" src="previews/models.png" /></td>
|
||||
<td width="50%" align="center"><b>Providers</b><br/><img width="100%" alt="Providers" src="previews/providers.png" /></td>
|
||||
<td width="50%" align="center"><b>模型 (Models)</b><br/><img width="100%" alt="Models" src="previews/models.png" /></td>
|
||||
<td width="50%" align="center"><b>提供商 (Providers)</b><br/><img width="100%" alt="Providers" src="previews/providers.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Tools</b><br/><img width="100%" alt="Tools" src="previews/tools.png" /></td>
|
||||
<td width="50%" align="center"><b>Discover</b><br/><img width="100%" alt="Skills" src="previews/discover.png" /></td>
|
||||
<td width="50%" align="center"><b>工具 (Tools)</b><br/><img width="100%" alt="Tools" src="previews/tools.png" /></td>
|
||||
<td width="50%" align="center"><b>技能 (Skills)</b><br/><img width="100%" alt="Skills" src="previews/skills.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Schedules</b><br/><img width="100%" alt="Schedules" src="previews/schedules.png" /></td>
|
||||
<td width="50%" align="center"><b>Gateway</b><br/><img width="100%" alt="Gateway" src="previews/gateway.png" /></td>
|
||||
<td width="50%" align="center"><b>计划任务 (Schedules)</b><br/><img width="100%" alt="Schedules" src="previews/schedules.png" /></td>
|
||||
<td width="50%" align="center"><b>网关 (Gateway)</b><br/><img width="100%" alt="Gateway" src="previews/gateway.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Persona</b><br/><img width="100%" alt="Persona" src="previews/persona.png" /></td>
|
||||
<td width="50%" align="center"><b>Kanban</b><br/><img width="100%" alt="Kanban" src="previews/kanban.png" /></td>
|
||||
<td width="50%" align="center"><b>人格 (Persona)</b><br/><img width="100%" alt="Persona" src="previews/persona.png" /></td>
|
||||
<td width="50%" align="center"><b>看板 (Kanban)</b><br/><img width="100%" alt="Kanban" src="previews/kanban.png" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center"><b>Office</b><br/><img width="100%" alt="Office" src="previews/office.png" /></td>
|
||||
<td width="50%" align="center"><b>Settings</b><br/><img width="100%" alt="Settings" src="previews/settings.png" /></td>
|
||||
<td width="50%" align="center"><b>办公室 (Office)</b><br/><img width="100%" alt="Office" src="previews/office.png" /></td>
|
||||
<td width="50%" align="center"><b>设置 (Settings)</b><br/><img width="100%" alt="Settings" src="previews/settings.png" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Features
|
||||
## 功能特性
|
||||
|
||||
- **Guided first-run install** for Hermes Agent with progress tracking and dependency resolution
|
||||
- **Local or remote backend** — run Hermes locally on `127.0.0.1:8642`, or connect the desktop app to a remote Hermes API server with URL + API key
|
||||
- **Multi-provider support** — OpenRouter, Anthropic, OpenAI, Google (Gemini), xAI (Grok), Nous Portal, Qwen, MiniMax, Hugging Face, Groq, and local OpenAI-compatible endpoints (LM Studio, Atomic Chat, Ollama, vLLM, llama.cpp)
|
||||
- **Streaming chat UI** with SSE streaming, tool progress indicators, markdown rendering, and syntax highlighting
|
||||
- **Token usage tracking** — live prompt/completion token counts and cost display in the chat footer, plus a `/usage` slash command
|
||||
- **22 slash commands** — `/new`, `/clear`, `/fast`, `/web`, `/image`, `/browse`, `/code`, `/shell`, `/usage`, `/help`, `/tools`, `/skills`, `/model`, `/memory`, `/persona`, `/version`, `/compact`, `/compress`, `/undo`, `/retry`, `/debug`, `/status`, and more
|
||||
- **Session management** — full-text search (SQLite FTS5), date-grouped history, resume and search across conversations
|
||||
- **Profile switching** — create, delete, and switch between separate Hermes environments with isolated config
|
||||
- **14 toolsets** — web, browser, terminal, file, code execution, vision, image gen, TTS, skills, memory, session search, clarify, delegation, MoA, and task planning
|
||||
- **Memory system** — view/edit memory entries, user profile memory, capacity tracking, and discoverable memory providers (Honcho, Hindsight, Mem0, RetainDB, Supermemory, ByteRover)
|
||||
- **Persona editor** — edit and reset your agent's SOUL.md personality
|
||||
- **Saved models** — CRUD management for model configurations across providers
|
||||
- **Scheduled tasks** — cron job builder (minutes, hourly, daily, weekly, custom cron) with 15 delivery targets
|
||||
- **16 messaging gateways** — Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost, Email (IMAP/SMTP), SMS (Twilio/Vonage), iMessage (BlueBubbles), DingTalk, Feishu/Lark, WeCom, WeChat (iLink Bot), Webhooks, Home Assistant
|
||||
- **Hermes Office (Claw3d)** — visual 3D interface with dev server and adapter management
|
||||
- **Backup, import & debug dump** — full data backup/restore and system diagnostics from Settings
|
||||
- **Log viewer** — view gateway and agent logs directly from the Settings screen
|
||||
- **Auto-updater** — check for and install updates via electron-updater
|
||||
- **i18n ready** — internationalization framework with English locale covering all screens, ready for community translations
|
||||
- **Test suite** — SSE parser, IPC handlers, preload API surface, installer utilities, and constants validation with Vitest
|
||||
- **向导式初次安装**:带有进度跟踪和依赖解析的 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, Ollama, vLLM, llama.cpp)。
|
||||
- **流式聊天界面**:具有 SSE 流式传输、工具进度指示、Markdown 渲染和语法高亮。
|
||||
- **Token 使用情况追踪**:在聊天底部显示实时的 Prompt/补全 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)、按日期分组的历史记录、在会话之间继续聊天或搜索。
|
||||
- **配置切换 (Profile)**:创建、删除并切换不同的 Hermes 环境,配置完全隔离。
|
||||
- **14 种工具集**:网络、浏览器、终端、文件、代码执行、视觉识别、图像生成、语音合成 (TTS)、技能、记忆、会话搜索、澄清询问、委托调度、混合专家模型 (MoA) 和任务规划。
|
||||
- **记忆系统**:查看/编辑记忆条目和用户资料记忆,追踪容量,并发现不同的记忆提供商(如 Honcho, Hindsight, Mem0, RetainDB, Supermemory, ByteRover)。
|
||||
- **人格编辑器**:编辑并重置您的代理 (Agent) 的 `SOUL.md` 人格设定。
|
||||
- **已保存模型**:跨不同提供商对模型配置进行增删改查。
|
||||
- **计划任务**:支持 15 种推送目标的 Cron 任务构建器(分钟、小时、每日、每周、自定义 Cron)。
|
||||
- **16 个消息网关**: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。
|
||||
- **Hermes 办公室 (Claw3d)**:具有开发服务器和适配器管理功能的可视化 3D 界面。
|
||||
- **备份、导入与诊断导出**:可在设置面板中完成完整的数据备份/恢复,并进行系统诊断。
|
||||
- **日志查看器**:直接在设置界面中查看网关和代理的运行日志。
|
||||
- **自动更新**:通过 `electron-updater` 检查并安装更新。
|
||||
- **国际化 (i18n)**:预置英文语言环境,涵盖所有界面,并已为社区翻译做好框架准备。
|
||||
- **测试套件**:涵盖 SSE 解析器、IPC 处理程序、预加载 API、安装程序工具以及常数验证的 Vitest 测试用例。
|
||||
|
||||
## How It Works
|
||||
## 运行原理
|
||||
|
||||
On first launch, the app:
|
||||
在首次启动时,应用会:
|
||||
|
||||
1. Asks whether you want to run Hermes **locally** or connect to a **remote** Hermes API server.
|
||||
2. **Local mode:** checks whether Hermes is already installed in `~/.hermes`; if not, runs the official Hermes installer with dependency resolution (Git, uv, Python 3.11+).
|
||||
3. **Remote mode:** prompts for the remote API URL and API key, validates the connection, and skips local install.
|
||||
4. Prompts for an API provider or local model endpoint.
|
||||
5. Saves provider config and API keys through Hermes config files.
|
||||
6. Launches the main workspace once setup is complete.
|
||||
1. 询问您是希望在**本地**运行 Hermes,还是连接到**远程**的 Hermes API 服务器。
|
||||
2. **本地模式:** 检查 `~/.hermes` 目录下是否已安装 Hermes;如果未安装,则运行官方 Hermes 安装脚本并解决依赖关系 (Git, uv, Python 3.11+)。
|
||||
3. **远程模式:** 提示输入远程 API URL 和 API 密钥,验证连接,并跳过本地安装。
|
||||
4. 提示输入 API 提供商或本地模型端点。
|
||||
5. 将提供商配置和 API 密钥保存至 Hermes 配置文件。
|
||||
6. 设置完成后启动主工作区。
|
||||
|
||||
In local mode, chat requests go through `http://127.0.0.1:8642` with SSE streaming. In remote mode, the app talks to your configured remote URL with the same streaming protocol. The desktop app parses the stream in real time, rendering tool progress, markdown content, and token usage as it arrives.
|
||||
在本地模式下,聊天请求会通过带有 SSE 流的 `http://127.0.0.1:8642` 发送。在远程模式下,应用程序通过相同的流协议与您配置的远程 URL 进行通信。桌面应用会实时解析数据流,并在接收时渲染工具进度、Markdown 内容以及 token 消耗。
|
||||
|
||||
## Screens
|
||||
## 界面说明
|
||||
|
||||
| Screen | Description |
|
||||
| ------------- | ------------------------------------------------------------------------------------- |
|
||||
| **Chat** | Streaming conversation UI with slash commands, tool progress, and token tracking |
|
||||
| **Sessions** | Browse, search, and resume past conversations |
|
||||
| **Agents** | Create, delete, and switch between Hermes profiles |
|
||||
| **Skills** | Browse, install, and manage bundled and installed skills |
|
||||
| **Models** | Manage saved model configurations per provider |
|
||||
| **Memory** | View/edit memory entries, user profile, and configure memory providers |
|
||||
| **Soul** | Edit the active profile's persona (SOUL.md) |
|
||||
| **Tools** | Enable or disable individual toolsets |
|
||||
| **Schedules** | Create and manage cron jobs with delivery targets |
|
||||
| **Gateway** | Configure and control messaging platform integrations |
|
||||
| **Office** | Claw3d visual interface setup and management |
|
||||
| **Settings** | Provider config, credential pools, backup/import, log viewer, network settings, theme |
|
||||
| 界面 (Screen) | 描述 (Description) |
|
||||
| -------------------- | --------------------------------------------------------- |
|
||||
| **聊天 (Chat)** | 支持斜杠命令、工具进度展示和 token 跟踪的流式对话界面 |
|
||||
| **会话 (Sessions)** | 浏览、搜索并恢复过去的对话 |
|
||||
| **代理 (Agents)** | 创建、删除和在不同的 Hermes 配置 (Profile) 之间切换 |
|
||||
| **技能 (Skills)** | 浏览、安装并管理内置及已安装的技能 |
|
||||
| **模型 (Models)** | 管理并保存各个提供商的模型配置 |
|
||||
| **记忆 (Memory)** | 查看/编辑记忆条目、用户配置,并配置记忆提供商 |
|
||||
| **灵魂 (Soul)** | 编辑当前活动配置的代理人格设定 (`SOUL.md`) |
|
||||
| **工具 (Tools)** | 启用或禁用特定的工具集 |
|
||||
| **计划 (Schedules)** | 创建并管理定时任务及推送目标 |
|
||||
| **网关 (Gateway)** | 配置和控制各类消息平台集成 |
|
||||
| **办公室 (Office)** | Claw3d 可视化界面设置及管理 |
|
||||
| **设置 (Settings)** | 提供商配置、凭证池、备份/导入、日志查看器、网络设置、主题 |
|
||||
|
||||
## Supported Providers
|
||||
## 支持的提供商
|
||||
|
||||
### Sponsors
|
||||
### 大语言模型 (LLM) 提供商
|
||||
|
||||
| Provider | Notes |
|
||||
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Atlas Cloud** | OpenAI-compatible gateway — DeepSeek, Qwen, GLM, Kimi, MiniMax and more ([atlascloud.ai](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hermes-desktop)) |
|
||||
| 提供商 (Provider) | 备注说明 (Notes) |
|
||||
| ------------------------------ | ---------------------------------------- |
|
||||
| **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 格式的端点 |
|
||||
|
||||
### LLM Providers
|
||||
内置以下本地模型预设:LM Studio, Ollama, vLLM, llama.cpp。
|
||||
|
||||
| Provider | Notes |
|
||||
| ------------------- | ---------------------------------------- |
|
||||
| **OpenRouter** | 200+ models via single API (recommended) |
|
||||
| **Anthropic** | Direct Claude access |
|
||||
| **OpenAI** | Direct GPT access |
|
||||
| **Google (Gemini)** | Google AI Studio |
|
||||
| **xAI (Grok)** | Grok models |
|
||||
| **Nous Portal** | Free tier available |
|
||||
| **Qwen** | QwenAI models |
|
||||
| **MiniMax** | Global and China endpoints |
|
||||
| **Hugging Face** | 20+ open models via HF Inference |
|
||||
| **Groq** | Fast inference (voice/STT) |
|
||||
| **Local/Custom** | Any OpenAI-compatible endpoint |
|
||||
### 消息平台
|
||||
|
||||
Local presets are included for LM Studio, Atomic Chat, Ollama, vLLM, and llama.cpp.
|
||||
Telegram, Discord, Slack, WhatsApp, Signal, Matrix/Element, Mattermost, 电子邮件 (IMAP/SMTP), 短信 (Twilio & Vonage), iMessage (BlueBubbles), 钉钉 (DingTalk), 飞书 (Feishu/Lark), 企业微信 (WeCom), 微信 (WeChat iLink Bot), Webhooks 和 Home Assistant。
|
||||
|
||||
### Messaging Platforms
|
||||
### 工具集成
|
||||
|
||||
Telegram, Discord, Slack, WhatsApp, Signal, Matrix/Element, Mattermost, Email (IMAP/SMTP), SMS (Twilio & Vonage), iMessage (BlueBubbles), DingTalk, Feishu/Lark, WeCom, WeChat (iLink Bot), Webhooks, and Home Assistant.
|
||||
Exa Search, Parallel API, Tavily, Firecrawl, FAL.ai (图像生成), Honcho, Browserbase, Weights & Biases 和 Tinker。
|
||||
|
||||
### Tool Integrations
|
||||
## 开发
|
||||
|
||||
Exa Search, Parallel API, Tavily, Firecrawl, FAL.ai (image generation), Honcho, Browserbase, Weights & Biases, and Tinker.
|
||||
### 前置要求
|
||||
|
||||
## First-Time Setup
|
||||
- Node.js 和 npm
|
||||
- 能够运行 Hermes 安装程序的类 Unix Shell 环境
|
||||
- 首次运行安装 Hermes 时需要网络连接
|
||||
|
||||
When the app opens for the first time, it will either detect an existing Hermes installation or offer to install it for you.
|
||||
### 安装依赖
|
||||
|
||||
Supported setup paths in the UI:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 在开发模式下启动应用
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 运行检查
|
||||
|
||||
```bash
|
||||
npm run lint
|
||||
npm run typecheck
|
||||
```
|
||||
|
||||
### 运行测试
|
||||
|
||||
```bash
|
||||
npm run test
|
||||
npm run test:watch
|
||||
```
|
||||
|
||||
### 构建桌面应用
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
各平台打包命令:
|
||||
|
||||
```bash
|
||||
npm run build:mac
|
||||
npm run build:win
|
||||
npm run build:linux
|
||||
npm run build:rpm # 仅适用于 Fedora/RHEL 的 .rpm 格式
|
||||
```
|
||||
|
||||
## 首次运行设置
|
||||
|
||||
当应用首次打开时,它会自动检测是否存在已安装的 Hermes 实例,或者提供帮您进行自动安装的选项。
|
||||
|
||||
UI 中支持的设置路径:
|
||||
|
||||
- `OpenRouter`
|
||||
- `Anthropic`
|
||||
- `OpenAI`
|
||||
- `Local LLM` via an OpenAI-compatible base URL
|
||||
- 通过兼容 OpenAI API 基础 URL 接入的 `本地大语言模型 (Local LLM)`
|
||||
|
||||
Local presets are included for:
|
||||
内置预设包含:
|
||||
|
||||
- LM Studio
|
||||
- Atomic Chat
|
||||
- Ollama
|
||||
- vLLM
|
||||
- llama.cpp
|
||||
|
||||
Hermes files are managed in:
|
||||
Hermes 的相关文件统一管理于以下目录:
|
||||
|
||||
- `~/.hermes`
|
||||
- `~/.hermes/.env`
|
||||
- `~/.hermes/config.yaml`
|
||||
- `~/.hermes/hermes-agent`
|
||||
- `~/.hermes/profiles/` — named profile directories
|
||||
- `~/.hermes/state.db` — session history database
|
||||
- `~/.hermes/cron/jobs.json` — scheduled tasks
|
||||
- `~/.hermes/profiles/` — 命名配置文件目录
|
||||
- `~/.hermes/state.db` — 会话历史数据库
|
||||
- `~/.hermes/cron/jobs.json` — 计划任务
|
||||
|
||||
## Secrets provider
|
||||
## 技术栈
|
||||
|
||||
By default, API keys live in `~/.hermes/.env` (the **env** provider). No
|
||||
configuration is needed — this is byte-for-byte the historical behavior, and
|
||||
nothing changes for you.
|
||||
- **Electron 39** — 跨平台桌面外壳
|
||||
- **React 19** — UI 框架
|
||||
- **TypeScript 5.9** — 跨主进程和渲染进程的类型安全
|
||||
- **Tailwind CSS 4** — 实用优先的样式库
|
||||
- **Vite 7 + electron-vite** — 快速开发服务器及构建工具
|
||||
- **better-sqlite3** — 带有 FTS5 全文搜索功能的本地会话存储
|
||||
- **i18next** — 国际化框架
|
||||
- **Vitest** — 测试运行器
|
||||
|
||||
If you'd rather not keep keys in a plaintext `.env`, the opt-in **command**
|
||||
provider resolves them by running a helper command you configure. Resolution
|
||||
order everywhere is: `process.env` → `.env` → provider → unset.
|
||||
## 注意事项
|
||||
|
||||
Per-key helper (the requested key name arrives as `$HERMES_SECRET_KEY`):
|
||||
- 此桌面应用依赖上游的 Hermes Agent 项目来处理代理行为和工具执行。
|
||||
- 内置安装程序会通过带有 `--skip-setup` 参数的方式运行官方 Hermes 安装脚本,然后在 GUI 界面中完成提供商相关的配置。
|
||||
- 本地模型提供商不需要 API 密钥,但您必须确保兼容的服务器已经在运行中。
|
||||
- 在网络受限的环境下,支持配置备用的 npm 镜像源路由。
|
||||
|
||||
```yaml
|
||||
# ~/.hermes/config.yaml
|
||||
secrets:
|
||||
provider: command
|
||||
command: secret-tool lookup hermes "$HERMES_SECRET_KEY"
|
||||
```
|
||||
## 参与贡献
|
||||
|
||||
Or a helper that dumps a dotenv blob (e.g. a vault that unseals into tmpfs):
|
||||
欢迎大家参与贡献!查看 [参与贡献指南 (Contributing Guide)](CONTRIBUTING.md) 以开始。如果您不知从何入手,可以看一看 [开启的 Issues](https://github.com/fathah/hermes-desktop/issues)。发现了 Bug 或是对功能有新的需求? [提交一个 Issue](https://github.com/fathah/hermes-desktop/issues/new)。
|
||||
|
||||
```yaml
|
||||
secrets:
|
||||
provider: command
|
||||
command: "cat /run/user/1000/hermes-secrets.env"
|
||||
```
|
||||
## 相关项目
|
||||
|
||||
The helper's stdout may be either a single bare value (per-key helpers) or
|
||||
`KEY=VALUE` lines (dotenv dumps); both shapes are auto-detected.
|
||||
|
||||
### Vault / secret manager integration (no TPM required)
|
||||
|
||||
The `command` provider is **vault-agnostic** — it runs whatever helper you
|
||||
configure and reads its stdout. The helper is the only thing that needs to
|
||||
talk to your secret store. If you don't have a TPM-sealed keyfile, any of
|
||||
these work without code changes to Hermes:
|
||||
|
||||
- **KeePassXC (password-only DB, no keyfile):** point `secrets.command` at a
|
||||
small `kpxc-export.sh` script that does
|
||||
`keepassxc-cli ls ~/secrets/hermes.kdbx <<<"$KPXC_PASSWORD"` and dumps
|
||||
the relevant group as dotenv. Prompt the user for the master password
|
||||
once per session.
|
||||
- **GnuPG with a passphrase-only key:** `gpg --batch --passphrase-fd 0
|
||||
--decrypt ~/.keys/api-keys.gpg` works directly as the `command` value.
|
||||
Pass the passphrase via a file descriptor or env var, never argv.
|
||||
- **`pass` (the standard unix password manager):**
|
||||
`command: "pass show hermes/$HERMES_SECRET_KEY"` for a per-key helper,
|
||||
or a small wrapper script for a dotenv dump.
|
||||
- **`secret-tool` (libsecret/Gnome Keyring):**
|
||||
`command: "secret-tool lookup hermes $HERMES_SECRET_KEY"` (already
|
||||
shown above as the canonical per-key example).
|
||||
- **Bitwarden CLI:** `bw get item "$HERMES_SECRET_KEY" | jq -r .notes`
|
||||
(after `bw unlock` in the session).
|
||||
- **1Password CLI:** `op read "op://vault/$HERMES_SECRET_KEY/credential"`.
|
||||
- **Plain env file with user-managed permissions:**
|
||||
`command: "cat ~/.config/hermes/secrets.env"` with `chmod 600` and
|
||||
the file owned by your user. Not as secure as a vault, but better than
|
||||
a world-readable `.env`.
|
||||
|
||||
The point: **any helper that prints a value (per-key) or a dotenv blob
|
||||
(list-mode) on stdout will work**, and Hermes imposes a 3-second timeout
|
||||
and 1 MiB output cap on the helper so a misbehaving one can't wedge the
|
||||
app. The provider makes no assumptions about TPM, FIDO2, smart cards,
|
||||
or platform keychains.
|
||||
|
||||
Security model:
|
||||
|
||||
- The command string is your own configuration — same trust level as `.env`.
|
||||
It runs via `/bin/sh -c`, so the command provider is POSIX-only
|
||||
(Linux/macOS); Windows stays on the env provider.
|
||||
- The helper inherits the process environment plus `HERMES_SECRET_KEY`; the
|
||||
key name is passed as data, never interpolated into the shell string.
|
||||
- Hard 3-second timeout (resolution is synchronous on the main process — keep
|
||||
helpers fast and non-interactive), 1 MiB output cap, and stderr is discarded.
|
||||
- Resolved values are never logged or written to disk; failures degrade to
|
||||
"key unset", logging only exit code/signal.
|
||||
- The gateway-spawn broadcast uses a single `list()` call, never a per-key
|
||||
helper loop.
|
||||
|
||||
Source of truth: [`src/main/secrets/`](src/main/secrets/).
|
||||
|
||||
## Notes
|
||||
|
||||
- The desktop app depends on the upstream Hermes Agent project for agent behavior and tool execution.
|
||||
- The built-in installer runs the official Hermes install script with `--skip-setup`, then completes provider configuration in the GUI.
|
||||
- Local model providers do not require an API key, but the compatible server must already be running.
|
||||
- Alternative npm registry routes are supported for environments with restricted network access.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Check out the [Contributing Guide](CONTRIBUTING.md) to get started. If you're not sure where to begin, take a look at the [open issues](https://github.com/fathah/hermes-desktop/issues). Found a bug or have a feature request? [File an issue](https://github.com/fathah/hermes-desktop/issues/new).
|
||||
|
||||
## Related Project
|
||||
|
||||
This repo is not affiliated to **Nous Research**. This is a community maintained project.
|
||||
|
||||
For the core agent, docs, and CLI workflows, see the main Hermes Agent repository:
|
||||
如果想了解核心代理功能、详细文档及命令行 (CLI) 的工作流程,请查阅主仓库 Hermes Agent:
|
||||
|
||||
- https://github.com/NousResearch/hermes-agent
|
||||
|
||||
Reference in New Issue
Block a user