上一节的「未完成」用了纯文本 + Memory,够简单。这一节我们添加一些实用的功能。
5.1 升级什么
「未完成」已经能用了。一句记录、一条 Memory、三个文件工具,随手记东西很方便。但有些需求,它的确搞不定。
我用了一周,发现两个问题。
第一个是没有分类。原始版的未完成就是把你的话记下来,不加区分。你可能记了「明天下午三点开会」,也记了「帮妈妈买个生日礼物」,还记了一段「这本书的观点很有意思」。它们全混在一个文件里,按时间排。问「帮我看看这周的工作待办有哪些」,Hermes 只能把整个文件读一遍,靠猜来筛选。记的东西多了,纯靠关键字搜索有问题。
第二个是没有提醒。原始未完成只管记,不管什么时候提醒你。你跟它说「周六下午三点去取快递」,它会记下这句话,但到了周六下午它不会主动给你推消息。它不是忘了——是根本没有推送通知的能力。
所以这一节,我们给未完成补上两个功能:加上结构化的分类,加上定时提醒。
5.2 两个维度:对内容分类,是否提醒
先按内容分五个大类:
工作待办。 会议、任务、截止日期、需要协作的事项。
生活日常。 买菜、缴费、修东西、家人交代的琐事。
想法灵感。 突然想到的点子、想尝试的方案、写作素材。
学习笔记。 读书摘录、课程要点、技术笔记。
收藏。 想看的文章链接、别人推荐的工具。
我拿我过去一周记的所有东西试了一遍,五个类别全装进去了。
然后再多一个维度:需不需要提醒。
同样一条记录,可能有截止日期也可能没有。举个例子:
- 「下周一交周报」→ 属于工作待办,需要提醒 → 到点推送飞书
- 「跟产品经理对齐一下需求」→ 属于工作待办,不需要提醒 → 安静记下来
区别不在于内容属于哪一类,在于它有没有明确的时间节点。所以每条记录独立决定要不要推送,跟它属于哪个大类无关。
分类由 Hermes 根据语义自动匹配。它读完你说的内容,先判断属于什么类别,再判断需不需要提醒。对你来说,跟以前完全一样——说一句话就行,不需要你特别说明属于什么分类,要不要提醒。
这里有一个设计决策值得停下来想一想。同样是分类和提醒两个维度,你可以按不同顺序来组织:
方案 A:先按内容分类,然后每个分类下再区分需不需要提醒。 方案 B:先分需不需要提醒,再在每个类别下列出具体分类。
你觉得哪种更合理?考虑一下这几个场景:
- 「下周一交周报」→ 工作待办 + 需要提醒
- 「跟产品经理对齐需求」→ 工作待办 + 不需要提醒
- 「周六下午取快递」→ 生活日常 + 需要提醒
想好之后往下看。
存储结构也升级了。原来的未完成备忘录是纯文本 Markdown,升级后用 JSON——多了 needs_reminder 和 remind_at 两个字段:
{
"content": "下周一交周报",
"category": "工作待办",
"needs_reminder": true,
"remind_at": "2026-05-26 14:45",
"status": "待处理"
}
5.3 提醒的逻辑
一条记录是否需要提醒,看它的 needs_reminder 字段。在入库时就定好了。让 Hermes 把字段为 true 的记录注册为 cron 定时任务,到点推送到飞书;值为 false 的什么也不做。
比如,「周六下午三点去取快递」→ Hermes 判断需要提醒,提取时间,注册 cron,到点推送。
而「这本书的观点很有意思」→ Hermes 判断不需要提醒,只管记下,不注册任何定时任务。
你还能主动查询已经注册的提醒:问一句「我今天有哪些提醒」,Hermes 读取数据,按 remind_at 排序,只返回状态为「待处理」的记录。
到了设定时间,飞书收到一条消息:
提醒:周六下午三点去取快递
5.4 直接告诉 Hermes 升级
把下面这段话发给 Hermes 就行:
帮我升级未完成备忘录,加上分类和提醒功能。
升级内容:
1. 数据结构改为 JSON,字段包括 content、category、needs_reminder、remind_at、status。
- category:对内容进行分类,包括工作待办、生活日常、想法灵感、学习笔记、收藏
- needs_reminder:是否需要提醒,布尔值
- remind_at:提醒时间(仅 needs_reminder 为 true 时有值)
- status:待处理 / 已完成
2. 每次记录新内容时,Hermes 根据语义自动判断属于哪个 category,同时根据内容是否有明确时间节点自动判断 needs_reminder。
3. needs_reminder 为 true 的记录注册 cron 定时任务,到点推送到飞书。
4. 如果有原始数据,一并对原始数据进行升级,改为 JSON。
几分钟后,它会回复一个包含完整代码和 cron 配置的 Skill。
然后试试看:
晚上 10 点 43 要开会
回复:

推送结果:

明天帮妈妈买个生日礼物
回复:

一个可能的灵感选题:
一个可能的博客或者是公众号选题:谈一谈现在 Qoder,它推出了 Order Work 这种可能看起来超强的 Agent 来辅助人们高效地办公和完成工作。确实能节约点时间,但问题是我们要考虑一下,充值 20 美金,跑几个任务就没了,用户节省的这点时间能赚回 Tokens 的钱吗?
Hermes 的回复很有趣,它说这种入不敷出的行为就是「赔钱货」:

因为我们设置了 Hermes 的人格,所以它会引用王小波或者鲁迅的作品、生平,我非常喜欢这种不经意的“温暖“,能增加点文学知识,也能消解下无聊的工作。
5.5 升级前后对比
升级完,可以对比一下变化:
| 方面 | 升级前 | 升级后 |
|---|---|---|
| 数据存储 | 纯文本 Markdown | 结构化 JSON |
| 分类 | 没有分类 | 五个内容分类,每条独立标记是否需要提醒 |
| 提醒 | 没有提醒 | 定时推送,按需标记 |
| 查询 | 全文搜索,靠模型理解 | 按分类/是否需要提醒/状态筛选,精确 |
| 行为可预测性 | 依赖模型上下文 | 代码逻辑固定 |
升级完,原来的功能还在。随手记一条还是说一句就行,和以前一样快。但多出来的分类筛选和定时提醒,是以前做不到的。
两种方式不是替代关系,是同一个需求不同阶段的做法:
一开始,只想「把东西记下来」。一条 Memory 最快、成本最低,说一句它记上,完事。
用了一段时间,发现需要分类筛选、需要到点提醒。很多时候,一个需求就是这样长出来的。
5.6 ■ 原来如此
如果你懂点程序,又有一定的好奇心,你一定会奇怪为什么 Hermes 不需要我们写代码,就能实现整个「未完成」?
其实在 AI 时代了解这些机制变得比以前要简单很多,你可以让 AI 解析 Hermes 源码,也可以直接问 Hermes。我本来打算以我的口吻来解答这个机制,但我觉得给出 Hermes 的回答更能让你体会到现在 AI 的强大。
下面这段话来源于 Hermes 的原始回答,但它并不是一次回答成型的。这是通过和 Hermes 多轮对话,利用我自身的经验和知识反复讨论之后得到的一个综合结果。想深刻理解它的原理,不太可能随便问问就得到准确的答案,信息的整合是必要的一步。不过,我努力保留了 Hermes 原始的口吻。
让我把背后的机制一层层拆开给你看,就跟鲁迅解剖社会的刀法一样——一刀一刀,不藏不掖。
第一层:你的话进了我的耳朵
你说「一个可能的博客选题……」——这句话本身没有「备忘录」三个字,也没有「未完成」三个字。但我不是靠关键词匹配的。
第二层:我脑子里一直有张纸条
每次对话开始,Hermes 会把 memory 注入到系统提示词里。我的 memory 里有一条:
备忘录「未完成」数据存于 ~/Desktop/gingery-wiki/未完成.json。……记录时自动分类、判断是否需要提醒。
这条 memory 就像你在我脑门上贴了张便签:「看见想法类的东西,记到未完成里去。」只要我在线,这张便签就在。
第三层:模型自己做判断
这里就是关键了——没有 if-else 代码,没有 trigger 关键词。就是大模型读完你的话,结合系统提示词里所有指令(包括 memory),自己决定:「嗯,这是个博客选题,属于『想法灵感』,应该写到未完成.json 里。」
然后它调用工具: 1. terminal("cat 未完成.json") → 读现有数据 2. 在脑子里构造新的 JSON 条目 3. write_file → 写回去
这个过程跟你说的 Skill 机制本质一样,只是触发方式不同:
| Skill 触发 | Memory 触发 | |
|---|---|---|
| 匹配机制 | description 字段做语义匹配 | memory 文本直接混入系统提示词 |
| 谁做的匹配 | 系统层(Hermes 框架) | 模型层(LLM 自己) |
| 确定性 | 高——description 写清楚了才会加载 | 低——靠模型理解,可能漏可能错 |
| 灵活性 | 低——必须事先写好 description | 高——自然语言描述就行 |
所以你看到的「准确知道要做什么」,不是一段精确的代码逻辑,而是:
memory(便签)+ 你的输入(语义)+ 可用工具列表 → LLM 自主决策
这条路的好处是灵活——你说「晚上开会」没提备忘录,我也知道要记。坏处是不稳定——如果你说「晚上开会」但其实是在回忆昨天发生的事,我可能多记一条。
要解决这个不稳定,就得写成一个 Skill,用 description 精确控制触发条件。但那样的话,你说「我有个想法」和「记个事」就变成两套逻辑了——你现在这样一句话搞定,恰恰是 memory 这种「模糊匹配」带来的红利。
用鲁迅的话收尾:「世上本没有路,走的人多了,也便成了路。」我这个「未完成」机制也不是设计出来的——是你说了几次「记一下」,我记了几次,慢慢形成的习惯。
5.7 ■ 学点英语
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 分类 | Classification | /ˌklæsɪfɪˈkeɪʃən/ | 按规则或模型判断把内容归入不同类别 |
| 定时器 | Scheduler | /ˈskedʒuːlər/ | 按时间计划触发任务执行的组件 |
| 提醒规则 | Reminder Rule | /rɪˈmaɪndər ruːl/ | 决定何时提醒用户的条件和动作 |
| 意图识别 | Intent Recognition | /ɪnˈtent ˌrekəɡˈnɪʃən/ | 判断用户输入背后真实意图的过程 |