Skip to content
English

ContextCompressor ​

SUPPORT · interface · 类型合同

Registered compressor handler.

导入 ​

ts
import type { ContextCompressor } from '@jangts/agent-core/support';
js
/** @typedef {import('@jangts/agent-core/support').ContextCompressor} ContextCompressor */

其他公开入口:@jangts/agent-core/support、@jangts/agent-core/support/context。

定义 ​

ts
interface ContextCompressor

字段结构 ​

字段类型必需说明
idstring必需见类型定义及调用场景。
maxCallsnumber | undefined可省略Maximum model calls through callModel, default 1; declare 0 for local compression.
compress(call: ContextCompressionCall, context: ExecutionContext) => Promise<ContextFragment["value"]>必需Produces a replacement value no larger than the requested target where possible.

成员目录 ​

成员用途
compressProduces a replacement value no larger than the requested target where possible.

成员详情 ​

compress ​

Produces a replacement value no larger than the requested target where possible.

ts
ContextCompressor.compress(call: ContextCompressionCall, context: ExecutionContext): Promise<ContextFragment["value"]>

Produces a replacement value no larger than the requested target where possible.

参数类型传递说明
callContextCompressionCall必需—
contextExecutionContext必需—
call 的字段
字段类型必需说明
stageIdstring必需只读。见类型定义及调用场景。
fragmentContextFragment必需Fragment to compress; its targetChars bound is enforced by the engine.
targetCharsnumber必需见类型定义及调用场景。
callModelContextModelCall必需Same runner's budget, timeout, transports and diagnostics. No recursive processing.
context 的字段
字段类型必需说明
loggerSubFlowLog | undefined可省略只读。Explicit optional recorder for this operation; never inferred from diagnostics.
signalAbortSignal必需只读。Non-optional cancellation signal; never undefined once execution has started.
diagnosticsDiagnosticContext | undefined可省略只读。Diagnostic scope of the enclosing call, when recording is enabled.

返回: Promise<string \| Record<string, unknown>>。

等待后的值: string \| Record<string, unknown>。

使用示例 ​

绑定一个文本压缩 handler ​

入门 · Node.js

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 value; },
});
console.log(compressor.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 value; },
});
console.log(compressor.id);

选择器明确控制可见摘录范围 ​

配置 · Node.js

selector-json 必须由 App 注册,返回 value={stepIds:string[]};不能把普通文本传输当成已解析 JSON。此例只展示 handler 装配,不发请求。

ts
import { Support } from '@jangts/agent-core';
const selector = Support.createContextSelector({ id: 'select-reduction',
  transport: 'selector-json', maxOutputTokens: 200, maxExcerptChars: 1000,
});
console.log(selector.id);
js
import { Support } from '@jangts/agent-core';
const selector = Support.createContextSelector({ id: 'select-reduction',
    transport: 'selector-json', maxOutputTokens: 200, maxExcerptChars: 1000,
});
console.log(selector.id);

相关策略源码 ​

相关定义 ​

接口参考、使用示例与开发指南。