资讯详情

资讯详情

gbrain query 的 Salience 与 Recency 双轴检索:参数语义、自动启发式与衰减调优实战

人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载本篇技术指南聚焦 gbrainGarrys Opinionated OpenClaw/Hermes Agent Brainquery操作中的salience与recency两个正交排序参数v0.29.1。文章完整解析两个轴各自的语义边界、on/strong/off的适用场景、英文自动启发式的判定规则、时间边界例外、since/until纯过滤语法并结合源码与测试深入讲解 per-prefix 衰减公式双曲衰减与三层配置覆盖体系默认值 →gbrain.yml→ 环境变量。读完你将能在对话、会议准备、实体查询、新鲜度检索等场景中精准选择参数并用--explain验证每一次自动判定。参数总览两条正交轴可单独用、组合用或都不用salience与recency是gbrain query上的两条正交排序轴它们互不耦合允许任一组合salienceon单独、recencyon单独、两者都开、两者都关。核心决策规则如下省略参数不传任何值gbrain 会用基于正则的启发式从查询文本自动判定对未命中任何模式的自然查询两个轴的默认值都是off。显式传参当你能判断用户意图时优先显式传入salience/recency把最终裁决权握在自己手里而不是依赖自动判定。off是省略参数的兜底默认值——换句话说未命中模式时系统偏向规范真值而非当前状态这与下面的启发式铁律一致当前状态 → on规范真值 → off。两个轴的语义边界salience 重要性mattering不含时间salience轴衡量的是这张页面在这个大脑里有多重要本质是情绪与活跃度信号提升那些emotional_weight情绪权重高、活跃 take观点记录多的页面。它没有任何时间分量——无论页面是什么时候更新的只要它在话题上重要、讨论度高就会被提升。典型触发场景用户想要重要的事而非百科条目会议准备prep me for the widget-ceo meeting对话回忆catch me up on acme当前态势whats going on with widget-co观点/决策回忆remind me about the deal状态更新whats been happening lately、status update on X如果用户同时关心重要 当前就把recencyon一起传上单独salienceon得到的是无论何时这个话题上什么最重要。从源码结构看salience 的排序基础是emotional_weight与活跃 take 计数这与 src/commands/salience.ts 命令头部注释Pages recently touched, ranked by emotional activity salience以及 src/core/pglite-engine/salience.ts、src/core/postgres-engine/salience.ts 两个引擎实现相互印证salience 与 recency 衰减映射是相互独立的两套信号前者由情绪权重 take 数驱动后者由页面年龄驱动二者仅在融合排序阶段runPostFusionStages以乘性方式叠加。recency 新鲜度age不含重要性recency轴衡量的是页面有多新基于页面的effective_date提升近期内容不掺入任何重要性信号。它按 slug 前缀做 per-prefix 衰减concepts/、originals/、writing/这类策展/观点/知识工件是长青evergreen的几乎不随时间衰减而daily/、media/x/、chat/这类强时效的个人记录会剧烈衰减——因为我这周的任务是什么我们 1:1 聊了什么这类问题新鲜度本身就是信号。典型触发场景用户要新内容与重要性无关latest news on AI要最近的不需要重要性whats new this weekrecent updates on widget-cothis weeks announcements当用户明确要求最新时用recencystrong档what happened todayright now whats going onthis morning何时两个轴都传off规范真值轴当用户要的是权威答案而非当前状态时两个轴都应保持off让纯相关性词汇/语义排序主导实体查询who is widget-ceo定义性查询what is widget-co历史研究history of acme概念查询explain how recursion works规范回忆tell me about widget-co代码查询函数/类名、Foo::bar()、obj.method这类语法形态图遍历backlinks、入边/出边inbound/outbound edges任何未命中上方模式的其余查询这些查询的核心诉求是权威、确定、完整salience 的讨论热度与 recency 的页面年龄都可能把排名从正确答案上拽走因此一律关闭。自动判定启发式与--explain可观测性拿不准时遵循启发式铁律当前状态 → on规范真值 → off。如果你无法自信分类就直接省略参数把判定交给 gbrain 的自动检测。自动启发式对所有未清晰命中当前状态模式的查询默认输出off。为了让判定过程可审计gbrain query --explain输出会暴露_resolved.salience_source与_resolved.recency_source两个字段取值caller显式传入或auto_heuristic自动启发式命中这样你可以看清楚是谁决定了轴的值、以及为什么。你随时可以覆盖自动判定——gbrain 很聪明但不是万无一失而你拥有 gbrain 没有的上下文对话语境、用户习惯、业务背景这也是文档把显式优先列为默认策略的原因。从数据侧也能看到这套解析结果是被当做事后审计资产对待的迁移逻辑在 src/core/migrate.ts 中为eval_candidates表维护salience_resolved、recency_resolved、salience_source、recency_source等列专门记录每次候选评估时最终生效的轴值与来源供评估与漂移分析使用。窄时间边界例外时间绑定优先于规范模式存在一个精细的例外规则即使查询命中了规范模式canonical pattern只要文本中出现显式时间边界today、this week、right now、since X、last N days时间边界就压过规范优先规则who is widget-ceo right now→ recency strongsalience on时间绑定战胜 who is 模式who is widget-ceo→ recency offsalience off无时间绑定回归规范轴即who is X默认走规范真值但一旦出现right now之类的时态词用户想知道的就从他是谁切换成了他此刻的状况两轴随之打开。这是启发式里当前状态 → on在时间维度上的具体实现。语言限制自动启发式仅支持英文v0.29.1 的自动检测启发式仅支持英文。非英文查询在两个轴上都会落入默认off。因此对中文等非英文查询请务必显式传入salience/recency否则即便查询语义明显是最近动态也会因为没有匹配到英文模式而得不到任何时间/重要性加成。衰减公式与默认 per-prefix 配置默认衰减配置定义在 src/core/search/recency-decay.ts按 slug 前缀给出halflifeDays半衰期天与coefficient系数两个量。注意默认映射只含通用前缀concepts/、originals/、daily/、chat/、media/等刻意不含任何 fork 专属名称如openclaw/chat/这是隐私合规约束详见该文件头部注释真实 fork 名应写在用户自己的gbrain.yml中。内置默认表如下前缀halflifeDayscoefficient语义concepts/00长青evergreen完全无衰减originals/1800.5长尾衰减刚发布的原创随笔有小幅加成writing/3650.4极慢衰减观点类写作daily/141.5最强衰减 最大系数时间即信号meetings/601.0强衰减1:1 讨论内容chat/71.0强衰减批量会话流media/x/71.5强衰减强加成media/articles/900.5中等衰减people/3650.3实体慢衰减companies/3650.3实体慢衰减deals/1800.5交易慢衰减未命中任何前缀的 slug 走DEFAULT_FALLBACKsrc/core/search/recency-decay.tshalflifeDays: 90, coefficient: 0.3。这里有一个被测试钉死的不变式issue #895兜底系数必须 ≤ 最弱的有意映射家族people/与companies/的 0.3。历史上 fallback 系数设为 0.5 时--recency strong会把一条未映射前缀的笔记提升 1.75 倍压过用户真正问的实体页面仅 1.45 倍造成词汇排序倒挂类问题——见 test/recency-decay.test.ts 中的回归测试。双曲衰减公式衰减分量是双曲衰减hyperbolic decay而非指数衰减halflifeDays 0→ 长青衰减分量恒为 0无衰减halflifeDays 0→coefficient × halflife / (halflife days_old)在days_old 0当天衰减分量 coefficient最大加成在days_old halflife满半衰期衰减分量 coefficient / 2减半例如daily/halflife14, coefficient1.5今天的内容拿到 1.5 的满分加成14 天前的内容拿到 0.75。公式在 src/core/search/recency-decay.ts 文件头注释中完整记录。SQL 侧的生成最长前缀优先衰减表达式在 src/core/search/sql-ranking.ts 的buildRecencyComponentSql中编译为一段CASE表达式前缀按键长降序排列后生成分支保证最长前缀优先匹配如media/articles/先于media/判定长青前缀halflife0 或 coefficient0短路为字面量THEN 0非零分支使用EXTRACT(EPOCH FROM (NOW() - dateExpr)) / 86400.0计算天数其中dateExpr通常是COALESCE(p.effective_date, p.updated_at)支持注入安全的NowExpr固定时间点会做单引号转义与::timestamptz强制转换相关断言见 test/recency-decay.test.ts。三层配置覆盖体系默认 → gbrain.yml → 环境变量衰减映射的解析优先级为后到者胜代码内置默认src/core/search/recency-decay.tsgbrain.yml的recency:段环境变量GBRAIN_RECENCY_DECAY格式prefix:halflifeDays:coefficient,...单次调用覆盖SearchOpts.recency_decay供测试与库调用方使用未在 MCP 上暴露。合并实现在resolveRecencyDecayMapsrc/core/search/recency-decay.ts逐层展开覆盖。通过 gbrain.yml 调优per-brain在 brain 根目录的gbrain.yml中写recency: daily/: halflifeDays: 7 coefficient: 2.0 custom-prefix/: halflifeDays: 30 coefficient: 0.5这样就把daily/的衰减从默认的 14 天/1.5 收紧到 7 天/2.0更喜新厌旧并为自定义前缀custom-prefix/注册一条 30 天/0.5 的中庸衰减。parseRecencyDecayYamlsrc/core/search/recency-decay.ts对非法值负数、非数字、非对象条目会抛出RecencyDecayParseError。通过环境变量调优per-processGBRAIN_RECENCY_DECAYdaily/:7:2.0,concepts/:0:0,custom/:30:1.0 gbrain query ...格式为逗号分隔的prefix:halflifeDays:coefficient三元组。解析器parseRecencyDecayEnvsrc/core/search/recency-decay.ts对坏语法大声失败fail LOUD缺字段、空前缀、负数、非数字都会直接抛RecencyDecayParseError绝无静默回退——这是有意的设计决策因为历史上 source-boost 的 env 解析器曾静默跳过畸形条目导致用户在不知不觉中用了错误的排序配置详见文件头注释中的 codex M-CX-3 复盘。CLI 层捕获该异常并以可读信息退出避免悄悄劣化排名。以上覆盖层级与失败语义均有对应测试env 解析的报错矩阵见 test/recency-decay.test.tsyaml 解析报错见同文件 L63-L92合并优先级env 胜 yaml、caller 胜 env见 L94-L121。日期过滤since/until纯过滤无加成since/until是独立于两轴的纯过滤机制不产生任何排序加成只把结果限定在effective_date落在某区间内的页面since: 7d— 最近 7 天since: 2024-06-01— ISO-8601 日期until: 2024-06-30— 截止到该日末尾end-of-daysince/until可与salience/recency任意搭配即便两个轴都为off日期过滤依然生效反之开轴但不过滤也互不影响。一个典型组合是最近两周里这个 brain 里最被热议的页面——since: 14dsalienceon。相关联动的补充线索get_recent_salience操作即gbrain salience命令新增了recency_bias: flat | on参数可在专门的 salience 查询上按需选择是否启用 per-prefix 衰减不传则默认走平铺flat模式。命令用法与帮助见 src/commands/salience.ts远程调用经 MCP 的get_recent_salience路由。使用gbrain query --explain可查看解析后的轴值_resolved.salience_source/_resolved.recency_source以及各因子对最终分数的贡献。页面新鲜度的事实基础是effective_date字段其计算逻辑frontmatter 优先级缺失时回退updated_at见 src/core/effective-date.ts相关健康检查可发现回退到 updated_at的行。决策速查表用户意图saliencerecency典型查询会议准备/对话回忆当前态势ononcatch me up on acme话题重要性不论时间on省略/offremind me about the deal最新消息不论重要性省略/offonlatest news on AI今日/此刻最强时效onstrongwhat happened today实体/定义/概念规范真值offoffwho is widget-ceo带时间绑定的实体查询onstrongwho is widget-ceo right now非英文查询显式传入显式传入中文、日文等否则默认off最后记住三条总纲当前状态 → on规范真值 → off能判断就显式传参拿不准就省略让自动启发式兜底调衰减先看 src/core/search/recency-decay.ts 的默认表再从gbrain.yml或环境变量覆盖并用--explain验证每次生效的值与来源。赞分享人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载相关推荐gbrain query 的 Salience 与 Recency 双轴排序参数决策、正则启发式与衰减公式实战指南gbrain query 的 Salience 与 Recency 双轴排序参数决策、正则启发式与衰减公式实战指南 gbrain query 从 v0.29.人工智能RAGAgent 记忆MCP 服务知识管理gbrain 查询检索的双正交排序轴salience 与 recency 参数完整实战指南v0.29.1gbrain 查询检索的双正交排序轴 salience 与 recency 参数完整实战指南v0.29.1 导读 在 gbrain 的 query 检索人工智能RAGAgent 记忆MCP 服务知识管理gbrain 查询排序双轴指南salience重要性与 recency新鲜度的配置、启发式判定与源码级实现gbrain 查询排序双轴指南 salience 重要性与 recency 新鲜度的配置、启发式判定与源码级实现 导读 本文围绕 gbrain 的 q人工智能RAGAgent 记忆MCP 服务知识管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →