# 一键合并项目文件:面向 Web 对话型 AI 的源码收集工具 在使用 Web 对话型 AI 分析项目代码时,文件上传往往是一个不小的麻烦:有的平台限制上传数量,有的平台上传过程不稳定,还有的平台无法很好地保持文件之间的上下文关系。 为了解决这个问题,我整理了一个基于 Python Tkinter 的桌面小工具。它的核心目标很简单:**把一个项目目录中的多个文件内容,按规则合并成一段超长文本,然后复制到剪贴板或保存为文本文件,方便直接粘贴到 Web 对话型 AI 中。** 这类工具尤其适合用于代码审查、Bug 分析、架构咨询、需求梳理以及让 AI 快速理解一个小型项目的整体结构。 ## 为什么需要这个工具 现在很多 AI 对话页面都支持上传文件,但在实际使用中仍然会遇到几个问题: - **上传数量受限**:一次只能上传少量文件,完整项目无法直接提交。 - **上传状态不透明**:多个文件批量上传时,很难确认每个文件是否成功进入上下文。 - **上下文容易割裂**:AI 看到的是分散文件,未必能准确理解目录结构和文件关系。 - **重复操作成本高**:每次分析项目都要重新选择文件,效率较低。 相比之下,将项目文件统一整理成一份结构化文本,再交给 AI 处理,会更加稳定,也更容易控制输入内容。 ## 工具的核心功能 这个工具可以理解为一个“代码内容收集器”或“项目文件合并器”。它通过图形界面完成目录扫描、文件筛选、内容合并和配置保存。 主要能力包括: - **选择项目根目录并扫描文件** - **支持递归扫描子目录** - **可按文件后缀过滤,例如 `.cpp`、`.h`、`.py`、`.md` 等** - **可排除指定目录,例如 `build`、`.git`、`node_modules` 等** - **支持搜索文件并批量勾选** - **将选中文件内容合并为一段文本** - **支持复制到剪贴板或保存为 `.txt` 文件** - **支持自定义头部和尾部提示词** - **支持保存和加载 `.makelove` 配置文件** - **Windows 下可注册 `.makelove` 文件关联,双击配置即可打开工具** - **程序启动时可自动加载同目录下的 `1.makelove` 配置文件** 其中,配置文件功能非常实用。比如你经常需要分析同一个项目,就可以把根目录、排除规则、后缀筛选、已选文件和提示词一起保存下来,下次直接加载即可。 ## 推荐使用场景 ### 1. 将源码交给 AI 做代码审查 如果你希望 AI 帮你检查 C++、Python、JavaScript 或其他项目代码,可以先用工具筛选出关键源码文件,再合并后提交给 AI。 为了让 AI 更容易理解内容,工具会在每个文件前加入类似下面的分隔说明: ```text // ====== 文件: src/main.cpp ====== ``` 这样 AI 能够清楚知道每段代码来自哪个文件,而不是面对一大段没有上下文的文本。 ### 2. 让 AI 分析项目结构 对于中小型项目,可以选择核心代码文件、配置文件和说明文档,让 AI 快速总结项目功能、模块划分和潜在问题。 如果项目较大,我建议不要一次性合并全部文件,而是先排除依赖目录、构建目录和缓存目录,再只选择关键后缀。 ### 3. 生成带提示词的完整输入 工具支持编辑头部和尾部文本。你可以在头部写入任务说明,例如: ```text 请阅读下面的项目代码,帮我分析整体架构、关键模块职责以及可能存在的设计问题。 ``` 在尾部补充具体要求,例如: ```text 请优先指出高风险问题,并给出可执行的修改建议。 ``` 这样最终复制到 AI 对话框中的内容,就不仅仅是代码,而是一份完整的“任务指令 + 项目内容 + 输出要求”。 ## 功能设计拆解 ### 目录扫描 工具通过 `os.walk` 扫描项目目录,可以选择是否包含子文件夹。扫描过程中会记录: - 所有文件相对路径 - 所有文件后缀 - 所有子目录 这些信息会用于后续的文件过滤、目录排除和界面展示。 ### 目录排除 对于项目中的无关目录,建议提前排除,例如: - `.git` - `.idea` - `.vscode` - `build` - `dist` - `node_modules` - `__pycache__` 工具支持通过通配符进行排除,例如: ```text *build*, *node_modules*, *.git* ``` 这样可以避免把依赖文件、构建产物和缓存文件也合并进去,减少 AI 上下文浪费。 ### 后缀过滤 扫描完成后,工具会自动收集目录下出现过的文件后缀,并生成可勾选列表。 例如,一个 C++ 项目中可能包含: - `.cpp` - `.h` - `.hpp` - `.cmake` - `.txt` - `.md` 你可以只选择与本次分析有关的后缀,避免把图片、二进制文件或无关资源加入最终文本。 ### 文件选择 工具提供文件列表和搜索框,可以针对文件名或路径进行筛选。 常用操作包括: - 全选全部文件 - 取消全部文件 - 只选中当前可见文件 - 取消当前可见文件 这对大型目录尤其方便。例如你可以搜索 `controller`,只选择控制器相关文件,让 AI 专注分析某个模块。 ### 内容合并 最终合并文本由三部分组成: 1. 自定义头部文本 2. 被选中文件的内容 3. 自定义尾部文本 文件内容会按照相对路径排序,并在每个文件前插入文件名标记,方便 AI 识别边界。 ### 配置保存与自动加载 工具使用 `.makelove` 作为配置文件后缀,配置内容采用 JSON 格式保存,主要包含: - 项目根目录 - 是否递归扫描 - 排除目录规则 - 启用的文件后缀 - 已选择的文件列表 - 头部提示词 - 尾部提示词 在 Windows 环境下,程序还可以注册 `.makelove` 文件关联。注册后,双击配置文件即可打开工具并自动加载对应项目配置。 此外,如果程序同目录下存在 `1.makelove`,启动时也会自动加载它。这对于固定项目的日常分析非常方便。 ## 使用流程 可以按照下面的步骤操作: 1. 启动工具。 2. 点击“浏览”,选择项目根目录。 3. 根据需要勾选“包含子文件夹”。 4. 设置排除目录,例如 `*build*, *node_modules*`。 5. 点击“开始扫描文件”。 6. 在后缀选择窗口中勾选需要合并的文件类型。 7. 在文件列表中选择要提交给 AI 的文件。 8. 可选:编辑头部和尾部提示词。 9. 点击“复制到剪贴板”或“保存到文件”。 10. 将生成内容粘贴到 Web 对话型 AI 页面中。 ## 实现上的几个关键点 ### 使用线程避免界面卡死 目录扫描、文件读取和内容合并都可能耗时。如果直接在主线程执行,Tkinter 界面容易无响应。 因此工具将扫描、保存和复制等操作放入后台线程,再通过 `root.after()` 回到主线程更新界面状态。这是 Tkinter 程序中比较稳妥的处理方式。 ### 使用相对路径保持项目结构 合并文件时不建议只保留文件名,因为不同目录下可能存在同名文件。 例如: ```text src/config.py tests/config.py ``` 如果只显示 `config.py`,AI 很难判断它们的职责差异。使用相对路径可以保留项目结构信息,让 AI 的分析更准确。 ### 使用 `errors='replace'` 提高读取容错率 不同项目中的文件编码可能并不统一。读取文件时使用: ```python open(full_path, 'r', encoding='utf-8', errors='replace') ``` 可以避免因为个别字符无法解码而导致整个合并流程中断。 ### 配置文件使用 JSON 更利于维护 `.makelove` 虽然是自定义后缀,但内部仍然是 JSON。这样做有两个好处: - 人可以直接打开查看和修改。 - 程序读取和保存都非常简单。 一个配置文件大致类似: ```json { "root_dir": "D:/Projects/demo", "recursive": true, "exclude_patterns": ["*build*", "*.git*"], "active_suffixes": [".cpp", ".h", ".md"], "selected_files": ["src/main.cpp", "include/app.h"], "header": "请分析下面的项目代码。", "footer": "请给出修改建议。" } ``` ## 使用建议 为了让 Web 对话型 AI 获得更好的分析效果,我建议注意以下几点: - **不要盲目合并整个项目**:优先选择核心源码和必要配置文件。 - **排除依赖和构建目录**:例如 `node_modules`、`build`、`dist` 等目录通常没有必要提交。 - **保留 README 和配置文件**:这些文件有助于 AI 理解项目背景。 - **使用头部提示词明确任务**:不要只粘贴代码,要告诉 AI 你希望它做什么。 - **按模块分批提交**:如果项目较大,可以分模块多次分析,效果通常更稳定。 ## 小结 这个工具的价值不在于复杂,而在于它解决了一个非常具体的痛点:**当 Web 对话型 AI 无法稳定处理大量文件上传时,我们可以主动把项目内容整理成结构化文本。** 通过目录扫描、后缀过滤、目录排除、文件勾选、提示词拼接和配置复用,整个提交过程会变得更可控,也更高效。 如果你经常需要让 AI 阅读源码、分析项目或辅助调试,这类项目文件合并工具会显著减少重复操作,让你把精力放在真正的问题分析上。 最后修改:2026 年 06 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏