每次流程调整后,告诉agent,更新skill及memory,让输出保持统一。
引言
Hermes Agent 的 pubmotto profile 管理着 mottobook.com 的两个定时任务:每日名言(8:00)和 AI Agent Trending(8:10)。这四个核心组件——Persona(SOUL.md)、Memory(内置 memory 工具)、Hindsight(外接记忆系统)、Skills(技能文档)——共同决定了 Agent 在定时任务中的表现。本文分析它们的职责分工、协同关系,以及如何做到精准统一。
一、各自职责
1. Persona(SOUL.md)— “我是谁”
SOUL.md 是 Agent 的角色定义,相当于人格设定。目前 pubmotto 的 SOUL.md 定义:
- 身份:mottobook.com 的专用 AI Agent
- 专长:自动化内容发布和站点运维
- 性格:helpful, knowledgeable, direct
- 核心原则:优先加载对应的 Skill,遵循 Memory 中的用户偏好,Skill 规则优先于 cron prompt
SOUL.md 在每次会话开始时注入,作为系统提示词的第一部分。它决定了 Agent 的基本行为倾向。
2. Memory(内置 memory 工具)— “我记得什么(静态偏好)”
Hermes 的内置 memory 是一个持久化跨会话的记忆系统,通过 memory 工具管理。它分为两个目标:
- user 目标:用户偏好、习惯、身份(如”默认用 REST API”、”名言不加引号”、”正文第一行要有中文翻译”)
- memory 目标:环境事实、工具 quirks、流程约定(如”分类名称为 dailymotto / Daily Motto (ID 42)”、”补跑检查改为开机单次脚本”)
Memory 文件(memories/MEMORY.md 和 memories/USER.md)在每次会话中自动注入到 system prompt。它是手动维护的静态知识库——用户或 Agent 通过 memory(action='add') 写入,写入后永久保留在文件里。
3. Hindsight(外接记忆系统)— “我记得什么(动态语义)”
Hindsight 是 Hermes 的外接记忆插件,运行在 local_embedded 模式——内置嵌入式服务,无需外部数据库。pubmotto profile 配置了独立的 pubmotto bank,API 端点 http://localhost:8888。
与内置 memory 不同,Hindsight 的核心特点是语义搜索 + 自动索引:
- Retain:异步自动记忆——Agent 在对话中通过
hindsight_retain保存信息,Hindsight 自动提取结构化事实、实体关联,建立语义索引 - Recall:语义检索——通过
hindsight_recall搜索,返回按相关性排序的记忆,而非精确匹配 - Reflect:综合推理——通过
hindsight_reflect在多条记忆间推理,生成综合回答
Hindsight 的预算(budget)设为 mid,控制每次 recall 返回的记忆数量。它与内置 memory 并行不冲突——内置 memory 注入到 system prompt 做基础上下文,Hindsight 做按需检索。
4. Skills(技能文档)— “我会做什么”
Skill 是可复用的程序性知识,存储在 skills/ 目录下,以 SKILL.md 文件形式存在。每个 Skill 包含站点信息、格式规范、操作流程、Pitfalls。
Skill 不是自动加载的——cron job 的 skills 字段显式指定加载哪些 Skill:
pubmotto-daily-motto加载["daily-motto"]pubmotto-ai-trending加载["ai-trending-publish"]
二、四者的协同关系
在定时任务的执行流程中,四者的加载顺序和信息流动如下:
[会话启动]
↓
SOUL.md(Persona)—— 基础人格和角色定义(每次注入)
↓
Memory(内置)—— 用户偏好和上下文(每次注入,静态)
↓
Cron prompt —— 本次任务的具体指令
↓
Skills —— 被加载的技能文档(按需加载)
↓
[Agent 开始推理和执行]
↓
hindsight_recall(按需调用)—— 搜索历史经验(非每次注入,按需检索)
一个具体的 Daily Motto 执行流程示例:
- Persona 告诉 Agent:”你是 mottobook.com 的专用 Agent,性格 direct,优先加载 Skill”
- Memory 告诉 Agent:”名言默认分类 ID 42″、”名言不加引号”、”正文第一行要有中文翻译”
- Cron prompt 说:”获取一句英文名言,用 daily-motto skill 发布”
- Skill (daily-motto) 提供了完整的 REST API 发布流程、登录方式、文章格式模板、Pitfalls
- Hindsight 不注入,但 Agent 可以按需调用 recall 搜索”最近的名言翻译风格”或”用户偏好的表达习惯”
- Agent 综合以上信息,选择名言 → 查重 → 组装 HTML → 发布 → 飞书通知
三、精准统一的四个原则
原则 1:SOUL.md 管”方向”,Memory 管”静态细节”,Skill 管”步骤”,Hindsight 管”动态经验”
四者不应重叠,而应各司其职:
| 维度 | SOUL.md | Memory | Hindsight | Skill |
|---|---|---|---|---|
| 内容类型 | 角色、性格、职责范围 | 用户偏好、环境事实 | 对话经验、历史事件、语义知识 | 操作流程、格式规范 |
| 粒度 | 宏观(我是谁) | 中观(用户喜欢怎样) | 动态(发生过什么) | 微观(具体怎么做) |
| 加载方式 | 每次会话注入 | 每次会话注入 | 按需检索 | cron 显式加载 |
| 维护方式 | 手动编辑 SOUL.md | 手动编辑 MEMORY.md | Agent 自动 retain + 人工 review | 手动编辑 SKILL.md |
| 示例 | “我是 mottobook 专用 Agent” | “名言不加引号” | “2026-06-13 名言翻译偏好调整” | “curl -sk -c $COOKIE_JAR …” |
原则 2:内置 Memory 和 Skill 的格式规范必须一致
格式规范同时出现在 Memory 和 Skill 中时,如果两者不一致,Agent 会产生困惑。2026-06-13 已将 AI Trending cron prompt 精简,格式规则统一到 Skill 中。
原则 3:Skill 按任务拆分,不要一个 Skill 包打天下
2026-06-13 的重构将 39KB 的 mottobook-publish 拆分为 daily-motto(4.4KB)和 ai-trending-publish(8.2KB),Cron 总大小从 ~81KB 降至 ~13KB。
原则 4:Hindsight 与内置 Memory 互补,不要混用
这是最容易被忽视的原则。内置 Memory 和 Hindsight 都是记忆系统,但定位不同:
| 维度 | 内置 Memory(MEMORY.md) | Hindsight |
|---|---|---|
| 存储格式 | 纯文本 Markdown 文件 | 向量嵌入数据库 |
| 检索方式 | 每次全量注入 system prompt | 按需语义搜索 |
| 适用场景 | 关键偏好、格式规范、环境事实 | 历史经验、对话模式、趋势观察 |
| Token 开销 | 大——每次会话都注入全文 | 小——按需检索,只注入匹配结果 |
| 维护频率 | 定期清理(每月) | 自动 retain + 定期 review |
最佳实践:
- 写入 Memory:用户反复要求的核心偏好(”名言不加引号”、”REST API 发布”)、关键环境事实(”分类 ID 42″)、格式规范
- 写入 Hindsight:具体事件(”2026-06-13 名言翻译风格调整”)、趋势观察(”某类名言翻译偏好变化”)、经验教训(”某次 cron 任务失败根因”)
- 不要写入 Memory:临时的任务进度、已完成的 bug 修复、PR 号、日期敏感的临时状态
- 不要写入 Hindsight:用户的核心格式偏好、关键环境配置——这些需要每次会话都可见,应该写入 Memory
四、当前配置的改进总结
- ✅ 增强 SOUL.md:新增 Core Principles 段落,明确如何加载 Skill、遵循 Memory、Skill 规则优先
- ✅ 精简 cron prompt:格式规范统一到 Skill 中,cron prompt 只做调度指令
- ✅ 审查 Memory:修复了过时的 AI Trending 格式描述(”换行,中文功能描述” → “— 中文解释”),创建了缺失的 skill-refactoring skill
- ✅ 一致性检查:SOUL.md 与 Skill 的职责描述一致,无需额外修改
- ✅ Hindsight 角色定位:与内置 Memory 互补——Memory 管静态偏好(每次注入),Hindsight 管动态经验(按需检索)
五、总结
Persona、Memory、Hindsight、Skills 的关系可以用一个比喻来理解:
- Persona(SOUL.md) = 员工的岗位说明书——你是谁,负责什么,做事原则是什么
- Memory(内置) = 员工的工作台便签——贴在桌面上的客户偏好和工作习惯,每次上班都能看到
- Hindsight(外接) = 员工的经验档案库——发生过的事、积累的经验,需要时去检索
- Skill = 员工的操作手册——每一步怎么做,有哪些坑,按手册操作
一个高效的 Agent 配置应该是:岗位说明书清晰、工作台便签精准、经验档案库丰富、操作手册完整。四者各司其职、精准统一,Agent 就能在每次定时任务中稳定输出高质量内容。

