案例①:打造"私人首席信息官"——自动聚合资讯与生成日报
案例①:打造”私人首席信息官”——自动聚合资讯与生成日报
先说个不太好听的事实:市面上 90% 的”AI 日报机器人”是垃圾。
它们的产出你一眼就能认出来——十条标题党链接堆在一起,每条后面跟一句”这体现了 AI 领域的快速发展”,读完你不知道该干什么。原因不在模型笨,在于做的人把它当成了”RSS 转发器 + 摘要 API”。真正的信息官不是转发器,它是一个知道你在关注什么、记得你上周已经看过什么、会主动告诉你”这条和你三天前那个判断矛盾了”的人。
这一节我们用 Hermes 造这么一个员工。它跑通之后你会发现,值钱的不是抓取和摘要——那部分谁都能写——值钱的是 memory 带来的连续性和 session_search 带来的历史召回。这两个东西是 Hermes 相对纯工作流工具(n8n、Dify)的结构性优势。
一、这个员工的解剖图
▲ Hermes 桌面版流式对话与文件工作流
┌──────────────────────────┐
每天 08:50 ──────▶│ cronjob 触发 │
(cron 调度器) └────────────┬─────────────┘
│
┌─────────────▼─────────────┐
│ 读取 MEMORY.md / USER.md │ ← 我关注什么?
│ (冻结快照注入系统提示) │ 忌讳什么?
└─────────────┬─────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ web_search │ │ web_extract │ │ session_search │
│ 广度:找线索 │ │ 深度:正文/PDF │ │ 历史:去重&对照 │
│ 默认 5 条 │ │ → markdown │ │ FTS5,~20ms │
└──────┬──────┘ └────────┬────────┘ └────────┬─────────┘
└───────────────┬──────┴──────────────────────┘
▼
┌───────────────────────────┐
│ execute_code (Python) │
│ URL 归一化 / 标题相似度 │
│ 去重 + 按主题聚类 │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ 主模型:写简报(有观点) │
│ + memory 记下新增关注点 │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ gateway → 飞书/TG/企微 │
│ (markdown 消息 + 文件) │
└───────────────────────────┘关键设计点有三个,先讲清楚再动手:
第一,广度和深度要分开。 web_search 默认返回 5 条结果,它的作用是”找线索”,不要指望它给你正文。真正要读的内容用 web_extract 抓——它把网页或 PDF 转成 markdown,不做 LLM 摘要、不截断,原文进上下文,摘要交给主模型做。这个分工很重要:抓取阶段不要让小模型提前有损压缩,否则你的简报就变成”摘要的摘要”,信息密度直接腰斩。
第二,去重必须用代码而不是提示词。 让模型”注意不要重复”是玄学。execute_code 能跑 Python,还能程序化调用 Hermes 的工具,把 URL 归一化(去 utm 参数、统一域名)、标题做个简单的相似度比较,这是确定性的活,交给代码。
第三,session_search 是这个案例里最容易被忽略的杀手锏。 它查的是本地 state.db 的 FTS5 索引,返回真实历史消息、无摘要无截断,20 毫秒左右。也就是说你的信息官可以在生成今天简报前,先搜一下”这个话题我三天前是不是已经报过了”——跨天去重、观点连续性,全靠这个。
二、动手:三步搭起来
第 1 步:先把”我是谁”写进记忆
别急着写 cron。先开一次交互式会话,把关注领域喂给它。记忆是跨会话生效的资产,这一步做扎实,后面所有产出的质量都会提升。
hermes chat然后直接说人话(记忆写入靠 memory 工具,Agent 会自主落盘):
记住我的关注画像,写进记忆:
- 主要领域:AI Agent 框架 / 自动化工作流(n8n、MCP)/ 国内大模型 API 定价变化
- 次要领域:跨境电商选品、小红书内容生态政策
- 我不关心:融资八卦、创始人访谈、"XX 颠覆一切"类观点文
- 简报偏好:每条不超过 3 行;必须给出"这对我意味着什么";有争议的标注分歧写完可以核对一下,记忆有字数上限(MEMORY.md ≤2200 字符,USER.md ≤1375 字符),所以要写得紧凑,别灌长文:
# ~/.hermes/config.yaml
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200
user_char_limit: 1375⚠️ 记忆是冻结快照:会话开始时从磁盘加载进系统提示,会话中你让它记的东西立即落盘但当前会话的提示不更新(这是为了保住 prompt cache 前缀不失效)。所以刚写完的画像,要等下一次会话才会生效。别在同一会话里反复测试然后怀疑功能坏了。
第 2 步:定时任务
有两条路,用途不同。
路线 A:cronjob 工具(推荐,一句话搞定)
在会话里直接说:
用 cronjob 创建一个任务,名字叫 daily-cio:
每天 09:00 执行,内容是——
1) 用 web_search 按我记忆里的关注领域搜昨日(按日期过滤)动态,每个领域各搜一轮
2) 对值得深读的 5-8 条用 web_extract 抓正文
3) 用 session_search 检索过去 7 天的简报,剔除已报过的话题
4) 用 execute_code 做 URL 归一化与标题去重
5) 按我的简报偏好输出 markdown,分「必读」「速览」「值得追踪」三档
6) 推送到我的飞书主频道cronjob 工具支持 create / list / update / pause / resume / run / remove。调试期用 run 手动触发,别等到第二天早上才发现搜索关键词写错了。
路线 B:/goal 长期目标(适合需要多轮迭代的任务)
/goal 建立每日 AI 与自动化领域简报流程,持续优化信息源质量与去重规则
/goal status/goal 走的是 Ralph 循环,默认预算 20 轮,会跨轮次推进。它更适合”把这套流程本身调好”这类需要试错的目标,日常执行还是交给 cron。
第 3 步:接推送渠道
Hermes 的网关一个进程接 30+ 平台,中文场景直接选飞书(能力最全:语音/图片/文件/话题/表态/输入中/流式):
hermes gateway setup # 交互式配置平台
hermes gateway install # 装成常驻服务(第 13 节讲过)授权务必用白名单,别裸奔:
FEISHU_ALLOWED_USERS=ou_xxxxxxxx,ou_yyyyyyyy
# 或钉钉 / 企微
DINGTALK_ALLOWED_USERS=user-id-1
WECOM_ALLOWED_USERS=user-id-1,user-id-2在飞书里对 bot 发一次 /sethome 标记主频道,之后 cron 产出就知道往哪推了。
三、交付物:数字员工档案模板
这是我强烈建议你养成的习惯——每造一个数字员工,写一份档案。不是形式主义,而是因为半年后你会有七八个 Agent 在跑,没有档案你根本记不清谁负责什么。这份档案本身也可以塞进 AGENTS.md 或沉淀成 Skill。
| 字段 | 内容 |
|---|---|
| 员工名 | CIO-01 / 私人首席信息官 |
| 职责 | 每日聚合关注领域资讯,去重、分级、给出决策含义,输出 markdown 简报 |
| 触发 | cronjob daily-cio,每日 09;支持 cronjob run 手动补发 |
| 工具集 | web(web_search / web_extract)、session_search、code_execution、memory、cronjob |
| 上游输入 | MEMORY.md 关注画像、USER.md 表达偏好、过去 7 天会话历史 |
| 输出格式 | 三档结构(必读 / 速览 / 值得追踪),每条 ≤3 行 + “对我意味着什么” |
| 推送渠道 | 飞书主频道(/sethome 标记),失败降级为写本地文件 |
| 成本控制 | 抓取与摘要走 auxiliary.web_extract 廉价模型;主模型只负责最终成稿 |
| 失败处理 | 单源抓取失败跳过并在简报末尾标注”N 个源不可达” |
| 迭代记录 | 每周复盘一次误报/漏报,规则更新写回 MEMORY.md |
四、避坑:我踩过的几个
⚠️ 信息源质量决定天花板,别指望模型救你。 搜索引擎返回的前 5 条经常是内容农场的洗稿。解决办法是在记忆里写一份白名单/黑名单(“优先 官方博客/arXiv/GitHub Release Notes;忽略 xx 号自媒体聚合站”),让搜索意图带上站点限定。这比事后让模型判断可靠得多。
⚠️ token 成本会在”抓取”这一步失控。 web_extract 不截断不摘要,一篇长文轻松几万字符,8 篇就把上下文吃掉了。两个对策:一是把辅助任务路由到廉价模型,官方说这类分层能把成本降到约 1/50;二是抓取阶段严格限制篇数。
auxiliary:
web_extract:
provider: "auto"
model: "google/gemini-2.5-flash"
timeout: 360
compression:
model: ""
provider: "auto"
fallback_chain:
- provider: openrouter
model: openai/gpt-4o-mini⚠️ 摘要过长是通病,要用硬约束治。 “简洁一点”这种指令模型会敷衍。有效的是数量约束:每条不超过 3 行、总条数不超过 12、必读档不超过 3 条。写进记忆而不是每次提示里——记忆是长期生效的。
⚠️ 多主题研究要用 delegate_task 并行。 你有 3 个关注领域,就派 3 个子代理各查一个。子代理在隔离上下文里跑,只把最终摘要返回主会话,主会话上下文压力立刻下来。这是 Hermes 官方明确推荐的降 token 手法。
⚠️ 别在长会话里频繁 /model 切换。 任何模型变更(包括自动回退、凭据池轮换)都会重置 prompt cache 前缀,下一条消息全价重读上下文。日报任务本身上下文不小,一次无意的切换就是真金白银。
⚠️ cron 场景的审批模式。 approvals.cron_mode 默认 deny,无人值守时危险命令会被静默拒绝。日报任务一般不触发危险判定,但如果你让它写文件到系统目录就可能踩到。用 /usage、/insights 定期看用量和执行情况,别当黑箱。
⚠️ Windows 上写 markdown 文件注意编码。 cp125x 默认编码写中文容易 UnicodeEncodeError,让它在 execute_code 里显式用 encoding="utf-8"。
本节能造出什么数字员工
“私人首席信息官”——一个每天早上比你先起床的情报分析员。
跑通之后它和普通日报机器人的差别体现在这些地方:
- 你说过一次”不关心融资八卦”,它一年都不会再推给你
- 三天前报过的话题,今天不会换个标题再来一遍(
session_search兜住了) - 它会说”这条和你上周判断的趋势相反”——因为它真的能召回你上周说了什么
- 你随手在飞书回一句”这个方向以后重点跟”,会话后的自我改进审查会把它提炼成记忆条目
进阶玩法:把整套流程沉淀成一个 Skill(SKILL.md 写清 When to Use / Procedure / Pitfalls / Verification),之后换台机器、换个 profile,一条 hermes skills install 就把这个员工”入职”了。这是第 06 节讲的技能系统在案例里的实际价值。
下篇预告
信息官解决的是”输入”,下一步该解决”输出”了。
下一节《案例②:让 AI 当”新媒体运营官”——公众号/小红书内容流水线》,我们把选题、写稿、配图建议、多平台分发串成一条流水线。会用到 image_generate 出封面、vision_analyze 审图、memory 记住品牌调性;更关键的是讲清楚Hermes 和 n8n 该怎么分工——为什么让 Hermes 干定时抓取是浪费,让 n8n 写长文是灾难,以及怎么用 MCP/API 把两边打通成一个真正的人机协作架构。
延伸阅读
- 官方文档(工具与 cron):https://hermes-agent.nousresearch.com/docs
- 中文社区:https://hermesagent.org.cn/docs
- 技能开放标准:https://agentskills.io