上下文策略:验证、缩减与审计
Support 给出可替换的策略实现,Core 保留最终输入合同和预算检查。
当前 ContextPolicy 的判别值是 validate、reduce、audit。validate 只验证和装配;reduce 在水位触发后选择已登记步骤;audit 检查 App 修改是否限于声明可变范围。
triggerChars/triggerTokens 控制何时开始,targetInputChars/targetInputTokens 控制期望水位,最终硬预算另由请求准备和 Core 检查。字符和 token 不能互相猜算;没有计数器时不得假装拥有 token 用量。
缩减步骤包含真实的 fragmentId、kind 和 targetChars。trim 明确历史分组和最少保留组,compress 明确 handlerId。受保护的问题、系统指令、授权与证据不能随意改写。报告记录实际变更和用量,不将压缩成功当成语义质量保证。
直接 processContext 接收 ContextPlan、ContextPolicy 和执行选项;通常优先把它放入普通 Workflow 节点,使过程事件和取消链自然纳入 Loop。
由简到繁的同业务示例
显式使用只校验策略
入门 · Node.js
ts
import { Support } from '@jangts/agent-core';
import type { ContextPolicy } from '@jangts/agent-core/support/context';
const policy: ContextPolicy = { mode: 'validate' };
Support.validateContextPolicy(policy, [], []);
console.log(policy.mode);js
import { Support } from '@jangts/agent-core';
const policy = { mode: 'validate' };
Support.validateContextPolicy(policy, [], []);
console.log(policy.mode);从真实业务片段配置缩减顺序
配置 · Node.js
这些数字是示例业务的显式选择,不是 SDK 推荐适用于所有模型的容量。
ts
import { Support } from '@jangts/agent-core';
import type { ContextPolicy } from '@jangts/agent-core/support/context';
const policy: ContextPolicy = { mode: 'reduce', triggerChars: 1800, targetInputChars: 1500,
selection: { mode: 'sequence' },
steps: [{ id: 'recent-history', kind: 'trim', fragmentId: 'history', field: 'messages',
grouping: { kind: 'user-turn' }, keepGroups: 2, targetChars: 1000 }],
};
Support.validateContextPolicy(policy, [], []);
console.log(policy.steps);js
import { Support } from '@jangts/agent-core';
const policy = { mode: 'reduce', triggerChars: 1800, targetInputChars: 1500,
selection: { mode: 'sequence' },
steps: [{ id: 'recent-history', kind: 'trim', fragmentId: 'history', field: 'messages',
grouping: { kind: 'user-turn' }, keepGroups: 2, targetChars: 1000 }],
};
Support.validateContextPolicy(policy, [], []);
console.log(policy.steps);对 App 自己的处理限定可变范围
扩展 · Node.js
审计还需要 ContextPlan 携带原片段;仅列 ID 不会自行修改或发布资料。
ts
import { Support } from '@jangts/agent-core';
import type { ContextPolicy } from '@jangts/agent-core/support/context';
const policy: ContextPolicy = { mode: 'audit', mutableFragmentIds: ['history'] };
Support.validateContextPolicy(policy, [], []);
console.log(policy.mutableFragmentIds);js
import { Support } from '@jangts/agent-core';
const policy = { mode: 'audit', mutableFragmentIds: ['history'] };
Support.validateContextPolicy(policy, [], []);
console.log(policy.mutableFragmentIds);