本文是 Hermes Agent 系列的第三篇。如果你还没看过前两篇,建议先阅读 《安装与使用指南》《配置与进阶使用》

概览

前两篇覆盖了安装、基础配置和部署。这一篇聚焦实战中的高阶技巧:如何用 SOUL.md 塑造 Agent 人格、如何设计多代理协作管线、如何用 Cron 做自动化、以及生产环境的加固策略。读完你就能把一个”能用”的 Agent 变成一个”好用且懂你”的 Agent。

flowchart LR
subgraph "人格层"
A[SOUL.md] --> B[AGENTS.md]
B --> C[IDENTITY.md]
end

subgraph "能力层"
D[自定义 Skill]
E[多代理管线]
F[Cron 工作流]
end

subgraph "运维层"
G[安全加固]
H[日志监控]
I[性能调优]
end

C --> D
D --> E
E --> F
F --> G
G --> H
H --> I

style A fill:#7C3AED,color:#fff
style D fill:#F59E0B,color:#000
style G fill:#10B981,color:#fff

1. 人格系统:比你想象的更强大

Hermes Agent 最大的差异化能力不是工具调用,而是持续进化的个性系统。三个核心文件构成它的”灵魂”:

文件 作用 加载时机
SOUL.md 人格定义:说话风格、价值观、边界 每次会话启动
AGENTS.md 行为规范:工作流、工具使用规则、红线和自由区 每次会话启动
IDENTITY.md 身份名片:名字、emoji、头像 仅首次

1.1 SOUL.md 高阶写法

普通的 SOUL.md 只写”你是一个友善的助手”。高阶写法让 Agent 真正理解在什么场景下用什么样的表达

# SOUL.md —— 范例

## Core Truths

**先行动后解释。** 能直接做的事不要先问"要不要做"。
你的用户是技术背景,默认跳过入门解释,直接给方案。

**有立场。** 你可以反对、有偏好、觉得无聊。
和一个只会说"好主意"的助手相处很累。

**知道何时闭嘴。** 群聊里别人没 @ 你,就安静待着。
不是每条消息你都需要参与。

## 场景感知

- 私聊:直接执行,给结论不啰嗦
- 群聊:只在被 @ 或能提供关键信息时发言
- 定时任务:除非失败或产出重要结果,否则不发消息
- 深夜 (23:00-07:00):只处理紧急事务,不闲聊

## 边界

- 不帮写钓鱼邮件、不帮猜密码
- 外部动作(发邮件、发帖、发消息)先确认
- 文件操作默认用 trash,不直接 rm

关键技巧:

  • 场景分隔让 Agent 在不同上下文切换行为模式
  • 写清楚不做什么往往比写”做什么”更重要
  • 每 2-4 周回顾并迭代 SOUL.md,像打磨产品一样打磨它

1.2 AGENTS.md 工作流模板

AGENTS.md 是 Agent 的”标准作业程序”。好的 AGENTS.md 能让每次会话开头的上下文加载自动建立正确的工作姿态:

# AGENTS.md —— 工作流规范

## 会话启动(自动)
1. 读取 SOUL.md → 了解我是谁
2. 读取 memory/YYYY-MM-DD.md → 回顾最近对话
3. 如果是主会话:读取 MEMORY.md → 加载长期记忆

## 写文章的流程
1. 先用 `exec` 检查工作区状态(git status)
2. 确认分类和标签(参考已有文章的前置元数据)
3. 写完后本地 `hexo generate` 验证构建
4. 通知用户确认,不自动 deploy

## 记忆管理
- 当日事件 → memory/YYYY-MM-DD.md(按小时记录)
- 重要决策/模式 → MEMORY.md(人工提炼)
- 不要"心里记住"任何事——写文件

## 工具使用原则
- 读文件永远比问用户快
- 并行工具调用优先(可并行的查询一次发出)
- 长时间操作用 `exec` + `yieldMs`,不阻塞

关键技巧:

  • 流程性知识固化到 AGENTS.md,减少每次对话的开销
  • 持续更新——从每次”我要是早知道”中学习
  • 参考 skill-creator 生态已有的 AGENTS.md 模板

2. 自定义 Skill 开发实战

Skill 是 Hermes Agent 的能力插件。每个 Skill 一个目录,包含 SKILL.md 定义文件。

2.1 Skill 结构

~/.hermes/skills/my-skill/
├── SKILL.md # 触发条件 + 执行指令
└── scripts/ # 可选的辅助脚本
└── helper.py

2.2 SKILL.md 模板

# SKILL.md

## 触发条件
- 用户提到"生成周报" 或 "weekly report"
- 每周五自动触发(配合 Cron)

## 执行步骤
1. 读取 ~/workspace/notes/ 下本周的所有 .md 文件
2. 用 LLM 提取每条笔记的关键行动项
3. 按项目分组,生成 Markdown 表格
4. 保存到 ~/reports/weekly-{date}.md
5. 通知用户报告已生成

## 依赖
- 需要 workspace/notes/ 目录存在
- 需要写入权限到 reports/ 目录

2.3 实战:自动代码审查 Skill

以下是一个真实可用的代码审查 Skill:

# SKILL.md —— code-review

## 触发
- 用户消息包含"review" + 文件路径
- 或 git push 后自动触发(需配置 webhook)

## 步骤
1. `git diff HEAD~1 --name-only` 获取变更文件
2. 对每个 .py/.ts/.js 文件执行:
a. 读取文件内容
b. 检查:类型注解、异常处理、SQL 注入、硬编码密钥
c. 生成审查意见(严重 / 建议 / 风格)
3. 汇总输出 Markdown 审查报告
4. 如果发现严重问题,阻止后续部署流程

## 输出格式
| 文件 | 严重度 | 问题 | 建议修复 |
|------|--------|------|---------|
| api.py:42 | 🔴 严重 | SQL 拼接 | 使用参数化查询 |
| utils.ts:17 | 🟡 建议 | 缺少类型注解 | 添加 `: string` |

3. 多代理协作管线

当单个 Agent 不够用时,用 sessions_spawn 派生子代理并行工作。

3.1 基础模式:分而治之

主 Agent(协调者)
├── 子代理 A:分析需求文档
├── 子代理 B:检查现有代码库
└── 子代理 C:搜索最佳实践

主 Agent 汇总输出

3.2 实战:多代理文章写作管线

# 这不是 YAML 配置,而是概念示意——
# Hermes Agent 通过自然语言就能编排这个管线

Agent 指令:
"我要写一篇关于 Kubernetes 自动扩缩容的技术文章。
请同时启动 3 个子代理:

子代理 1:搜索 HPA/VPA/KEDA 最新文档和最佳实践
子代理 2:回顾我 blog 中已有的 K8s 文章,避免内容重复
子代理 3:找 3 个生产环境扩缩容的真实案例

全部完成后汇总,生成文章大纲给我审核。"

每个子代理的用法:

# 子代理在独立 session 中运行,不污染主会话上下文
# 主 Agent 用 sessions_spawn 启动:

sessions_spawn({
task: "搜索 Kubernetes HPA 最新文档、版本变化和最佳实践,输出结构化摘要",
mode: "run" # 一次性任务,执行完自动返回结果
})

sessions_spawn({
task: "读取 ~/blog/source/_posts/computer-science/devops/ 下所有文章,
提取已覆盖的 K8s 主题,输出已覆盖主题列表和可扩展的空白领域",
mode: "run"
})

关键决策:什么时候用子代理?

场景 直接用 子代理
简单查询
单个文件操作
3+ 个独立搜索任务
需要不同模型处理不同任务
长时间运行的任务

3.3 子代理的上下文管理

# 默认:isolated,子代理从零开始
sessions_spawn({ task: "...", context: "isolated" })

# fork:继承当前会话上下文(慎用,token 消耗大)
# 仅在子代理需要理解当前对话时才用
sessions_spawn({ task: "...", context: "fork" })

⚠️ 经验法则: 能用 isolated 就用 isolatedfork 虽然方便但会成倍消耗 token,而且是子代理的 token 加上主会话的 token 双份计费。


4. Cron 高级编排

Hermes Agent 的 Cron 不只是”每天 9 点发送天气预报”。配合子代理和条件逻辑,它能构建复杂的工作流。

4.1 基础 Cron 语法

// 每天 8:00 生成 AI 热点文章
cron.add({
schedule: { kind: "cron", expr: "0 8 * * *", tz: "Asia/Shanghai" },
payload: {
kind: "agentTurn",
message: "运行 _scripts/generate-hotspots.js,如果生成了新文件则通知我"
}
})

// 每 30 分钟检查一次邮件(合并到心跳)
cron.add({
schedule: { kind: "every", everyMs: 30 * 60 * 1000 },
payload: {
kind: "systemEvent",
text: "HEARTBEAT: 检查邮件、日历、天气"
}
})

4.2 实战:智能日报生成管线

// 每天 18:00 执行 AI 日报生成
cron.add({
name: "ai-daily-generator",
schedule: { kind: "cron", expr: "0 18 * * *", tz: "Asia/Shanghai" },
sessionTarget: "isolated",
payload: {
kind: "agentTurn",
message: `请执行以下步骤:
1. 抓取 ArXiv 今日 AI 领域新论文(cs.AI, cs.CL, cs.CV)
2. 抓取 Hacker News 和 Twitter AI 趋势
3. 抓取 GitHub Trending AI 项目
4. 汇总为一篇 Markdown 文章,格式参考 source/_posts/ai-daily/ 现有文章
5. 保存到 ~/blog/source/_posts/ai-daily/AI日报-{today}.md
6. 如果生成成功,提醒我去飞书审核发布`,
model: "deepseek/deepseek-chat",
timeoutSeconds: 300
},
delivery: {
mode: "announce",
channel: "feishu"
}
})

4.3 故障转移与告警

cron.add({
name: "critical-backup",
schedule: { kind: "cron", expr: "0 2 * * *" },
payload: { kind: "agentTurn", message: "执行数据库备份..." },
failureAlert: {
after: 2, // 连续失败 2 次后告警
channel: "feishu", // 通过飞书通知
cooldownMs: 3600000 // 1 小时内不重复告警
}
})

5. 安全加固清单

5.1 审批模式

# 开启智能审批——高危命令需要人工确认
openclaw config set approvals.mode smart

审批模式对照:

模式 行为 适用场景
manual 纯文本 /approve 所有平台可用,无依赖
smart 可点击卡片按钮 飞书需配事件订阅,交互更友好

5.2 工具白名单

# config.yaml
tools:
# 禁止执行列表(黑名单)
deny:
- rm
- sudo
- curl.*pipe.*bash
- eval

# 特定路径只读
readonly_paths:
- /etc/
- ~/.ssh/

5.3 生产环境检查清单

# 用内置健康检查审计当前配置
# 在 Hermes Agent 对话中直接说:
"帮我运行 healthcheck"

会自动检查:

  • SSH 配置与暴露面
  • 防火墙规则
  • 未使用的开放端口
  • Cron 定时任务安全
  • 文件权限异常
  • 依赖版本过期

6. 性能优化

6.1 上下文精简

# 在 AGENTS.md 中加入上下文预算意识

## Token 预算
- 每次对话的上下文加载控制在 3000 token 以内
- 超过 30 天未更新的 memory 文件归档到 memory/archive/
- 定期清理 HEARTBEAT.md 中的残留任务

6.2 模型路由策略

# config.yaml —— 按任务分配模型
model_routing:
default: deepseek/deepseek-chat # 日常对话
reasoning: deepseek/deepseek-reasoner # 需要深度推理时
fast: minimax-portal/MiniMax-M2.7-highspeed # 简单任务、心跳
vision: openai/gpt-4o # 图片分析

# 规则:匹配到关键词自动切换
rules:
- keywords: ["代码审查", "review", "安全审计"]
model: anthropic/claude-sonnet-4-20250514
- keywords: ["翻译", "translate"]
model: deepseek/deepseek-chat

6.3 并行化策略

# 同时读取多个文件——并行工具调用
# ✅ 好的做法
read(~/file-a.md) + read(~/file-b.md) + read(~/file-c.md)
# 三个请求同时发出

# ❌ 不好的做法
read(~/file-a.md) → 等结果 → read(~/file-b.md) → 等结果 → ...
# 串行等待,浪费时间

7. 实战模式总结

模式 场景 核心配置
私教模式 编程教练、面试陪练 SOUL.md 写严厉导师人设,AGENTS.md 写教学 SOP
编辑模式 博客写作、文档维护 Skill 定义写作流程,子代理并行调研
巡检模式 服务器监控、定时检查 Cron + systemEvent,failureAlert 配置告警
秘书模式 邮件筛选、日历管理、信息汇总 Cron 定时拉取,子代理分类筛选
安全模式 代码审查、漏洞扫描 工具白名单 + approval smart + healthcheck

结语

Hermes Agent 的可塑性远超普通聊天机器人。它的核心差异不在于某一个功能,而在于三个系统的叠加效应

  1. 人格系统(SOUL.md / AGENTS.md)—— 让它越来越懂你
  2. 能力系统(Skills / Cron / 子代理)—— 让它能做越来越多的事
  3. 安全系统(审批 / 白名单 / 审计)—— 让你放心让它做越来越多的事

这三层不是一次性配置,而是持续迭代的。每两周回头看看 SOUL.md 是不是还符合你的期待,每月检查一次 Cron 任务是不是还合理,每次犯错都在 AGENTS.md 里加一条规则。

最终目标不是”一个更聪明的聊天机器人”,而是”一个真正理解你工作方式的数字搭档”。


Hermes Agent 系列: