
TeamAI双轨提取机制详解AST轨与启发式轨并行时谁说了算【免费下载链接】teamai-cliMake Every Team AI Native项目地址: https://gitcode.com/GitHub_Trending/te/teamai-cliTeamAI 是一款面向团队的 AI 原生 CLI 工具Make Every Team AI Native它的代码知识图谱引擎采用双轨提取机制AST 轨与启发式轨同时运行为代码库生成依赖关系边。很多新手都会问两条轨道结果重叠时到底谁说了算答案是——AST 轨优先。下面用 5 分钟讲清这套机制的分工、合并规则与降级策略。双轨提取是什么两条轨道的分工TeamAI 的代码知识提取位于 src/wiki-engine/code-knowledge/ 目录两条轨道的分工如下轨道覆盖语言技术手段产出标签AST 轨TypeScript / JavaScript / Python / GoWASM 版 tree-sitter 语法解析code-ast带置信度权重启发式轨所有语言含 Java、Rust 等基于正则的模式提取code-heuristic简单理解AST 轨负责精准——真正解析语法树把import/require、跨文件调用、TS 的implements子句解析成精确的文件到文件关系边DEPENDS_ON/REFERENCES/IMPLEMENTS。启发式轨负责兜底——用正则模式提取覆盖 AST 轨尚未支持的语言比如 Java 和 Rust保证任何语言都能提取到基础结构。AST 轨的解析器是纯 JavaScript 依赖WASM 格式无需任何原生编译工具链安装即用。支持的语言与扩展名映射见 src/wiki-engine/code-knowledge/ast/parser-registry.ts。谁说了算合并规则AST 优先两轨结果并不简单拼接而是经过一层专门的合并逻辑核心实现在 src/wiki-engine/code-knowledge/ast/merge-edges.ts键去重AST 赢每条事实用类型:名称:文件:起始行作为唯一键AST 轨事实占位后启发式轨的重复项直接被丢弃。同行关系整行让位如果启发式轨的一条关系事实与 AST 轨关系事实位于同一文件的同一行该启发式事实也会被丢弃——避免同一行出现两条打架的边。最终仍做一次全量去重保证输出干净。这个合并动作在提取主流程中被调用提取入口src/codebase-extract.ts启发式语言分发注册表决定哪些语言走正则提取src/wiki-engine/code-knowledge/extractors/index.ts事实的数据结构定义CodeFact含confidence字段src/wiki-engine/code-knowledge/code-extractors.tsAST 轨如何生成高精度边AST 轨的主流程在 src/wiki-engine/code-knowledge/ast/index.ts分三步逐文件解析WASM 解析器遍历符号、import 语句、调用点、implements子句import 解析把导入路径解析到真实目标文件生成DEPENDS_ON边——成功解析且置信度为EXTRACTED时权重 0.9否则 0.5解析器见 src/wiki-engine/code-knowledge/ast/import-resolver.ts调用与接口解析跨文件调用生成REFERENCES边implements解析生成IMPLEMENTS边权重 0.9。每条边都附带证据哪个文件、哪一行、什么原因让图谱里的每条关系都可追溯、可核查。降级策略AST 加载失败怎么办万一 WASM 解析器加载失败提取不会中断而是自动降级到纯启发式轨并记录一条AST_UNAVAILABLEgap 供排查见 src/codebase-extract.ts。你还可以通过环境变量强制关闭 AST 轨TEAMAI_SKIP_AST1 teamai codebase --extract对应的可用性检测逻辑在 src/wiki-engine/code-knowledge/ast/index.ts。总结一句话记住这套机制问题答案两条轨道重叠时谁说了算AST 轨键去重 同行关系让位Java/Rust 走哪条轨启发式轨AST 轨暂不支持AST 加载失败会崩溃吗不会降级启发式并记录AST_UNAVAILABLE想强制只用启发式设置TEAMAI_SKIP_AST1双轨设计的精髓在于精度归 AST覆盖归启发式冲突时 AST 一票否决。这种高精度轨 兜底轨的组合是 TeamAI 能把多年迭代的大型代码库变成可追溯知识图谱的关键。更多使用细节可参考 docs/usage-guide.zh-CN.md。【免费下载链接】teamai-cliMake Every Team AI Native项目地址: https://gitcode.com/GitHub_Trending/te/teamai-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考