Files
memory-gateway/SOC-Memory-POC-Design.md

56 KiB
Raw Blame History

SOC 研判辅助记忆系统 POC 方案

一、整体架构设计

A. 架构图

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                                    SOC Case 研判工作流                                      │
├─────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐           │
│  │  Ticket      │    │  情报系统    │    │  历史 Case   │    │  知识库      │           │
│  │  System      │    │  (Intel)     │    │  Archive     │    │  (KB/Playbook)│          │
│  └──────┬───────┘    └──────┬───────┘    └──────┬───────┘    └──────┬───────┘           │
│         │                   │                   │                   │                    │
│         ▼                   ▼                   ▼                   ▼                    │
│  ┌─────────────────────────────────────────────────────────────────────────────┐        │
│  │                              数据接入层 (Ingestion Pipeline)                  │        │
│  │   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │        │
│  │   │ ingest_skill│  │ extract_    │  │ classify_   │  │ commit_     │         │        │
│  │   │             │──▶│ memory_skill│──▶│ memory_skill│──▶│ memory_skill│         │        │
│  │   └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘         │        │
│  └─────────────────────────────────────────────────────────────────────────────┘        │
│                                        │                                                  │
│         ┌──────────────────────────────┼──────────────────────────────┐                │
│         ▼                              ▼                              ▼                 │
│  ┌──────────────┐            ┌─────────────────┐            ┌─────────────────┐        │
│  │   Obsidian   │◀──────────│   OpenViking    │◀───────────│   EverMemOS     │        │
│  │  (知识沉淀)   │            │ (统一 Context)  │            │ (长期记忆整理)   │        │
│  │              │            │                 │            │                 │        │
│  │ - KB/Playbook│            │ - memory        │            │ - 抽取/归纳     │        │
│  │ - Case Note  │            │ - resources     │            │ - 去重/合并     │        │
│  │ - 模板/标签   │            │ - skills        │            │ - 衰减/演化     │        │
│  └──────┬───────┘            └────────┬────────┘            └────────┬────────┘        │
│         │                              │                              │                  │
└─────────┼──────────────────────────────┼──────────────────────────────┼──────────────────┘
          │                              │                              │
          ▼                              ▼                              ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                                   AI Agent / Harness System                               │
│  ┌─────────────────────────────────────────────────────────────────────────────┐          │
│  │                           retrieve_context_skill                            │          │
│  │   根据当前 case 检索 ──▶ OpenViking ──▶ 返回相关上下文 ──▶ 辅助研判            │          │
│  └─────────────────────────────────────────────────────────────────────────────┘          │
└─────────────────────────────────────────────────────────────────────────────────────────┘

B. 组件职责划分

组件 定位 核心职责
Obsidian 人工可维护的知识沉淀层 KB/Playbook/报告模板、Case Note 人工编辑、可视化知识网络
OpenViking 统一 Context/Memory Gateway 统一入口、namespace 管理、资源/技能/记忆的组织与检索
EverMemOS 后台长期记忆整理层 抽取式记忆、归纳合并、去重衰减、长期记忆演化
Skills 记忆流程自动化 导入、抽取、分类、写回、检索、清理全流程
AI Agent 消费端 调用 skills 获取上下文,辅助研判

二、数据分层设计

A. 五类记忆模型

┌────────────────────────────────────────────────────────────────────────────────┐
│                              数据分层架构                                        │
├──────────────────┬───────────────────────────────────────────────────────────┤
│  记忆类型         │  来源与特征                                                │
├──────────────────┼───────────────────────────────────────────────────────────┤
│ Knowledge Memory │ 来源: KB、月报、报告、Playbook、PO                          │
│ (知识库记忆)      │ 特征: 静态、高价值、可复用、长期有效                          │
│                  │ 示例: "钓鱼邮件识别 playbook"、"CVE-2024-XXXX 分析"         │
├──────────────────┼───────────────────────────────────────────────────────────┤
│ Case Memory      │ 来源: 历史 case、研判结论、关键证据、误报/真报模式           │
│ (案例记忆)        │ 特征: 经验沉淀、模式识别、场景化                             │
│                  │ 示例: "2024年Q3 钓鱼邮件攻击趋势"、"某 APT 组织 TTP"         │
├──────────────────┼───────────────────────────────────────────────────────────┤
│ Process Memory   │ 来源: AI agent 研判过程中的中间步骤、工具调用结果、推理路径   │
│ (过程记忆)        │ 特征: 临时性、高信息量、需抽取提炼                           │
│                  │ 示例: "本次研判使用的 IOC 列表"、"推理链草稿"                │
├──────────────────┼───────────────────────────────────────────────────────────┤
│ Profile Memory   │ 来源: Analyst 偏好、团队规范、告警分级标准                   │
│ (配置/偏好记忆)   │ 特征: 相对稳定、个性化、可影响检索排序                       │
│                  │ 示例: "某 Analyst 偏好详细日志"、"夜间告警阈值"            │
├──────────────────┼───────────────────────────────────────────────────────────┤
│ Session Memory   │ 来源: 当前任务的临时上下文、对话历史                         │
│ (会话记忆)        │ 特征: 极短期、随任务结束可丢弃                               │
│                  │ 示例: "当前正在研判的告警 ID"、"已确认的 IOC"                │
└──────────────────┴───────────────────────────────────────────────────────────┘

B. 数据生命周期

Knowledge Memory ─────────────────────────────────────────────────▶ 长期保留
     │                                                               
     ▼                                                                
Case Memory ─────────────────────────▶ 抽取为 Pattern ──────────▶ 合并到 Knowledge
     │                                 或定期清理                      
     ▼                                                              
Process Memory ──▶ 抽取高价值结论 ──▶ 写入 Case Memory
     │                          
     ▼                          
定期清理/衰减           
     │                          
     ▼                          
Session Memory ──────────────────────▶ 任务结束即丢弃

三、Obsidian 设计

A. Vault 目录结构

SOC Vault/
├── 📁 00_Knowledge/                    # 知识库 - 静态文档
│   ├── 📁 00_KB/                       # 知识库文档
│   │   ├── 01_Attack_Techniques/       # 攻击技术分类
│   │   ├── 02_Threat_Intelligence/     # 威胁情报
│   │   ├── 03_Vulnerability_Analysis/  # 漏洞分析
│   │   └── 04_Tool_Usage/              # 工具使用指南
│   ├── 📁 01_Playbooks/                # 响应playbook
│   │   ├── 01_Phishing/                # 钓鱼响应
│   │   ├── 02_Malware/                 # 恶意软件响应
│   │   ├── 03_Data_Exfiltration/       # 数据外泄响应
│   │   └── README.md                   # Playbook 索引
│   ├── 📁 02_Monthly_Reports/         # 月报摘要
│   │   └── YYYY-MM/                    # 按年月组织
│   └── 📁 03_PO/                       # 发布命令/通告
│
├── 📁 10_Cases/                        # 案例库 - 历史case
│   ├── 📁 by_type/                     # 按类型分类
│   │   ├── Phishing/
│   │   ├── Malware/
│   │   ├── Brute_Force/
│   │   └── Data_Exfiltration/
│   ├── 📁 by_month/                   # 按月份归档
│   │   └── YYYY-MM/
│   └── 📁 by_status/                   # 按状态筛选
│       ├── Confirmed/
│       ├── False_Positive/
│       └── Pending/
│
├── 📁 20_Analysis/                    # 分析工作区
│   ├── 📁 Templates/                   # 模板
│   │   ├── Case_Note.md               # Case 笔记模板
│   │   ├── Playbook.md                # Playbook 模板
│   │   ├── Monthly_Report_Summary.md  # 月报摘要模板
│   │   └── IOC_Extraction.md          # IOC 提取模板
│   └── 📁 Inbox/                       # 待处理草稿
│
├── 📁 30_Templates/                   # 公共模板库
│
└── 📁 90_System/                       # 系统配置
    ├── 📁_Tags/                        # 标签定义
    └── 📁_Graph/                       # 双向链接配置

B. 模板设计

Case Note 模板

---
type: case_note
case_id: {{CASE_ID}}
severity: {{P1|P2|P3|P4}}
status: {{Open|Confirmed|False_Positive}}
analyst: {{ANALYST_NAME}}
created: {{YYYY-MM-DD HH:mm}}
tags: []
---

# Case: {{简短标题}}

## 告警摘要
- **告警类型**: 
- **受影响资产**: 
- **时间范围**: 

## 研判过程

### 1. 初始信息

{{告警原始内容}}


### 2. 调查步骤
- [ ] 步骤1
- [ ] 步骤2
- [ ] 步骤3

### 3. 关键发现
{{关键发现列表}}

### 4. IOC 提取
| 类型 | 值 | 置信度 |
|------|-----|--------|
| IP  |    |        |
| Domain |  |        |
| Hash |   |        |

## 结论
- **判定结果**: {{True_Positive|False_Positive|Uncertain}}
- **攻击链阶段**: 
- **相关 TTP**: 

## 关联信息
- **相关 KB**: [[]]
- **历史类似 Case**: [[]]
- **相关 Intel**: [[]]

## 后续行动
- [ ] 行动1
- [ ] 行动2

Playbook 模板

---
type: playbook
category: {{Response|Detection|Analysis}}
mitre_tactics: []
mitre_techniques: []
last_updated: {{YYYY-MM-DD}}
reviewer: {{NAME}}
---

# Playbook: {{Playbook 名称}}

## 目标
{{简述本 Playbook 适用的场景和目标}}

## 触发条件
{{什么情况下应该使用本 Playbook}}

## 前置要求
- 工具/系统依赖
- 权限要求

## 步骤

### Step 1: {{步骤名称}}
**目的**: 
**执行**:
```bash
# 命令或操作

验证:

  • 预期结果

Step 2: ...

决策点

{{决策树或流程图}}

常见问题

问题 解决方案

关联

  • 相关 Case:
  • 相关 KB:
  • 相关 Intel:

### C. 标签体系

#### 核心标签 (必须)

| 标签 | 用途 | 示例 |
|------|------|------|
| `#soc/case` | Case 笔记 | `#soc/case/2024-Q3` |
| `#soc/playbook` | Playbook | `#soc/playbook/phishing` |
| `#soc/kb` | 知识库 | `#soc/kb/cve` |
| `#soc/intel` | 威胁情报 | `#soc/intel/apt29` |

#### 维度标签 (可选)

| 标签类型 | 标签 | 用途 |
|----------|------|------|
| 严重程度 | `#severity/p1`, `#severity/p2`, `#severity/p3` | 告警分级 |
| 攻击类型 | `#attack/phishing`, `#attack/malware`, `#attack/ransomware` | 攻击分类 |
| 行业 | `#industry/finance`, `#industry/tech` | 目标行业 |
| 威胁组织 | `#apt/apt28`, `#apt/lazarus` | 威胁组织 |
| 状态 | `#status/confirmed`, `#status/fp`, `#status/pending` | Case 状态 |

### D. 双向链接建议

```markdown
# 建议的链接模式

1. Case → KB: "[[KB/CVE-2024-XXXX]] 在本案例中的表现为..."
2. Case → Case: "与 [[Cases/2024/2024-Q3-phishing-001]] 类似"
3. Playbook → KB: "基于 [[KB/mitre-tactics]] 的 Initial Access"
4. Intel → Case: "该 IOC 首次出现在 [[Cases/2024/2024-Q2-apt29-campaign]]"

E. 适合/不适合的内容

适合放入 Obsidian 不适合放入 Obsidian
人工编写的 KB/Playbook 原始日志/告警 Dump
整理后的 Case Note 全量 Ticket 记录
月报/报告摘要 实时威胁情报 Feed
分析方法论 工具执行输出
IOC 知识卡片 临时调试信息

四、Skills 设计

A. Skills 职责矩阵

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                              SOC Memory Skills 全景                                    │
├────────────────┬──────────────┬──────────────────┬─────────────────────────────────────┤
│ Skill 名称      │ 输入          │ 输出              │ 触发时机                            │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ ingest_skill   │ 原始数据      │ 标准化中间件       │ 定时/手动触发                       │
│                │ (KB/报告/ticket)│                 │                                     │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ extract_       │ 原始数据/      │ 高价值记忆碎片    │ 每次 case 结案后                     │
│ memory_skill   │ agent 过程     │ (key-value)      │ / 定时批量处理                       │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ classify_      │ 待分类记忆     │ 带分类标签的内存   │ extract_ 后自动触发                 │
│ memory_skill   │               │                   │                                     │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ retrieve_      │ 当前 case      │ 排序后的上下文     │ AI agent 研判时                     │
│ context_skill  │ 特征/查询     │ 列表               │                                     │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ summarize_     │ case 过程数据  │ 精炼的 Case Note  │ case 结案时                         │
│ case_skill     │               │                   │                                     │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ commit_        │ 分类后的记忆   │ 写入目标存储       │ 分类后自动触发                      │
│ memory_skill   │               │                   │                                     │
├────────────────┼──────────────┼──────────────────┼─────────────────────────────────────┤
│ prune_memory_  │ 记忆库        │ 清理报告/统计      │ 定时任务                            │
│ skill          │               │                   │                                     │
└────────────────┴──────────────┴──────────────────┴─────────────────────────────────────┘

B. 详细 Skill 规格

1. ingest_skill

name: ingest_skill
description: 从外部系统导入原始数据,转换为标准化中间格式

输入:
  - KB 文档 (Markdown/PDF)
  - 月报/报告 (Markdown/PDF)
  - Ticket System 导出 (JSON/CSV)
  - 历史 Case 归档 (JSON)
  - 威胁情报 (STIX/JSON)

输出:
  - 标准化中间件 (JSON)
  - 元数据 (来源、日期、类型、标签)

触发时机:
  - 手动触发: `ingest_skill --source kb --path /path/to/kb`
  - 定时触发: 每日 2:00 自动同步
  - 事件触发: 新 case 结案时

处理流程:
  1. 识别数据源类型
  2. 解析原始内容
  3. 提取结构化字段
  4. 生成唯一 ID
  5. 写入待处理队列

依赖数据源:
  - 文件系统 (本地/网络存储)
  - Ticket API
  - 情报系统 API

2. extract_memory_skill

name: extract_memory_skill
description: 从原始资料或 agent 过程里抽取高价值记忆碎片

输入:
  - 原始文档/Case 数据
  - Agent 过程日志
  - 研判对话历史

输出:
  - 高价值记忆碎片列表
    - type: knowledge | case | pattern | ioc | ttp
    - key: 记忆摘要
    - value: 详细内容
    - source: 来源
    - confidence: 置信度 0-1
    - tags: 标签

触发时机:
  - Case 结案时自动触发
  - 定时批量处理 (每小时)
  - 手动批量处理

处理流程:
  1. 加载待处理内容
  2. 调用 LLM 抽取关键信息
  3. 过滤低价值内容 (置信度 < 0.6)
  4. 输出结构化记忆碎片
  5. 发送至分类 skill

提取规则示例:
  - IOC: IP/Domain/Hash/Email
  - TTP: MITRE ATT&CK 战术/技术
  - Pattern: 攻击模式、相似特征
  - Conclusion: 研判结论、处置建议

3. classify_memory_skill

name: classify_memory_skill
description: 将记忆碎片分类到正确的记忆层

输入:
  - 未分类的记忆碎片
  - 当前分类规则配置

输出:
  - 带分类标签的记忆
    - memory_type: knowledge | case | process | profile | session
    - ttl: 短期 | 中期 | 长期
    - priority: 高 | 中 | 低
    - namespace: 对应存储路径

触发时机:
  - extract_memory_skill 完成后自动触发

处理流程:
  1. 分析记忆内容特征
  2. 匹配分类规则
  3. 估算 TTL 和优先级
  4. 分配 namespace
  5. 发送至写回 skill

分类规则:
  - knowledge: 通用知识、方法论、工具用法
  - case: 具体案例、经验总结、模式
  - process: 推理步骤、中间结果
  - profile: 配置、偏好、规范
  - session: 临时上下文、对话片段

4. retrieve_context_skill

name: retrieve_context_skill
description: 根据当前 case 检索最相关的上下文

输入:
  - 当前 case 特征
    - alert_type: 告警类型
    - iocs: 已知 IOC
    - description: 告警描述
    - severity: 严重程度
  - 检索参数
    - top_k: 返回数量
    - namespaces: 搜索范围

输出:
  - 排序后的上下文列表
    - content: 相关内容
    - relevance_score: 相关度 0-1
    - source: 来源 (ov/evermemos/obsidian)
    - memory_type: 记忆类型
    - metadata: 附加信息

触发时机:
  - AI agent 开始新 case 研判时
  - Agent 请求上下文时

检索策略:
  1. 多路召回:
     - 向量检索: 语义相似度
     - 关键词检索: 精确匹配
     - 图检索: 双向链接关系
  2. 多层筛选:
     - 按 memory_type 过滤
     - 按时间/优先级排序
     - 去重和合并
  3. 重排序:
     - 结合场景权重
     - 个性化调整

返回格式:
  - knowledge: 参考资料 1-3 条
  - case: 相似案例 2-5 条
  - ioc: 相关 IOC 1-3 条
  - ttp: 相关 TTP 1-2 条

5. summarize_case_skill

name: summarize_case_skill
description: 将 case 过程沉淀为高质量 Case Note

输入:
  - Case 元数据
  - 研判过程日志
  - Agent 对话历史
  - 提取的 IOC/TTP

输出:
  - 结构化 Case Note
  - 关联建议
  - 质量评分

触发时机:
  - Case 状态变更为 Confirmed/FP 时
  - Analyst 手动触发

处理流程:
  1. 收集 Case 相关信息
  2. 提取关键时间线
  3. 归纳 IOC/TTP
  4. 生成研判摘要
  5. 推荐关联 (KB/历史 Case)
  6. 写入 Obsidian

6. commit_memory_skill

name: commit_memory_skill
description: 将通过筛选的记忆写入目标存储

输入:
  - 已分类的记忆
  - 目标存储配置

输出:
  - 写入结果
  - 存储位置映射

触发时机:
  - classify_memory_skill 完成后自动触发
  - 批量定时提交

写入策略:
  - knowledge → Obsidian (Markdown)
  - case → Obsidian + OpenViking
  - process → EverMemOS (短期)
  - profile → OpenViking (长期)
  - session → EverMemOS (会话级)

7. prune_memory_skill

name: prune_memory_skill
description: 清理过时、重复、低价值记忆

输入:
  - 记忆库
  - 清理策略配置

输出:
  - 清理报告
  - 统计信息

触发时机:
  - 定时任务 (每周)
  - 手动触发

清理规则:
  1. TTL 过期:
     - process: 7 
     - session: 任务结束
     - case: 180 天后降级
  2. 重复合并:
     - 相似度 > 0.9 合并
     - 保留高置信度版本
  3. 价值评估:
     - 长期未访问
     - 引用计数过低

五、OpenViking 设计

A. Namespace 设计

# SOC Memory Namespace 架构

viking://soc/                        # SOC 根命名空间
├── knowledge/                       # 知识库
│   ├── kb/                         # 知识库文档
│   ├── playbook/                   # Playbook
│   └── intel/                      # 威胁情报摘要

├── cases/                           # 案例库
│   ├── 2024/                       # 按年归档
│   │   ├── Q1/
│   │   ├── Q2/
│   │   ├── Q3/
│   │   └── Q4/
│   ├── patterns/                   # 攻击模式库
│   └── iocs/                       # IOC 知识库

├── process/                         # 过程记忆
│   ├── active/                     # 当前活跃
│   └── archived/                   # 已归档

├── profiles/                        # 配置/偏好
│   ├── analysts/                   # Analyst 配置
│   │   └── {user_id}/
│   └── teams/                      # 团队配置

└── sessions/                       # 会话记忆
    └── {session_id}/

B. 资源组织

# OpenViking Resource 结构

resources:
  soc_kb:                           # SOC 知识库
    type: directory
    path: viking://soc/knowledge/
    description: KB、Playbook、Intel
  
  soc_cases:                        # 案例库
    type: directory
    path: viking://soc/cases/
    description: 历史案例和模式
  
  soc_process:                      # 过程记忆
    type: directory
    path: viking://soc/process/
    description: 研判过程临时存储

C. AI Agent 检索流程

┌─────────────────────────────────────────────────────────────────────────────────┐
│                         AI Agent 上下文检索流程                                  │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│   Agent 请求: "帮我研判这个告警"                                                 │
│                    │                                                            │
│                    ▼                                                            │
│   ┌─────────────────────────────────────────────────────────────────┐          │
│   │  retrieve_context_skill                                        │          │
│   │  - alert_type: "钓鱼邮件"                                       │          │
│   │  - iocs: ["192.168.1.1", "evil.com"]                          │          │
│   │  - severity: "P2"                                             │          │
│   └───────────────────────────┬───────────────────────────────────┘          │
│                               │                                                  │
│           ┌───────────────────┼───────────────────┐                            │
│           ▼                   ▼                   ▼                             │
│   ┌─────────────┐     ┌─────────────┐     ┌─────────────┐                      │
│   │ Vector     │     │ Keyword     │     │ Graph       │                      │
│   │ Search     │     │ Search      │     │ Search      │                      │
│   │ (语义)      │     │ (精确)       │     │ (链接)       │                      │
│   └──────┬──────┘     └──────┬──────┘     └──────┬──────┘                      │
│          │                   │                   │                              │
│          └───────────────────┼───────────────────┘                              │
│                              ▼                                                   │
│                   ┌─────────────────────────────────┐                          │
│                   │  Multi-way RRF Fusion           │                          │
│                   │  + 场景权重调整                  │                          │
│                   │  + 个性化排序                    │                          │
│                   └────────────────┬────────────────┘                          │
│                                    ▼                                           │
│                         ┌─────────────────────────────────┐                    │
│                         │   返回优先级上下文               │                    │
│                         │   - Knowledge: 1-3              │                    │
│                         │   - Case: 2-5                   │                    │
│                         │   - IOC: 1-3                    │                    │
│                         │   - TTP: 1-2                    │                    │
│                         └─────────────────────────────────┘                    │
│                                    │                                            │
│                                    ▼                                            │
│                         Context Window                                          │
└─────────────────────────────────────────────────────────────────────────────────┘

D. OpenViking 与其他组件的关系

组件 与 OpenViking 的关系
Obsidian OpenViking 读取 Obsidian 作为 resource 源
Skills 通过 OpenViking API 写入/读取记忆
EverMemOS 作为 OpenViking 的后端记忆存储
AI Agent 从 OpenViking 获取统一上下文

六、EverMemOS 设计

A. 后台长期记忆整理架构

┌──────────────────────────────────────────────────────────────────────────────────┐
│                           EverMemOS 长期记忆整理层                                │
├──────────────────────────────────────────────────────────────────────────────────┤
│                                                                                  │
│  数据输入                                                                       │
│     │                                                                          │
│     ▼                                                                          │
│  ┌──────────────────────────────────────────────────────────────────────────┐   │
│  │                        Episode Processor                                  │   │
│  │  - 从 Process Memory 提取关键事件                                          │   │
│  │  - 识别有价值的研判步骤                                                    │   │
│  │  - 标记重要结论和决策点                                                    │   │
│  └────────────────────────────┬─────────────────────────────────────────────┘   │
│                               │                                                  │
│                               ▼                                                  │
│  ┌──────────────────────────────────────────────────────────────────────────┐   │
│  │                        Memory Extractor                                   │   │
│  │  输入: 原始 episode                                                       │   │
│  │  输出: 结构化记忆碎片                                                     │   │
│  │  - fact: 事实陈述                                                         │   │
│  │  - pattern: 模式发现                                                      │   │
│  │  - conclusion: 结论                                                      │   │
│  │  - confidence: 置信度                                                    │   │
│  └────────────────────────────┬─────────────────────────────────────────────┘   │
│                               │                                                  │
│                               ▼                                                  │
│  ┌──────────────────────────────────────────────────────────────────────────┐   │
│  │                        Deduplication & Merge                               │   │
│  │  - 向量相似度检测                                                          │   │
│  │  - 语义去重                                                              │   │
│  │  - 记忆合并 (多版本合并)                                                  │   │
│  │  - 冲突解决                                                              │   │
│  └────────────────────────────┬─────────────────────────────────────────────┘   │
│                               │                                                  │
│                               ▼                                                  │
│  ┌──────────────────────────────────────────────────────────────────────────┐   │
│  │                        Evolution & Decay                                  │   │
│  │  - 访问计数跟踪                                                           │   │
│  │  - 时间衰减                                                              │   │
│  │  - 重要性重估                                                            │   │
│  │  - 低价值清理                                                            │   │
│  └────────────────────────────┬─────────────────────────────────────────────┘   │
│                               │                                                  │
│                               ▼                                                  │
│  输出                                                                          │
│     │                                                                          │
│     ▼                                                                          │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐              │
│  │  OpenViking    │    │   Obsidian      │    │   清理报告      │              │
│  │  (长期记忆)     │    │  (案例笔记)      │    │   (统计)        │              │
│  └─────────────────┘    └─────────────────┘    └─────────────────┘              │
│                                                                                  │
└──────────────────────────────────────────────────────────────────────────────────┘

B. 长期记忆抽取规则

# 记忆抽取策略

抽取目标:
  - 从 Process Memory 抽取:
    - 关键决策点
    - 重要发现
    - 有效 TTP
    - 成功/失败模式
  
  - 从 Session Memory 抽取:
    - 高价值结论
    - 常用模式
    - Analyst 偏好

保留策略:
  长期 (永久):
    - 确认的 TTP 模式
    - 有效的 Playbook
    - 重要的 IOC 知识
    - 经典 Case 总结
  
  中期 (180天):
    - 近期 Case 总结
    - 有效的分析方法
    - 团队知识更新
  
  短期 (30天):
    - Process 记忆
    - 临时分析结果
    - 中间推理步骤
  
  丢弃:
    - 重复信息
    - 低置信度内容
    - 未验证假设

去重/合并规则:
  1. 语义相似度 > 0.9: 合并
  2. 时间相近 + 内容相似: 合并
  3. 冲突内容: 保留高置信度 + 标记

C. 与 OpenViking/Obsidian 的闭环

┌─────────────────────────────────────────────────────────────────────────────┐
│                              记忆循环流动                                      │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   ┌─────────┐     ┌─────────────┐     ┌─────────────┐                       │
│   │ Process │────▶│  EverMemOS  │────▶│   Open      │                       │
│   │ Memory  │     │  (抽取/整理) │     │   Viking   │                       │
│   └─────────┘     └─────────────┘     └──────┬──────┘                       │
│                                             │                                │
│                                             ▼                                │
│                                    ┌─────────────────┐                      │
│                                    │    检索返回      │                      │
│                                    │   供 Agent 使用  │                      │
│                                    └─────────────────┘                      │
│                                             │                                │
│   ┌─────────┐     ┌─────────────┐           │                                │
│   │ Session │────▶│  Summarize  │◀──────────┘                                │
│   │ Memory  │     │  (case总结) │                                         │
│   └─────────┘     └──────┬──────┘                                         │
│                          │                                                 │
│                          ▼                                                 │
│                 ┌─────────────────┐                                        │
│                 │    Obsidian     │                                        │
│                 │   (Case Note)   │                                        │
│                 └─────────────────┘                                        │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

七、最小可行 POC 范围

A. POC 目标

聚焦场景: 钓鱼邮件告警研判

理由:

  1. 钓鱼邮件是 SOC 最常见的告警类型之一
  2. 有成熟的 KB 和 playbook 可供参考
  3. IOC 提取和模式识别相对标准化
  4. 容易评估效果 (研判时间、准确率)

B. 数据范围

数据类型 接入范围 优先级
历史 Case 最近 6 个月的钓鱼邮件 Case P0
KB 钓鱼邮件识别 KB、常见钓鱼模式 P0
Playbook 钓鱼邮件响应 Playbook P0
月报摘要 最近 4 个季度月报 P1
情报 活跃钓鱼域名/IP 情报 P1
Ticket 只接已结案的 Case P2

C. 先不做

  • 实时告警接入
  • 自动化研判闭环
  • 多语言支持
  • 移动端访问
  • 全文档 OCR 识别

D. 实施计划 (4 周)

┌────────────────────────────────────────────────────────────────────────────────┐
│                           POC 实施计划                                          │
├────────────────────────────────────────────────────────────────────────────────┤
│                                                                                │
│  Week 1: 基础搭建                                                               │
│  ├─ 搭建 Obsidian Vault 结构                                                  │
│  ├─ 设计 Case Note / Playbook 模板                                            │
│  ├─ 配置 OpenViking SOC namespace                                             │
│  ├─ 部署 EverMemOS 并验证                                                      │
│  └─ 导入 50 个历史钓鱼 Case                                                    │
│                                                                                │
│  Week 2: Skills 开发                                                           │
│  ├─ ingest_skill: KB/Case 导入                                                │
│  ├─ extract_memory_skill: IOC/TTP 抽取                                        │
│  ├─ classify_memory_skill: 分类逻辑                                           │
│  ├─ commit_memory_skill: 写入流程                                             │
│  └─ 端到端流程打通                                                              │
│                                                                                │
│  Week 3: 检索与评估                                                             │
│  ├─ retrieve_context_skill: 上下文检索                                         │
│  ├─ 多路召回实现                                                                │
│  ├─ 基础评估脚本                                                                │
│  └─ 内部测试使用                                                               │
│                                                                                │
│  Week 4: 优化与验收                                                            │
│  ├─ 检索效果调优                                                               │
│  ├─ POC 演示                                                                   │
│  ├─ 评估指标统计                                                                │
│  └─ 文档和交接                                                                  │
│                                                                                │
└────────────────────────────────────────────────────────────────────────────────┘

E. 评估指标

指标 目标值 测量方式
相关 Case 命中率 ≥ 70% 检索结果相关性标注
研判时间缩短 ≥ 30% 对比有/无辅助的时间
结论准确率 ≥ 85% 回测历史 Case 准确率
人工满意度 ≥ 4/5 Analyst 评分
记忆库质量评分 ≥ 80% 随机抽样评估

八、目录结构与工程结构

A. 推荐目录结构

soc-memory-poc/
├── 📁 obsidian_vault/                 # Obsidian Vault
│   ├── 00_Knowledge/
│   ├── 10_Cases/
│   ├── 20_Analysis/
│   └── 90_System/
│
├── 📁 skills/                         # Skills 集合
│   ├── ingest_skill/
│   │   ├── SKILL.md
│   │   ├── scripts/
│   │   │   └── ingest.py
│   │   └── configs/
│   │
│   ├── extract_memory_skill/
│   │   ├── SKILL.md
│   │   ├── scripts/
│   │   │   └── extract.py
│   │   └── prompts/
│   │       └── extraction.md
│   │
│   ├── classify_memory_skill/
│   ├── retrieve_context_skill/
│   ├── summarize_case_skill/
│   ├── commit_memory_skill/
│   └── prune_memory_skill/
│
├── 📁 openviking_integration/         # OpenViking 集成
│   ├── namespace_config.yaml
│   ├── resource_config.yaml
│   └── scripts/
│       └── sync_resources.py
│
├── 📁 evermemos_worker/               # EverMemOS 后台任务
│   ├── config.yaml
│   ├── extract_worker.py
│   ├── dedup_worker.py
│   ├── decay_worker.py
│   └── requirements.txt
│
├── 📁 ingestion_pipeline/              # 数据接入管道
│   ├── kb_ingester.py
│   ├── case_ingester.py
│   ├── ticket_connector.py
│   └── intel_connector.py
│
├── 📁 retrieval_service/              # 检索服务
│   ├── api.py
│   ├── ranker.py
│   ├── multi_way_merge.py
│   └── requirements.txt
│
├── 📁 evaluation/                     # 评估脚本
│   ├── hit_rate_test.py
│   ├── time_measurement.py
│   ├── accuracy_test.py
│   └── synthetic_data/
│
├── 📁 configs/                        # 全局配置
│   ├── soc_memory_config.yaml
│   ├── namespaces.yaml
│   └── template_config.yaml
│
└── 📁 docs/                           # 文档
    ├── ARCHITECTURE.md
    ├── SKILLS_API.md
    ├── POC_PLAN.md
    └── USER_GUIDE.md

B. 核心文件说明

# 目录与文件映射

soc-memory-poc/
├── obsidian_vault/                    # 人工维护的知识库
│   └── 00_Knowledge/                  # 静态知识

├── skills/                            # 记忆流程自动化
│   ├── retrieve_context_skill/        # 检索入口 (Agent 调用)
│   ├── commit_memory_skill/           # 写入入口
│   └── ...其他 skill

├── openviking_integration/             # OpenViking 适配层
│   └── namespace_config.yaml           # namespace 定义

├── evermemos_worker/                  # 后台整理任务
│   └── extract_worker.py              # 从 process 抽取

├── retrieval_service/                 # 检索服务
│   └── api.py                         # 对外 API

└── evaluation/                        # 评估
    └── hit_rate_test.py              # 命中率测试

九、为什么选择这个组合

A. 组合逻辑

┌─────────────────────────────────────────────────────────────────────────────┐
│                        组件选择理由                                          │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Obsidian                                                                      │
│  ├─ 人工可维护: 分析师可直接编辑 KB/Playbook/Case Note                        │
│  ├─ 双向链接: 天然支持知识间的关联发现                                        │
│  └─ 模板系统: 规范 Case Note 和 Playbook 格式                               │
│                                                                             │
│  OpenViking                                                                   │
│  ├─ 统一入口: 所有 Agent 通过 OpenViking 获取上下文                         │
│  ├─ 多模存储: 支持文件、资源、技能等多种形式                                  │
│  └─ 检索能力: 内置向量/关键词/图检索                                         │
│                                                                             │
│  EverMemOS                                                                     │
│  ├─ 后台整理: 自动从过程记忆中抽取有价值内容                                  │
│  ├─ 去重合并: 避免记忆库膨胀                                                 │
│  └─ 衰减机制: 自动清理低价值记忆                                             │
│                                                                             │
│  Skills                                                                        │
│  ├─ 流程编排: 连接各组件形成完整工作流                                        │
│  ├─ 可插拔: 不同 Agent 框架可复用                                           │
│  └─ 可扩展: 方便添加新的处理逻辑                                             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

B. 核心优势

  1. 避免"全量存储": 通过 skills 层层筛选 + EverMemOS 自动清理
  2. 高质量记忆: 只保留对研判有帮助的内容
  3. 模块化: 各组件松耦合,方便替换
  4. 可扩展: POC 成功后容易扩展到其他告警类型
  5. 人工可维护: 分析师可以参与知识沉淀

十、落地顺序建议

推荐顺序

1⃣  Week 1: 先搭建 Obsidian + 导入历史 Case
      - 最快看到价值
      - 验证模板和标签体系
      
2⃣  Week 2: 部署 OpenViking + 配置 namespace
      - 建立统一入口
      - 打通检索流程
      
3⃣  Week 3: 开发核心 Skills (ingest/extract/commit)
      - 实现自动化流程
      - 端到端打通
      
4⃣  Week 4: 部署 EverMemOS + 实现检索
      - 后台整理能力
      - 评估效果

关键里程碑

里程碑 验收标准
Week 1 Obsidian 可用 50 个 Case 导入完成
Week 2 OpenViking 可检索 关键词检索正常工作
Week 3 Skills 端到端 自动化流程跑通
Week 4 POC 完成 命中率 ≥ 70%

文档版本: v1.0 创建日期: 2026-04-20 目标: 4 周 POC 落地