codecamp

Ollama Hermes Desktop

Hermes Desktop 是 Nous Research 的原生 AI 助手桌面应用,为 Hermes Agent 提供一个图形化聊天界面。背后的代理能力(跑工具、管项目、用记忆和技能、接消息网关)和命令行版完全一致。

版本基线 v0.40.12,官方 docs.ollama.com/integrations/hermes-desktop。

一、一条命令安装并启动

ollama launch hermes-desktop

Ollama 会自动走完四步:

  1. 安装 —— 未安装时提示安装 Hermes 命令行代理;首次启动桌面版时,Hermes 会编译打包自己的桌面应用(这一步耗时较长,属正常现象)
  2. 选模型 —— 从选择器挑本地或云端模型
  3. 配置 —— 把 Hermes Desktop 指向你选的 Ollama 模型
  4. 启动 —— 打开 Hermes Desktop 窗口

二、直接指定模型

ollama launch hermes-desktop --model <模型名>

之后想换模型,重新执行一次同样的命令即可。

三、直接安装(推荐给桌面用户)

macOS 和 Windows 上,Hermes Desktop 官方安装包是上游推荐的安装方式——它把桌面应用和 Hermes Agent 一起装好。

如果走命令行,ollama launch hermes-desktop 仍然是 Ollama 管理的明确路径,并且使用与 CLI 相同的 Hermes 配置、会话、技能和记忆。所以两种安装方式不冲突,装哪个都能看到同一份历史。

强制重建桌面应用

首次构建之后如果出现界面异常、版本不同步,可以强制重建:

ollama launch hermes-desktop -- --force-build

注意这里的双横线:-- 之后的参数原样传给 Hermes,不归 Ollama 解析。

四、和 Hermes Agent 的分工

维度 Hermes Agent Hermes Desktop
形态 命令行(TUI) 桌面 GUI
启动 ollama launch hermes ollama launch hermes-desktop
配置/会话/技能 共享 共享
适合 服务器、脚本、终端流 日常对话、非终端场景

两者共享状态,意味着你在 CLI 里积累的技能和记忆,切到桌面版能直接用。这也是这套方案比较实用的地方——同一份本地智能,多种入口。

五、常见问题

现象 原因 处理
首次启动卡很久 正在编译打包桌面应用 耐心等,或用官方安装包
界面打开但模型不可用 Ollama 未运行 启动 Ollama 后再 launch
换了模型没生效 未重新 launch 重跑 ollama launch hermes-desktop --model ...
界面异常 打包产物损坏 ollama launch hermes-desktop -- --force-build

动手试

## 确认本地模型就绪
ollama list

## 启动桌面版
ollama launch hermes-desktop

首次启动如果用了较长时间,别急着中断——它在构建桌面应用。构建完成后再次启动就是秒开。

Ollama Hermes Agent
Ollama Claude Code
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Ollama Cloud

Ollama CLI 命令行参考

Ollama Modelfile 参考

Ollama 上下文长度

Ollama 导入自定义模型

Ollama 常见问题

Ollama 硬件支持

Ollama 故障排查

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }