# MineContext 架构概览

## 系统架构

MineContext 设计为模块化、事件驱动的系统，具有明确的关注点分离。架构遵循分层方法，组件之间有明确定义的接口。

## 系统组件

### 核心架构层

```
┌──────────────────────────────────────────────────────────┐
│                      业务逻辑层                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │  捕获管理器  │  │ 处理器管理器 │  │  消费管理器  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└──────────────────────────────────────────────────────────┘
                           ↓
┌──────────────────────────────────────────────────────────┐
│                        处理层                            │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │    分块器    │  │    处理器    │  │    合并器    │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │  实体分析器  │  │   向量化器   │  │  知识提炼器  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└──────────────────────────────────────────────────────────┘
                           ↓
┌──────────────────────────────────────────────────────────┐
│                        存储层                            │
│  ┌──────────────┐  ┌──────────────┐  │
│  │    SQLite    │  │   ChromaDB   │  │
│  └──────────────┘  └──────────────┘  │
└──────────────────────────────────────────────────────────┘
                           ↓
┌──────────────────────────────────────────────────────────┐
│                        大模型层                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │    OpenAI    │  │     豆包     │  │  向量化模型  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└──────────────────────────────────────────────────────────┘
```

### 系统流程

MineContext 的系统流程设计为一个高度模块化和可扩展的架构，分为五个核心部分：上下文捕获、加工处理、存储、服务/工具和消费。

#### 1. Context 捕获 (Capture)

- **来源**:
  - **本地文件**: 监控和获取本地创建或修改的文件。
  - **订阅数据流**: 从各种数据源（如RSS、API）订阅和接收信息。
  - **用户交互**: 包括聊天记录、截屏和AI对话。
  - **自定义方式**: 支持用户自定义的捕获方法。

#### 2. Context 加工处理 (Processing)

- **文档处理**:
  - **结构化文档**: 进行本地切分。
  - **非结构化文档**: 通过内容理解进行切片。
- **多模态理解**:
  - 对截屏、聊天记录等进行综合理解。
  - 获取最近的历史内容和上下文信息。
- **实体抽取与更新**: 从处理过的内容中识别和更新实体。
- **知识提炼**:
  - 对信息进行去噪、合并和分类。
  - 形成客观知识、实体画像、活动记录和流程记录。
- **向量化**: 将提炼出的知识转化为向量形式，以便于存储和检索。
- **时间驱动压缩**: 对上下文进行压缩，并获取关联事件和相似知识。

#### 3. Context 存储 (Storage)

- **向量数据库**:

  - **客观知识向量库**: 存储事实和通用知识。
  - **事件记录向量库**: 存储与特定事件相关的信息。
  - **实体关联向量库**: 存储实体之间的关系。
  - **其他**: 存储其他类型的处理数据。

#### 4. Context 服务/Tools (Services/Tools)

- **查询处理**:
  - **意图识别与改写**: 理解用户查询的真实意图，并进行改写和拆解。
- **信息组织**:
  - **关系网络**: 获取主体画像及其在事件中的关系网络。
  - **时间线视图**: 基于时间与动作的语义匹配，生成时间线视图。
- **检索与聚合**:
  - **知识聚合**: 面向事实和可复用知识进行检索与聚合。
  - **双向查询**: 支持从时间到事件或从事件到时间的双向查询。
  - **混合检索**: 支持跨类型的语义和关键词混合检索，并提供过滤、排序、分组和权重衰减等功能。

#### 5. Context 消费 (Consumption)

- **MCP Server**: 通过模型上下文协议（MCP）提供服务。
- **上层应用消费**: 将处理和组织好的上下文提供给上层应用程序使用。

## 数据流

```
┌─────────────────────────────────────────────────────────────┐
│                        数据输入源                            │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────┐│
│  │  本地文件  │  │ 数据流订阅 │  │  用户交互  │  │  自定义源  ││
│  └────────────┘  └────────────┘  └────────────┘  └────────────┘│
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                        捕获管理器                            │
│         (监控、获取、接收、自定义捕获方法)                  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      处理器管理器                            │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │      文档处理        │  │         多模态理解         │  │
│  │  • 结构化文档切分    │  │  • 截屏/聊天记录理解      │  │
│  │  • 非结构化文档切片  │  │  • 历史内容获取           │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      知识提炼处理                            │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │    实体抽取与更新    │  │           信息提炼         │  │
│  │  • 实体识别          │  │  • 去噪/合并/分类         │  │
│  │  • 关系提取          │  │  • 客观知识/实体画像      │  │
│  │  • 实体画像更新      │  │  • 活动记录/流程记录      │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      向量化与压缩                            │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │      向量化处理      │  │         时间驱动压缩       │  │
│  │  • 文本向量化        │  │  • 上下文压缩             │  │
│  │  • 多模态向量化      │  │  • 关联事件获取           │  │
│  │  • 特征提取          │  │  • 相似知识聚合           │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                        存储管理器                            │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │  客观知识库  │  │  事件记录库  │  │  实体关联库  │     │
│  │  (向量存储)  │  │  (向量存储)  │  │  (向量存储)  │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
│                      SQLite + ChromaDB                      │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      查询与检索服务                          │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │       查询处理       │  │           检索聚合         │  │
│  │  • 意图识别          │  │  • 知识聚合               │  │
│  │  • 查询改写/拆解     │  │  • 双向查询               │  │
│  │  • 参数提取          │  │  • 混合检索               │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      信息组织服务                            │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │     关系网络构建     │  │         时间线生成         │  │
│  │  • 主体画像          │  │  • 时间序列匹配           │  │
│  │  • 事件关系网        │  │  • 动作语义匹配           │  │
│  │  • 实体关联图        │  │  • 时间线视图             │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                        消费接口                              │
│  ┌──────────────────────┐  ┌────────────────────────────┐  │
│  │      MCP Server      │  │        上层应用API         │  │
│  │                      │  │                            │  │
│  └──────────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
```

## 扩展点

### 1. 添加新的上下文源

- 实现 `CaptureInterface`
- 在 `CaptureManager` 中注册

### 2. 添加新的处理策略

- 实现 `BaseProcessor`
- 在 `ProcessorFactory` 中注册

### 3. 添加新的存储后端

- 实现 `BaseStorage`
- 更新配置选项

### 4. 添加新的LLM提供商

- 实现LLM客户端接口
- 更新配置处理

## 配置管理

系统使用分层配置方法：

1. **默认配置**: 内置默认值
2. **文件配置**: `config.yaml` 覆盖
3. **环境变量**: 覆盖文件配置
4. **运行时配置**: 基于API的配置更新

## 安全考虑

### 1. API安全

- 基于令牌的认证
- 速率限制
- 输入验证

### 2. 数据隐私

- 本地存储
- 可配置的数据保留
- 安全的API密钥管理
- 对于隐私数据不做存储

## 部署架构

### 独立部署

```
┌─────────────┐
│  MineContext    │
│     应用程序    │
│                 │
│  - Web服务器    │
│  - 处理         │
│  - 存储         │
└─────────────────┘
```

### 分布式部署

```
┌─────────────────┐     ┌─────────────────┐
│   Web服务器     │────▶│   处理工作进程   │
│    (前端)       │     │                 │
└─────────────────┘     └─────────────────┘
         │                       │
         └───────┬───────────────┘
                 ▼
         ┌───────────────┐
         │   存储后端     │
         └───────────────┘
```
