- 人工智能
- RAG
- Agent 记忆
- MCP 服务
- 知识管理
【免费下载链接】gbrain
Garry's Opinionated OpenClaw/Hermes Agent Brain
导读
本文围绕 gbrain 开源仓库中gbrain-daily插件变体的briefing技能(plugin-variants/gbrain-daily/skills/briefing/SKILL.md)展开,系统讲解如何用 gbrain 的 CLI 命令(salience、anomalies、recall、waiting 等)在撰写晨报之前做一轮“预简报上下文拉取”,再按六个阶段编排会议、活跃交易、待办事项与人员动态。读完本文,你将掌握从脑库(brain)中系统性抽取上下文、生成带引用的每日简报、并规避五大反模式(anti-patterns)的完整实战方法。文中所有命令与参数均以仓库源码为准逐一验证。
技能定位:briefing 是什么
briefing是 gbrain-daily 插件变体中用于“从脑库上下文编译每日简报”的技能,当前版本为 1.3.0(上游对齐briefing@fc834ee)。它在技能清单中的核心定义如下(来自 SKILL.md 的 frontmatter):
- 描述:结合会议上下文、活跃交易与引用追踪编译每日简报;
- 触发短语:
daily briefing、morning briefing、what's happening today、brain pulse、pre-briefing pull; - 声明的工具:
search、query、get_page、list_pages、get_timeline; - 变更属性:
mutating: false——技能本身是只读的,默认不修改任何脑库页面。
从 routing-eval.jsonl 可以看到该技能的意图路由评测也同步更新:"Give me the brain pulse before my first meeting"、"Run the pre-briefing pull: salience, anomalies, and recall"均路由到briefing;同时评测明确了两条边界——单个页面的异常溯源("Why did the page for acme-example suddenly spike")不属于简报职责(预期技能为 null),而与daily-task-prep存在意图歧义(“今天会议与热点话题概览”被标记为ambiguous_with)。这提醒我们:briefing 的职责边界是“聚合式每日消化”,不是单点调查。
Contract:简报的五条铁律
SKILL.md 在## Contract一节给出了编制简报时必须遵守的五条契约,这也是后续所有小节的设计依据:
- 每条事实都要带行内引用:格式为
[Source: slug, updated DATE]; - 会议参与者必须对照脑库解析:解析不到的缺口要显式标注(gap 要暴露,不能沉默);
- 活跃交易与行动项必须包含截止日期和时效上下文(recency context);
- 简报默认只读:除非用户明确要求,不得创建或修改任何脑库页面;
- 过期告警(stale alerts)只暴露与今日上下文相关的页面,而不是倾倒所有过期页面。
这五条把“每日简报”从“凭记忆复述”提升为“可溯源、有时效、有边界的上下文聚合”。其中第 4 条与仓库中mutating: false的声明一致,也直接呼应了后文“Anti-Patterns”中的两条红线。
预简报上下文拉取(Pre-Briefing Context Pull)
在动笔组织各章节之前,必须先完成五轮只读上下文拉取(编号 0a–0e)。SKILL.md 强调这些拉取必须在正式编撰之前全部完成,它们决定了简报的优先级与时效性。
0a. 显著性扫描(Salience Scan)
gbrain salience --days 7该命令返回按“情绪权重 × 近期活动”排序的页面。SKILL.md 建议把 Top 5–10 折叠进简报的 “High-Salience Pages” 小节,用来决定哪些会议、交易、人物值得获得最多的简报深度。
源码侧,src/commands/salience.ts 给出了完整参数面:
--days N:窗口天数,默认 14(SKILL.md 用--days 7收窄窗口);--limit N:最大结果数,默认 20,上限 100;--kind PREFIX/--slug-prefix P:按 slug 前缀过滤(如personal、wiki/people);--json:面向 Agent 的结构化输出。
关键实现事实:该命令完全确定性,零 LLM 调用。评分由emotional_weight(在 dream cycle 的recompute_emotional_weight阶段计算)、活跃 takes 数量与 recency 衰减项混合而成,SQL 位于引擎方法getRecentSalience。此外,在gbrain init --mcp-only的瘦客户端(thin-client)安装下,命令会透明地经 MCP 的get_recent_salience远端操作路由(对应 salience.ts 中 Issue #734 的处理),输出格式与本地路径完全一致。
0b. 异常检测(Anomaly Detection)
gbrain anomalies默认以“今天”为检测日、以最近30 天为基线窗口;可用--lookback-days N放宽基线、用--sigma 2调低阈值。输出的是按 cohort(tag、type)聚合的“活动偏离正常节奏”的页面组——例如某标签下的提及量突然飙升,或某些页面更新频率异常。
源码侧,src/commands/anomalies.ts 确认了完整参数:
--since YYYY-MM-DD:目标日(默认今天 UTC);--lookback-days N:基线窗口(默认 30);--sigma N:阈值倍数(默认 3.0),命中条件是“目标日计数 > mean + sigma × stddev”;--json:结构化输出。
实现细节:基线通过generate_series零填充计算 cohort×天 的均值与标准差,避免稀疏 cohort 得到有偏基线;同样零 LLM 调用,且瘦客户端走find_anomaliesMCP 操作。命中项建议放入 “Brain pulse” 之后的 “Anomalies” 小节。
0c. 个人回忆(Personal Recall)
gbrain recall --query "current priorities and preferences" --json在编制前检查已存储的个人事实与偏好(饮食偏好、沟通偏好、先前承诺等),防止简报与用户此前陈述或决定相矛盾。--json用于结构化输出。
源码侧,src/commands/recall.ts 是 v0.31 引入的用户侧查询入口,底层直接对应 MCPrecall操作,支持两种输出形态,常用参数包括:
gbrain recall <entity>:按实体列出事实;--since "8 hours ago":列出该时间点之后的事实;--session <id>:按会话列出;--today:带 kind 图标的 Markdown 渲染;--grep <text>:不区分大小写的文本过滤;--include-expired:包含已过期事实;--as-context:可直接注入提示词的 Markdown;--json:结构化输出。
0d. 热记忆脉冲(Hot Memory Pulse,v0.32)
这是 v0.32 新增的核心能力,必须在编撰任何章节前执行:
gbrain recall --since-last-run --supersessions --pending --rollup --json其输出折叠进简报顶部的 “Brain pulse” 小节,结构如下:
- 隔夜解决的矛盾(Contradictions resolved overnight)——来自
--supersessions输出,置顶展示,因为这是对世界模型的最新修正; - Top mentions——来自
--rollup的top_entities(窗口内按事实数排序的 Top 5 实体 slug); - 上次简报以来的新事实——按实体分组
facts数组,包含kind、notability、confidence字段; - 待合并页脚(Pending consolidation footer)——当
pending_consolidation_count > 0时,标注N facts await dream-cycle consolidation,让操作者决定是否先运行gbrain dream再继续阅读。
源码侧的关键机制(recall.ts 的 v0.32 注释):--since-last-run会读取并推进~/.gbrain/recall-cursors/<source>.json游标文件,使下一次简报恰好从本次结束的位置续接。两个重要注意事项:
- cron 场景必须显式指定来源:cron 不会在仓库根目录的 cwd 启动,点文件(dotfile)解析可能错失正确的 source,因此 SKILL.md 明确要求传
--source <slug>或设置GBRAIN_SOURCE环境变量; - 瘦客户端透明路由:
gbrain init --mcp-only安装下runRecall/runForget通过callRemoteTool路由到远端脑库(本地 PGLite 为空),但游标与--watch循环等 CLI 侧逻辑始终留在客户端。
0e. 未闭环事项(Open Loops,存在 google 来源时)
gbrain waiting --json把“谁在等你、你承诺了什么”的真实 loop 行(含欠付内容、截止日期、证据引用、深链)折叠进 ACTION ITEMS 小节。SKILL.md 特别强调:这些是真实 loop 行而非推断式跟进,因此优先级高于基于文本启发式的跟进项。
源码侧,src/commands/loops.ts 给出了完整行为:
gbrain waiting [--top N] [--json] [--stale-ok]:默认 Top 3 个 counterparty,输出“谁在等你 / 你承诺了什么 / 证据引用 + Gmail 深链 / 实体卡上下文”;- 防陈旧拒绝(stale refusal):当 google 来源在24 小时内没有成功同步时,命令会拒绝输出并点名精确修复命令(
gbrain sync --source <id>)——这正是 SKILL.md 说的“stale-but-confident output on a trust-critical surface is worse than none”的设计取舍;--stale-ok可强制绕过; - 所有路径都经受信任的本地操作层
handleToolCall(remote: false)分派,CLI 与 MCP 共享同一行为;读取默认作用于__all__脑域(loops 位于 google 来源而非default),--source <id>可收窄范围; - 管理命令:
gbrain loops list|show|done|drop|mute|unmute。
当waiting拒绝并指出修复方法时,SKILL.md 建议按skills/google-loops/SKILL.md执行对应同步后重试(该技能位于 skills/google-loops/SKILL.md,负责 Gmail/Calendar/Contacts 连接器与 open-loop 引擎的日常运维,含 BYO OAuth 两步设置)。
六阶段编排:简报正文从哪来
完成预拉取后,SKILL.md 的## Phases定义了六个阶段的编排顺序,每阶段都对应一组查询模式:
- 今日会议(Today's meetings):对日历上每个会议,按姓名搜索每位参与者,读取其页面获取 compiled_truth 上下文,归纳“是谁、近期时间线、与你关系”;
- 活跃交易(Active deals):列出脑库中状态为 active 的交易页面,聚焦未来7 天内到期的截止日期与最近7 天的时间线条目;
- 时效敏感线程(Time-sensitive threads):来自时间线条目的未决项,含未来48 小时内到期的项与已逾期跟进;
- 最近变更(Recent changes):24 小时内更新的页面,说明改了什么、为什么改(读取时间线条目);
- 在局人物(People in play):按 recency 排序的人物页面,条件为最近7 天更新过、且有大量近期时间线条目;
- 过期告警(Stale alerts):来自脑库健康检查,只挑与今日会议相关的过期页面。
这些时间窗(7 天、48 小时、24 小时)是 SKILL.md 给定的“时效层次”,决定了简报中不同信息的保鲜度标注。
GBrain 原生上下文加载:会前、邮件前、每日查询
## GBrain-Native Context Loading给出了三种具体场景的系统化加载方式:
会前(Before a meeting)——对邀请中的每位与会者:
gbrain search "<attendee name>" # 找到其脑库页面 gbrain get <slug> # 加载 compiled truth、近期时间线、关系上下文若页面不存在,必须显式记录缺口,例如No brain page for alice-example -- consider enrichment。
邮件回复前(Before an email reply)——草拟或分诊任何邮件前:
gbrain search "<sender name>" # 加载发件人上下文读取其 compiled truth,理解对方是谁、关心什么、你们的关系史,把“冷回复”变成“有信息量的回复”。
每日简报查询(Daily briefing queries)——用这些查询填充简报各小节:
gbrain query "active deals status" # 交易管线快照 gbrain query "meetings this week" # 近期会议页面与洞察 gbrain query "pending commitments follow-ups" # 未决线程与行动项 gbrain list --type person --sort updated_desc --limit 10 # 在局人物输出格式:标准简报模板
SKILL.md 给出了可复制的标准模板:
DAILY BRIEFING -- [date] ======================== MEETINGS TODAY - [time] [meeting name] Participants: [name] (slug: people/name, [key context]) ACTIVE DEALS - [deal name] -- [status], deadline: [date] Recent: [latest timeline entry] ACTION ITEMS - [item] -- due [date], related to [slug] RECENT CHANGES (24h) - [slug] -- [what changed] PEOPLE IN PLAY - [name] -- [why they're active]该模板与预拉取内容(Brain pulse / High-Salience / Anomalies)叠加,即构成完整的每日晨报。模板中每个[slug]都应当是真实脑库页面路径,为后续引用追踪提供锚点。
反向链接与引用:让简报可溯源
Back-Linking During Briefing:如果简报确实创建或更新了脑库页面(例如新的会议准备页、更新的实体页),则“反向链接铁律”适用——每个被提及的实体都必须从其页面存在反向链接。规则细节见 skills/_brain-filing-rules.md:主条目决定文件归属(人员→people/、公司→companies/、概念→concepts/,原始数据才进sources/),并且“Notability Gate”提醒——不确定是否值得建页时,宁可不建。
Citation in Briefings:所有来自脑库页面的事实都要带行内引用,示例:
"Jane is CTO of Acme [Source: people/jane-doe, updated 2026-04-01]"这让读者(用户本人或下游 Agent)能把任何断言回溯到脑库页面并评估其新鲜度。
Anti-Patterns:五大红线
SKILL.md 在结尾明确了五条不可触犯的反模式,这也是评估简报质量的核心判据:
- 不查脑库就编简报(Briefing without brain queries)——绝不凭记忆生成,始终查询 gbrain 获取当前数据;
- 无引用事实(Uncited facts)——每条声明必须带
[Source: slug, updated DATE],无引用的事实不可验证; - 把过期上下文当作最新(Stale context presented as current)——页面超过30 天未更新必须显式标注过期,而不是当作新鲜内容呈现;
- 未经请求修改脑库页面(Modifying brain pages unprompted)——简报默认只读,用户未明确要求不得创建或更新页面;
- 忽略覆盖缺口(Ignoring coverage gaps)——会议参与者没有脑库页面时必须说出来,“对缺口的沉默等于隐藏无知”。
这五条与开头## Contract的五条一一呼应:1↔契约 1、3↔契约 3、4↔契约 4,2 和 5 则是把契约 1、2 从“应该做”升级为“禁止不做”。
工具清单与落地要点
SKILL.md 最后总结了本技能依赖的工具面:
- Search gbrain by name(query)
- Read a page from gbrain(get_page)
- List pages in gbrain by type(list_pages)
- Check gbrain health(get_health)
- View timeline entries in gbrain(get_timeline)
综合全文,一次标准的 briefing 落地流程可归纳为:五轮只读预拉取(salience / anomalies / recall / hot memory pulse / waiting)→ 六阶段编排(会议 / 交易 / 线程 / 变更 / 人物 / 过期)→ 按标准模板成文 → 全量行内引用 → 自检五大反模式。若以 cron 定时运行热记忆脉冲,务必带上--source <slug>或GBRAIN_SOURCE,避免游标错位;若 google 来源同步超时,先执行waiting报出的gbrain sync --source <id>再重试。所有命令均可加--json以便 Agent 程序化消费,而gbrain init --mcp-only的瘦客户端会自动把 salience、anomalies、recall 等调用路由到远端脑库,简报技能在本地与远程两种部署形态下行为一致。
- 人工智能
- RAG
- Agent 记忆
- MCP 服务
- 知识管理
【免费下载链接】gbrain
Garry's Opinionated OpenClaw/Hermes Agent Brain
相关推荐
用 ADK Skill 打造"位置 × 时间"每日简报:YouTube Analyst Agent 的 daily-briefing 技能全解析
用 ADK Skill 打造"位置 × 时间"每日简报:YouTube Analyst Agent 的 daily briefing 技能全解析 导读 dail
示例工程OpenHuman Morning Briefing Agent:从 prompt.md 到定时投递的"每日晨报"实现全解
OpenHuman Morning Briefing Agent:从 prompt.md 到定时投递的"每日晨报"实现全解 Morning Briefing 是
人工智能AI 应用本地部署AI Agent交互助手深度研究彻底解决Cppcheck误报:基于上下文的精准抑制规则实战指南
彻底解决Cppcheck误报:基于上下文的精准抑制规则实战指南 你还在为Cppcheck误报烦恼吗? 当你在大型C/C++项目中集成Cppcheck静态分析工具
开发工具静态分析代码质量质量保障
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考