用途
context-optimizer(文档中也称 Context Pruner)是一个高级上下文管理工具,专门针对 DeepSeek 的 64k 上下文窗口进行优化。它通过智能修剪、压缩和 token 优化,防止上下文溢出,同时尽量保留重要信息,适用于需要长时间对话或大量消息累积、容易触达上下文上限的场景。
主要能力
- DeepSeek 优化:专门针对 64k 上下文窗口调优。
- 自适应修剪:基于上下文使用量采用多种策略。
- 语义去重:移除冗余信息。
- 优先级感知:保留高价值消息。
- Token 高效:最小化 token 开销。
- 实时监控:持续跟踪上下文健康状态。
自动压缩策略
- 语义压缩(Semantic):合并相似消息,而不是直接删除。
- 时序压缩(Temporal):按时间窗口对较早的对话进行摘要。
- 抽取压缩(Extractive):从冗长消息中抽取关键信息。
- 自适应压缩(Adaptive):根据消息特征选择最佳策略。
- 动态上下文:根据与当前查询的相关性过滤消息。
动态上下文管理
- 查询感知相关性:根据与当前查询的相似度为消息评分。
- 相关性衰减:较早对话的相关性分数随时间下降。
- 自适应过滤:自动过滤低相关性消息。
- 优先级整合:将消息优先级与语义相关性结合。
分层记忆系统
上下文归档提供“内存 vs 存储”的思路:
- 当前上下文(RAM):有限(64k tokens),访问快,自动压缩。
- 归档(Storage):更大(100MB),较慢但可搜索。
- 智能检索:当信息不在当前上下文时,高效搜索归档。
- 选择性加载:只抽取相关片段,而非整份文档。
- 自动存储:被压缩的内容自动存入归档。
使用方式
快速开始
使用动态上下文进行自动压缩:
import { createContextPruner } from './lib/index.js';
const pruner = createContextPruner({
contextLimit: 64000, // DeepSeek's limit
autoCompact: true, // Enable automatic compaction
dynamicContext: true, // Enable dynamic relevance-based context
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
queryAwareCompaction: true, // Compact based on current query relevance
});
await pruner.initialize();
// Process messages with auto-compaction and dynamic context
const processed = await pruner.processMessages(messages, currentQuery);
// Get context health status
const status = pruner.getStatus();
console.log(`Context health: ${status.health}, Relevance scores: ${status.relevanceScores}`);
// Manual compaction when needed
const compacted = await pruner.autoCompact(messages, currentQuery);
归档检索(分层记忆)
// When something isn't in current context, search archive
const archiveResult = await pruner.retrieveFromArchive('query about previous conversation', {
maxContextTokens: 1000,
minRelevance: 0.4,
});
if (archiveResult.found) {
// Add relevant snippets to current context
const archiveContext = archiveResult.snippets.join('\n\n');
// Use archiveContext in your prompt
console.log(`Found ${archiveResult.sources.length} relevant sources`);
console.log(`Retrieved ${archiveResult.totalTokens} tokens from archive`);
}
配置
{
contextLimit: 64000, // DeepSeek's context window
autoCompact: true, // Enable automatic compaction
compactThreshold: 0.75, // Start compacting at 75% usage
aggressiveCompactThreshold: 0.9, // Aggressive compaction at 90%
dynamicContext: true, // Enable dynamic context management
relevanceDecay: 0.95, // Relevance decays 5% per time step
minRelevanceScore: 0.3, // Minimum relevance to keep
queryAwareCompaction: true, // Compact based on current query relevance
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
preserveRecent: 10, // Always keep last N messages
preserveSystem: true, // Always keep system messages
minSimilarity: 0.85, // Semantic similarity threshold
// Archive settings
enableArchive: true, // Enable hierarchical memory system
archivePath: './context-archive',
archiveSearchLimit: 10,
archiveMaxSize: 100 * 1024 * 1024, // 100MB
archiveIndexing: true,
// Chat logging
logToChat: true, // Log optimization events to chat
chatLogLevel: 'brief', // 'brief', 'detailed', or 'none'
chatLogFormat: '📊 {action}: {details}', // Format for chat messages
// Performance
batchSize: 5, // Messages to process in batch
maxCompactionRatio: 0.5, // Maximum 50% compaction in one pass
}
聊天日志
上下文优化器可以把事件直接记录到聊天:
// Example chat log messages:
// 📊 Context optimized: Compacted 15 messages → 8 (47% reduction)
// 📊 Archive search: Found 3 relevant snippets (42% similarity)
// 📊 Dynamic context: Filtered 12 low-relevance messages
// Configure logging:
const pruner = createContextPruner({
logToChat: true,
chatLogLevel: 'brief', // Options: 'brief', 'detailed', 'none'
chatLogFormat: '📊 {action}: {details}',
// Custom log handler (optional)
onLog: (level, message, data) => {
if (level === 'info' && data.action === 'compaction') {
// Send to chat
console.log(`🧠 Context optimized: ${message}`);
}
}
});
与 Clawdbot 集成
添加到 Clawdbot 配置:
skills:
context-pruner:
enabled: true
config:
contextLimit: 64000
autoPrune: true
修剪器会自动监控上下文使用量,并应用合适的修剪策略,以保持在 DeepSeek 的 64k 上限内。
适用场景
- 面向 DeepSeek 64k 上下文窗口的对话或消息处理流程。
- 需要长时间累积消息、易触及上下文上限的会话。
- 需要通过分层记忆在有限上下文与更大归档之间做检索或选择性加载的场景。
限制
资料未提供收费、价格、平台支持范围、部署要求等具体信息。