结论
存在。Hermes Desktop 的启动动画插件是官方插件目录(community 档、desktop 类目)里的 hermes-boot-screen。本机 2026-10-25 安装,2026-10-26 修复“装好却看不到动画”的故障——根因是持久化启用决策被记为 false,加载成功但未执行 activate。
条目事实
| 目录 id | hermes-boot-screen(Hermes Boot Screen) |
| 档位 / 类目 / 平台 | community / desktop / 未限定平台 |
| 版本 | v1.1.1 |
| 仓库 / 维护者 | github.com/OMOX563/hermes-boot-screen / OMOX563 |
| 许可 | MIT;改编自 6shenhonghong9/dsh-startup-screen(DeepSeek Harness 启动动画,MIT) |
| 安装钉死 | commit SHA 4bdfb3c67cd8341c3018631214b8c42d7cf50cb7,不自更新 |
| 声明面积 | 仅 desktop/plugin.js(SDK 贡献区 appearance.extra / routes / sidebar nav / palette);无 tools、hooks、middleware、环境变量 |
| 运行期网络 | 零请求:音频、图标、样式全部内嵌 data URI;朗读用浏览器本地 speechSynthesis |
| 体积 | plugin.js 474,429 字节(README 自称 about 457 KB);UTF-8 解码后字符数 473,030 |
| 前置要求 | Hermes Desktop v0.21.x 或兼容客户端;本机实际运行 v0.22.5 本地构建(apps/desktop/release/linux-unpacked) |
六幕结构
| 第一幕 | 黑屏 + 图标一笔画自绘成型,落墨滴;HERMES · HERMES · HERMES DESKTOP |
| 第二幕 | 过曝泛白过渡到暖白「技术档案」底:角标刻度、网格、时间戳、分段进度条 |
| 第三幕 | 品牌组合落定:HERMES / AGENTIC INTELLIGENCE / DESKTOP APP,页脚 POWERED BY NOUS RESEARCH |
| 第四幕 | 五步交互授权:grant access → confirm identity → open session channel → read permissions → verification passed(录音台词 + 逐字字幕) |
| 第五幕 | 权限读取的散射 / 十字准星动画 |
| 第六幕 | 青红色差故障后揭开 WELCOME TO / [HERMES DESKTOP],释放滚动锁与控制权 |
全程有提示音、确认音、步进音效与英文旁白;录音资产缺失时自动退到浏览器 TTS,TTS 也不可用时动画照播、不阻塞启动。
本机安装记录(2026-10-25)
| 安装命令 | hermes plugins install hermes-boot-screen(需把 /run/current-system/sw/bin 加进 PATH,否则报 git 未安装) |
| agent 侧包 | /home/cat/.hermes/plugins/hermes-boot-screen(含 .hermes-catalog.json sidecar,未 enable——桌面插件不需要) |
| 桌面半区 | /home/cat/.hermes/desktop-plugins/hermes-boot-screen/plugin.js |
| 机制 | v0.22.x 桌面端把 plugins/<name>/desktop/plugin.js 物化到 <HERMES_HOME>/desktop-plugins/<name>/,并写 .hermes-package.json 标记(package / source / sourceMtimeMs / repo / sha / catalogName)回链 agent 包 |
| 完整性 | 本地副本 sha256 = 6757c0aabab6603217a1e2fa1d8e0613d53e0345067b65d100e5879d3901de5b,与上游 Release v1.1.1 的 plugin.js 逐字节一致 |
| 语法检查 | node --check(按 ESM 检查)= 通过;导出形状 export default + register(ctx) |
| 读取上限 | 壳层 readPluginSource IPC 上限 16 MiB,474 KB 不会被截断拒载 |
故障:装好、重启桌面却看不到动画(2026-10-26 定位并修复)
表面征象:插件文件就位、桌面已重启多次,但既无动画,也无 toast,侧边栏无入口;desktop.log 里与插件相关的记录为 0 条;Ctrl+K → Reload desktop plugins 手动重扫也无效。
根因:桌面端把每个插件的启用决策持久化在 localStorage 键 hermes.desktop.pluginDecisions.v2,而 hermes-boot-screen 被显式记为 false。SDK 加载链本身完全正常,但在最后一步的门控上被挡下:
_a({...l,status:`disabled`},{activate:d,deactivate:...}),
ta(s.id,(s.defaultEnabled??!0)&&(n.defaultEnabled??!0))&&d(), // ta = 决策表读取,false 时不调用 activate
于是 register() 从未执行 → 黑屏根节点未注入、动画不播、toast 不弹、侧边栏入口不注册。这条路径全程只走 console.info/log 正常分支,没有 console.error,而该构建的渲染进程 console 未接入 desktop.log,所以外部看是“文件齐、日志干净、但什么都没有”,极易误判为插件没装上。
修复:在 Skills & Tools → Plugins 页把 hermes-boot-screen 那行的开关打开(等价 Se(id,true) → 写回 true → 立即 activate()),动画当场出现。不需要重装、不需要改文件。
| 判据(一分钟二分) | Plugins 页有该插件行且开关为灰/关 → 就是决策表问题;若连行都没有 → 才去查文件与扫描 |
| 为什么重扫无效 | Reload 只重新加载模块,仍按 disabled 决策不 activate;不会改决策表 |
| 为什么重装无效 | 决策按插件 id 存,卸载重装通常保留;装完仍需确认开关 |
| 两个键别混 | 启用决策在 localStorage(持久);session 模式的“已播放”标记在 sessionStorage,随会话清除 |
定位方法(可复用于任何桌面插件)
症状是“静默无反应”时,给本地构建产物加临时诊断埋点,把被吞掉的分支变成可观测输出。要点:
| 载体 | 本地构建产物 apps/desktop/release/linux-unpacked/resources/app.asar.unpacked/dist/;扫描与加载逻辑在 assets/sdk-*.js,启用门控在 assets/layout-*.js,IPC 桥在 electron-preload.js,主进程在 electron-main.mjs |
| 埋点位置 | 扫描入口 qM(roots/readDir/entry/load 结果)、加载函数 HM(读取字节数、UNSUPPORTED 白名单、default 导出)、activate 门控(ACTIVATE-START / REGISTER-OK / REGISTER-THREW)、决策读取函数(HE id -> 值 + map) |
| 回传通道 | 渲染进程 console 不进 desktop.log,故走 IPC:preload 暴露 __bootDiag → 主进程 ipcMain.handle 追加写文件。比 HTTP 打点更省事(无 CSP/代理干扰) |
| 改完必做 | 逐文件 node --check;改前 *.bak-diag 备份;查证后 cp 还原并全目录扫残留关键词 = 0 |
| 起 GUI | 无 DISPLAY 的终端里直接跑会 Missing X server;从 plasmashell 的 /proc/<pid>/environ 取 DISPLAY=:0 与 XAUTHORITY=/tmp/xauth_XXXX 再用;kill -TERM 常不退出,需 -KILL |
| 结论口径 | “读到的字符数比字节数少”是 UTF-8 解码后 length 的正常现象,不等于被截断;判据是 UNSUPPORTED=[] 且 default 导出 id 正确 |
生效与开关
磁盘扫描在启动首扫执行,插件目录出现即被 reconcile;未拾起时按 Ctrl+K 搜索「Reload desktop plugins」手动重扫,或重启桌面。载入并启用成功的三个标志:右下 toast「🚀 Startup Animation plugin loaded」、侧边栏出现「Startup Animation」页、Plugins 页该行开关为开。
播放模式三档:session(默认,每次运行一次)、always(每次注册都播,含热重载)、daily(每天首次启动)。全部设置集中在该侧边栏页,可 Play Now 立即预览,无需等下次启动。播放中 Esc 或右上 SKIP 跳过;第四幕两步用 Enter / Space / 点击推进。命令行另有 Startup Animation: Play Now 与 Startup Animation: Open Settings 两个命令。
注意:插件载入时会在文档级捕获 Enter / Space / Esc,且全屏覆盖窗口、播放音频与朗读。改动已存在的 plugin.js 不触发热重载(文件监听仅在首次加载后建立,符号链接的开发检出除外),改完必须点刷新。
易混淆项
| --fake-boot | Hermes Desktop 自带启动标志(hermes desktop --fake-boot,或 env HERMES_DESKTOP_BOOT_FAKE),作用是注入确定性启动延迟以校验启动界面,不做视觉效果 |
| hermes-appearance-hub | GitHub Heybinshao/hermes-appearance-hub,v3.7.7,单 ESM 文件的外观整合插件,确有「开场标识」开关;但不在官方插件目录内,只能手动安装 |
| 目录描述与实际文案 | 目录条目称「Boot Animation」,插件本体实际命名为「Startup Animation」,侧边栏与 toast 都用后者 |
卸载
Plugins 页 uninstall,或 hermes plugins remove hermes-boot-screen 后删除 <HERMES_HOME>/desktop-plugins/hermes-boot-screen/ 整个目录。