Skip to content
English

TextBlockOptions ​

KIT · interface · 类型合同

Splitting options.

导入 ​

ts
import type { TextBlockOptions } from '@jangts/agent-core/kits/text-blocks';
js
/** @typedef {import('@jangts/agent-core/kits/text-blocks').TextBlockOptions} TextBlockOptions */

其他公开入口:@jangts/agent-core/types、@jangts/agent-core/kits、@jangts/agent-core/kits/text-blocks。

定义 ​

ts
interface TextBlockOptions

字段结构 ​

字段类型必需说明
targetCharsnumber必需只读。Target block size in characters; only a single over-long line may exceed it.

使用示例 ​

先切一份带章节的说明 ​

入门 · Node.js

示例只演示分片合同;分页窗口、上下文预算和提示词仍由 App 决定。

ts
import { TextBlocks } from '@jangts/agent-core/kits/text-blocks';
const text = '# 概览\n\n' + '说明内容\n'.repeat(4) + '\n## 细节\n\n' + '更多内容\n'.repeat(4);
const blocks = TextBlocks.split(text, { targetChars: 40 });
console.log(blocks.map(block => [block.number, block.start, block.end]));
console.log(blocks.map(block => block.text).join('') === text);
js
import { TextBlocks } from '@jangts/agent-core/kits/text-blocks';
const text = '# 概览\n\n' + '说明内容\n'.repeat(4) + '\n## 细节\n\n' + '更多内容\n'.repeat(4);
const blocks = TextBlocks.split(text, { targetChars: 40 });
console.log(blocks.map(block => [block.number, block.start, block.end]));
console.log(blocks.map(block => block.text).join('') === text);

按块分页并记录覆盖范围 ​

配置 · Node.js

块边界不等于固定字符窗口;报告已读范围时应记录块的 start/end,而不是推算字符位置。

ts
import { TextBlocks, type TextBlock } from '@jangts/agent-core/kits/text-blocks';
const text = '# 报告\n\n' + '记录内容\n'.repeat(200);
const blocks = TextBlocks.split(text, { targetChars: 4000 });
const page = (offset: number, limit: number): { blocks: TextBlock[]; nextOffset?: number } => ({
  blocks: blocks.slice(offset, offset + limit),
  nextOffset: offset + limit < blocks.length ? offset + limit : undefined,
});
const first = page(0, 2);
console.log(first.blocks.map(block => block.number), first.nextOffset);
js
import { TextBlocks } from '@jangts/agent-core/kits/text-blocks';
const text = '# 报告\n\n' + '记录内容\n'.repeat(200);
const blocks = TextBlocks.split(text, { targetChars: 4000 });
const page = (offset, limit) => ({
    blocks: blocks.slice(offset, offset + limit),
    nextOffset: offset + limit < blocks.length ? offset + limit : undefined,
});
const first = page(0, 2);
console.log(first.blocks.map(block => block.number), first.nextOffset);

相关策略源码 ​

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