name: session-memory description: “管理跨会话的学习和记忆持久化。当用户询问以前的会话、历史记录或从前继续时使用。不要用于:实施工作、审查或临时信息。” description-en: “管理跨会话的学习和记忆持久化。当用户询问以前的会话、历史记录或从前继续时使用。不要用于:实施工作、审查或临时信息。” description-ja: “管理跨会话的学习和记忆持久化。当用户询问以前的会话、历史记录或从前继续时使用。不要用于:实施工作、审查或临时信息。” allowed-tools: [“读取”, “写入”, “追加”] user-invocable: false
会话记忆技能
管理跨会话的学习和记忆的技能。 记录和引用过去的工作内容、决定事项、学到的模式。
触发短语
这个技能在以下短语时自动启动:
- “上次做了什么?” “从上一次继续”
- “显示历史记录” “过去的工作”
- “告诉我关于这个项目”
- “what did we do last time?”, “continue from before”
概述
这个技能将工作历史记录保存到 .claude/memory/ 中,
实现在会话间的知识持续。
同时,明确重要信息应该"留在哪里"(详情: docs/MEMORY_POLICY.md)。
内存结构
.claude/
├── memory/
│ ├── session-log.md # 每个会话的日志
│ ├── decisions.md # 重要的决定事项
│ ├── patterns.md # 学到的模式
│ └── context.json # 项目上下文
└── state/
└── agent-trace.jsonl # 代理跟踪(工具执行历史)
推荐操作(SSOT/本地分离)
- SSOT(共享推荐):
decisions.md/patterns.md- 聚合"决定(Why)“和"可重用的解决方案(How)”
- 每个条目添加 标题 + 标签(例如:
#decision #db),并在开头放置 索引
- 本地推荐:
session-log.md/context.json/.claude/state/- 由于容易产生噪音/膨胀,通常不进行 Git 管理(必要时个别判断)
自动记录的信息
session-log.md
每个会话记录利用 ${CLAUDE_SESSION_ID} 环境变量附加会话ID。
这提高了会话间的可追溯性。
## 会话: 2024-01-15 14:30 (session: abc123def)
### 执行的任务
- [x] 用户认证功能的实施
- [x] 登录页面的创建
### 生成的文件
- src/lib/auth.ts
- src/app/login/page.tsx
### 重要的决定
- 认证方式: 采用 Supabase Auth
### 下次的交接
- 退出功能未实施
- 密码重置也需要
注意:
${CLAUDE_SESSION_ID}是 Claude Code 自动设置的环境变量。 为每个会话分配唯一的ID,有助于日志跟踪和问题调查。
decisions.md
## 技术选择
| 日期 | 决定事项 | 理由 |
|------|---------|------|
| 2024-01-15 | Supabase Auth | 有免费计划,设置简单 |
| 2024-01-14 | Next.js App Router | 最新的最佳实践 |
## 架构
- 组件: `src/components/`
- 实用工具: `src/lib/`
- 类型定义: `src/types/`
patterns.md
## 这个项目的模式
### 组件命名
- PascalCase
- 例: `UserProfile.tsx`, `LoginForm.tsx`
### API 端点
- `/api/v1/` 前缀
- RESTful 设计
### 错误处理
- 用 try-catch 包围
- 错误消息用日语
context.json
{
"project_name": "my-blog",
"created_at": "2024-01-14",
"stack": {
"frontend": "next.js",
"backend": "next-api",
"database": "supabase",
"styling": "tailwind"
},
"current_phase": "阶段2: 核心功能",
"last_session": "2024-01-15T14:30:00Z"
}
处理流程
会话开始时
- 读取
.claude/memory/context.json - 检查上一次的会话日志
- 从代理跟踪获取最近的编辑历史
- 识别未完成的任务
- 生成上下文摘要
代理跟踪活用:
# 获取上次编辑的文件列表
tail -50 .claude/state/agent-trace.jsonl | jq -r '.files[].path' | sort -u
# 获取项目信息
tail -1 .claude/state/agent-trace.jsonl | jq '.metadata'
会话中
- 记录重要决定到
decisions.md - 添加新模式到
patterns.md - 记录文件生成到
session-log.md
会话结束时
- 生成会话摘要
- 更新
context.json - 记录下次的交接事项
内存优化(CC 2.1.49+)
Claude Code 2.1.49 及更高版本,会话恢复时的内存使用量 减少了 68%。
推荐工作流程
# 长时间作业活用 --resume
claude --resume
# 大规模任务分割并恢复会话
claude --resume "继续从"
| 场景 | 推荐 |
|---|---|
| 长时间实施 | 每1-2小时恢复会话 |
| 大规模重构 | 按功能单位分割会话 |
| 内存不足警告 | 立即用 --resume 恢复 |
💡 由于内存效率大幅改善,请积极活用会话恢复。
使用示例
从上一次继续开始
用户: "从上一次继续"
Claude Code:
📋 上一次的会话(2024-01-15)
完成的任务:
- 用户认证功能
- 登录页面
未完成:
- 退出功能
- 密码重置
说"制作退出功能"就能继续实施。
项目状况确认
用户: "告诉我关于这个项目"
Claude Code:
📁 项目: my-blog
技术栈:
- Next.js + Tailwind CSS + Supabase
当前阶段: 核心功能开发
进度: 40% 完成
最近的決定:
- 采用 Supabase Auth
- 使用 App Router
与 Claude Code 自动内存的关系(D22)
Claude Code 2.1.32+ 具有"自动内存"功能,自动保存会话间学习到 ~/.claude/projects/<project>/memory/MEMORY.md。
与 Harness 的内存系统作为3层架构共存:
| 层 | 系统 | 内容 | 管理 |
|---|---|---|---|
| 层1 | Claude Code 自动内存 | 通用学习(避免错误、工具使用方式) | 隐式・自动 |
| 层2 | Harness SSOT | 项目特定的决定事项・模式 | 显式・手动 |
| 层3 | 代理内存 | 代理特定的任务学习 | 代理定义 |
使用区分:
- 层1 的见解对整个项目重要 → 用
/memory ssot提升到层2 - 日常学习委托给层1(不禁用)
- 使用代理团队时注意并行写入
详情: D22: 3层内存架构
注意事项
- 自动保存: 推荐通过
hooks/Stop在会话结束时自动追加摘要到session-log.md的操作(未引入时手动操作即可) - 隐私: 不记录机密信息
- Git策略:
decisions.md/patterns.md推荐共享,session-log.md/context.json/.claude/state/推荐本地(详情:docs/MEMORY_POLICY.md) - 容量管理: 日志变大时推荐"整理会话日志"