用途:将源代码切成适合 LLM 上下文窗口的片段,同时保持语法完整,避免在函数、类或代码块中间断开而丢失上下文。
主要能力:ts-pack process <file> --chunk-size <bytes> 按语法边界切分,每个块是完整的语法单元;--chunk-size 为最大字节数,切分器会把完整语法单元打包到该上限内,单个超大的语法结构会单独成为一块而不被切开;分块写入常规 process JSON 输出的 chunks 数组,每个块包含源码文本与跨度信息(行/字节偏移),便于引用或在原文件中重新定位。
用法:ts-pack process src/app.ts --chunk-size 2000;选择大小时按下游模型的 token 预算估算,代码约 bytes÷4≈tokens,故 --chunk-size 4000 大致为 1k tokens,并需为提示词、上下文消息和回复预留空间,不要按完整上下文窗口来定块大小。可与结构提取组合:ts-pack process src/service.py --structure --chunk-size 3000 | jq '{chunks: (.chunks | length), functions: (.structure | length)}';逐块喂给 LLM:ts-pack process big_module.py --chunk-size 2500 | jq -c '.chunks[]'。SDK 等价方式是在 ProcessConfig 上设置 chunk_max_size(字节),与 CLI 的 --chunk-size 相同:from tree_sitter_language_pack import process, ProcessConfig; config = ProcessConfig("python", chunk_max_size=2500); result = process(source_code, config); for chunk in result.chunks: send_to_llm(chunk.content)。ProcessConfig 是冻结 dataclass,需通过构造器传入,ProcessResult 是对象而非字典。
适用场景:文件较大、批量建立 RAG 索引,或需要稳定且语法连贯的引用单元时使用分块;单个小文件若已能放入上下文窗口,则不必分块,直接整体传入。
限制:资料未提供支持的语言列表、性能数据、错误处理与除上述参数外的配置项,暂未提供。