致知录
第 XXXIII 卷 · 第 07 篇 · gbrain · 1970.01.01

Schema Pack:gbrain 怎么理解『你的 brain 长什么样』

gbrain 工具拆解 · 1970.01.01 · 6 分钟阅读 · 1,597 字
目录 · 8
从一堆杂乱笔记,到『这是一家公司、那是一笔交易』——pack 就是那本告诉系统分类法的说明书

你往 brain 里丢了成千上万篇笔记。慢慢会冒出一个问题:gbrain 怎么会知道,哪篇是关于一家公司的、哪篇是一笔交易、哪篇只是你随手记的想法?更进一步——当它读到一篇关于某公司的长文,能不能自动从中抠出「成立时间、创始人、融资轮次」这些整齐的字段,而不是让你每次都手动填?

这一课讲的 schema pack(模式包),就是回答这两个问题的东西。先别被「schema」这个词吓到——它说白了就是一本说明书,告诉 gbrain 你的 brain 是怎么分类的

一、pack 解决的最朴素的困惑

没有 pack 的时候,gbrain 看你的笔记只是一堆没差别的 markdown。有了 pack,它才知道:这个目录放的是 company(公司)、那个目录放的是 deal(交易)、还有 personmeetingconceptmedia……每种类型该往哪放、从路径怎么推断类型、类型之间用什么关系连起来。文档原话:pack 是「你的 brain 里有什么」的唯一真相源,每个技能在归档、查询、路由专家时都会先翻它1

对你而言,这意味着:你不用自己发明一套分类体系再教给系统。gbrain 出厂就带了好几本现成的说明书——gbrain-base(最通用的 15 类分类法,新装默认激活)、gbrain-investor(投资场景)、gbrain-creatorgbrain-engineer2。做投资的,一句 gbrain schema use gbrain-investor 就切到投资那套分类;你甚至可以 gbrain schema detect 让它扫一遍你的笔记、自动提议「你这堆东西最像哪本说明书」3

二、它真正值钱的地方:让结构化自己长出来

光有分类还不够。设想一篇关于某公司的长文——如果没有 pack,它只是被切块、向量化,搜得到但榨不出结构。pack 里有个关键开关叫 extractable(可抽取):被标记为可抽取的类型,gbrain 会跑一个 LLM 抽取器,从这类笔记里自动提炼出结构化字段写进 元信息头(frontmatter)4

这就是你之所以愿意用 pack 的核心理由:你写散文,系统替你把「成立时间、创始人、融资轮」这种整齐信息抠出来、存成可查询的字段。日后你问「我 brain 里所有 B 轮以后的公司」,它能直接按字段筛,而不是去全文猜。

一个建筑师会在这里停一下想:为什么抽取规则要绑在 pack 上,而不是全局写死?因为不同领域的「什么值得抽」天差地别。投资笔记该抽融资轮次,技术笔记该抽依赖版本——把这些领域知识收进可替换的 pack,gbrain 核心才能保持通用。你要造类似工具,这条该抄:结构化抽取的规则按领域封装、可插拔,别焊死在引擎。

三、类型背后有五种「原料」

pack 里定义类型时,不是随便起名,而是从五种基础原料(primitive)里选一种扩展:entity(实体)、media(媒体)、temporal(时间物)、annotation(标注)、concept(概念)5。这个设计你不用记细节,但理解它的用意:五种原料决定了类型的「默认行为」——比如 entity 类天然会被图谱连边、可被专家路由;media 类默认不可抽取(一篇视频本身没什么结构化字段可榨)。把行为挂钩在原料上,pack 作者定义新类型时就不必重写一遍通用逻辑。

四、对使用者的实际意义

  • 你不必自己设计分类法:选一本现成 pack(投资就选 investor)即可;拿不准就 gbrain schema detect 让它替你猜。
  • 可抽取的类型会自动长出结构化字段:你写散文,系统替你填表,日后能按字段精确查询。
  • 换领域换 pack 就行:个人脑、投资脑、工程脑各有说明书,互不干扰。
  • 它和前面几课的关系:pack 定义的类型,正是第 2 课 storage tiering 里你按目录分层时的「那些目录」的语义来源;也是第 5 课图谱能织出 works_at/invested_in 这类带类型边的前提——系统得先通过 pack 知道「这是家公司、那是个创始人」,才连得对关系。

五、这一课带走的

schema pack 就是 brain 的分类说明书:告诉系统有哪些笔记类型、从哪放、怎么连。它让「杂乱笔记」变成「可被理解、可被结构化抽取的知识」,而你作为使用者,最多只需选一本 pack、偶尔跑一次 detect。真正复杂的类型定义与抽取规则,都封在可替换的 pack 里,不污染核心。

练习题

1

schema pack 本质上是?

2

做投资的人,最自然的做法是?

3

pack 里 extractable(可抽取)这个开关是干嘛的?

4

拿不准该用哪本 pack 时,可以?


参考出处

Footnotes

  1. 文档 docs/architecture/schema-packs.md(「A schema pack tells gbrain what shape your brain takes — which directories exist, what types live in them, how the agent should infer types from paths, and which link verbs connect what to what. … the single source of truth for ‘what’s in your brain.’」)。

  2. 文档 docs/architecture/schema-packs.md §「What ships in the box」(预装 7 个 pack:gbrain-base-v2 15 类默认激活、gbrain-base 原硬编码回退、gbrain-recommendedgbrain-creator/gbrain-investor/gbrain-engineer 等);代码 src/core/schema-pack/bundled.ts

  3. 代码 src/commands/schema.tsgbrain schema 子命令:use 切换激活、detect 扫描笔记提议候选 manifest、suggest/review-candidates 等;detect.ts 走 pages.source_path 前缀 + frontmatter type: 分布提议匹配 pack)。

  4. 代码 src/core/schema-pack/extractable.tsextractableTypesFromPack 返回 pack 中 extractable: true 的类型;v0.42 起 extractable 可为 true | ExtractableSpec,struct 形状带 prompt_template/fixture_corpus/eval_dimensions,供 LLM 抽取器跑过该类型页抽取结构化字段);base pack 保留 7 个 legacy 可抽取类型。

  5. 代码 src/core/schema-pack/manifest-v1.tsPACK_PRIMITIVES = ['entity','media','temporal','annotation','concept'];pack 只能扩展这五种原料,不能新增;primitive 驱动默认行为如链接动词/专家路由继承)。