阅读视图

发现新文章,点击刷新页面。

Hermes Agent 从安装到生产:我的完整踩坑记录

Hermes Agent 从安装到生产:我的完整踩坑记录

事情是这样的。

前阵子我把 Hermes Agent 装到了树莓派上,配了六个 AI 分身跑在飞书群里,用了一个多月。中间踩了不少坑——安装、多智能体、记忆引擎、安全加固,每个环节都有「看起来简单,做起来全是细节」的时刻。

这篇文章把我所有的配置经验和踩坑记录整理在一起。从零开始到生产部署,看完直接抄作业。


一、安装

国内服务器直连 GitHub 太慢,用国内镜像。终端跑这一行:

curl -fsSL https://res1.hermesagent.org.cn/install.sh | bash

装完先别急着配,花半小时读文档。顺序建议:

文档不厚,但关键概念必须先搞清楚——Profile、Skill、Memory、Toolset 这四个东西的关系,后面全靠它们。


二、Skills

Skills 是 Hermes 的核心机制。每个 Skill 就是一个可复用的能力模块——可以是一个写作风格、一个发布流水线、一个配图工具。

加载 Skill 之后 Agent 就自动拥有这个能力,不需要每次手动描述。

官方 Skills 市场:hermes-agent.nousresearch.com/docs/skills


三、多智能体

这是 Hermes 最打动我的功能——同一个框架下可以跑好几个不同人设的 Agent,各干各的。

hermes profile list          # 查看智能体列表
hermes profile create editor # 创建
hermes --profile editor setup
hermes --profile editor chat
hermes --profile editor gateway start

我配了六个:

  • default — 通用对话,群聊里的日常问答
  • coder — 全栈开发,终端权限完整,能读写文件跑脚本
  • editor — 公众号运营,写稿改稿排版配图推草稿
  • point — 调研分析,规则设计、成本测算、数据复盘
  • riji — 日记助手,马伯庸风格的日记记录
  • sre — 安全运维,安全加固漏洞排查配置审计

9073dc1ec226785c660d0172f3a4c101.png

设置角色 Soul

每个 Agent 的角色定义写在 ~/.hermes/profiles/{name}/SOUL.md 里。改了之后重启生效。

~/.hermes/profiles/editor/SOUL.md
~/.hermes/profiles/coder/SOUL.md

设置用户偏好

用户身份和偏好写在 ~/.hermes/profiles/{name}/memories/USER.md,同样改完重启。

Memory 记忆

Hermes 有三层记忆:

  1. memory — 持久记忆,注入每轮对话的系统提示
  2. fact_store — 结构化深度记忆,支持实体解析和语义搜索
  3. session_search — 全文检索所有历史会话

全局共享记忆在 ~/.hermes/memories/MEMORY.md,所有智能体共享。

记忆的保存触发:

  • 每 5~10 轮对话自动精简写入
  • 执行 /save/sync/memory 命令立即整理
  • 重启时自动保存一次
  • 内容超阈值自动压缩

四、记忆引擎升级:从「隔天就忘」到「永远记得」

默认的 Holographic 引擎有一个致命问题——只在「会话结束时」保存记忆。

飞书群聊一直开着,同一条会话连跑好几天,永远不会「结束」。结果就是中间的内容一条都不存,隔天全忘。

换了 Hindsight 引擎,问题解决。

对比:

Holographic:手动触发保存、不自动召回、SQLite 存储、无去重 Hindsight:auto_retain 自动保留、auto_recall 自动召回、知识图谱+向量存储、实体解析去重

配置步骤:

pip install hindsight-client hindsight-embed

~/.hermes/.env 里配置 LLM Key(DeepSeek 就行,成本极低):

HINDSIGHT_LLM_API_KEY=sk-your-deepseek-key

创建 ~/.hermes/hindsight/config.json

{
  "mode": "local_embedded",
  "llm_provider": "openai_compatible",
  "llm_model": "deepseek-chat",
  "llm_base_url": "https://api.deepseek.com/v1",
  "retain_every_n_turns": 3,
  "recall_budget": "low",
  "retain_async": true,
  "auto_retain": true,
  "auto_recall": true
}

切换并重启:

hermes config set memory.provider hindsight
systemctl --user restart hermes-gateway
hermes memory status   # 验证:Provider: hindsight, Status: available

几个关键参数:

  • retain_every_n_turns: 3 — 每 3 轮存一次,太频繁浪费 token
  • recall_budget: low — 最低召回精度,够用
  • retain_async: true — 异步存储不阻塞回复

踩坑记录:

  • systemd gateway 不加载 .env,Key 必须同时写入 .env 和 service 文件
  • systemctl --user restart 替代 hermes gateway restart,后者会重写 service 文件导致手动配置丢失

五、接飞书:六个 AI 在同一个群里

六个 Agent 对应六个飞书 App,全在同一个飞书群里。@谁谁干活。

串联流水线:比如写公众号文章——先在群里跟 point 说「帮我调研这个工具的技术原理」,point 出报告 → 丢给 editor「写成公众号文章」→ editor 写稿配图推草稿。整个过程就在飞书群里发几条消息,没开电脑。

权限分级:普通人只能用 default 聊天,coder 和 editor 只有我的账号能调。

跑在树莓派上:树莓派 4B,8GB 内存,不跑本地模型只做调度。内存占用稳定在 2.9GB。夏天加个小风扇。

踩过的坑:

  • 飞书富文本 → Hermes Markdown 需要转换
  • 飞书 Webhook 超时 3 秒,Hermes 做复杂任务可能一两分钟,必须改成异步:收到消息立刻回「正在处理」,跑完再推送结果
  • 群聊消息做窗口管理,保留最近 20 条,防止上下文爆炸

六、安全加固:六层防御塔

把 Agent 接入生产环境,安全问题不能等到出事了再补。

Hermes 的安全是纵深防御体系。就算 LLM 被 Prompt 注入操控了,后面的层还能兜底。

72352f66db34237193ba7082c94dfafe.png

第一层:Tirith 防火墙

独立于 LLM 的审计算子,在实际执行工具调用之前拦一道。

pip install tirith

默认策略建议:

  • rm -rfchmod 777 → 直接阻断
  • sudosu → 直接阻断
  • curlwget 外网 → 走审批
  • git pushgit commit → 走审批
  • 读取 /etc/passwd 和 .env → 告警但不阻断

第二、三层:密钥脱敏 + 隐私脱敏

hermes config set security.redact_secrets true
hermes config set privacy.redact_pii true

API Key、手机号、身份证、邮箱、IP 地址自动打码。

密钥放 .env 文件,绝不写进 config.yaml。每 90 天轮换。

第四层:网络控制

hermes config set security.website_blocklist.enabled true
hermes config set security.allow_private_urls false

域名黑名单至少加 pastebin.comrequestbin.net——数据外泄和 SSRF 最常用的目标。

第五层:审批门禁

approvals:
  mode: manual
  cron_mode: deny

每次工具调用需要人工确认。禁止 Agent 自己建定时任务。

第六层:隐私边界

禁止访问内网地址——192.168.x.x、10.x.x.x、127.0.0.1 全部被拦。

必须开的配置项

配置
security.tirith_enabled true
security.redact_secrets true
privacy.redact_pii true
security.allow_private_urls false
approvals.mode manual
approvals.cron_mode deny
checkpoints true

监控:日常关注网关日志和审计日志。Tirith 每小时阻断超 5 次 = 🚨 查是不是被攻击。


七、好与不好

用了两周,真实感受:

好的地方:上手快、轻量、自动创建和优化 Skill。多 Profile 的设计很实用,六个人设各司其职。

不好的地方:Skill 多了会有重复,需要定期清理。这算是成长的烦恼——用着用着就积累了一堆,得手动整理。不过新版本解决这个问题:给skill库打分,合并相关技能、清理已死技能


八、一句话总结

装 Hermes → 读文档 → 配 Skills → 建多个 Profile → 接飞书 → 切 Hindsight 记忆引擎 → 开六层安全防御。

整个过程不复杂,就是细节多。建议别一上来就搞六个 Agent,先跑通一个 Profile,能用起来再说。

搞 Agent 最大的坑不是技术,是高估了自己对自动化的需求。很多东西你以为需要 AI,其实只需要一个写得好点的脚本。

有问题留言聊,或者你有类似实践也欢迎交流。

下次见。

❌