Skip to content
English

TextBlocks ​

KIT · constant · 运行时值

导入 ​

ts
import { TextBlocks } from '@jangts/agent-core/kits/text-blocks';
js
import { TextBlocks } from '@jangts/agent-core/kits/text-blocks';

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

定义 ​

成员目录 ​

成员用途
split完整输入输出见下方重载。

成员详情 ​

split ​

ts
TextBlocks.split(text: string, options: TextBlockOptions): TextBlock[]

Split long plain text on structural boundaries.

Headings and horizontal rules start a new block, blank lines end the current one, and all other lines break only when the target size would be exceeded. A single line longer than the target becomes its own block so that paging can cut it into fragments later without splitting the line into unrelated sections. Concatenating every block reproduces the input exactly: no truncation, padding or dropped whitespace.

The input must be plain text; binaries and rich documents are read elsewhere.

参数类型传递说明
textstring必需—
optionsTextBlockOptions必需—
options 的字段
字段类型必需说明
targetCharsnumber必需只读。Target block size in characters; only a single over-long line may exceed it.

返回: TextBlock[]。

使用示例 ​

先切一份带章节的说明 ​

入门 · 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);

相关策略源码 ​

相关定义 ​

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