来源 路径 / 方式 用途Bundled Hermes 仓库内置 plugins/ 官方随 Hermes 发布的插件User ~/.hermes/plugins/ 用户自己的本地插件Project .hermes/plugins/ 当前工作目录插件默认不扫描需设置 HERMES_ENABLE_PROJECT_PLUGINStruepip hermes_agent.plugins entry points 通过 Python 包分发的插件8.5 管理插件hermes plugins # 交互式开关插件hermes plugins list # 查看已安装插件hermes plugins install user/repo # 从 GitHub 安装插件hermes plugins update # 更新插件hermes plugins remove # 移除插件hermes plugins enable # 启用插件hermes plugins disable # 禁用插件新安装或捆绑的插件默认不启用必须加入 ~/.hermes/config.yaml~/.hermes/config.yamlplugins:enabled:- my-plugindisabled:- noisy-pluginplugins.disabled 是拒绝列表如果同一个插件同时出现在 enabled 和 disabled禁用优先。Cron 定时任务官方文档https://hermes-agent.nousresearch.com/docs/user-guide/features/cronHermes 内置定时任务系统可以用自然语言、cron 表达式安排任务。定时任务通过 Gateway daemon 执行Gateway 每 60 秒 tick 一次检查到期任务。为每个到期任务启动一个新的 Agent 会话执行 prompt然后投递最终结果。Cron 运行时会禁用 cron 管理工具避免递归创建更多定时任务造成调度循环。9.1 创建任务【重要操作实用】可在会话中通过 /cron或使用 CLI 命令 hermes cron 来创建/cron add 30m “提醒我检查构建结果”/cron add “every 2h” “检查服务器状态”/cron add “every 1h” “总结新动态” --skill blogwatcher/cron add “every 1h” “加载两个技能并合并结果” --skill blogwatcher --skill mapshermes cron create “every 2h” “检查服务器状态”hermes cron create “every 1h” “总结新动态” --skill blogwatcher也可以直接用自然语言让 Hermes 创建每天早上 9 点检查 Hacker News 上的 AI 新闻然后发一份摘要到 Telegram。Hermes 会在内部调用 cronjob 工具完成创建cronjob(action“create”,schedule“every 1d at 09:00”,prompt“检查 Hacker News 上的 AI 新闻筛选值得关注的条目并写成中文摘要。”,name“HN AI daily”,deliver“telegram”,)9.2 调度格式类型 示例 行为相对延迟 30m、2h、1d 一次性运行循环间隔 every 30m、every 2h、every 1d 持续重复运行Cron 表达式 0 9 * * *、0 9 * * 1-5、0 */6 * * * 按 cron 规则重复运行ISO 时间 2026-03-15T09:00:00 指定时间运行一次Cron 表达式格式为 分 时 日 月 周0 9 * * * 每天 9:00 执行0 9 * * 1-5 工作日每天 9:00 执行0 */6 * * * 每 6 小时执行30 8 1 * * 每月 1 日 8:30 执行9.3 管理任务/cron list # 查看定时任务/cron list --all # 查看所有任务包括已暂停的/cron edit job_id --schedule “every 4h” # 修改调度时间/cron edit job_id --prompt “使用新的任务说明” # 修改任务说明/cron edit job_id --skill blogwatcher --skill maps # 替换技能列表/cron edit job_id --add-skill maps # 追加技能/cron edit job_id --remove-skill blogwatcher # 移除指定技能/cron pause job_id # 暂停任务/cron resume job_id # 恢复任务/cron run job_id # 下一个 scheduler tick 触发任务/cron remove job_id # 删除任务hermes cron status # 查看调度器状态hermes cron tick # 手动触发一次 scheduler tick任务存储在 ~/.hermes/cron/jobs.json运行输出保存到 ~/.hermes/cron/output/{job_id}/{timestamp}.md。9.4 运行结果投递方式deliver 控制定时任务运行完成后把 Agent 的最终回复发送到哪里deliver 说明origin 回到创建任务的聊天来源消息平台默认值local 只保存到本地文件CLI 默认值telegram、discord、slack 投递到对应平台的 home channeltelegram:123456 投递到指定 Telegram chat IDdiscord:#engineering 投递到指定 Discord 频道all 投递到所有已配置 home channel 的平台telegram,discord 投递到多个指定平台origin,all 投递到来源聊天 所有 home channelntfy v0.15推送通知无需账号示例hermes cron create “every 30m” “检查服务状态” --deliver telegramhermes cron create “every 1d” “生成日报” --deliver telegram,discord如果 Agent 的最终回复以 [SILENT] 开头成功运行时会抑制投递但输出仍会保存到本地。失败任务仍会投递错误信息。适合只有出现问题才需要报告的作业Check if nginx is running. If everything is healthy, respond with only [SILENT].Otherwise, report the issue.9.5 No-Agent 模式对于不需要 LLM 推理的周期性任务监控程序、磁盘/内存警报、心跳检测、CI ping 等可传递 no_agentTruehermes cron create “every 5m”–no-agent–script memory-watchdog.sh–deliver telegram–name “memory-watchdog”脚本必须放在 ~/.hermes/scripts/ 中。.sh / .bash 用 /bin/bash 执行其他脚本用当前 Python 解释器执行。脚本运行默认超时 120 秒可调整~/.hermes/config.yamlcron:script_timeout_seconds: 3009.6 使用 context_from 链接作业Cron 任务彼此之间默认隔离。context_from 用来把一个任务的最新输出接到另一个任务的 prompt 前面。它只能由 Agent 通过 cronjob 工具设置CLI 命令不支持。典型流程Job 1收集原始数据Job 2读取 Job 1 的最新输出筛选 / 排序Job 3读取 Job 2 的最新输出生成最终报告并投递示例Job 1收集 AI 新闻cronjob(action“create”, name“ai-news-fetch”,schedule“0 7 * * *”,prompt“Fetch the top 10 AI/ML stories from Hacker News.”)Job 2使用 Job 1 的最新输出做筛选cronjob(action“create”, name“ai-news-rank”,schedule“30 7 * * *”,context_from“job1_id”,prompt“Score each story for novelty and engagement. Keep the top 5.”)Job 3使用 Job 2 的最新输出生成日报cronjob(action“create”, name“ai-news-brief”,schedule“0 8 * * *”,context_from“job2_id”,prompt“Write a concise daily brief and deliver it to Telegram.”)context_from 支持单个或多个 job ID。多个上游输出会按列表顺序拼接每个上游输出在注入前被截断至 8,000 字符。注意context_from 读取的是上游任务「最近一次已完成输出」不会等待同一个 tick 中仍在运行的上游任务。需要强依赖同一批数据时应把上下游任务错开足够长时间。三、协作交互Gateway 消息网关官方文档https://hermes-agent.nousresearch.com/docs/user-guide/messaging/Gateway 是 Hermes 的消息平台接入层可以作为前台进程或后台服务运行。它负责连接 Telegram、Discord、Slack、微信等平台接收消息维护每个聊天对应的会话把消息转发给 Hermes Agent 处理再把回复发回原平台。Gateway 和 CLI 模式使用同一套 Hermes 程序、配置、会话、记忆、技能和工具。区别在于CLI 是终端里的单次交互入口Gateway 是长期运行的消息平台适配进程。Gateway 还会运行 cron 调度循环用来触发到期的计划任务。1.1 命令hermes gateway setup # 交互式配置消息平台hermes gateway # 前台启动 Gatewayhermes gateway install # 安装为用户服务Linux/ launchd 服务macOSsudo hermes gateway install --system # 仅 Linux安装为开机启动的系统服务hermes gateway start # 启动默认服务hermes gateway restart # 重启网关hermes gateway stop # 停止默认服务hermes gateway status # 查看默认服务状态hermes gateway status --system # 仅 Linux检查系统服务状态Telegram Bot 端到端搭建以 Telegram 为例完整的 Gateway 接入流程如下步骤 1创建 Bot在 Telegram 中搜索 BotFather发送 /newbot按提示设置名称和用户名获得 Bot Token格式1234567890:ABCdefGHIjklMNOpqrsTUVwxyz。步骤 2配置 Hermes将 Bot Token 写入 .envecho “TELEGRAM_BOT_TOKEN1234567890:ABCdefGHIjklMNOpqrsTUVwxyz” ~/.hermes/.env交互式配置 GatewayTelegram 选项hermes gateway setup步骤 3启动 Gateway前台运行调试用hermes gateway安装为系统服务推荐生产环境hermes gateway installhermes gateway start步骤 4验证配对首次与 Bot 私信时Bot 会回复配对码。管理员在本机批准hermes pairing list # 查看待审批的配对请求hermes pairing approve telegram XKGH5N7P此后该用户即可与 Hermes 自由对话。1.2 支持的消息平台【重要操作实用】每次修改配置文件后需要重启网关命令上面有 Hermes Gateway 支持 23 个以上的消息平台Telegram、Discord、Slack、WhatsApp、Signal、DingTalk、SMS (Twilio)、Mattermost、Matrix、Webhook、Email (IMAP/SMTP)、Home Assistant、Feishu/Lark、WeCom、Weixin微信、BlueBubbles (iMessage)、QQBot、Yuanbao、IRC、Microsoft Teams、Google Chat、LINE、SimpleX Chat、ntfyv0.15无需账号的推送通知配置邮箱的步骤只能手动修改配置文件打开邮箱的POP3/SMTP/IMAP 不同邮箱入口不同自行百度开启服务IMAP/SMTP服务、POP3/SMTP服务记录SMTP服务器地址、IMAP服务器地址找到自己邮箱平台的端口号不同邮箱端口不同自行百度进入到安装目录下hermes/.env文件添加Hermes代理的邮箱配置 .envEMAIL_PASSWORDQHaqxxxxxxxxxxxxxxxxxxxxxEMAIL_IMAP_HOSTimap.163.comEMAIL_SMTP_HOSTsmtp.163.comEMAIL_SMTP_PORT465EMAIL_ADDRESSyaohm7788163.com允许什么人发消息给你桌面版消息平台——email——Allowed users 填写 true 就是所有人也可以填某个邮箱EMAIL_ALLOW_ALL_USERStrue打开/重启网关hermes gateway start / hermes gateway restart测试用自己邮箱A 发消息给 Hermes代理的邮箱B。B会回复一个邮箱。必须 EMAIL_ALLOW_ALL_USERStrue 或者 是A邮箱的地址配置微信的步骤cmd进入网关设置界面hermes gateway setup选择WeiXin输入 y。出现二维码手机个人微信扫描二维码即可登录登录成功后续设置配置自行决定命令行会提供选项建议都使用默认也就是它推荐的自动询问是否要重启网关确认重启如果没出现就手动输入命令重启不要关闭网关界面后续有用完成以上步骤基本配置完成进入安装目录下hermes/.env文件查看微信配置 https://hermes-agent.nousresearch.com/docs/zh-Hans/user-guide/messaging/weixinWEIXIN_ACCOUNT_IDc94b6aa27d45im.botWEIXIN_TOKENc94b6aa27d45im.bot:06xxxxxxxxxxxxxxxxxxxxxWEIXIN_BASE_URLhttps://ilinkai.weixin.qq.comWEIXIN_CDN_BASE_URLhttps://novac2c.cdn.weixin.qq.com/c2cWEIXIN_DM_POLICYpairingWEIXIN_ALLOW_ALL_USERSfalseWEIXIN_ALLOWED_USERSWEIXIN_GROUP_POLICYdisabledWEIXIN_GROUP_ALLOWED_USERSWEIXIN_HOME_CHANNELo9cq800SHCEm-xxxxxxxxxxxxxxxxxxxxxim.wechat微信会自动出现一个clawbot的对话框发送消息给这个对话框发送失败此时网关界面会出现有一个无权限的用户尝试访问并指出给出会话id 以im.wechat结尾的字符串授权全部授权所有人都可以和Hermes对话WEIXIN_ALLOW_ALL_USERStrue指定授权指定会话才可以和Hermes对话WEIXIN_ALLOWED_USERSxxxxxim.wechatcmd重启网关hermes gateway restart现在可以开始对话了1.3 网关配对默认情况下网关会拒绝所有不在允许列表中或未通过私信配对的用户。允许列表在 ~/.hermes/.env 中配置每次修改配置文件后需要重启网关命令上面有 按平台限制用户TELEGRAM_ALLOWED_USERS123456789,987654321WEIXIN_ALLOWED_USERS123456789,987654321或配置通用允许列表GATEWAY_ALLOWED_USERS123456789,987654321显式允许所有用户不推荐给有终端访问权限的机器人使用GATEWAY_ALLOW_ALL_USERStrue私信配对无需手动配置用户 ID未知用户在私信机器人时会收到一次性配对码例如 Pairing code: XKGH5N7P。之后管理员在本机批准hermes pairing approve telegram XKGH5N7P # 批准配对hermes pairing list # 查看配对列表hermes pairing revoke telegram user_id # 撤销配对配对码 1 小时后过期有速率限制并使用加密随机数生成。斜杠命令权限控制权限分层只控制斜杠命令不影响普通聊天。规则先判断用户是否被允许使用 Gateway再判断当前作用域是否启用了命令权限分层未配置 admin 列表时所有已允许用户都可以运行斜杠命令配置了 admin 列表时管理员可运行所有命令普通用户只能运行显式允许的命令以及始终可用的 /help 和 /whoami~/.hermes/config.yamlgateway:platforms:discord:extra:allow_from: [“111”, “222”, “333”]allow_admin_from: [“111”]user_allowed_commands: [status, model]group_allow_admin_from: [“111”]group_user_allowed_commands: [status]用 /whoami 查看当前平台、作用域、权限层级和可运行的斜杠命令。