背景
在使用 Agent 进行长时间多轮对话时,经常遇到这样的场景:
- 做了大量工作后,对话窗口接近饱和,Agent 变得迟钝
- 想开启新话题,但之前的工作成果和决策过程还没来得及记录
- 下次想继续之前的任务,却发现上下文已经被”遗忘”
这些问题促使我创建了 context-session-manager 这个技能。
核心功能
自动存储:当对话轮次 >= 8 轮,或产生了文件/代码/架构决策等高价值操作时,自动将会话摘要持久化到本地 JSON 文件。
自动召回:当用户发送 /new、说”新会话”、或”继续之前的工作”时,自动检索最近的会话摘要并注入当前上下文。
工作原理
两阶段循环:
- 存储阶段:每次对话时检测上下文长度,接近饱和时自动生成会话摘要并持久化为 JSON
- 召回阶段:用户发送
/new 或检测到新会话时,自动检索最近的会话摘要并注入上下文
触发条件
存储触发(满足任一即触发)
- 对话轮次 >= 8 轮
- 当前会话产生了文件、代码、报告等可交付物
- 包含架构决策、技术选型等高价值结论
- 用户明确说”记住”、”保存”等
召回触发
- 用户消息为
/new、新会话、重新开始、继续之前的工作
- 对话开头检测到
.context-sessions/ 目录存在且有历史会话
文件结构
1 2 3 4 5 6 7
| context-session-manager/ ├── SKILL.md # 技能定义 ├── references/ │ └── session-format.md # 会话 JSON 格式规范 └── scripts/ ├── store_session.py # 存储脚本 └── recall_session.py # 召回脚本
|
使用示例
存储触发(自动执行)
满足触发条件时,在生成回复之前自动执行存储:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import os, json from datetime import datetime
session_dir = os.path.join(cwd, '.context-sessions') os.makedirs(session_dir, exist_ok=True)
session_id = datetime.now().strftime('%Y%m%d-%H%M%S')
record = { "session_id": session_id, "stored_at": datetime.now().isoformat(), "summary": "任务目标:...\n已完成:...\n关键决策:...\n当前状态:...\n下一步:...", "key_decisions": [], "files_modified": [], "next_steps": [], "tags": [] }
filepath = os.path.join(session_dir, session_id + '.json') with open(filepath, 'w', encoding='utf-8') as f: json.dump(record, f, ensure_ascii=False, indent=2)
|
召回触发(自动执行)
用户发送 /new 时,自动检索并注入上下文:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import os, json, glob
session_dir = os.path.join(cwd, '.context-sessions') files = sorted(glob.glob(os.path.join(session_dir, '*.json')), reverse=True)[:3]
sessions = [] for f in files: with open(f, 'r', encoding='utf-8') as fh: data = json.load(fh) sessions.append({ "id": data.get("session_id"), "time": data.get("stored_at"), "summary": data.get("summary", ""), "decisions": data.get("key_decisions", []), "files": data.get("files_modified", []), "next_steps": data.get("next_steps", []) })
|
摘要生成规则
摘要必须包含:
- 任务目标:用户要做什么
- 已完成:做了什么、产生了哪些文件/代码
- 关键决策:做了哪些技术选型或方案选择
- 当前状态:做到哪一步、是否有未完成的部分
- 下一步:还有什么没做
长度控制在 200-500 字,用 Markdown 列表格式。
安装方式
1 2 3 4 5
| skillhub install context-session-manager
git clone https://github.com/YitaoCN/context-session-manager.git
|
项目地址
👇 GitHub:YitaoCN/context-session-manager
这个技能在实际使用中不断迭代优化,如果你有好的建议,欢迎提 Issue 或 PR。