Replies: 4 comments 1 reply
-
|
1.C可配置,默认 跳过 + 警告 会好一点 |
Beta Was this translation helpful? Give feedback.
-
|
我先认领下T1的,最后T4中端到端的测试和验收测试工作我也会同步跟进 |
Beta Was this translation helpful? Give feedback.
-
|
我继续认领 T3 |
Beta Was this translation helpful? Give feedback.
-
|
服务模式下有一个 BUG |
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.
-
背景
add_resource不支持本地目录,传入目录路径报错[Errno 21] Is a directory(#80)。以下是我个人的初步想法,欢迎大家修改和提出建议。
整体架构
核心设计
为什么分两阶段
目录可能包含上百个文件,如果边解析边发现不支持的格式,已解析的工作就浪费了。
因此采用先校验后解析:阶段一快速遍历确认所有文件可处理,阶段二才开始实际解析。
阶段一:校验逻辑
遍历目录树,对每个文件做如下判定(按优先级):
unsupported 非空 → 抛出异常,附带完整的不支持文件列表。
全部通过 → 进入阶段二。
阶段二:解析路由
校验通过后,创建 VikingFS 临时目录
viking://temp/{uuid}/{dir_name}/。temp_dir_path,将其内容移动到主临时目录的对应相对路径下。
最终返回
ParseResult(temp_dir_path=temp_uri),由现有
TreeBuilder.finalize_from_temp()完成后续流程(移动到 AGFS + 入队语义生成)。入口改动
UnifiedResourceProcessor.process()和ParserRegistry.parse()中path.exists()后增加path.is_dir()判断,路由到 DirectoryParser。与 CodeRepositoryParser 的复用
从
CodeRepositoryParser._upload_directory()提取编码检测+上传逻辑为共享工具函数,DirectoryParser 和 CodeRepositoryParser 共同调用。
完整示例
输入目录:
阶段一:预扫描校验
阶段二:解析路由
最终 VikingFS 结构
目录间的组织关系(
papers/、notes/、src/)与原始目录一致,单个文档(如
transformer.pdf)被 Parser 展开为子目录。开放讨论 🗣️
1. 不支持格式的处理策略
当前想法:存在不支持的文件直接报错。
strict参数让用户选择2. 与 CodeRepositoryParser 的关系
parse()中增加本地目录分支3. 混合资源类型目录的语义聚合
现有的 SemanticProcessor 在生成目录级别的 abstract/overview 时,
处理的都是纯代码目录或纯文档目录,子文件的摘要风格和粒度是一致的。
引入目录导入后,同一目录下可能混合存在设计文档(PDF)、技术笔记(MD)、
架构图(PNG)、源代码(PY)等,各文件提取出的摘要差异很大。
当这些不同风格的子文件摘要需要合并成该目录的 abstract/overview 时,
现有的聚合逻辑是否需要调整?
例如:
~/project/下同时有design.pdf(摘要偏架构描述)和src/main.py(摘要偏代码结构),生成project/的目录级 overview 时,应该如何融合这两种不同性质的摘要?
4. 自定义过滤规则
当前想法只有固定的
IGNORE_DIRS/IGNORE_EXTENSIONS过滤。是否需要支持用户自定义选择导入哪些文件?
add_resource("/dir", include="*.pdf,*.md", exclude="drafts/")add_resource("/dir", glob="docs/**/*.pdf").gitignore,在目录下放置配置文件声明忽略规则5. 大目录限制
当前无目录级别限制。是否需要总文件数或总大小上限?
任务拆解(初步)
T1、T2、T3、T5 可以并行开发,T4 负责最终组装。
协作者
目前已报名的协作者:
欢迎更多人参与讨论和贡献!
Beta Was this translation helpful? Give feedback.
All reactions