Home
avatar

麒麟剑

案例①:打造"私人首席信息官"——自动聚合资讯与生成日报

案例①:打造”私人首席信息官”——自动聚合资讯与生成日报

先说个不太好听的事实:市面上 90% 的”AI 日报机器人”是垃圾。

它们的产出你一眼就能认出来——十条标题党链接堆在一起,每条后面跟一句”这体现了 AI 领域的快速发展”,读完你不知道该干什么。原因不在模型笨,在于做的人把它当成了”RSS 转发器 + 摘要 API”。真正的信息官不是转发器,它是一个知道你在关注什么、记得你上周已经看过什么、会主动告诉你”这条和你三天前那个判断矛盾了”的人

这一节我们用 Hermes 造这么一个员工。它跑通之后你会发现,值钱的不是抓取和摘要——那部分谁都能写——值钱的是 memory 带来的连续性和 session_search 带来的历史召回。这两个东西是 Hermes 相对纯工作流工具(n8n、Dify)的结构性优势。

一、这个员工的解剖图

Hermes 桌面版流式对话与文件工作流 ▲ 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_searchcode_executionmemorycronjob
上游输入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 把两边打通成一个真正的人机协作架构。


延伸阅读

Hermes Agent 数字员工 AI智能体 自托管 Nous Research 资讯聚合 日报 案例实战 数字员工 cronjob web_search 飞书