跳转到内容

getContextSlice

接收文件路径或 ID 作为查询,通过 BFS 提取与之相关的最小文档集。沿出边方向(某文件所引用的文档侧)展开,扩展至深度上限。

当 AI 代理或人类处理特定主题时,有时希望传递的不是整个仓库,而是 仅相关的文档getContextSlice 通过切出查询的近邻,帮助控制上下文窗口和读者的认知负担。

查询的解释方式有以下两种。

  • 当查询与图中的文件路径一致时 — 以该文件为起点沿出边遍历
  • 不一致时 — 将其作为表格单元格的值在所有文档中查找,以所有匹配到的文件为起点
function getContextSlice(
graph: ContextGraph,
documents: Map<string, ParsedDocument>,
query: string,
maxDepth?: number,
): string[];
参数类型必需说明
graphContextGraphbuildContextGraph 构建的图
documentsMap<string, ParsedDocument>与构建图时相同的文档 Map。ID 查询遍历表格时需要
querystring文件路径或 ID 字符串
maxDepthnumberBFS 的最大深度。默认 2

返回 string[]。它包含查询的起点文件以及从该起点在 maxDepth 步以内可达的文件,按字母顺序排序。如果找不到与查询匹配的文件,则返回空数组。

import { buildContextGraph, getContextSlice, loadDocuments } from "@contextlint/core";
const documents = loadDocuments(["docs/**/*.md"]);
const graph = buildContextGraph(documents);
// 按文件路径切片
const slice = getContextSlice(graph, documents, "docs/specs/auth.md");
console.log(slice);
// 按 ID 切片(从表格单元格搜索)
const reqSlice = getContextSlice(graph, documents, "REQ-AUTH-01", 3);
console.log(reqSlice);