| 项目 | 记忆层级 | 短期记忆 | 长期记忆 | 检索方式 | 自进化 |
|---|---|---|---|---|---|
| Aider | L1-L3 | Chat history | .aider.chat.history.md | 全文 | ❌ |
| SWE-agent | L1 | Shell 输出历史 | ❌ | N/A | ❌ |
| OpenHands | L1-L2 | Events | Condenser (LLM摘要) | 摘要 | ❌ |
| Codex CLI | L0-L1 | Thread + Turn | ❌ | N/A | ❌ |
| Goose | L1-L2 | Session + Auto-Compaction | ❌ | LLM摘要 (80%阈值) | ❌ |
| AutoGPT | L3-L4 | 对话 | JSON文件 + ChromaDB/Pinecone | 向量检索 | ❌ |
| MetaGPT | L3 | Environment messages | LongTermMemory | 时间序 | ❌ |
| Agent Zero | L5 | 对话 | 层次化记忆 (方案库) | 语义检索 | ✅ |
| AutoGen | L1-L2 | ListChatMemory | 上下文变量 | 全文 | ❌ |
| CrewAI | L3-L4 | Short-term | Long-term + Entity Memory | Embedding | ❌ |
| LangGraph | L2 | State dict | Checkpointing (可回溯) | State key | ❌ |
| PydanticAI | L0-L1 | Message history | ❌ (用户实现) | N/A | ❌ |
| Agno | L3-L4 | Session | AgentMemory + Knowledge | Embedding | ❌ |
| Google ADK | L2-L3 | Session state | SessionService | State key | ❌ |
| Smolagents | L0-L1 | Step history | ❌ | N/A | ❌ |
| CAMEL | L3-L4 | ChatRecordMemory | LongTermMemory + Knowledge Graph | 向量 + 图 | ❌ |
| Browser Use | L1 | Step history + DOM | ❌ | N/A | ❌ |
| GPT Researcher | L3-L4 | Research context | Vector store (RAG) | 向量检索 | ❌ |
Agent Zero 的记忆系统是所有项目中最具创新性的:
核心机制: 1. 每次成功解决问题后,自动提取"解决方案片段" 2. 存入层次化记忆文件 (memory/目录) 3. 新任务来时: embedding 检索相关历史方案 4. 注入到上下文: "以下过去解决类似问题的方法可能有用:..." 5. 效果: Agent 越用越聪明,形成"经验库" 记忆层次: ├── 0级: 当前对话上下文 (实时) ├── 1级: 同一 session 的历史步骤 (当前任务) ├── 2级: 过去 session 的解决方案 (跨任务) └── 3级: 提炼的通用方法论 (跨领域)
启示: 记忆不应只是"存储",而应是"学习"。Agent 应该从成功和失败中提取可复用的知识。
OpenHands 不存长期记忆,但对短期记忆的管理很精细:
Condenser 策略: 1. ObservationMaskingCondenser - 屏蔽旧的工具输出细节 2. LLMCondenser - 用 LLM 生成摘要替换旧消息 3. RecentEventsCondenser - 只保留最近 N 条 关键洞察: 工具输出通常很冗长(如 ls 输出数百行), 但 LLM 只需要知道"操作成功"或"文件列表如下"。 智能压缩可以在不丢失关键信息的情况下大幅减少 token。
Aider 不用传统记忆,而是用 tree-sitter 做智能上下文选择:
RepoMap 机制: 1. tree-sitter 解析整个代码库 → 生成 AST 2. 提取所有函数/类签名 (不含实现体) 3. 根据 chat history 中提到的符号,决定哪些签名相关 4. 只注入相关的签名到系统提示词 效果: 10万行代码库,只注入 ~5000 字符的关键签名 信息密度极高,是 "记忆" 的另一种形态。