[RFC] 支持导入代码仓库的方案设计,欢迎讨论 #36
Replies: 4 comments 3 replies
-
现版本尝试过代码分析,看起来基本不可用,导入时间超长切片零散。这个方案看起来会有挺大提升 |
Beta Was this translation helpful? Give feedback.
-
|
1、认同1:1映射和文件不切分。 |
Beta Was this translation helpful? Give feedback.
-
|
昨天尝试了一下导入linux源码,跑了四个多小时还没跑完,纯工程角度优化也很难再低于小时级别。 方案一:基于静态分析的符号索引 (推荐)核心思路:用无需 LLM 的静态分析(AST)替代 LLM 摘要。 • 成本极低:无需调用 LLM,本地计算即可完成。
方案二:原始内容分块向量化 (RAG 标准做法)核心思路:放弃“先摘要后向量化”,直接对代码进行分块(Chunking)向量化。
方案三:按需/分层处理 (Tiered Processing)核心思路:只对“重要”文件用 LLM,其他文件用廉价方案。 • Tier 1 (Core):README、入口文件 (main.py)、核心逻辑 -> 全量 LLM 摘要。
|
Beta Was this translation helpful? Give feedback.
-
|
有一些问题:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
代码解析方案 (Code Parser)
OpenViking 通过 Code Parser 模块实现对代码仓库的整体解析与理解。与普通文档的拆解式处理不同,代码解析采用了基于目录结构的整体映射策略,旨在保持代码项目的完整上下文。
概览
核心设计思考
代码仓库作为一种特殊的资源类型,具有以下显著特征,这些特征直接决定了我们的技术方案:
上下文映射体系
我们将代码仓库映射到 OpenViking 的标准分层描述体系中。
1. Viking URI 映射
假设用户导入了
OpenViking仓库:系统将生成如下标准化的目录树结构,能够完整体现深层级的文件路径:
在这颗目录树中,每一层目录都会有一个
.abstract.md文件和.overview.md文件:.abstract.md:目录的摘要,介绍本目录的功能和在项目中的作用。.overview.md:目录的概览,介绍本目录的文件结构、关键实体的位置等。2. 语义层级 (Context Layers)
数据处理原则
技术实现方案
1. 仓库识别与拉取
扩展
URLTypeDetector以支持代码仓库识别:https://github.com/org/repo或*.git)。git clone --depth 1进行浅克隆,速度最快。main.zip或master.zip。.git,.idea,__pycache__,node_modules等非代码资源。2. 解析流程 (CodeRepositoryParser)
解析器遵循 V5.0 的异步处理架构:
物理搬运 (Parser Phase):
viking://temp/{uuid}/临时目录。add_resource接口能快速返回。异步理解 (Semantic Phase):
TreeBuilder将临时目录移入正式路径(如viking://resources/...)。SemanticMsg并推入SemanticQueue。SemanticProcessor消费消息,遍历目录树,异步生成各级目录的.abstract.md和.overview.md。3. 使用示例
相关文档
Beta Was this translation helpful? Give feedback.
All reactions