Hermes 定时任务一览
更新日期:2026-07-11
以下信息完整记录了每个任务的配置参数和内部结构,另一 Hermes 实例可据此重建完全相同的定时任务。
1️⃣ trilium-data-publish
| ID | fed4251f2e2f |
| 调度 | 0 1 * * * — 每天凌晨 01:00 (北京时间) |
| 类型 | no_agent: true — 纯脚本,无 LLM 推理,脚本 stdout 原样投递 |
| 脚本 | ~/scripts/hermes-cron-master.sh |
| 投递 | telegram:-1003995375876:5072 (H02 Oracle 频道) |
| 状态 | ✅ 启用,上次 2026-07-11 01:00 成功执行 |
🔄 重建命令
cronjob action='create' \
name='trilium-data-publish' \
schedule='0 1 * * *' \
script='hermes-cron-master.sh' \
no_agent=true \
deliver='telegram:-1003995375876:5072'
🧩 内部结构
Master 脚本 hermes-cron-master.sh 是一个 Bash 编排器,循环执行 ~/scripts/cron-tasks/ 目录下的子任务脚本(.sh 或 .py),收集指标后生成紧凑日报。
当前子任务定义(在脚本中硬编码):
| 键名 | 标签文本 | 脚本路径 | 超时 |
|---|---|---|---|
sitemap | 🌐 Trilium Sitemap 更新 | ~/scripts/cron-tasks/sitemap.sh | 110s |
脚本还内置了其他子任务的指标提取函数,但 TASK_ORDER 只包含 sitemap:
TASK_ORDER=(sitemap)
📋 子任务:sitemap — Trilium Sitemap 更新
| 脚本 | ~/scripts/cron-tasks/sitemap.sh |
| 用时 | 通常 30-60s |
| 功能 | 抓取 Trilium 共享主页 → 提取所有笔记链接 → 过滤密码保护笔记 → 生成 sitemap.xml → ETAPI 写入 Trilium |
执行步骤
curl获取https://trilium.atibm.com/share/hermes主页 HTML(8s 超时)- 正则提取所有
href="./..."相对链接,过滤掉 .js/.css/.png 等资源结尾 - 链接分类:note ID (8-15 字母数字)、自定义别名 (4-30 字母开头)、CVE 编号
- 通过 ETAPI
/etapi/notes?search=%23shareCredentials查找密码保护笔记,从结果中移除 - 生成
sitemap.xml(根页面 daily/1.0,子页面 weekly/0.6) - 通过 ETAPI PUT
/etapi/notes/{TRILIUM_SITEMAP_NOTE_ID}/content上传 - stdout 输出 sitemap XML 内容,stderr 输出执行日志和指标
环境依赖
TRILIUM_ETAPI_TOKEN | 必须,从 /opt/data/.env 或 $HOME/.env 自动读取 |
TRILIUM_SITEMAP_NOTE_ID | 可选,默认 387btDIOMxHp — ETAPI 写入目标笔记 ID |
| 工具 | curl, python3, grep, sed, sort |
输出指标(stderr)
🌐 获取 Trilium 共享主页...
🔗 提取链接...
提取到 N 个有效链接
🔒 查询密码保护笔记...
找到 M 个密码保护标识符,过滤中...
🔒 已移除 K 个密码保护链接
sitemap.xml: XXXX bytes, N URLs
ETAPI update: HTTP 204
✅ 完成: https://trilium.atibm.com/sitemap.xml
2️⃣ daily-release-check
| ID | 639fc6d2bdca |
| 调度 | 0 3 * * * — 每天凌晨 03:00 (北京时间) |
| 类型 | no_agent: false — LLM Agent 驱动,脚本输出注入 prompt 作为上下文 |
| 脚本 | ~/scripts/check-releases.py |
| 投递 | telegram:-1003995375876:5072 (H02 Oracle 频道) |
| 状态 | ✅ 启用,上次 2026-07-11 03:06 成功执行 |
🔄 重建命令
cronjob action='create' \
name='daily-release-check' \
schedule='0 3 * * *' \
script='check-releases.py' \
deliver='telegram:-1003995375876:5072'
🧩 内部结构
check-releases.py 是独立的 Agent 模式任务。脚本采集各上游项目的当前版本、升级项、异常等信息,Agent 读取脚本输出后生成结构化的版本检查报告投递到频道。
脚本相关文件目录:~/scripts/daily-release-check/
📝 Cron 作业管理命令
| 操作 | 命令 |
|---|---|
| 查看所有任务 | cronjob action='list' |
| 暂停任务 | cronjob action='pause' job_id='<id>' |
| 恢复任务 | cronjob action='resume' job_id='<id>' |
| 立即执行 | cronjob action='run' job_id='<id>' |
| 删除任务 | cronjob action='remove' job_id='<id>' |
| 更新参数 | cronjob action='update' job_id='<id>' name='...' schedule='...' |