Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Session Memory

English README

这是一个用于跨会话保留高价值项目上下文的 AI agent 记忆工具,让你不必反复翻长聊天记录。

这是什么

session-memory 用来保留真正会影响后续推进的上下文,而不是保存整段聊天历史。

它主要保留这些内容:

  • 当前目标
  • 当前思路
  • 关键决策
  • 已确认结论
  • 失败路径
  • 下一步动作

它解决什么问题

  • 会话太长,重要上下文被聊天噪声淹没
  • 新会话接手时,需要重新解释目标、约束和结论
  • 方案变了,但之后很难回忆“为什么变”
  • 分支研究很多,主线和旁路容易混在一起

快速开始

作为本地 agent skill 使用时,可以直接对 agent 说:

session-memory 恢复
session-memory 保存
session-memory 搜索 <关键词>

第一次接触这个仓库的用户,只要先知道这 3 个动作分别是恢复上下文、保存主线和检索旧结论,就可以开始使用。

这些是 agent 口令,不是仓库自带的 shell 命令。直接从命令行使用时,请运行 scripts/ 里的 Python 脚本,例如:

python3 scripts/restore_session_memory.py --workspace "$PWD" --scope auto
python3 scripts/save_session_memory.py --workspace "$PWD" --scope auto --stage prepare
python3 scripts/search_session_memory.py --workspace "$PWD" --scope auto --query "关键词"

session-memory 检查 是 agent 的保存闸门,主要用来判断现在值不值得保存;通常不需要你手动执行。session-memory 研究保存 用于旁路研究,只在结论还没并入主线、但又值得保留时使用。

保存不是把本轮聊天继续堆进 current.md。正确动作是先归层:现在仍影响下一步的内容留在 current.md;已经过去但以后要追溯原因的内容放进 history.md;未并入主线的旁路研究放进 research.md;工具噪音丢弃。

什么时候用

  • 当前会话已经变长,准备结束或切到新会话
  • 当前主目标、主方案、关键结论或下一步发生了变化
  • 你想保留某条分支研究,但不想污染主线
  • 你只想快速查一个旧结论,而不是恢复整份上下文

不适合什么

  • 完整文档系统
  • 长期知识库
  • 项目管理工具
  • 原始聊天记录备份

设计取向

这个工具来自一种偏轻量化的工作方式:少记录无效过程,少引入复杂机制,只保留真正影响项目推进的上下文。

最核心的取舍是:current.md 只做当前最小恢复快照,history.md 承接过去但不能丢的关键变化。这样保存间隔变长时,也不需要把所有中间过程塞回当前层。

隐性维护层

这个工具还带有轻量的 sleep/dream 机制和 archive 冷层。它们属于隐性维护层:在合适的时机按需触发提炼和瘦身,不是用户主入口,也不是后台常驻进程。

dream-notes.md 是覆盖式提炼稿,不会因为 sleep 次数持续在项目里无限追加;真正会逐步增加的是全局 dreams/ 快照目录,以及项目里的追加式 history.md

默认热路径只看 current.mdhistory.mddream-notes.mdarchive 是 dream 之后瘦身出来的冷层,除非主动要求查看归档,否则不应默认读取。

对于同项目下的分叉研究,最小版研究层使用 research.md 作为研究流水账。研究保存 只往这里追加,不直接覆盖主线 current.mdresearch.md 会参与 dream 提炼和 dream 后归档,但默认不进入恢复/检索热路径,除非你明确要求查看研究层。

现在 current.md 会维护一个 Last Updated 字段;dream-notes.md 也会写入 Last Updated。如果时间已经过久,它们只能视为弱参考,继续前应优先核对当前代码和真实状态。

记忆空间路由

默认 --scope auto 会优先把当前目录解析到“共享项目记忆”:

  • Git 项目:默认落到 <git-root>/.session-memory/
  • 非 Git 项目:如果某个祖先目录已经存在 .session-memory/,默认继续复用那一层
  • 只有上述共享根都不存在时,才退回当前目录自己的 .session-memory/

如果同一项目里需要两套或多套互不覆盖的研究记忆,在项目根创建 .session-memory/config.toml

[spaces]
"当前路线" = "current-research"
"旧路线" = "legacy-research"

如果你更喜欢最简写法,也兼容直接写 "记忆1" = "current-research"

规则很简单:

  • key 是记忆空间名,value 是相对项目根的子目录
  • 当当前工作目录落在某个子目录内时,读写目标会切到 <子目录>/.session-memory/
  • 多条路径重叠时,按最长匹配优先
  • 不会自动混读项目共享层和其他记忆空间
  • 研究保存 仍然只是追加当前命中的 research.md

旧路径兼容

现在正常读写只使用 agent-neutral(智能体中立)的新路径:

  • 项目级:<project>/.session-memory/
  • 全局级:${SESSION_MEMORY_HOME:-$HOME/.session-memory}/

如果发现旧路径里已有记忆,会自动迁移到新路径后继续运行:

  • 项目级旧路径:<project>/.codex/session-memory/<project>/.claude/session-memory/
  • 全局级旧路径:${CODEX_HOME:-$HOME/.codex}/session-memory/${CLAUDE_HOME:-$HOME/.claude}/session-memory/

迁移会把旧目录内容搬进新目录,然后删除旧的 session-memory 目录。项目内 .codex/.claude/ 如果因此变空,也会一并清理;如果还有其他内容则保留。重名冲突不会覆盖新文件,旧文件会放到 .session-memory/archive/legacy-imports/

常用口令

本节描述的是 agent 口令。用户主入口只有三个:

  • session-memory 保存 / session-memory save
  • session-memory 恢复 / session-memory restore
  • session-memory 搜索 <关键词> / session-memory search <keyword>

辅助入口不占主心智:

  • session-memory 研究保存 / session-memory research-save:记录尚未并入主线的旁路研究,不覆盖 current.md
  • session-memory 检查 / session-memory check:agent 用来判断是否值得保存,默认只给保存建议

使用案例

  • 当一个会话已经积累了较多研究和决策时,可以用 session-memory 保存 / session-memory save 留下当前上下文,而不是下次重新解释。
  • 当你在新会话中继续同一项目时,可以用 session-memory 恢复 / session-memory restore 快速接上当前目标、思路和下一步。
  • 当你只想确认某个方案为什么被放弃,或某个结论是否已经验证过时,可以用 session-memory 搜索 <关键词> / session-memory search <keyword> 做轻量检索。
  • 当你只是在同一个记忆空间里分阶段记录研究时,用 session-memory 研究保存 / session-memory research-save 把阶段性结论追加到当前空间的 research.md
  • 当你在同一项目里同时推进两条不同研究路线时,先在项目根配置 config.toml 划分独立记忆空间,再分别运行 保存 / 研究保存 / 恢复 / 搜索。这样不同本地 fork 或不同研究目录就不会互相覆盖。

核心文件

  • current.md:当前最小恢复快照,只保留现在从哪里继续
  • current.md 头部会记录 Last Updated
  • history.md:关键变化、决策,以及已经过去但不能丢的旧当前层内容
  • research.md:同项目多工作上下文的研究流水账
  • dream-notes.md:提炼后的经验、错因与预警信号,头部会记录 Last Updated
  • config.toml:可选的项目级路由配置,用来把不同子目录映射到独立记忆空间

归档

归档不是主读取层,也不是日常用户入口,而是 dream 成功后触发的冷层瘦身。它会存放已被新主线覆盖、但暂时不想直接删除的旧历史、旧 dream 快照,以及 research.md 里那些“已经并入主线”或“已经判定无效”的旧研究条目。

python3 "<skill-root>/scripts/archive_session_memory.py" --workspace "$PWD" --scope auto --dry-run

默认情况下不应读取 archive;只有当你明确要“查归档”“看旧分支为什么被放弃”时,才应显式带上归档开关。当前搜索脚本的 --include-archive 会检索当前记忆空间里的 archive/history-archive.mdarchive/research-archive.md

限制

  • 这个工具依赖是否持续记录高价值信息;如果 current.mdhistory.md 长期不更新,恢复质量会下降。
  • 它适合提炼和延续项目上下文,不适合替代完整文档、知识库或正式项目管理工具。
  • sleep/dream 只做轻量提炼,不保证自动生成的内容总是完美,重要结论仍然需要人工判断。

说明

这个项目主要面向本地 AI agent 工作流。

License

MIT

About

Capture and restore high-value session memory for coding projects.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages