Schema Pack:gbrain 怎么理解『你的 brain 长什么样』
你往 brain 里丢了成千上万篇笔记。慢慢会冒出一个问题:gbrain 怎么会知道,哪篇是关于一家公司的、哪篇是一笔交易、哪篇只是你随手记的想法?更进一步——当它读到一篇关于某公司的长文,能不能自动从中抠出「成立时间、创始人、融资轮次」这些整齐的字段,而不是让你每次都手动填?
这一课讲的 schema pack(模式包),就是回答这两个问题的东西。先别被「schema」这个词吓到——它说白了就是一本说明书,告诉 gbrain 你的 brain 是怎么分类的。
一、pack 解决的最朴素的困惑
没有 pack 的时候,gbrain 看你的笔记只是一堆没差别的 markdown。有了 pack,它才知道:这个目录放的是 company(公司)、那个目录放的是 deal(交易)、还有 person、meeting、concept、media……每种类型该往哪放、从路径怎么推断类型、类型之间用什么关系连起来。文档原话:pack 是「你的 brain 里有什么」的唯一真相源,每个技能在归档、查询、路由专家时都会先翻它1。
对你而言,这意味着:你不用自己发明一套分类体系再教给系统。gbrain 出厂就带了好几本现成的说明书——gbrain-base(最通用的 15 类分类法,新装默认激活)、gbrain-investor(投资场景)、gbrain-creator、gbrain-engineer 等2。做投资的,一句 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 里,不污染核心。
练习题
schema pack 本质上是?
做投资的人,最自然的做法是?
pack 里 extractable(可抽取)这个开关是干嘛的?
拿不准该用哪本 pack 时,可以?
参考出处
Footnotes
-
文档
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.’」)。 ↩ -
文档
docs/architecture/schema-packs.md§「What ships in the box」(预装 7 个 pack:gbrain-base-v215 类默认激活、gbrain-base原硬编码回退、gbrain-recommended、gbrain-creator/gbrain-investor/gbrain-engineer等);代码src/core/schema-pack/bundled.ts。 ↩ -
代码
src/commands/schema.ts(gbrain schema子命令:use切换激活、detect扫描笔记提议候选 manifest、suggest/review-candidates等;detect.ts走 pages.source_path 前缀 + frontmattertype:分布提议匹配 pack)。 ↩ -
代码
src/core/schema-pack/extractable.ts(extractableTypesFromPack返回 pack 中extractable: true的类型;v0.42 起extractable可为true | ExtractableSpec,struct 形状带prompt_template/fixture_corpus/eval_dimensions,供 LLM 抽取器跑过该类型页抽取结构化字段);base pack 保留 7 个 legacy 可抽取类型。 ↩ -
代码
src/core/schema-pack/manifest-v1.ts(PACK_PRIMITIVES = ['entity','media','temporal','annotation','concept'];pack 只能扩展这五种原料,不能新增;primitive 驱动默认行为如链接动词/专家路由继承)。 ↩