名称: context-optimizer
描述: 为 DeepSeek 的 64k 上下文窗口提供高级上下文管理,具备自动压缩和动态上下文优化功能。特性包括智能压缩(合并、总结、提取)、查询感知相关性评分以及带上下文归档的分层记忆系统。优化事件会记录到聊天中。
主页: https://github.com/clawdbot/clawdbot
元数据:
clawdbot:
emoji: "🧠"
requires:
bins: []
npm: ["tiktoken", "@xenova/transformers"]
install:
- id: npm
kind: npm
label: 安装 Context Pruner 依赖
command: "cd ~/.clawdbot/skills/context-pruner && npm install"
专为 DeepSeek 的 64k 上下文窗口优化的高级上下文管理工具。提供智能修剪、压缩和令牌优化,防止上下文溢出,同时保留重要信息。
import { createContextPruner } from './lib/index.js';
const pruner = createContextPruner({
contextLimit: 64000, // DeepSeek 的限制
autoCompact: true, // 启用自动压缩
dynamicContext: true, // 启用基于相关性的动态上下文
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
queryAwareCompaction: true, // 基于当前查询相关性进行压缩
});
await pruner.initialize();
// 使用自动压缩和动态上下文处理消息
const processed = await pruner.processMessages(messages, currentQuery);
// 获取上下文健康状态
const status = pruner.getStatus();
console.log(`上下文健康度: ${status.health}, 相关性分数: ${status.relevanceScores}`);
// 需要时手动压缩
const compacted = await pruner.autoCompact(messages, currentQuery);
// 当信息不在当前上下文中时,搜索归档
const archiveResult = await pruner.retrieveFromArchive('关于先前对话的查询', {
maxContextTokens: 1000,
minRelevance: 0.4,
});
if (archiveResult.found) {
// 将相关片段添加到当前上下文
const archiveContext = archiveResult.snippets.join('\n\n');
// 在提示中使用 archiveContext
console.log(`找到 ${archiveResult.sources.length} 个相关来源`);
console.log(`从归档中检索到 ${archiveResult.totalTokens} 个令牌`);
}
上下文归档提供类似 RAM 与存储的架构:
{
contextLimit: 64000, // DeepSeek 的上下文窗口
autoCompact: true, // 启用自动压缩
compactThreshold: 0.75, // 在 75% 使用率时开始压缩
aggressiveCompactThreshold: 0.9, // 在 90% 时进行激进压缩
dynamicContext: true, // 启用动态上下文管理
relevanceDecay: 0.95, // 相关性每步衰减 5%
minRelevanceScore: 0.3, // 保留的最小相关性分数
queryAwareCompaction: true, // 基于当前查询相关性进行压缩
strategies: ['semantic', 'temporal', 'extractive', 'adaptive'],
preserveRecent: 10, // 始终保留最后 N 条消息
preserveSystem: true, // 始终保留系统消息
minSimilarity: 0.85, // 语义相似度阈值
// 归档设置
enableArchive: true, // 启用分层记忆系统
archivePath: './context-archive',
archiveSearchLimit: 10,
archiveMaxSize: 100 * 1024 * 1024, // 100MB
archiveIndexing: true,
// 聊天日志
logToChat: true, // 将优化事件记录到聊天
chatLogLevel: 'brief', // 'brief'(简要)、'detailed'(详细)或 'none'(无)
chatLogFormat: '📊 {action}: {details}', // 聊天消息格式
// 性能
batchSize: 5, // 批处理的消息数量
maxCompactionRatio: 0.5, // 单次压缩的最大比例(50%)
}
上下文优化器可以将事件直接记录到聊天:
// 示例聊天日志消息:
// 📊 上下文已优化:将 15 条消息压缩为 8 条(减少 47%)
// 📊 归档搜索:找到 3 个相关片段(相似度 42%)
// 📊 动态上下文:过滤了 12 条低相关性消息
// 配置日志记录:
const pruner = createContextPruner({
logToChat: true,
chatLogLevel: 'brief', // 选项:'brief'、'detailed'、'none'
chatLogFormat: '📊 {action}: {details}',
// 自定义日志处理器(可选)
onLog: (level, message, data) => {
if (level === 'info' && data.action === 'compaction') {
// 发送到聊天
console.log(`🧠 上下文已优化:${message}`);
}
}
});
添加到你的 Clawdbot 配置:
skills:
context-pruner:
enabled: true
config:
contextLimit: 64000
autoPrune: true
修剪器将自动监控上下文使用情况,并应用适当的修剪策略,以确保保持在 DeepSeek 的 64k 限制内。