Context Window Optimizer
Manage context strategically to prevent token waste and keep conversations effective.
Core Principle
Context is a shared resource. Keep it lean so there's room for actual work.
When to Optimize
- - Conversation exceeds ~50 messages
- Context feels heavy before a new task
- Starting a complex multi-step task
- After significant decisions or completions
- Explicit request to optimize/compact
Optimization Workflow
Step 1: Assess Context State
Run the analyzer to get context metrics:
CODEBLOCK0
This reports:
- - Message count and approximate token count
- Age of oldest message
- Density score (signal vs noise)
Step 2: Identify Optimization Targets
Look for:
- - Old已完成 tasks with verbose logs
- Repeated explanations of same concept
- Off-topic tangents
- Raw tool outputs that could be summarized
- Decisions that should move to permanent memory
Step 3: Extract to Memory
Decisions → MEMORY.md or relevant project file:
CODEBLOCK1
Key facts → appropriate domain/project file:
CODEBLOCK2
Patterns → ~/self-improving/memory.md:
CODEBLOCK3
Step 4: Summarize Dense Segments
For long work sessions, create a summary instead of keeping all details:
CODEBLOCK4
Step 5: Archive, Don't Delete
Never delete context — archive it:
- - Move summaries to INLINECODE2
- Keep pointers in session for recovery
- Use
[[archived:filename.md]] notation
Context Density Rules
| Content Type | Action |
|---|
| Completed tasks | Summarize outcome, archive details |
| Decisions |
Extract to MEMORY.md or project file |
| Key facts | Extract to relevant domain/project |
| Tool logs | Summarize if successful, keep if debugging |
| Repeated concepts | Remove duplicates, keep one canonical |
| Off-topic | Skip or summarize in notes |
| System prompts | Never touch |
| Skills metadata | Only load relevant ones |
Quick Commands
| Task | Command |
|---|
| Analyze current context | INLINECODE4 |
| Summarize session |
python3 scripts/summarize_session.py --session current --output summary.md |
| Extract decisions |
python3 scripts/extract_decisions.py --session current |
Files
- -
scripts/analyze_context.py — Context metrics and optimization suggestions - INLINECODE8 — Create session summary
- INLINECODE9 — Pull out decisions and key facts
- INLINECODE10 — Common summarization patterns
上下文窗口优化器
战略性管理上下文,防止令牌浪费,保持对话高效。
核心原则
上下文是共享资源。 保持精简,为实际工作留出空间。
何时优化
- - 对话超过约50条消息
- 开始新任务前上下文感觉沉重
- 开始复杂的多步骤任务
- 重大决策或完成之后
- 明确要求优化/压缩
优化工作流程
步骤1:评估上下文状态
运行分析器获取上下文指标:
bash
python3 scripts/analyze_context.py --session current
报告内容包括:
- - 消息数量和近似令牌数量
- 最旧消息的时效
- 密度评分(信号与噪声比)
步骤2:识别优化目标
查找:
- - 已完成任务中冗长的日志
- 对同一概念的重复解释
- 偏离主题的内容
- 可总结的原始工具输出
- 应移至永久记忆的决策
步骤3:提取至记忆
决策 → MEMORY.md 或相关项目文件:
决策(来自2026-03-25会话)
- - 项目X选择PostgreSQL而非MongoDB
- 同意采用3天冲刺节奏
- 用户偏好详细解释而非摘要
关键事实 → 相应领域/项目文件:
项目X事实
- - 技术栈:React + Node + Postgres
- 主要用户痛点:上手缓慢
- 当前速度:5个故事点/冲刺
模式 → ~/self-improving/memory.md:
用户偏好
- - 始终先解释为什么再说明是什么
- 偏好要点列表而非段落
步骤4:总结密集段落
对于长时间的工作会话,创建摘要而非保留所有细节:
markdown
会话摘要:2026-03-25
已完成工作
- - 设置认证流程
- 修复工作进程中的内存泄漏
- 设计新API架构
已做决策
- - 使用JWT而非会话(更简单,扩展性更好)
- 缓存推迟至v2(非阻塞)
待解决问题
- - 通知的最终技术栈(推送vs轮询)
- 需要用户对上手指引流程的反馈
后续步骤
步骤5:归档而非删除
切勿删除上下文——将其归档:
- - 将摘要移至 memory/YYYY-MM-DD.md
- 在会话中保留指针以便恢复
- 使用 [[archived:filename.md]] 标记
上下文密度规则
提取至MEMORY.md或项目文件 |
| 关键事实 | 提取至相关领域/项目 |
| 工具日志 | 成功则总结,调试则保留 |
| 重复概念 | 删除重复项,保留一个规范版本 |
| 偏离主题 | 跳过或在笔记中总结 |
| 系统提示 | 切勿触碰 |
| 技能元数据 | 仅加载相关部分 |
快速命令
| 任务 | 命令 |
|---|
| 分析当前上下文 | python3 scripts/analyzecontext.py --session current |
| 总结会话 |
python3 scripts/summarizesession.py --session current --output summary.md |
| 提取决策 | python3 scripts/extract_decisions.py --session current |
文件
- - scripts/analyzecontext.py — 上下文指标和优化建议
- scripts/summarizesession.py — 创建会话摘要
- scripts/extract_decisions.py — 提取决策和关键事实
- references/patterns.md — 常见总结模式