Files
aiagent/docs/agent-memory-comparison.md
renjianbo 7f4aeb021b fix: Feishu channel agents file_write permission blocked + memory system tests & docs
- Fix 8 Feishu agent handlers to use permission_level="acceptEdits" so file_write
  tool works without Web UI approval popup (lingxi/renshenguo/suyao/tiantian/orange/main/schedule)
- Add P5-P7 memory improvements: offline keyword fallback, team sharing, file-based memory
- Add auto_dream_service for daily memory consolidation
- Add 99 memory system test cases (basic 18 + advanced 43 + pytest 38)
- Add platform capability assessment report and unfinished project checklist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-14 20:35:12 +08:00

14 KiB
Raw Blame History

Agent 记忆系统对比:天工平台 vs Claude Code

最后更新2026-06-14


一、天工平台记忆架构

1.1 概览

┌─────────────────────────────────────────────────────────┐
│                    天工 Agent 记忆栈                      │
├─────────────────────────────────────────────────────────┤
│  三层记忆                                                 │
│  ┌─────────────┐  ┌──────────────┐  ┌────────────────┐  │
│  │  压缩记忆    │  │  向量语义记忆 │  │  自主学习模式   │  │
│  │ (Compaction) │  │ (Vector Mem) │  │ (Learning)     │  │
│  └──────┬──────┘  └──────┬───────┘  └───────┬────────┘  │
│         │                │                   │           │
│   LLM 摘要压缩      BGE-M3 Embedding    LLM 模式提取     │
│   三级策略触发      余弦相似度检索      工具调用学习      │
│         │                │                   │           │
│  ┌──────┴──────┐  ┌─────┴──────┐  ┌───────┴────────┐  │
│  │ persistent  │  │ AgentVector │  │ learning       │  │
│  │ _memory     │  │ Memory 表   │  │ _patterns 表   │  │
│  │ (JSON blob) │  │ (向量+元数据)│  │ (模式+频率)    │  │
│  └─────────────┘  └────────────┘  └────────────────┘  │
└─────────────────────────────────────────────────────────┘

1.2 三层记忆详解

压缩记忆 (Compaction Memory)

级别 触发条件 机制 效果
MicroCompact 窗口 70% 旧工具结果替换为桩标记 回收 30-50% token
FullCompact 窗口 85% LLM 摘要替换旧对话片段 进一步压缩
ReactiveCompact 窗口 95% API 报错后被动触发 最终兜底
  • 熔断保护:连续压缩失败 3 次自动停止
  • 受保护工具14 个):file_write, send_email, deploy_push 等绝不压缩
  • 配置:CompactionConfig 可单独设定各阈值

向量语义记忆 (Vector Semantic Memory)

  • Embedding 模型: BAAI/bge-m3 (1024 维, 8192 token)
  • 后端: SiliconFlow (国内直连)
  • 存储: MySQL agent_vector_memory
  • 检索: 余弦相似度 + LLM Rerank可选
  • 类型分类: user / feedback / project / reference
  • 配置: vector_memory_enabled, vector_memory_top_k, vector_memory_rerank

最近 50 条记忆参与相似度计算,语义检索 top-5 注入 system prompt。

自主学习模式 (Learning Patterns)

  • 从工具调用序列中提取使用模式
  • 记录调用成功率和参数偏好
  • 存储到 learning_patterns
  • 后续类似任务时注入匹配模式

1.3 记忆生命周期

用户发消息
  │
  ├─→ AgentMemory.initialize(query)
  │     ├─ 加载 persistent_memory (JSON blob: 用户画像+上下文+历史摘要)
  │     ├─ 向量检索 AgentVectorMemory (按 query 语义相似度)
  │     └─ 全局知识库检索 GlobalKnowledge
  │
  ├─→ Agent 执行对话...
  │
  └─→ AgentMemory.save_context()
        ├─ _compress_and_summarize() (LLM 提取 user_profile/key_facts/summary/topics)
        ├─ save_persistent_memory() (写入 MySQL persistent_memory 表)
        ├─ _save_vector_memory() (embedding → agent_vector_memory 表)
        └─ _save_compressed_memories() (摘要向量化写入P1 新增)

1.4 记忆配置 (AgentMemoryConfig)

配置项 默认值 说明
max_history_messages 20 注入 LLM 上下文的最大消息数
persist_to_db true 会话记忆写入 MySQL
vector_memory_enabled true 向量语义检索
vector_memory_top_k 5 每次检索返回 top 5
vector_memory_rerank false LLM Rerank 精选
memory_type_filter null 按类型过滤 (如 ["user","project"])
learning_enabled true 自主学习模式
compaction null CompactionConfig 配置

二、Claude Code 记忆架构

2.1 概览

┌──────────────────────────────────────────────────────────┐
│                  Claude Code 记忆栈                        │
├──────────────────────────────────────────────────────────┤
│  五层文件记忆 + 三个后台进程                                │
│                                                           │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐ │
│  │CLAUDE.md │  │   Auto   │  │  Team    │  │  Agent   │ │
│  │ 项目指令  │  │  Memory  │  │  Memory  │  │  Memory  │ │
│  └──────────┘  └────┬─────┘  └────┬─────┘  └──────────┘ │
│                      │             │                      │
│               MEMORY.md       memory/team/                │
│               + topic/*.md    push/pull sync              │
│                      │                                   │
│  ┌───────────────────┴──────────────────────────────┐   │
│  │           Session Memory (当前会话笔记)             │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  后台进程:                                                │
│  ┌────────────────┐  ┌──────────────┐  ┌─────────────┐  │
│  │ Extract        │  │  Auto Dream  │  │ Kairos Daily│  │
│  │ Memories       │  │  夜间整合    │  │  Log Mode   │  │
│  │ (每轮对话后)    │  │ (24h+5会话)  │  │ (append日记) │  │
│  └────────────────┘  └──────────────┘  └─────────────┘  │
└──────────────────────────────────────────────────────────┘

2.2 五层文件记忆

Layer 1: CLAUDE.md 项目指令

  • 启动时加载四层优先级Managed → User → Project → Local
  • 支持 @include 指令组合文件
  • 支持 glob 条件规则 (paths: 在 YAML frontmatter)
  • 最大 40,000 字符/文件

Layer 2: Auto Memory (自动化持久记忆)

  • 存储位置:~/.claude/projects/<project>/memory/
  • 四类记忆:user / feedback / project / reference
  • 两步保存:(1) 写 .md 文件 (含 frontmatter) → (2) 追加索引到 MEMORY.md
  • MEMORY.md 上限 200 行 / 25KB

Layer 3: Team Memory (团队共享)

  • memory/team/ 子目录,独立 MEMORY.md 索引
  • push/pull 同步机制watcher 监听文件变化 → debounce → push 到服务器
  • 路径遍历防护symlink 解析、realpath 容器检查

Layer 4: Agent Memory (Agent 专属)

  • 用户/项目/本地三种 scope
  • Agent 创建向导中配置

Layer 5: Session Memory (会话笔记)

  • 当前对话的运行中笔记
  • token 计数阈值 + 工具调用阈值触发更新
  • GrowthBook 特性开关控制

2.3 三个后台进程

Extract Memories每轮对话后

  • 对话结束后 fork 子 Agent共享父级 prompt cache零成本上下文
  • 只读搜索 + 仅可写 memory 目录(沙箱隔离)
  • 上限 5 轮防止无限循环

Auto Dream夜间整合

  • 触发条件:(1) ≥ 24h 距上次整合 (2) ≥ 5 次新会话 (3) 获取锁
  • 回顾会话 transcript提炼为 topic 文件 + 更新 MEMORY.md

Kairos Daily Log Mode日记模式

  • 长运行 Assistant 会话append-only 日期日志
  • 夜间 /dream 技能提炼日志为结构化记忆

2.4 记忆检索LLM 分类器(非向量搜索)

用户提问
  │
  ├─→ 扫描所有记忆文件的 frontmatter (name + description)
  ├─→ 格式化 manifest → 发送给 Sonnet 模型
  ├─→ Sonnet 选最相关 5 个文件
  └─→ 选中文件内容注入上下文

没有 Embedding, 没有向量数据库,纯 LLM 判断 + 文件系统。

三、核心差异对比

3.1 架构理念

维度 天工平台 Claude Code
设计哲学 传统 RAG + Agent 文件系统 + LLM 原生
记忆存储 MySQL 数据库 Markdown 文件
检索方式 向量相似度 + LLM Rerank LLM 读 frontmatter 选文件
记忆写入 对话中同步,结构化 后台子 Agent 异步,自由文本
分类体系 关键词推断 4 类 4 类显式标注
记忆整合 无(实时覆盖) Auto Dream 夜间去重合并
外部依赖 Embedding API (SiliconFlow)
离线可用

3.2 能力矩阵

能力 天工 Claude Code 说明
对话压缩 天工三级策略更细粒度
向量语义检索 天工专属优势
LLM Rerank 检索 天工可选Claude Code 必选
自动记忆提取 Claude Code 子 Agent 更智能
夜间记忆整合 天工 Auto Dream 已实现
记忆类型分类 均支持 4 类
后台异步提取 天工已改为 fire-and-forget
团队共享记忆 Claude Code 独有
记忆去重 天工 GlobalKnowledge 去重
全局知识池 天工独有
自主学习模式 天工独有
记忆规模上限 百万级 ~200 条 天工向量搜索更具扩展性
单次检索成本 几乎免费 1 次 LLM 调用 天工更经济

3.3 优缺点对比

天工平台

优点 缺点
向量搜索毫秒级响应,可扩展百万级记忆 离线关键词匹配精度弱于语义搜索
LLM Rerank + 向量混合检索,精度高
全局知识池跨 Agent 共享 + 去重
后台异步压缩 + Auto Dream 每日整合
文件式记忆 (MEMORY.md) 离线兜底
自主学习从工具调用中提取模式
三级对话压缩 + 熔断保护
4 类记忆分类 + 关键词自动推断
团队共享记忆 + 跨 Agent 知识池

Claude Code

优点 缺点
零外部依赖,完全离线可用 检索每次调 LLM成本高速度慢
子 Agent 后台提取记忆,不影响主对话 记忆上限受 manifest 长度限制 (~200 条)
夜间自动整合去重,记忆质量持续提升 无向量搜索,长尾记忆可能漏
团队共享记忆,多用户协同 无全局知识池,跨项目知识难复用
自由文本格式,记忆表达灵活 文件管理无结构化查询能力

四、天工借鉴 Claude Code 已实施改进

优先级 改进 状态 说明
P0 记忆分类体系 user/feedback/project/reference 4 类 + 关键词推断
P1 压缩摘要向量化 _save_compressed_memories(),压缩结果注入向量索引
P2 LLM Rerank 混合检索 向量粗筛 top-20 → LLM 精选 top-K可选开关
P3 后台异步记忆提取 _background_compress_and_save() fire-and-forget不阻塞对话
P4 Auto Dream 每日整合 凌晨 3:00 触发,合并相似记忆 + 生成每日摘要
P5 离线鲁棒性 关键词分词器 + 离线搜索降级Embedding API 不可用时自动兜底
P6 团队共享记忆 team_id 机制,记忆自动发布到团队池 + 跨 Agent 检索
P7 文件式记忆 MEMORY.md 本地 markdown 存储YAML frontmatter数据库不可用时可独立运行

后续可借鉴

  • push/pull 同步:团队记忆的跨服务器同步(目前本地共享)
  • 子 Agent 记忆提取fork 独立 Agent 做更深度的记忆分析和关联

五、相关文件

文件 说明
backend/app/agent_runtime/memory.py 天工记忆管理核心(~720 行)
backend/app/agent_runtime/schemas.py 记忆配置模型
backend/app/services/embedding_service.py Embedding 生成 + 离线关键词兜底
backend/app/services/auto_dream_service.py Auto Dream 每日记忆整合(新增)
backend/app/core/compaction.py 三级对话压缩引擎
D:\cd\claude-code\src\memdir\memdir.ts Claude Code 记忆目录管理
D:\cd\claude-code\src\services\extractMemories\ Claude Code 后台记忆提取
D:\cd\claude-code\src\services\autoDream\ Claude Code 夜间记忆整合