File size: 8,313 Bytes
c2179b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142f325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e86050
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142f325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c2179b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
---
language:
  - zh
  - en
license: gpl-3.0
tags:
  - agent
  - kv-cache
  - compression
  - memory-management
  - deepseek
  - autonomous-agent
---

# AgentFrame v2 — 自主记忆 Agent 框架

**脑 = DeepSeek · 手 = 工具执行 · 记忆 = 模型自主管理**

> v2 核心升级: **MemoryDirector 自主记忆** — 模型自己决定记什么、忘什么
> 存储层仍保持 35.6x KV 压缩 (吸收式 MLA + INT4, L40S 实测)

---

## 🆕 v2 新特性: 模型自主记忆 (MemoryDirector)

传统 KV 压缩靠**数值启发式**驱逐 (L2范数/Δh/注意力入度) — 全部被反例证伪, 因为它们不懂语义。
v2 让 **LLM 自己当驱逐决策器**: 每轮对话后分析"什么值得记, 什么该撇了"。

### 实测效果

| 输入 | 模型决策 | 正确性 |
|------|---------|--------|
| 域名+密码+路径+闲聊 | ✅ 记域名/路径, **拒绝记密码**, 忘天气 | 100% |
| 重申已有信息 | ✅ 去重, 0 条重复入库 | 100% |
| 纯闲聊 | ✅ 全忘, 不浪费缓存 | 100% |

**惊喜**: 模型自主涌现安全意识 — "密码不宜存储", 拒绝把密码写入记忆 (非硬编码规则)。

### 压缩比 (三层叠加)

```
输入对话 67 tokens (4条关键信息 + 2条闲聊)
  ↓ ① 语义蒸馏 (自主记忆): 3.2x   模型剔除闲聊, 只留关键
  ↓ ② KV 物理压缩 (MLA+INT4): 35.6x  270KB→7.6KB/token (L40S实测)
  ↓ ③ 总压缩: ~113x (17.7MB → 159KB)
```

## 🧠 语义压缩 vs 物理压缩 (双轨压缩体系)

AgentFrame 的压缩不是单一技术, 而是**两个正交维度的叠加** — 一个管「内容」, 一个管「体积」:

| 维度 | 语义压缩 (MemoryDirector) | 物理压缩 (AbsorbedMLA) |
|------|--------------------------|------------------------|
| **管什么** | 哪些 token 值得留 | 留下的 token 怎么存得小 |
| **机制** | LLM 语义判断驱逐 | 576维潜在向量 + INT4 |
| **决策者** | DeepSeek (懂语义) | 量化器 (确定性) |
| **压缩比** | **~3.2x** (闲聊剔除) | **35.6x** (270KB→7.6KB) |
| **失败历史** | 数值启发式全被证伪 | 浮点精度经 Top-K 保护 |
| **能否叠加** | 正交, 相乘 | 正交, 相乘 |

### 为什么物理压缩管不了「内容」

物理压缩 (INT4/INT8/低秩) 只能把每个 token 的字节数变小, 但**闲聊 token 本身就该删** — "今天天气不错" 压缩 35 倍依然是垃圾。

语义压缩在源头解决问题: **模型判断这段对话值不值得存**, 从根上减少 token 数量。两者相乘才是真正的总压缩。

### 相乘的本质 (100 Token 例子)

**语义压缩 (3.2x) — 砍的是数量**: 原本要存 100 个 Token 的上下文, LLM 判断后只保留 31 个。这是**内容层面的筛选****物理压缩 (35.6x) — 砍的是体积**: 这 31 个 Token 的 KV Cache, 原本占 270KB, 通过 INT4 量化 + MLA, 硬塞进 7.6KB。这是**存储层面的瘦身****相乘**: 原本存 100 个 Token 要占 `100 × 270KB = 27MB`, 现在只存 `31 × 7.6KB ≈ 235KB` — 算下来确实是 **~115 倍**```
100 tokens × 270KB = 27MB   (原始)
      ↓ 语义压缩 3.2x (砍数量: 100 → 31)
31 tokens × 270KB = 8.4MB   (内容筛选后)
      ↓ 物理压缩 35.6x (砍体积: 270KB → 7.6KB)
31 tokens × 7.6KB ≈ 235KB   (存储瘦身后)
      = ~115x 总压缩
```

### 实测数据 (真实决策)

输入一段 67 token 的对话 (含 4 条关键信息 + 2 条闲聊):

```
用户: 我的生产服务器是 98.142.241.130,SSH 端口 44123。
      项目代码在 /root/.openclaw/workspace,数据库 MySQL 库名 ljsys_db。
      今天天气不错,中午吃了面。
```

MemoryDirector 的决策:

```json
{
  "remember": [
    "生产服务器IP: 98.142.241.130",
    "SSH端口: 44123",
    "项目代码路径: /root/.openclaw/workspace",
    "MySQL数据库名: ljsys_db"
  ],
  "forget": ["今天天气不错", "中午吃了面"],
  "promote_importance": 0.8
}
```

| 指标 | 数值 | 说明 |
|------|------|------|
| 输入 | 67 tokens | 含关键信息+闲聊 |
| 语义保留 | 21 tokens | 4 条关键信息 |
| **语义压缩** | **3.2x** | 闲聊被模型自动剔除 |
| 物理压缩 | 35.6x | 270KB→7.6KB/token |
| **总压缩** | **~113x** | 17.7MB → 159KB |

### 语义压缩的安全意识 (意外收获)

实测中模型**自主拒绝记录密码**:

> "密码不宜存储" — 模型自主涌现安全意识 (非硬编码规则)

| 场景 | 模型决策 | 正确性 |
|------|---------|--------|
| 域名+密码+路径+闲聊 | ✅ 记域名/路径, 拒绝记密码, 忘天气 | 100% |
| 重申已有信息 | ✅ 去重, 0 条重复入库 | 100% |
| 纯闲聊 | ✅ 全忘, 不浪费缓存 | 100% |

### 与物理压缩的叠加公式

```
总压缩 = 语义压缩 × 物理压缩
       = (输入token / 保留token) × (原始字节 / 压缩字节)
       ≈ 3.2 × 35.6
       ≈ 113x
```

**结论**: 物理压缩是「省空间的放大器」, 语义压缩是「减内容的过滤器」 — 先滤后压, 缺一不可。

## 🏗️ 架构

```
┌─────────────────────────────────────────────┐
│             ContextEngine 引擎               │
│  ┌────────┐ ┌──────────┐ ┌────────┐ ┌─────┐ │
│  │L1 认知  │→│L2 路由    │→│L3 存储  │→│L4 物理│ │
│  │MetaCog │ │Landmark  │ │Absorbed│ │Pager│ │
│  │任务分解 │ │检索top-k  │ │MLA压缩  │ │换页  │ │
│  └────────┘ └──────────┘ └────────┘ └─────┘ │
│         ↕           ↕           ↕        ↕  │
│  ┌───────────────────────────────────────┐   │
│  │  MemoryDirector (v2): 模型自主记/忘     │   │
│  │  LLM Provider (DeepSeek, thinking+工具) │   │
│  │  Embedding (哈希/API, 文本→向量)         │   │
│  └───────────────────────────────────────┘   │
└─────────────────────────────────────────────┘
```

## 🚀 快速开始

```bash
pip install -e agentframe/
export AGENTFRAME_API_KEY="sk-xxx"
```

### CLI
```bash
python3 -m agentframe.cli demo                  # 离线演示
python3 -m agentframe.cli ingest "知识" --tags kv
python3 -m agentframe.cli ask "问题"
```

### Python
```python
from agentframe.config import AgentFrameConfig
from agentframe.core.engine import ContextEngine

eng = ContextEngine(AgentFrameConfig.from_env())
r = eng.ask_autopilot("我的服务器 IP 是 98.142.241.130, SSH 端口 44123")
print(r.meta["memory_decision"])   # 自主记忆决策: 记住/遗忘/重要性
```

### REST API
```bash
python3 -m agentframe.api.server 8090
# POST /v1/sessions
# POST /v1/sessions/<sid>/ask         查询
# POST /v1/sessions/<sid>/autopilot   自主记忆决策
# POST /v1/sessions/<sid>/ingest      摄入
# POST /v1/sessions/<sid>/forget      遗忘
```

## 📁 结构

```
agentframe/
├── config.py          # 配置 (env/JSON)
├── core/
│   ├── quad.py        # 四层核心 (KV压缩/分层/路由/遗忘)
│   └── engine.py      # ContextEngine + MemoryDirector
├── llm/               # DeepSeek Provider (thinking+工具循环)
├── embed/             # 哈希/API 嵌入
├── memory/            # JSON 快照持久化
├── api/               # REST API v1
└── cli.py             # 命令行
```

## 🔬 底层技术 (实测)

1. **吸收式 MLA**: 576维潜在向量, 270KB→7.6KB/token = **35.6x** (L40S)
2. **Top-K 精度保护**: 关键块16bit+其余4bit = **0/100翻转**
3. **Sector-Block-Module**: 16/256/1024 分层硬件对齐
4. **Aura 遗忘曲线**: S(t)=I·2^(-t/τ) + log2(access+1)×0.1
5. **MemoryDirector**: LLM 语义判断驱逐 (替代被证伪的数值启发式)

## 📜 License

GPL-3.0 © Cloud LTE Studio

*AgentFrame v2 · 模型自主记忆 · 上下文永不丢失*