持久化记忆系统
Ante 拥有持久化记忆机制,使智能体能够跨会话沉淀经验与知识。关键认知、架构模式和经验教训会保存在记忆文件中,并在未来的会话启动时自动注入系统提示词。
工作机制
每个项目在 ~/.ante/projects/<project-id>/memory/ 拥有独立的记忆目录(<project-id> 为项目绝对路径的规范化清理形式)。核心文件为 MEMORY.md —— 其内容会在每次会话开始时注入系统提示词。
自动记忆在交互式 TUI 中默认开启,在无头 -p 运行中默认关闭。可通过 --enable-auto-memory 显式开启无头模式记忆,或通过 --disable-auto-memory 为 TUI 会话关闭记忆。若要持久化保存,请在 settings.json 中配置 auto_memory。
自动化行为
智能体在项目工作过程中会自动:
- 查阅 已有记忆文件以复用此前探索出的经验
- 记录 遇到的常见错误或实用模式
- 更新 或清理已过时或被证伪的历史记忆
MEMORY.md 主记忆文件
主记忆索引文件。最多注入系统提示词前 200 行或 25 KB 内容(超出时会追加截断说明)。建议保持精炼 —— 链接到单独的主题文件以获取详细信息。
# 项目常用模式
- 所有可能失败的函数均返回 `anyhow::Result`
- 单元测试写在与源码同级的 `#[cfg(test)]` 模块中
- 常见问题排查参见 [debugging.md](debugging.md)
# 已知问题
- 鉴权模块正在进行重构 (见 Issue #123)
主题文件
对于详细记录,可创建单独文件并在 MEMORY.md 中引用它们:
memory/
├── MEMORY.md # 主文件(自动加载,最多 200 行)
├── debugging.md # 详细调试排错笔记
├── patterns.md # 代码模式与规范约定
└── architecture.md # 架构设计决策
记忆类型
开启自动记忆后,智能体会保存带有**结构化类型(typed)**的记忆 —— 每个主题文件带有 name、description 和 type Frontmatter 元数据,方便未来会话判断相关性。包含四种类型:
| 类型 | 记录内容 |
|---|---|
user | 用户的角色、专业背景、目标与习惯偏好 —— 以便为其量身定制解释深度与默认行为。 |
feedback | 在本项目中的工作指导规范,提炼自纠偏与用户确认。以规则开头,随后附带 Why(原因)和 How to apply(适用范围)行。 |
project | 无法直接从代码或 Git 历史推导的进行中任务、设计决策或架构约束。采用相同的 Why / How to apply 结构;相对日期记录为绝对日期。 |
reference | 外部系统(Linear 项目、Grafana 看板、Slack 频道)的事实索引指针。 |
结构化主题记忆文件示例:
---
name: bundle-refactors
description: 在该模块中进行重构时倾向于合并为单个 PR
type: feedback
---
在此区域进行多文件重构时,优先提交单个聚合 PR 而非拆散。
**Why:** 用户明确确认过该做法 —— 属于已验证的正向反馈,而非纠偏。
**How to apply:** 涉及该业务区域的多文件重构任务。
智能体绝不会保存敏感密钥、进行中的临时任务状态,或本就可直接从代码库中重新读取的常规信息(代码结构、文件路径、代码规范 —— 这些应归入 AGENTS.md)。唤起的记忆被视为反映过去时刻的背景上下文,因此智能体在采取行动前会重新核实记忆中提及的任何文件、参数或函数。
指导原则
记忆系统遵循以下设计原则:
- 精炼 —
MEMORY.md在 200 行后会被截断,因此请保持精简 - 按语义组织 — 按主题分类,而非按时间顺序流水账
- 准确有效 — 及时更新或清理过时信息
- 具备可操作性 — 记录哪些有效、哪些无效以及原因
导入 Claude Code 历史记忆
运行 /import-claude 可将当前目录下 Claude Code 的项目记忆(~/.claude/projects/<project-dir>/memory/ 下的顶层 .md 文件)自动复制导入至 Ante 的项目记忆库中。已有 Ante 文件绝不会被覆盖,因此重复运行属于安全的无操作(no-op)。命令会输出哪些文件已导入、哪些文件因已存在而跳过。
记忆按项目隔离
记忆严格按项目目录划分作用域。不同项目拥有独立的记忆目录。这意味着智能体在 React 前端项目中积累的知识不会干扰其在 Rust 后端项目中的认知。
手动编辑记忆
您可以直接手动编辑记忆文件 —— 它们是普通的 Markdown 文件。智能体在会话中也可以通过 Write 和 Edit 工具更新它们。