Memory Judge:写入决策链
每一次写入请求,都经过三阶段串行决策。阶段顺序固定,不可跳过。
决策链架构
写入请求
│
▼
┌─────────────────────┐
│ Stage 1: Hard Guards │ ← 硬规则,确定性,LLM 无法覆盖
└─────────────────────┘
│ 通过
▼
┌─────────────────────┐
│ Stage 2: LLM Judge │ ← 语义判断,结构化 JSON 输出
└─────────────────────┘
│ 通过 / 失败自动兜底
▼
┌─────────────────────┐
│ Stage 3: Rule Fallback│ ← 管理员可配置的规则表
└─────────────────────┘
│
▼
写入存储
Stage 1:硬规则守卫
以下情况直接拒绝,不进入后续阶段:
| 规则 | 说明 |
|---|---|
| 内容为空 | content 空字符串或纯空白 |
| 内容过长 | 超过配置的最大长度(默认 5000 字符) |
| 敏感内容 | 命中敏感词列表(管理员可配置) |
| 频率超限 | 同一 Agent 写入频率超过阈值 |
这些规则是确定性的,不受 LLM 输出影响。
Stage 2:LLM Judge
LLM 接收内容,输出结构化 JSON:
{
"shouldStore": true,
"targetLayer": "stable",
"confidence": 0.87,
"reason": "这是一条跨会话稳定的项目规范",
"suggestedType": "project_rule",
"suggestedImportance": 0.8,
"semanticKey": "api-response-format"
}
阈值控制:
confidence < 0.5:自动降级到 Stage 3- LLM 调用失败:自动降级到 Stage 3
- 响应格式错误:自动降级到 Stage 3
LLM 是建议者,不是决策者
LLM Judge 的输出是推荐,最终决策还是由系统规则和管理员配置决定。关闭 LLM Judge(MEMORY_JUDGE_LLM_ENABLED=false)不影响基础写入功能。
Stage 3:规则兜底
从管理员配置的规则表(judge_rules)按优先级匹配:
规则匹配逻辑:
1. 关键词匹配(精确 / 正则)
2. memoryType 推断
3. importance 默认值
4. semantic_key 推断
配置参考
# 启用 LLM Judge
MEMORY_JUDGE_LLM_ENABLED=true
MEMORY_LLM_API_KEY=sk-...
MEMORY_LLM_MODEL=gpt-4o-mini
MEMORY_LLM_BASE_URL=https://api.openai.com/v1
# 置信度阈值(低于此值降级到规则兜底)
MEMORY_JUDGE_CONFIDENCE_THRESHOLD=0.5
# 单次 LLM 调用超时(ms)
MEMORY_JUDGE_TIMEOUT_MS=5000