ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GBrain Compiled Truth + Timeline 模式:可搜索大脑页面的双区架构与实现原理

GBrain Compiled Truth + Timeline 模式:可搜索大脑页面的双区架构与实现原理 GBrain Compiled Truth Timeline 模式可搜索大脑页面的双区架构与实现原理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain导读GBrain 的每张大脑页面brain page都遵循编译真理Compiled Truth 时间线Timeline双区结构哨兵线之上是随时被重写的当前综合结论哨兵线之下是只增不改的原始证据轨迹。本文基于 docs/guides/compiled-truth.md 展开结合仓库源码src/core/markdown.ts、src/core/timeline-write-through.ts、src/core/timeline-extract.ts、src/core/search/hybrid.ts剖析双区拆分、哨兵识别、时间线提取与搜索加权的底层实现。读完你将掌握如何为人物、项目、概念页维护30 秒即可读完、每条论断都有出处、检索时最新综合结论优先浮现的持久知识结构并理解为什么REWRITE与APPEND是不可混淆的两个动作。一、为什么需要双区从追加日志到可综合的真相没有双区结构时大脑页面会退化为纯追加日志想了解一个人你必须通读 200 条时间线条目而答案埋在 #147 号条目里。这正是 What the User Gets 一节描述的问题。引入双区后Compiled Truth编译真理给出当前状态的结论性综合——30 秒可读完的评估段落。它随证据变化而重写始终是最新理解。Timeline时间线追加式证据轨迹——每条带日期、来源的事件记录永不修改。它是 compiled truth 中每条论断的证明。六个月、上百条时间线条目会被压缩成一段始终当前的评估。docs/GBRAIN_SKILLPACK.md将此描述为 memex 愿景的落地代理自动检测实体、丰富页面、建立交叉引用并自动维护 compiled truth。二、页面结构哨兵线之上的综合与之下的证据2.1 标准页面模板原文档给出的完整示例结构如下这是新建页面时应遵循的模板--- type: person title: Sarah Chen tags: [engineering, acme-corp] --- ## Executive Summary One paragraph. How you know them, why they matter. ## State VP Engineering at Acme Corp. Managing 45-person team. Reports to CEO. ## What They Believe Strong opinions on test coverage. Ship it when the tests pass, not before. ## What Theyre Building Leading the API migration from REST to GraphQL. Target: Q3 completion. ## Assessment Sharp technical leader. Under-appreciated internally. Watch for signs of burnout. ## Trajectory Ascending. Likely CTO track if the migration succeeds. ## Relationship Met through alice-example. Had coffee 3x. Last: discussed API architecture thesis. ## Contact sarahacmecorp.com | sarahchen | linkedin.com/in/sarahchen !-- timeline -- ## Timeline - **2026-04-07** | Met at team sync. Discussed API migration timeline. Seemed energized about GraphQL pivot. [Source: Meeting notes, 2026-04-07 2:00 PM PT] - **2026-04-03** | Mentioned in email re Q2 planning. Taking lead on ops. [Source: Gmail, sarahacmecorp.com, 2026-04-03 10:30 AM PT] - **2026-03-15** | First meeting. Intro from alice-example. Strong technical background. [Source: User, direct conversation, 2026-03-15 3:00 PM PT]要点拆解YAML frontmatter 携带type、title、tags供类型推断与检索使用src/core/markdown.ts的serializeMarkdown会统一补全这三项。!-- timeline --是 GBrain 自己写页面时使用的标准哨兵位于 compiled truth 与 timeline 之间。上方的一切都是编译真理下方的一切都是时间线。每个时间线条目由日期 | 摘要加缩进续行细节构成并强制携带[Source: ...]来源引用——这是 docs/guides/source-attribution.md 中质量规范对每条事实的要求。2.2 时间线条目的规范书写格式从源码 src/core/timeline-extract.ts 看GBrain 的时间线提取器识别三种格式Format 1 — 子弹格式- **YYYY-MM-DD** | Source — Summary。这是规范canonical形态也是timeline-write-through写入磁盘文件的形态。Format 2 — 标题格式### YYYY-MM-DD — Title其后的内容作为 detail 提取。Format 3 — 内联引用格式[Source: source, YYYY-MM-DD]。这是 GBrain 质量规范要求每条大脑写入都携带的引用形式因此带日期的证据在大脑页面中无处不在。提取器会为页面内每条此类引用登记一条时间线行——其日期取自引用、摘要取自引用所在的行剥离代码 span。只有孤悬在自己的空段落中的引用上下都是空行不会生成任何行。三、更新页面两个动作两种命运原文档给出的更新流程伪代码是理解本模式的心法逐行翻译如下update_brain_page(slug, new_info, source): page gbrain get {slug} // TIMELINE: always APPEND (never edit existing entries) gbrain timeline-add {slug} { date: today, summary: new_info.summary, detail: new_info.detail, source: format_source(source) // [Source: who, channel, date time tz] } // COMPILED TRUTH: REWRITE (not append) // Read the existing compiled truth // Integrate new information // Write the updated synthesis updated_truth rewrite_compiled_truth(page.compiled_truth, new_info) gbrain put {slug} { compiled_truth: updated_truth, // timeline is NOT passed — its managed by add_timeline_entry }对应到实际 CLIgbrain timeline-add slug date text追加时间线条目见 src/cli.ts 的用法行。源码层面它路由到addTimelineEntryPostgreSQL 引擎实现在 src/core/postgres-engine.ts落库到timeline_entries表。gbrain put {slug} {compiled_truth}仅写入综合区。切勿把 timeline 传回 put——时间线由add_timeline_entry独占管理混传会导致pages.timeline列被静默破坏见下文 6.4 的include_content说明。3.1 核心规则表ZoneActionExplanationCompiled truthREWRITECurrent synthesis. Changes when evidence changes.TimelineAPPENDEvidence trail. Never edited, only added to.每一条 compiled truth 论断都必须能追溯到时间线条目。如果 Assessment 写着内部未得到充分赏识under-appreciated internally时间线里就该有支撑该判断的证据条目。四、Tricky Spots六个必须避开的坑原文档列出了六个最容易出错的地方下面逐条结合源码深挖其成因。4.1 REWRITE 意味着重写不是追加不要给 compiled truth 追加新段落。正确做法是重写整个相关小节把新信息整合进去。不再准确的旧评估应当被更新而不是与新结论并列存在。如果写成追加模式页面最终会积累互相矛盾的评估综合区就失去了30 秒读懂的价值。4.2 时间线条目不可变绝不编辑已有条目。如果信息有误就新增一条修正条目- 2026-04-10 | Correction: Sarah is VP Eng, not CTO. Previous entry was wrong.这条规则的底层由两层机制保证去重索引timeline_entries表的唯一键是(page_id, date, md5(summary), source)ON CONFLICT ... DO NOTHING意味着同一事件重复追加会被静默吞掉而修改已有行会破坏与磁盘 markdown 的一致性。写穿write-through的一致性见 6.3 节磁盘文件是合并点任何旁路编辑都会在下次 sync 时被重新提取并与表对账。4.3 搜索权重偏向 compiled truthgbrain query返回时compiled truth 分块的相关性高于时间线分块。源码证据在 src/core/search/hybrid.ts混合检索管道为 keyword vector → RRF 融合 → 归一化 → boost → cosine 重排 → 去重const COMPILED_TRUTH_BOOST 2.0hybrid.ts——RRF 归一化后chunk_source compiled_truth的分块获得2.0x 加权compiledTruthBoosthybrid.ts进一步限定该分块不能是unverified的自动提取存根也不能是空文本的合成标题行——避免 boost 把空分块抬到榜首。这意味着最新的综合结论会最先出现在搜索结果中而不是一条随机的历史时间线条目。4.4 哨兵的选择裸---不是哨兵GBrain 在第一个被识别的哨兵处拆分 compiled_truth 与 timeline识别优先级如下src/core/markdown.ts 的findTimelineSplitIndex与facts-fence.ts中的镜像实现!-- timeline --——首选无歧义GBrain 写页面时自己输出的就是它serializeMarkdown在 markdown.ts 中固定拼接!-- timeline ----- timeline ---——装饰性分隔符裸---仅当下一非空行是## Timeline或## History时生效兼容老版本 gbrain 写入的文件。其余任何位置的裸---都是 Markdown 水平线horizontal rule不是分隔符。splitBodymarkdown.ts的注释记录了一个重要教训把裸---当分隔符曾在 wiki 语料上造成 83% 的内容截断因此源码刻意只对下一行是 Timeline/History 标题的裸---放行。此外findTimelineSplitIndex还会跳过 YAML frontmatter避免 frontmatter 的---定界符误触发规则 3。4.5 哨兵不限制时间线提取引用也会铸成行这是最容易忽视的隐藏行为每个受信任的写入路径put_page/captureauto_timeline默认开启以及extract timeline都会扫描整页寻找带日期标记——包括- **YYYY-MM-DD** | ...子弹和行内[Source: ..., YYYY-MM-DD]引用。因此质量规范强制的每条引用citation若位于 compiled truth 中就会按引用的日期铸造一条永久时间线行摘要取引用所在段落剥离代码 span上面示例页面把引用都放在哨兵线之下所以没有暴露这个隐患唯一不铸造任何行的放置方式引用孤悬在自有段落中上下均为空行gbrain config set auto_timeline off可关闭写入路径上的提取配置项注册见 src/core/config.ts没有 timeline-remove 命令只有精确重复exact-duplicate去重——再次印证时间线只增不改。4.6 不要跳过 Assessment 小节Assessment 是整页的价值所在。Strong technical leader 是任何 API 都无法提供的判断——它是对这个人你自己的读解。这才是大脑页面优于 LinkedIn 的原因。这个观点与 docs/guides/entity-detection.md 中代理维护 compiled truth的定位一脉相承机器负责记录证据与维护综合人或代理的推理层负责价值判断。五、源码级实现双区如何被拆分、写入与检索5.1 拆分splitBody与findTimelineSplitIndex页面读入时src/core/markdown.ts 的splitBody将正文按哨兵一分为二找到哨兵lines.slice(0, splitIndex)为 compiled_truthlines.slice(splitIndex 1)为 timeline找不到哨兵但存在裸## Timeline/## History小节且该小节形态为带日期的子弹列表DATED_BULLET_RE匹配- 2024-05-01 ...之类时启用 #2225 回退只把该小节划入 timeline后续无关的 H2 小节保留在 compiled truth 中——防止普通 wiki 页面带散文的## History小节被整个吞进时间线两者皆无整页视为 compiled truth。5.2 写入timeline-write-through的原子追加src/core/timeline-write-through.ts#1856保证了手动时间线写入的端到端一致性。核心流程writeTimelineEntryThroughL292-L436通过resolvePageWriteTarget解析磁盘写入目标磁盘不可达或配置关闭sync.write_throughoff时回退到纯 DB 插入handled: false行为与旧版完全一致renderTimelineEntryL148-L176把条目渲染为规范子弹- **YYYY-MM-DD** | source — summary并用 FS 提取器反推出将存入 DB 的元组——存入的元组与重新提取的元组按构造收敛杜绝每次 sync 重复插入拿页面锁后对磁盘文件执行读-改-写spliceTimelineIntoFileTextL216-L280按日期序把子弹插入时间线区保持列表升降序方向插入后必须能 round-trip 提取回原元组否则不落盘原子写唯一临时文件 rename失败清理临时文件随后更新pages.timeline列并插入timeline_entries行去重索引ON CONFLICT DO NOTHING在启用持久化加固durability-hardened的仓库上best-effort 提交到 git。注意第 3 步的哲学磁盘文件是文件型编辑facts 栅栏、手写编辑的合并点绝不从 DB 行整体重建文件——否则旁路编辑会被静默回滚。手动条目缺省来源标记为manualL127因为裸摘要无分隔符会被提取器碎片化必须有诚实的 provenance。5.3 读取get_page的include_content无损往返MCPget_page操作src/core/ops/pages.ts默认返回compiled_truth与timeline两个字段当需要编辑后无损回写时传入include_content: true会得到规范序列化content字段 frontmatter body !-- timeline --哨兵 timeline。代码注释L180-L188明确指出手工拼接compiled_truth timeline丢哨兵会在下次写入时静默破坏pages.timeline——这正是 4.5 节隐患的读取侧镜像。六、如何验证你的页面符合模式更新一个人物页加入新的会面信息。检查compiled truth 被REWRITE而非追加时间线顶部出现新条目。搜索该人物gbrain query Sarah Chen。compiled truth当前综合应排在最前而不是一条随机时间线条目——这是 2.0x boost 的直接验证。检查可追溯性compiled truth 中的每条论断都应有对应的时间线条目。通读两区并核对。检查不可变性更新后旧时间线条目应原样未动——日期、来源、内容与原始条目完全一致去重索引 写穿一致性保证这一点。七、延伸阅读GBrain Skillpack 参考架构compiled truth 在整体知识骨干中的定位以及 50 内置技能的关系Source Attribution每条事实的引用格式与来源层级Entity Detection实体检测如何驱动页面的自动丰富与综合维护关键实现文件src/core/markdown.ts、src/core/timeline-write-through.ts、src/core/timeline-extract.ts、src/core/search/hybrid.ts【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表