第04章 核心概念深度解析
目录
知识模型:两层页面结构
每个知识页面由两部分组成,用 --- 分隔。
图表
代码
flowchart TB
subgraph GBrain页面结构
direction TB
subgraph 编译真理["编译真理(上半部分)"]
A1["• 可重写,始终反映当前理解"]
A2["• 包含一段式执行摘要"]
A3["• 结构化状态字段"]
A4["• 开放线程(活跃项目,解决后移除)"]
A5["• 另见交叉链接"]
A1 --> A2 --> A3 --> A4 --> A5
end
分隔线["---"]
subgraph 时间线["时间线(下半部分)"]
B1["• 仅追加,不可重写"]
B2["• 反向时间序证据日志"]
B3["• 每条目: 日期、来源、发生了什么"]
B4["• 开放线程解决后移到此记录"]
B1 --> B2 --> B3 --> B4
end
编译真理 --> 分隔线 --> 时间线
end
style 编译真理 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 时间线 fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style 分隔线 fill:#f0f0f0,stroke:#999,stroke-width:1pxflowchart TB
subgraph GBrain页面结构
direction TB
subgraph 编译真理["编译真理(上半部分)"]
A1["• 可重写,始终反映当前理解"]
A2["• 包含一段式执行摘要"]
A3["• 结构化状态字段"]
A4["• 开放线程(活跃项目,解决后移除)"]
A5["• 另见交叉链接"]
A1 --> A2 --> A3 --> A4 --> A5
end
分隔线["---"]
subgraph 时间线["时间线(下半部分)"]
B1["• 仅追加,不可重写"]
B2["• 反向时间序证据日志"]
B3["• 每条目: 日期、来源、发生了什么"]
B4["• 开放线程解决后移到此记录"]
B1 --> B2 --> B3 --> B4
end
编译真理 --> 分隔线 --> 时间线
end
style 编译真理 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 时间线 fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style 分隔线 fill:#f0f0f0,stroke:#999,stroke-width:1pxflowchart TB
subgraph GBrain页面结构
direction TB
subgraph 编译真理["编译真理(上半部分)"]
A1["• 可重写,始终反映当前理解"]
A2["• 包含一段式执行摘要"]
A3["• 结构化状态字段"]
A4["• 开放线程(活跃项目,解决后移除)"]
A5["• 另见交叉链接"]
A1 --> A2 --> A3 --> A4 --> A5
end
分隔线["---"]
subgraph 时间线["时间线(下半部分)"]
B1["• 仅追加,不可重写"]
B2["• 反向时间序证据日志"]
B3["• 每条目: 日期、来源、发生了什么"]
B4["• 开放线程解决后移到此记录"]
B1 --> B2 --> B3 --> B4
end
编译真理 --> 分隔线 --> 时间线
end
style 编译真理 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 时间线 fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style 分隔线 fill:#f0f0f0,stroke:#999,stroke-width:1pxflowchart TB
subgraph GBrain页面结构
direction TB
subgraph 编译真理["编译真理(上半部分)"]
A1["• 可重写,始终反映当前理解"]
A2["• 包含一段式执行摘要"]
A3["• 结构化状态字段"]
A4["• 开放线程(活跃项目,解决后移除)"]
A5["• 另见交叉链接"]
A1 --> A2 --> A3 --> A4 --> A5
end
分隔线["---"]
subgraph 时间线["时间线(下半部分)"]
B1["• 仅追加,不可重写"]
B2["• 反向时间序证据日志"]
B3["• 每条目: 日期、来源、发生了什么"]
B4["• 开放线程解决后移到此记录"]
B1 --> B2 --> B3 --> B4
end
编译真理 --> 分隔线 --> 时间线
end
style 编译真理 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 时间线 fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style 分隔线 fill:#f0f0f0,stroke:#999,stroke-width:1px查询读取策略
图表
代码
flowchart LR
A[用户查询] --> B{查询目标}
B -->|"当前状态是什么?"| C[编译真理部分]
B -->|"发生了什么?"| D[时间线部分]
C --> E[直接返回综合结果]
D --> F[返回完整证据链]
E --> G[响应]
F --> Gflowchart LR
A[用户查询] --> B{查询目标}
B -->|"当前状态是什么?"| C[编译真理部分]
B -->|"发生了什么?"| D[时间线部分]
C --> E[直接返回综合结果]
D --> F[返回完整证据链]
E --> G[响应]
F --> Gflowchart LR
A[用户查询] --> B{查询目标}
B -->|"当前状态是什么?"| C[编译真理部分]
B -->|"发生了什么?"| D[时间线部分]
C --> E[直接返回综合结果]
D --> F[返回完整证据链]
E --> G[响应]
F --> Gflowchart LR
A[用户查询] --> B{查询目标}
B -->|"当前状态是什么?"| C[编译真理部分]
B -->|"发生了什么?"| D[时间线部分]
C --> E[直接返回综合结果]
D --> F[返回完整证据链]
E --> G[响应]
F --> G设计优势
该设计是 Karpathy wiki 模式的杀手级特性:合成已预计算。
| 传统 RAG | GBrain |
|---|---|
| 每次查询都从头推导知识 | 合成已预计算 |
| 交叉引用需要实时查找 | 交叉引用已经建立 |
| 矛盾难以发现 | 矛盾已经标记 |
| 响应时间较长 | 智能体直接获取预计算的综合结果 |
数据库四原语
GBrain 不只是文件存储,而是完整的数据库四原语设计。
图表
代码
flowchart TB
subgraph 数据库四原语架构
direction TB
subgraph 实体注册表["1. 实体注册表(Entity Registry)"]
A1["• 规范 ID: 每个实体有唯一 ID"]
A2["• 所有别名: 支持多种名称表示"]
A3["• 外部 ID: LinkedIn、X、邮箱、电话等"]
A1 --> A2 --> A3
end
解决问题1["解决的问题: 是否同一人?的单一真实来源"]
subgraph 事件账本["2. 事件账本(Event Ledger)"]
B1["• 每个信号的不可变事件记录"]
B2["• 页面重写不丢失事件"]
B3["• 时间线由此生成"]
B1 --> B2 --> B3
end
解决问题2["解决的问题: 事件记录永不丢失,可追溯"]
subgraph 事实存储["3. 事实存储(Fact Store)"]
C1["• 带来源的结构化声明"]
C2["• 来源、置信度、观察时间"]
C3["• 冲突可见为同一字段的不同值"]
C1 --> C2 --> C3
end
解决问题3["解决的问题: 冲突是结构化的,不是隐式文本"]
subgraph 关系图["4. 关系图(Relationship Graph)"]
D1["• 实体间的类型化边(typed edges)"]
D2["• Person → Company(role: CTO, started: 2024-01)"]
D3["• Person → Person(relationship: co-founded)"]
D4["• Company → Deal(type: Series A, date: 2025-03)"]
D1 --> D2 --> D3 --> D4
end
解决问题4["解决的问题: 支持图查询,我认识谁也认识 X?"]
实体注册表 --> 解决问题1 --> 事件账本 --> 解决问题2 --> 事实存储 --> 解决问题3 --> 关系图 --> 解决问题4
end
style 实体注册表 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 事件账本 fill:#f8e8f8,stroke:#e24a90,stroke-width:2px
style 事实存储 fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style 关系图 fill:#e8f8f8,stroke:#4ae290,stroke-width:2pxflowchart TB
subgraph 数据库四原语架构
direction TB
subgraph 实体注册表["1. 实体注册表(Entity Registry)"]
A1["• 规范 ID: 每个实体有唯一 ID"]
A2["• 所有别名: 支持多种名称表示"]
A3["• 外部 ID: LinkedIn、X、邮箱、电话等"]
A1 --> A2 --> A3
end
解决问题1["解决的问题: 是否同一人?的单一真实来源"]
subgraph 事件账本["2. 事件账本(Event Ledger)"]
B1["• 每个信号的不可变事件记录"]
B2["• 页面重写不丢失事件"]
B3["• 时间线由此生成"]
B1 --> B2 --> B3
end
解决问题2["解决的问题: 事件记录永不丢失,可追溯"]
subgraph 事实存储["3. 事实存储(Fact Store)"]
C1["• 带来源的结构化声明"]
C2["• 来源、置信度、观察时间"]
C3["• 冲突可见为同一字段的不同值"]
C1 --> C2 --> C3
end
解决问题3["解决的问题: 冲突是结构化的,不是隐式文本"]
subgraph 关系图["4. 关系图(Relationship Graph)"]
D1["• 实体间的类型化边(typed edges)"]
D2["• Person → Company(role: CTO, started: 2024-01)"]
D3["• Person → Person(relationship: co-founded)"]
D4["• Company → Deal(type: Series A, date: 2025-03)"]
D1 --> D2 --> D3 --> D4
end
解决问题4["解决的问题: 支持图查询,我认识谁也认识 X?"]
实体注册表 --> 解决问题1 --> 事件账本 --> 解决问题2 --> 事实存储 --> 解决问题3 --> 关系图 --> 解决问题4
end
style 实体注册表 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 事件账本 fill:#f8e8f8,stroke:#e24a90,stroke-width:2px
style 事实存储 fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style 关系图 fill:#e8f8f8,stroke:#4ae290,stroke-width:2pxflowchart TB
subgraph 数据库四原语架构
direction TB
subgraph 实体注册表["1. 实体注册表(Entity Registry)"]
A1["• 规范 ID: 每个实体有唯一 ID"]
A2["• 所有别名: 支持多种名称表示"]
A3["• 外部 ID: LinkedIn、X、邮箱、电话等"]
A1 --> A2 --> A3
end
解决问题1["解决的问题: 是否同一人?的单一真实来源"]
subgraph 事件账本["2. 事件账本(Event Ledger)"]
B1["• 每个信号的不可变事件记录"]
B2["• 页面重写不丢失事件"]
B3["• 时间线由此生成"]
B1 --> B2 --> B3
end
解决问题2["解决的问题: 事件记录永不丢失,可追溯"]
subgraph 事实存储["3. 事实存储(Fact Store)"]
C1["• 带来源的结构化声明"]
C2["• 来源、置信度、观察时间"]
C3["• 冲突可见为同一字段的不同值"]
C1 --> C2 --> C3
end
解决问题3["解决的问题: 冲突是结构化的,不是隐式文本"]
subgraph 关系图["4. 关系图(Relationship Graph)"]
D1["• 实体间的类型化边(typed edges)"]
D2["• Person → Company(role: CTO, started: 2024-01)"]
D3["• Person → Person(relationship: co-founded)"]
D4["• Company → Deal(type: Series A, date: 2025-03)"]
D1 --> D2 --> D3 --> D4
end
解决问题4["解决的问题: 支持图查询,我认识谁也认识 X?"]
实体注册表 --> 解决问题1 --> 事件账本 --> 解决问题2 --> 事实存储 --> 解决问题3 --> 关系图 --> 解决问题4
end
style 实体注册表 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 事件账本 fill:#f8e8f8,stroke:#e24a90,stroke-width:2px
style 事实存储 fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style 关系图 fill:#e8f8f8,stroke:#4ae290,stroke-width:2pxflowchart TB
subgraph 数据库四原语架构
direction TB
subgraph 实体注册表["1. 实体注册表(Entity Registry)"]
A1["• 规范 ID: 每个实体有唯一 ID"]
A2["• 所有别名: 支持多种名称表示"]
A3["• 外部 ID: LinkedIn、X、邮箱、电话等"]
A1 --> A2 --> A3
end
解决问题1["解决的问题: 是否同一人?的单一真实来源"]
subgraph 事件账本["2. 事件账本(Event Ledger)"]
B1["• 每个信号的不可变事件记录"]
B2["• 页面重写不丢失事件"]
B3["• 时间线由此生成"]
B1 --> B2 --> B3
end
解决问题2["解决的问题: 事件记录永不丢失,可追溯"]
subgraph 事实存储["3. 事实存储(Fact Store)"]
C1["• 带来源的结构化声明"]
C2["• 来源、置信度、观察时间"]
C3["• 冲突可见为同一字段的不同值"]
C1 --> C2 --> C3
end
解决问题3["解决的问题: 冲突是结构化的,不是隐式文本"]
subgraph 关系图["4. 关系图(Relationship Graph)"]
D1["• 实体间的类型化边(typed edges)"]
D2["• Person → Company(role: CTO, started: 2024-01)"]
D3["• Person → Person(relationship: co-founded)"]
D4["• Company → Deal(type: Series A, date: 2025-03)"]
D1 --> D2 --> D3 --> D4
end
解决问题4["解决的问题: 支持图查询,我认识谁也认识 X?"]
实体注册表 --> 解决问题1 --> 事件账本 --> 解决问题2 --> 事实存储 --> 解决问题3 --> 关系图 --> 解决问题4
end
style 实体注册表 fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style 事件账本 fill:#f8e8f8,stroke:#e24a90,stroke-width:2px
style 事实存储 fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style 关系图 fill:#e8f8f8,stroke:#4ae290,stroke-width:2px四原语的价值对比
图表
代码
graph TB
subgraph 传统方式
A[身份解析] --> B[文件合并操作]
B --> C[需手动修复交叉引用]
D[矛盾处理] --> E[文本问题]
E --> F[依赖 LLM 注意到]
G[并发处理] --> H[产生合并冲突]
H --> I[人工解决]
J[复杂查询] --> K[不可能的 grep 链]
end
subgraph 四原语方式
A2[身份解析] --> B2[数据库操作]
B2 --> C2[指向同一规范 ID]
D2[矛盾处理] --> E2[结构化]
E2 --> F2[两个不同值的同一字段声明]
G2[并发处理] --> H2[事件追加到账本]
H2 --> I2[事实 upsert]
I2 --> J2[Markdown 重构]
K2[复杂查询] --> L2[关系图遍历]
endgraph TB
subgraph 传统方式
A[身份解析] --> B[文件合并操作]
B --> C[需手动修复交叉引用]
D[矛盾处理] --> E[文本问题]
E --> F[依赖 LLM 注意到]
G[并发处理] --> H[产生合并冲突]
H --> I[人工解决]
J[复杂查询] --> K[不可能的 grep 链]
end
subgraph 四原语方式
A2[身份解析] --> B2[数据库操作]
B2 --> C2[指向同一规范 ID]
D2[矛盾处理] --> E2[结构化]
E2 --> F2[两个不同值的同一字段声明]
G2[并发处理] --> H2[事件追加到账本]
H2 --> I2[事实 upsert]
I2 --> J2[Markdown 重构]
K2[复杂查询] --> L2[关系图遍历]
endgraph TB
subgraph 传统方式
A[身份解析] --> B[文件合并操作]
B --> C[需手动修复交叉引用]
D[矛盾处理] --> E[文本问题]
E --> F[依赖 LLM 注意到]
G[并发处理] --> H[产生合并冲突]
H --> I[人工解决]
J[复杂查询] --> K[不可能的 grep 链]
end
subgraph 四原语方式
A2[身份解析] --> B2[数据库操作]
B2 --> C2[指向同一规范 ID]
D2[矛盾处理] --> E2[结构化]
E2 --> F2[两个不同值的同一字段声明]
G2[并发处理] --> H2[事件追加到账本]
H2 --> I2[事实 upsert]
I2 --> J2[Markdown 重构]
K2[复杂查询] --> L2[关系图遍历]
endgraph TB
subgraph 传统方式
A[身份解析] --> B[文件合并操作]
B --> C[需手动修复交叉引用]
D[矛盾处理] --> E[文本问题]
E --> F[依赖 LLM 注意到]
G[并发处理] --> H[产生合并冲突]
H --> I[人工解决]
J[复杂查询] --> K[不可能的 grep 链]
end
subgraph 四原语方式
A2[身份解析] --> B2[数据库操作]
B2 --> C2[指向同一规范 ID]
D2[矛盾处理] --> E2[结构化]
E2 --> F2[两个不同值的同一字段声明]
G2[并发处理] --> H2[事件追加到账本]
H2 --> I2[事实 upsert]
I2 --> J2[Markdown 重构]
K2[复杂查询] --> L2[关系图遍历]
endMECE 目录原则
MECE = Mutually Exclusive, Collectively Exhaustive(相互独立,完全穷尽)
这是 GBrain 目录结构的单一最重要设计决策。
图表
代码
flowchart TB
A[新知识片段到达] --> B[读取 RESOLVER.md 决策树]
B --> C{类型判断}
C -->|是人物?| D[people/]
C -->|是公司?| E[companies/]
C -->|是交易?| F[deals/]
C -->|是会议?| G[meetings/]
C -->|是概念?| H[concepts/]
C -->|是原想法?| I[originals/]
C -->|都不符合?| J[inbox/]
D --> K[读取目标目录的 README.md]
E --> K
F --> K
G --> K
H --> K
I --> K
J --> K
K --> L["回答两个问题:
1. 什么放这里?(正确定义)
2. 什么不放这里?(与邻居的区分)"]
L --> M[创建/更新页面]
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style M fill:#e8f8e8,stroke:#4ae290,stroke-width:2px
style J fill:#fff8e8,stroke:#f5a623,stroke-width:2pxflowchart TB
A[新知识片段到达] --> B[读取 RESOLVER.md 决策树]
B --> C{类型判断}
C -->|是人物?| D[people/]
C -->|是公司?| E[companies/]
C -->|是交易?| F[deals/]
C -->|是会议?| G[meetings/]
C -->|是概念?| H[concepts/]
C -->|是原想法?| I[originals/]
C -->|都不符合?| J[inbox/]
D --> K[读取目标目录的 README.md]
E --> K
F --> K
G --> K
H --> K
I --> K
J --> K
K --> L["回答两个问题:
1. 什么放这里?(正确定义)
2. 什么不放这里?(与邻居的区分)"]
L --> M[创建/更新页面]
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style M fill:#e8f8e8,stroke:#4ae290,stroke-width:2px
style J fill:#fff8e8,stroke:#f5a623,stroke-width:2pxflowchart TB
A[新知识片段到达] --> B[读取 RESOLVER.md 决策树]
B --> C{类型判断}
C -->|是人物?| D[people/]
C -->|是公司?| E[companies/]
C -->|是交易?| F[deals/]
C -->|是会议?| G[meetings/]
C -->|是概念?| H[concepts/]
C -->|是原想法?| I[originals/]
C -->|都不符合?| J[inbox/]
D --> K[读取目标目录的 README.md]
E --> K
F --> K
G --> K
H --> K
I --> K
J --> K
K --> L["回答两个问题:
1. 什么放这里?(正确定义)
2. 什么不放这里?(与邻居的区分)"]
L --> M[创建/更新页面]
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style M fill:#e8f8e8,stroke:#4ae290,stroke-width:2px
style J fill:#fff8e8,stroke:#f5a623,stroke-width:2pxflowchart TB
A[新知识片段到达] --> B[读取 RESOLVER.md 决策树]
B --> C{类型判断}
C -->|是人物?| D[people/]
C -->|是公司?| E[companies/]
C -->|是交易?| F[deals/]
C -->|是会议?| G[meetings/]
C -->|是概念?| H[concepts/]
C -->|是原想法?| I[originals/]
C -->|都不符合?| J[inbox/]
D --> K[读取目标目录的 README.md]
E --> K
F --> K
G --> K
H --> K
I --> K
J --> K
K --> L["回答两个问题:<br/>1. 什么放这里?(正确定义)<br/>2. 什么不放这里?(与邻居的区分)"]
L --> M[创建/更新页面]
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style M fill:#e8f8e8,stroke:#4ae290,stroke-width:2px
style J fill:#fff8e8,stroke:#f5a623,stroke-width:2px标准目录结构
图表
代码
graph LR
inbox["inbox/ (无匹配项的去处)"]
people["people/ (人物主页)"]
companies["companies/ (公司主页)"]
deals["deals/ (交易页面)"]
meetings["meetings/ (会议记录)"]
concepts["concepts/ (概念页面)"]
originals["originals/ (原创想法)"]
RESOLVER["顶层 RESOLVER.md
编号决策树"]
RESOLVER -->|"决策树
确定归属"| inbox
RESOLVER --> people
RESOLVER --> companies
RESOLVER --> deals
RESOLVER --> meetings
RESOLVER --> concepts
RESOLVER --> originalsgraph LR
inbox["inbox/ (无匹配项的去处)"]
people["people/ (人物主页)"]
companies["companies/ (公司主页)"]
deals["deals/ (交易页面)"]
meetings["meetings/ (会议记录)"]
concepts["concepts/ (概念页面)"]
originals["originals/ (原创想法)"]
RESOLVER["顶层 RESOLVER.md
编号决策树"]
RESOLVER -->|"决策树
确定归属"| inbox
RESOLVER --> people
RESOLVER --> companies
RESOLVER --> deals
RESOLVER --> meetings
RESOLVER --> concepts
RESOLVER --> originalsgraph LR
inbox["inbox/ (无匹配项的去处)"]
people["people/ (人物主页)"]
companies["companies/ (公司主页)"]
deals["deals/ (交易页面)"]
meetings["meetings/ (会议记录)"]
concepts["concepts/ (概念页面)"]
originals["originals/ (原创想法)"]
RESOLVER["顶层 RESOLVER.md
编号决策树"]
RESOLVER -->|"决策树
确定归属"| inbox
RESOLVER --> people
RESOLVER --> companies
RESOLVER --> deals
RESOLVER --> meetings
RESOLVER --> concepts
RESOLVER --> originalsgraph LR
inbox["inbox/ (无匹配项的去处)"]
people["people/ (人物主页)"]
companies["companies/ (公司主页)"]
deals["deals/ (交易页面)"]
meetings["meetings/ (会议记录)"]
concepts["concepts/ (概念页面)"]
originals["originals/ (原创想法)"]
RESOLVER["顶层 RESOLVER.md<br/>编号决策树"]
RESOLVER -->|"决策树<br/>确定归属"| inbox
RESOLVER --> people
RESOLVER --> companies
RESOLVER --> deals
RESOLVER --> meetings
RESOLVER --> concepts
RESOLVER --> originalsMECE 的应用边界
MECE 原则适用于目录,不适用于现实。
图表
代码
graph TB
subgraph RealWorldEntities["现实世界的实体"]
Alice["政治创始人 + 朋友
+ 捐赠者 + 媒体演员"]
Bob["招聘候选人 + 投资人
+ 竞争对手 + 顾问"]
end
subgraph MECEDirectoryPrinciple["MECE 目录原则"]
A2["people/ (主要归属)"]
B2["关系页面展示多面"]
C2[交叉链接]
A2 -->|"页面的主要内容是人物身份"| B2
A2 --> C2
B2 --> C2
D2[MECE 防止重复页面]
E2[但不防止重复关系]
endgraph TB
subgraph RealWorldEntities["现实世界的实体"]
Alice["政治创始人 + 朋友
+ 捐赠者 + 媒体演员"]
Bob["招聘候选人 + 投资人
+ 竞争对手 + 顾问"]
end
subgraph MECEDirectoryPrinciple["MECE 目录原则"]
A2["people/ (主要归属)"]
B2["关系页面展示多面"]
C2[交叉链接]
A2 -->|"页面的主要内容是人物身份"| B2
A2 --> C2
B2 --> C2
D2[MECE 防止重复页面]
E2[但不防止重复关系]
endgraph TB
subgraph RealWorldEntities["现实世界的实体"]
Alice["政治创始人 + 朋友
+ 捐赠者 + 媒体演员"]
Bob["招聘候选人 + 投资人
+ 竞争对手 + 顾问"]
end
subgraph MECEDirectoryPrinciple["MECE 目录原则"]
A2["people/ (主要归属)"]
B2["关系页面展示多面"]
C2[交叉链接]
A2 -->|"页面的主要内容是人物身份"| B2
A2 --> C2
B2 --> C2
D2[MECE 防止重复页面]
E2[但不防止重复关系]
endgraph TB
subgraph RealWorldEntities["现实世界的实体"]
Alice["政治创始人 + 朋友<br/>+ 捐赠者 + 媒体演员"]
Bob["招聘候选人 + 投资人<br/>+ 竞争对手 + 顾问"]
end
subgraph MECEDirectoryPrinciple["MECE 目录原则"]
A2["people/ (主要归属)"]
B2["关系页面展示多面"]
C2[交叉链接]
A2 -->|"页面的主要内容是人物身份"| B2
A2 --> C2
B2 --> C2
D2[MECE 防止重复页面]
E2[但不防止重复关系]
end| 方面 | 说明 |
|---|---|
| MECE 防止什么 | 重复页面、知识腐烂、信息孤岛 |
| MECE 不限制什么 | 实体的多重身份、丰富的关系网络 |
| 实现方式 | 页面主归属(people/)+ 类型化反向链接 |
丰富触发机制
每个信号(会议、邮件、推文、日历事件、联系人同步、对话提及)触及人物或公司时,丰富流水线自动触发。
图表
代码
flowchart TB
A[任何信号到达] --> B["提取实体
(人物、公司、主题等)"]
B --> C["检测实体重要度
(提及次数 + 来源多样性)"]
C --> D{重要度等级}
D -->|"Tier 3
一次提及 单一来源"| E[创建存根页面]
E --> E1["slug: people/alice"]
E1 --> E2
E2["tags: mentioned"]
E2 --> E3[时间线: 首次提及记录]
D -->|"Tier 2
3 次提及 不同来源"| F[Web + 社交丰富]
F --> F1[Web 搜索: Alice Wang]
F1 --> F2[社交搜索: @alice_xyz]
F2 --> F3[提取: 头像、简介、公司等]
F3 --> F4[更新页面,添加 Web 信息]
D -->|"Tier 1
会议或 8+ 次提及"| G[完整流水线]
G --> G1[公司深挖(新闻、融资、产品)]
G1 --> G2[社交历史分析]
G2 --> G3[学术成果搜索]
G3 --> G4[构建完整时间线]
G4 --> G5[建立所有关系链接]
E3 --> H["大脑自动学习谁重要
无需显式告知'去查一下这个人'"]
F4 --> H
G5 --> H
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style E fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style F fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style G fill:#e8f8f8,stroke:#4ae290,stroke-width:2px
style H fill:#f8e8f8,stroke:#e24a90,stroke-width:2pxflowchart TB
A[任何信号到达] --> B["提取实体
(人物、公司、主题等)"]
B --> C["检测实体重要度
(提及次数 + 来源多样性)"]
C --> D{重要度等级}
D -->|"Tier 3
一次提及 单一来源"| E[创建存根页面]
E --> E1["slug: people/alice"]
E1 --> E2
E2["tags: mentioned"]
E2 --> E3[时间线: 首次提及记录]
D -->|"Tier 2
3 次提及 不同来源"| F[Web + 社交丰富]
F --> F1[Web 搜索: Alice Wang]
F1 --> F2[社交搜索: @alice_xyz]
F2 --> F3[提取: 头像、简介、公司等]
F3 --> F4[更新页面,添加 Web 信息]
D -->|"Tier 1
会议或 8+ 次提及"| G[完整流水线]
G --> G1[公司深挖(新闻、融资、产品)]
G1 --> G2[社交历史分析]
G2 --> G3[学术成果搜索]
G3 --> G4[构建完整时间线]
G4 --> G5[建立所有关系链接]
E3 --> H["大脑自动学习谁重要
无需显式告知'去查一下这个人'"]
F4 --> H
G5 --> H
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style E fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style F fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style G fill:#e8f8f8,stroke:#4ae290,stroke-width:2px
style H fill:#f8e8f8,stroke:#e24a90,stroke-width:2pxflowchart TB
A[任何信号到达] --> B["提取实体
(人物、公司、主题等)"]
B --> C["检测实体重要度
(提及次数 + 来源多样性)"]
C --> D{重要度等级}
D -->|"Tier 3
一次提及 单一来源"| E[创建存根页面]
E --> E1["slug: people/alice"]
E1 --> E2
E2["tags: mentioned"]
E2 --> E3[时间线: 首次提及记录]
D -->|"Tier 2
3 次提及 不同来源"| F[Web + 社交丰富]
F --> F1[Web 搜索: Alice Wang]
F1 --> F2[社交搜索: @alice_xyz]
F2 --> F3[提取: 头像、简介、公司等]
F3 --> F4[更新页面,添加 Web 信息]
D -->|"Tier 1
会议或 8+ 次提及"| G[完整流水线]
G --> G1[公司深挖(新闻、融资、产品)]
G1 --> G2[社交历史分析]
G2 --> G3[学术成果搜索]
G3 --> G4[构建完整时间线]
G4 --> G5[建立所有关系链接]
E3 --> H["大脑自动学习谁重要
无需显式告知'去查一下这个人'"]
F4 --> H
G5 --> H
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style E fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style F fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style G fill:#e8f8f8,stroke:#4ae290,stroke-width:2px
style H fill:#f8e8f8,stroke:#e24a90,stroke-width:2pxflowchart TB
A[任何信号到达] --> B["提取实体<br/>(人物、公司、主题等)"]
B --> C["检测实体重要度<br/>(提及次数 + 来源多样性)"]
C --> D{重要度等级}
D -->|"Tier 3<br/>一次提及 单一来源"| E[创建存根页面]
E --> E1["slug: people/alice"]
E1 --> E2
E2["tags: mentioned"]
E2 --> E3[时间线: 首次提及记录]
D -->|"Tier 2<br/>3 次提及 不同来源"| F[Web + 社交丰富]
F --> F1[Web 搜索: Alice Wang]
F1 --> F2[社交搜索: @alice_xyz]
F2 --> F3[提取: 头像、简介、公司等]
F3 --> F4[更新页面,添加 Web 信息]
D -->|"Tier 1<br/>会议或 8+ 次提及"| G[完整流水线]
G --> G1[公司深挖(新闻、融资、产品)]
G1 --> G2[社交历史分析]
G2 --> G3[学术成果搜索]
G3 --> G4[构建完整时间线]
G4 --> G5[建立所有关系链接]
E3 --> H["大脑自动学习谁重要<br/>无需显式告知'去查一下这个人'"]
F4 --> H
G5 --> H
style A fill:#e8f4f8,stroke:#4a90e2,stroke-width:2px
style E fill:#fff8e8,stroke:#f5a623,stroke-width:2px
style F fill:#f8f8e8,stroke:#e2e24a,stroke-width:2px
style G fill:#e8f8f8,stroke:#4ae290,stroke-width:2px
style H fill:#f8e8f8,stroke:#e24a90,stroke-width:2px为什么分层丰富重要
图表
代码
graph LR
subgraph 不分层的问题
A[每次提及] --> B[都调用完整 API]
B --> C[高昂成本]
C --> D[垃圾信息累积]
E[需要人工记忆] --> F[手动触发]
F --> G[容易遗漏]
G --> H[知识不一致]
end
subgraph 分层丰富
A2[首次提及] --> B2["Tier 3
存根页面"]
B2 --> C2[低成本]
D2[多次提及] --> E2["自动升级 Tier"]
E2 --> F2["Tier 2: Web+社交"]
G2[会议/高频] --> H2[Tier 1: 完整流水线]
H2 --> I2[深度信息]
I2 --> J2[自动演进]
endgraph LR
subgraph 不分层的问题
A[每次提及] --> B[都调用完整 API]
B --> C[高昂成本]
C --> D[垃圾信息累积]
E[需要人工记忆] --> F[手动触发]
F --> G[容易遗漏]
G --> H[知识不一致]
end
subgraph 分层丰富
A2[首次提及] --> B2["Tier 3
存根页面"]
B2 --> C2[低成本]
D2[多次提及] --> E2["自动升级 Tier"]
E2 --> F2["Tier 2: Web+社交"]
G2[会议/高频] --> H2[Tier 1: 完整流水线]
H2 --> I2[深度信息]
I2 --> J2[自动演进]
endgraph LR
subgraph 不分层的问题
A[每次提及] --> B[都调用完整 API]
B --> C[高昂成本]
C --> D[垃圾信息累积]
E[需要人工记忆] --> F[手动触发]
F --> G[容易遗漏]
G --> H[知识不一致]
end
subgraph 分层丰富
A2[首次提及] --> B2["Tier 3
存根页面"]
B2 --> C2[低成本]
D2[多次提及] --> E2["自动升级 Tier"]
E2 --> F2["Tier 2: Web+社交"]
G2[会议/高频] --> H2[Tier 1: 完整流水线]
H2 --> I2[深度信息]
I2 --> J2[自动演进]
endgraph LR
subgraph 不分层的问题
A[每次提及] --> B[都调用完整 API]
B --> C[高昂成本]
C --> D[垃圾信息累积]
E[需要人工记忆] --> F[手动触发]
F --> G[容易遗漏]
G --> H[知识不一致]
end
subgraph 分层丰富
A2[首次提及] --> B2["Tier 3<br/>存根页面"]
B2 --> C2[低成本]
D2[多次提及] --> E2["自动升级 Tier"]
E2 --> F2["Tier 2: Web+社交"]
G2[会议/高频] --> H2[Tier 1: 完整流水线]
H2 --> I2[深度信息]
I2 --> J2[自动演进]
end| 方式 | 问题 | GBrain 方式 |
|---|---|---|
| 依赖智能体记住更新 | 最终会被遗忘 | 自动触发,无需记忆 |
| 人工触发丰富 | 容易遗漏 | 每个信号都触发 |
| 无成本控制 | API 配额浪费 | 分层策略,Tier 1 仅对重要实体 |
| 无演进机制 | 始终是同一深度 | 重要度提升后自动升级 |
相关内容
如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
支付宝
微信