contextHistoryStrategies
SUPPORT · constant · 运行时值
导入
ts
import { contextHistoryStrategies } from '@jangts/agent-core/support';js
import { contextHistoryStrategies } from '@jangts/agent-core/support';其他公开入口:@jangts/agent-core/support、@jangts/agent-core/support/context。
定义
ts
const contextHistoryStrategies: Readonly<{ compact: Readonly<{ targetRatio: 0.25; keepGroups: 1; }>; balanced: Readonly<{ targetRatio: 0.5; keepGroups: 3; }>; extended: Readonly<{ targetRatio: 0.75; keepGroups: 6; }>; }>字段结构
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
compact | Readonly<{ targetRatio: 0.25; keepGroups: 1; }> | 必需 | 见类型定义及调用场景。 |
balanced | Readonly<{ targetRatio: 0.5; keepGroups: 3; }> | 必需 | 见类型定义及调用场景。 |
extended | Readonly<{ targetRatio: 0.75; keepGroups: 6; }> | 必需 | 见类型定义及调用场景。 |
使用示例
- 从历史语义生成处理策略:复用片段身份与硬预算,生成 recent 或 continuity 的完整步骤和引用。
复用已有片段生成最近历史策略
入门 · Node.js
ts
import { Support } from '@jangts/agent-core';
const fragment = { id: 'history', maxChars: 4000 };
const strategy = Support.createContextStrategy({ kind: 'recent', fragment, field: 'messages' });
console.log(strategy.policy, strategy.compressors);js
import { Support } from '@jangts/agent-core';
const fragment = { id: 'history', maxChars: 4000 };
const strategy = Support.createContextStrategy({ kind: 'recent', fragment, field: 'messages' });
console.log(strategy.policy, strategy.compressors);同一配置增加保留组数与目标大小
配置 · Node.js
ts
import { Support } from '@jangts/agent-core';
const fragment = { id: 'history', maxChars: 4000 };
const strategy = Support.createContextStrategy({ kind: 'recent', fragment, field: 'messages',
keepGroups: 3, targetChars: 2500, grouping: { kind: 'user-turn' },
});
console.log(strategy.policy);js
import { Support } from '@jangts/agent-core';
const fragment = { id: 'history', maxChars: 4000 };
const strategy = Support.createContextStrategy({ kind: 'recent', fragment, field: 'messages',
keepGroups: 3, targetChars: 2500, grouping: { kind: 'user-turn' },
});
console.log(strategy.policy);需要承接旧话题时明确提供压缩算法
扩展 · Node.js
本例只装配策略。将 policy/compressors/selectors 作为原上下文节点配置,不在这里发新请求或创建额外额度。
ts
import { Support } from '@jangts/agent-core';
const compressor = Support.createContextCompressor({ id: 'history-summary',
instruction: '按资料原意概括旧历史,保留事实、时间和未完成事项。',
transport: 'core:plain-text', maxOutputTokens: 500,
parse(value: unknown) { if (typeof value !== 'string' || !value.trim()) throw new TypeError('需要摘要'); return { messages: [{ role: 'user', content: value }] }; },
});
const strategy = Support.createContextStrategy({ kind: 'continuity',
fragment: { id: 'history', maxChars: 4000 }, field: 'messages', compressor,
targetChars: 2500, keepGroups: 2,
});
console.log(strategy.policy, strategy.compressors.map(item => item.id));js
import { Support } from '@jangts/agent-core';
const compressor = Support.createContextCompressor({ id: 'history-summary',
instruction: '按资料原意概括旧历史,保留事实、时间和未完成事项。',
transport: 'core:plain-text', maxOutputTokens: 500,
parse(value) { if (typeof value !== 'string' || !value.trim())
throw new TypeError('需要摘要'); return { messages: [{ role: 'user', content: value }] }; },
});
const strategy = Support.createContextStrategy({ kind: 'continuity',
fragment: { id: 'history', maxChars: 4000 }, field: 'messages', compressor,
targetChars: 2500, keepGroups: 2,
});
console.log(strategy.policy, strategy.compressors.map(item => item.id));