背景

在使用 Agent 进行长时间多轮对话时,经常遇到这样的场景:

  • 做了大量工作后,对话窗口接近饱和,Agent 变得迟钝
  • 想开启新话题,但之前的工作成果和决策过程还没来得及记录
  • 下次想继续之前的任务,却发现上下文已经被”遗忘”

这些问题促使我创建了 context-session-manager 这个技能。

核心功能

自动存储:当对话轮次 >= 8 轮,或产生了文件/代码/架构决策等高价值操作时,自动将会话摘要持久化到本地 JSON 文件。

自动召回:当用户发送 /new、说”新会话”、或”继续之前的工作”时,自动检索最近的会话摘要并注入当前上下文。

工作原理

两阶段循环:

  1. 存储阶段:每次对话时检测上下文长度,接近饱和时自动生成会话摘要并持久化为 JSON
  2. 召回阶段:用户发送 /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", [])
})

摘要生成规则

摘要必须包含:

  1. 任务目标:用户要做什么
  2. 已完成:做了什么、产生了哪些文件/代码
  3. 关键决策:做了哪些技术选型或方案选择
  4. 当前状态:做到哪一步、是否有未完成的部分
  5. 下一步:还有什么没做

长度控制在 200-500 字,用 Markdown 列表格式。

安装方式

1
2
3
4
5
# 通过 SkillHub 安装
skillhub install context-session-manager

# 或手动克隆
git clone https://github.com/YitaoCN/context-session-manager.git

项目地址

👇 GitHub:YitaoCN/context-session-manager


这个技能在实际使用中不断迭代优化,如果你有好的建议,欢迎提 Issue 或 PR。