关于 remember
供使用 AI 的开发者跨会话保存和恢复项目状态的记忆技能,可在会话结束时保存要点,并在新会话开始时恢复。它会排除或遮盖敏感信息,覆盖已有记忆前需先确认。
主要功能
- 01保存会话关键背景
- 02在新会话恢复背景
- 03排除或遮盖机密信息
- 04覆盖记忆前征求确认
- 05恢复时读取指定背景文件
适用场景
- 01在会话之间交接项目状态
- 02根据已保存决策继续工作
- 03保存后续事项且不记录凭证
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jsmastery-pro/ jsm-agent-skill --skill remember安装后在 Claude Code 中输入/remember确认已加载。
详细介绍
AI 在不同会话之间没有记忆。每个新会话都是从空白开始的。此技能可以解决这个问题。
在会话结束时运行它以保存内容。在新会话开始时运行它以恢复内容。它只做这些事——但只要坚持使用,就不会丢失任何内容。
安全边界
此技能绝不能保存机密信息。如果对话或上下文中出现任何敏感值,不要将其复制到 memory.md。
敏感数据包括(但不限于):
- API 密钥、访问令牌、刷新令牌、会话令牌
- 密码、口令、一次性验证码、私钥、证书
- Cookie、身份验证标头、连接字符串、Webhook 密钥
- 任何类似凭据的值或看起来像机密的字符串
如果某项信息有用但属于敏感信息,请改为保存经过脱敏的占位符(例如:[REDACTED_API_KEY])。
如果不确定某项信息是否敏感,请将其视为敏感信息并省略或脱敏。
如何调用
在会话结束时保存:
/remember save
在新会话开始时恢复:
/remember restore
如果开发者只运行 /remember 而未指定操作,请询问他们需要哪一种。
保存模式
当开发者运行 /remember save 时:
要记录的内容
查看当前对话,只提取开发者在全新上下文中继续这项工作时真正需要的信息。不要在保存的记忆中包含凭据、API 密钥或令牌等敏感数据。这不是对话记录,也不是对所有内容的总结,而是必要的状态信息。
设想有人要将项目交接给一位能力相当、但不了解今天发生了什么的同事。为了让对方能继续工作而不遗漏任何内容,需要告诉他们什么?
记录:
已完成的工作 — 创建或修改的具体文件、完成的功能、添加的组件。务必具体。不要写“构建了身份验证流程”,而应写“创建了 app/(auth)/login/page.tsx、app/(auth)/callback/page.tsx 和 middleware.ts。Google 和 GitHub 的 OAuth 已端到端打通。”
已作出的决策 — 难以逆转或后续工作所依赖的选择。不是实现细节,而是架构选择。“选择在服务端而非客户端获取数据,避免加载状态,并将敏感逻辑保留在客户端之外。”
已解决的问题 — 花费时间才弄清楚的问题,避免下个会话重复解决。“第三方身份验证回调要求重定向 URL 末尾带斜杠——已在回调处理程序中修复。”
当前状态 — 准确记录目前的进展。哪些功能正常,哪些尚未完成,哪些已知存在问题。
后续工作 — 接下来最需要做的事。描述要具体到下个会话可以立即开始,而不必先摸索从哪里着手。
待解决问题 — 下个会话需要处理的未决事项。
不要记录的内容
- 可直接从代码中看到的实现细节
- 已在上下文文件中记录的决策
- 通过阅读代码库即可推断出的内容
- 构建过程——只记录构建了什么以及作出了什么决策
- 任何机密或类似凭据的值(令牌、密钥、密码、Cookie、身份验证标头、连接字符串)
写入前的安全检查
写入 memory.md 前,最后检查一遍内容,确保其中不含任何敏感值。
- 如果发现敏感内容,请在写入前将其删除或脱敏。
- 仅保留继续下个会话所需的最少非敏感上下文。
保存位置
将记忆写入项目根目录下的 memory.md。此文件始终只包含最近一次会话的状态。
如果 memory.md 已存在,请向开发者简要总结当前保存的内容,并在覆盖前征求确认:
步骤 1 — 读取 memory.md,提供一行摘要,然后停止并等待开发者输入:
memory.md already exists from a previous session.
Current memory covers: [one-line summary of existing content].
Overwrite with this session's memory? (yes / no)
步骤 2 — 开发者回复后:
- 如果他们说是,则写入新的
memory.md。 - 如果他们说否,则不写入任何内容,并回复:
No changes made. memory.md is unchanged.
格式
# Memory — [Feature or Session Name]
Last updated: [date and time]
## What was built
[Specific files, components, features completed this session]
## Decisions made
[Architectural and implementation decisions that future work depends on]
## Problems solved
[Issues resolved this session — so they are not solved again]
## Current state
[Exactly where things stand — what works, what is partial, what is broken]
## Next session starts with
[The very first thing to do in the next session — specific and actionable]
## Open questions
[Anything unresolved that needs addressing]
写入文件后,向开发者确认:
Memory saved to memory.md.
Next session: run /remember restore to pick up from here.
恢复模式
当开发者在新会话开始时运行 /remember restore:
步骤 1 — 查找记忆
在项目根目录查找 memory.md。如果文件不存在,请告知开发者:
No memory.md found in this project.
Either this is the first session, or the file was not saved.
To save memory at the end of a session, run /remember save.
步骤 2 — 阅读所有可用内容
先读取 memory.md。然后检查以下特定上下文文件(如果存在),并且只读取这些文件:
CLAUDE.md、.claude/context.md— Claude Code.github/copilot-instructions.md— GitHub Copilot.cursorrules、.cursor/rules/— Cursor.windsurfrules— WindsurfAGENTS.md— Codex.clinerules— Clinecontext.md— 通用备用文件
不要扫描或读取此列表之外的其他文件。根据现有内容,尽可能还原完整的上下文。
恢复时,绝不要重复或披露任何来源中的原始机密。如果恢复的上下文中包含机密,只能以脱敏形式概述。
步骤 3 — 确认恢复的内容
不要开始构建。不要假设开发者希望立即继续。请总结恢复的内容,以便开发者确认 Claude 是否正确理解。
Memory restored. Here is where we are:
**Last session:** [what was built]
**Current state:** [what works right now]
**Decisions in place:** [key decisions that are locked]
**Next up:** [what the next session should start with]
Is this correct? Say yes to continue, or correct anything
that does not look right before we proceed.
只有在开发者确认后,会话才继续。
如果记忆不完整或不清楚
如果 memory.md 存在,但缺少重要上下文,请如实说明:
I found memory.md but some context seems missing —
[what is unclear or absent].
Should we continue with what we have, or do you want
to fill in the gaps before we start?
不要猜测。不要擅自假设。指出缺失之处,让开发者决定。
规则
每次会话都以 /remember save 结束。
每次会话都以 /remember restore 开始。
整个系统就是这样。坚持使用才能发挥作用。 偶尔使用的技能并不可靠。