ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

GBrain data-research 技能:七阶段结构化数据研究管线全解析

GBrain data-research 技能:七阶段结构化数据研究管线全解析 GBrain contenteditable="false">【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrainoutput_articleGBrain>export interface ResearchRecipe { name: string; source_queries: { gmail?: string[]; brain?: string[]; web?: string[]; date_windowing?: quarterly | monthly; }; classification: { include_patterns?: string[]; exclude_patterns?: string[]; receipt_indicators?: string[]; marketing_indicators?: string[]; }; extraction_schema: Recordstring, string; tracker_page: string; tracker_format: { group_by: string; columns: string[]; sort?: string; totals?: string[]; }; schedule?: { cron: string; notify?: boolean; quiet_hours?: boolean; }; }各字段的职责拆解如下nameRecipe 唯一标识缺失会直接校验失败Missing required field: name。source_queries三类来源查询——gmail邮箱搜索、brain脑内已有数据、web公开网页/新闻稿/监管数据。三者至少需要一个否则校验报错source_queries must have at least one of: gmail, brain, web。date_windowing控制查询按季度还是按月分窗详见第六节。classification分类规则全部为正则表达式数组。include_patterns/exclude_patterns决定包含/排除receipt_indicators/marketing_indicators分别识别收据特征与营销噪音。源码校验时会逐个编译这些正则支持/regex/flags格式非法表达式会进入errors列表。extraction_schema字段名到字段类型的映射如{ mrr: currency, growth_mom: percentage, date: date }。tracker_pagebrain 中 Tracker 页面的路径。tracker_formatTracker 页面的组织方式——group_by按年/季度/实体分组、columns表格列、sort排序、totals需要计算累计合计的列。schedule可选的定时配置——cron表达式、notify完成后是否通知、quiet_hours静默时段。validateRecipe()src/core/data-research.ts会检查必需字段齐全、来源查询非空、tracker 格式含group_by与至少一列columns并预编译所有分类正则。测试 test/data-research.test.ts 对五种非法组合做了断言覆盖。内置 Recipe三个开箱即用的业务模板技能自带三个示例 Recipe存放在~/.gbrain/recipes/覆盖最常见的三类数据跟踪investor-updates投资人更新——从投资人更新邮件中提取 MRR、ARR、增长growth、烧钱率burn、跑道runway、员工数headcount等财务指标expense-tracker支出跟踪——从收据邮件订阅、服务、周期性扣款中提取金额、收款方、平台company-updates公司更新——从被投公司更新邮件中提取收入、用户数、关键指标。这三个 Recipe 正好对应extraction_schema的典型字段mrr、arr、growth_mom、runway_months、headcount、amount、date。三、七阶段管线从模糊需求到规范化 Tracker技能将整个流程定义为七个阶段每个阶段职责清晰、产出明确Phase 1定义研究 RecipeDefine Research Recipe首先从对话上下文、近期 brain 活动、活跃任务ops/tasks.md与记忆文件推断研究目标。若请求有歧义基于用户近期工作给出最可能的解释只有上下文确实不足时才向用户澄清。选择路径有二选用内置 Recipeinvestor-updates / expense-tracker / company-updates自定义 Recipe自定义来源查询、分类规则、提取模式、Tracker 页面路径与格式。自定义 Recipe 的落盘位置是~/.gbrain/recipes/{name}.yaml脚手架方式为复制内置 Recipe 后编辑字段。从源码看extraction_schema的 key 若命中内置财务指标名如mrr、arr、growth_mom则直接复用内置正则表METRIC_PATTERNS见第五节若自定义字段且类型为date走通用日期正则否则返回null并留待 LLM 兜底。Phase 2搜索来源Search Sources遵循brain first先用query查 brain也许数据已存在再按需扩展邮件Email通过 credential gateway 读取使用窗口化查询windowed queries——默认按季度若单季度被截断则降级为按月查询避免邮箱查询结果被截断导致漏数据网页Web通过search检索公开文件、新闻稿、监管数据APIRecipe 定义的结构化数据源附件AttachmentsPDF 提取、HTML 去标签。邮件接入依赖仓库内的 recipes/credential-gateway.md 与 recipes/email-to-brain.md 两个 Recipe 所描述的 Gmail 连接通道Google OAuth2 原生连接或 ClawVisor 托管网关健康检查命令为gbrain google status --json。Phase 3分类Classify先确定性正则、后 LLM 兜底。Recipe 的include_patterns/exclude_patterns/receipt_indicators/marketing_indicators在 Phase 3 派上用场命中收据特征如 Total Charged的进入提取管线命中营销指标的newsletter、推广邮件直接跳过。技能特别强调一个fail-improve 循环每次 LLM 兜底分类都要记录日志用于后续完善正则——让正则越用越准逐步减少对 LLM 的依赖这也与 skills/conventions/regex-discipline.md 的纪律一脉相承。Phase 4提取结构化数据Extract Structured Data——防幻觉核心这是全技能最关键的纪律原文称之为EXTRACTION INTEGRITY RULE提取完整性规则先保存原始来源任何提取之前先正则确定性提取LLM 兜底汇总批量结果时必须从已保存的文件重新读取永远不要信任 LLM 工作记忆中的批量处理结果。这条规则直接源自一个真实事故批量处理时13/13 条金额全部错误来自 LLM 工作记忆而当时已保存的文件内容是正确的。也就是说LLM 在长时间批量处理后会在工作记忆中漂移出看似合理实则错误的数值而落盘文件才是唯一可信源。底层verifyExtraction()函数src/core/data-research.ts正是为此设计的校验器对比已保存字段与汇报字段逐字段检查任何不一致都会产出形如mrr: saved188K reported200K的 mismatch 记录。测试用例 test/data-research.test.ts 验证了匹配通过与不匹配被标记两种路径。Phase 5归档原始来源Archive Raw Sourcesput_raw_data保存邮件正文、API 响应file_upload保存 PDF 附件、文档大文件通过存储中的.redirect.yaml指针引用避免把大二进制塞进 brain每条 Tracker 记录必须链接回其原始来源。在仓库工具登记中data-research 被列为put_raw_data、file_upload、add_link的starter gap技能skills/plugin-lanes.json 附近即新装环境需要补齐这三个工具才能完整跑通 Phase 5/Phase 7。而put_raw_data的底层写入能力由 src/core/ops/raw-data.ts 等核心模块支撑raw-data 操作被 engine、writer 等多处引用。Phase 6去重Deduplicate加入 Tracker 之前必须去重规则分三档精确匹配关键字段完全相同→跳过模糊匹配同一实体 同一日期 金额在容差范围内相似→标记待审同一实体日期但金额不同→照常添加并附注可能是更正后的新值。源码isDuplicate()src/core/data-research.ts完整实现了这套逻辑export interface DedupConfig { amountTolerance?: number; // 例如 5 表示 $5 容差 dateExact?: boolean; // 是否要求精确日期匹配 entityFuzzy?: boolean; // 是否启用实体名模糊匹配 } export interface DedupResult { isDuplicate: boolean; type: exact | fuzzy | different_amount | new; matchedEntry?: TrackerEntry; }其判定细节值得注意金额字段先剥离$与逗号转数值若配置了amountTolerance则用数值差比较否则做大小写不敏感的字符串比较实体字段recipient/company在entityFuzzy开启时比较前 15 个字符slice(0, 15)——测试注释特意指出Alice与Alice Smith前 5 字符相同但不足 15因此不会误判为同一实体test/data-research.test.ts判定结果四态exact重复跳过、different_amount同实体日期金额不同需人工复核、new新增、fuzzy模糊命中标记待审。Phase 7更新权威 Tracker 并回链Update Canonical Tracker Backlink解析现有 Tracker 页面Markdown 表格在正确的分组小节按年/季度/实体追加新条目重算累计合计running totals回链每个被提到的实体人物 →people/页面公司 →companies/页面实体页面的丰富化使用 enrichment 服务见 skills/enrich/SKILL.md。Tracker 页面的解析与写入在底层被拆成三个纯函数parseTrackerPage(markdown, columns)src/core/data-research.ts逐行扫描以|开头且不含---分隔符的行按列名映射单元格测试覆盖了正常表格与空表格两种场景appendToTracker(markdown, entries, columns, section?)src/core/data-research.ts若指定section如### 2026用正则定位该小节并在其后插入新行未指定则追加到文末computeTotals(entries, totalColumns)src/core/data-research.ts对指定列剥离$/逗号后求和非数值视为 0测试断言N/A计为 0。四、输出格式规范化 Markdown Tracker 页面技能的 Output Format 给出了 Tracker 页面的标准形态——brain 页面落在 Recipe 的tracker_page路径下使用 Markdown 表格### 2026 | Date | Company | MRR | ARR | Growth | Status | |------|---------|-----|-----|--------|--------| | 2026-04-01 | Example Co | $188K | $2.3M | 14.7% MoM | Source |约定要点每条记录都链接回原始来源Source这是 skills/conventions/quality.md 中MANDATORY Citations的直接落地——该约定要求 brain 中的每条事实都带[Source: ...]内联引用每个分节底部有累计合计running totals表格行按group_by组织年/季度/实体列由tracker_format.columns决定。五、源码级细节内置财务指标正则库extractFields()的确定性提取依赖内置正则表METRIC_PATTERNSsrc/core/data-research.ts这直接支撑了 Phase 4 的先正则后 LLM策略。仓库内置了以下字段的正则字段覆盖格式示例部分对应测试断言mrrMRR: $188K、MRR hit $188K、$188K MRROur MRR hit $188K this month→188KarrARR: $2.3M、$2.3M ARR支持 K/M/B 后缀ARR: $2.3M→2.3Mgrowth_mom14.7% MoM、grew by 14.7%We grew 14.7% MoM→14.7%runway_monthsrunway: 16 months、16 mo of runwayWe have 16 months of runway→16headcountTeam of 23 employees、23 FTEsTeam of 23 employees→23customers1,200 customers/users/accounts由实现提供amountTotal Charged\n$5,900.00、receipt for your $X.XXTotal Charged\n$5,900.00→5,900.00date非正则YYYY-MM-DD或MM/DD/YYYY通用匹配Updated on 2026-04-15→2026-04-15schema中的字段名若命中这张表按正则逐一尝试字段类型为date走通用日期正则其余字段返回null交由 LLM 兜底——这正是 Recipe 自定义字段时的运行路径。amount的正则还体现出收据场景特化优先匹配Total Charged与receipt for your两种句式与 Recipe 分类规则中的receipt_indicators形成前后呼应。测试 test/data-research.test.ts 对上述每个字段的典型句式均有断言包括未匹配字段返回 null的边界情形。六、来源查询窗口化buildDateWindows 的实现原理Phase 2 提到窗口化查询quarterly若截断则 monthly底层由buildDateWindows()src/core/data-research.ts实现给定起止年份与粒度quarterly | monthly生成一组带start/end/label的日期窗口export interface DateWindow { start: string; // YYYY/MM/DD end: string; label: string; // 例如 Q1 2026 }季度粒度每年生成 4 个窗口Q1:01/01–04/01、Q2:04/01–07/01、Q3:07/01–10/01、Q4:10/01–次年01/01标签如Q1 2026月度粒度每年 12 个窗口跨年时 nextYear 自动进位标签如2026-01边界保护endYear startYear时直接抛错endYear (N) must be startYear (N)。测试断言test/data-research.test.ts2026 全年季度窗口恰为 4 个、月度窗口恰为 12 个、2024–2026 三年季度窗口为 12 个、起止年份倒置会抛错。七、邮件 HTML 清洗stripEmailHtml 的六阶段管线邮件来源常为 HTMLPhase 2 提到的HTML stripping由stripEmailHtml()src/core/data-research.ts负责实现为一段带安全护栏的六阶段管线Phase 0 尺寸上限超过 500KB 的输入直接截断并追加...[truncated]——这是针对 ReDoS正则拒绝服务的主动防御Phase 1整体移除style与script块避免脚本内容混入正文Phase 2块级元素br、/p、/div、/tr、/li、/h1-6转换为换行保住段落结构Phase 3非贪婪剥离剩余 HTML 标签Phase 4清理内联 CSS 残迹media、类选择器、ID 选择器块注意此处有性能分支仅当文本小于 100KB 才执行规避大输入上的正则开销Phase 5解码 HTML 实体amp;、lt;、gt;、nbsp;、quot;、数字实体Phase 6折叠空白——多余空格合并、三个以上连续换行压为两个。测试对这条管线做了三方面保护test/data-research.test.ts标签/样式/脚本被清除、实体被解码、500KB 截断触发以及100 层嵌套 HTML 在 100ms 内完成性能护栏杜绝灾难性回溯。八、反模式Anti-Patterns必须避开的四个坑技能文档明确列出四条反模式前三条是工程纪律第四条是架构原则批量处理后信任 LLM 工作记忆中的金额——必须使用提取完整性规则EXTRACTION INTEGRITY RULE先落盘、后汇总、汇总时从文件重读。这是 13/13 全错事故换来的教训创建 Tracker 条目却不链接原始来源——每条记录必须可追溯到 raw source否则失去可验证性与 quality 约定的强制引用一致不做去重就跑——会导致条目重复计数double-counted破坏累计合计的正确性在管线代码中硬编码来源特有模式——必须使用 Recipe 参数化。这正是一个技能通吃所有邮件转结构化管线的根本保证。九、与相邻技能的协作边界data-research 在 GBrain 技能体系中定位清晰容易与相邻技能混淆这里给出边界skills/query/SKILL.md负责查 brain——搜索、图谱查询。data-research 的 Phase 2 brain-first 步骤调用它skills/enrich/SKILL.md负责创建/丰富人物与公司页面。data-research 的 Phase 7 回链实体页面时依赖它skills/eiirp/SKILL.md负责everything in its right place——把研究归档到 brain 的正确位置。与 contenteditable="false">【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表