# NSTC Code Reivew via LLM tool **Repository Path**: zhouzhen123456/nstc-llm-codereview ## Basic Information - **Project Name**: NSTC Code Reivew via LLM tool - **Description**: Code Review - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2025-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 用途 用于在指定目录(repo_path)下,根据配置文件(config.json),对指定时间范围内的提交抽取相关代码, 构建提示词,形成文件包(包括源文件、diff文件、提示词文件)。该文件包可以上传给大模型工具,进行Code Review。如果文件包长度超过大模型工具的上下文长度限制,则进行代码瘦身,生成瘦身后的文件包。 ``` # 安装python,版本高于3.11 # 安装依赖包 pip install -r requirements.txt # 运行 python testGit_gui.py ``` ## 使用方法 1. 修改config.json文件,配置相关参数。 2. 运行testGit_gui.py,选择repo路径,选择branch,选择时间范围,先查询时间范围内的提交(查询提交 按钮),选择提交后(全选提交 按钮、清空提交 按钮、或点击提交列表中的条目),查询提交涉及的源文件(查询文件 按钮),选择文件后(全选文件 按钮、清空文件 按钮、或点击文件列表中的条目),生成文件包和提示词文件(保存提示词 按钮),如果超出上下文限制,可以进行压缩(压缩文件包 按钮)。注意压缩以后文件包的位置是原路径下面的shrink目录。压缩的方法是基于diff文件将源文件的内容保留上下一定行数。 - ![工具截屏](resource/pic1.png) 3. 对提交涉及的文件,默认只选取如下类型,可以根据需要修改config.json文件中的file_extensions参数 ``` "file_extensions": [ ".java", ".xml", ".properties", ".yml", ".py", ".vue", ".js", ".css", ".scss", ".sass", ".jsx", ".tsx", ".ts", ".sql", ".json", ".html", ".htm", ".sh" ] ``` 4. config.json参数含义如下 - context_length: 上下文长度限制,单位K token,超过限制时,压缩文件包会从最大的源文件开始压缩,直到文件包的大小满足限制或压缩完所有源文件。一般大模型工具(如豆包、Kimi)的上下文长度限制是128K token,所以context_length设置为120。不过你可以试一试超过过128K时是不是还可以上传到大模型工具中。如果已经压缩了全部文件,还是超出上下文长度限制,可以调小shrink_limit参数再试试。 - commit_count: 查询提交时的默认数量限制 - default_start_time: 查询提交时的默认开始日期,从日期 00:00:00 开始,注意 00:00:00是代码写死的 - default_end_time: 查询提交时的默认结束日期,到日期 23:59:59 结束,注意 23:59:59是代码写死的 - default_directory: 默认仓库目录,建议设置为代码仓库目录的上级目录,例如代码仓库目录是d:/repo/xxx,则default_directory设置为 d:/repo - shrink_limit: 文件大小压缩限制,在进行文件压缩时,会在diff基础上,diff涉及到的代码上下各自保留shrink_limit行 - file_extensions: 分析commits时,只分析这些文件类型 - output_dir: 输出文件包的存储路径 - ![配置文件](resource/pic10.png) 5. 在提交列表,右键菜单,可以看到某个提交的详细信息,包括哈希值、文件列表等 - ![提交信息](resource/pic7.png) 6. 在文件列表,右键菜单,可以看到某个文件的diff信息,注意只有当这个文件是“修改”时,才能看到diff信息 - ![文件diff](resource/pic8.png) 7. 因为对文件进行了过滤,可能出现选中全部提交(如30个),选中全部文件保存提示词时,在提示词中出现的提交数量变小的情况(小于30个),因为我们只是把选中的文件涉及的提交包含在了提示词里面 - ![文件包结构](resource/pic2.png) 8. 可能出现多个提交反复修改一个源文件的情况,该文件的diff信息是分析了第一次提交(涉及这个文件的)前的version和最后一次提交(涉及这个文件的)的version之间的差异的。 9. 在文件列表中,有2个[]括起来的数字,第一个是源文件的token个数,第二个是diff文件的token个数。 - ![文件列表](resource/pic9.png) 10. 可以在这里填写查询关键词,用来过滤commit comment,多个词用空格隔开时,表示OR关系 - ![查询关键词](resource/pic11.png) 11. 可以在这里看到工具使用帮助 - ![使用帮助](resource/pic12.png) 12. 可以在这里编辑系统人设,完成以后,工具产生的提示词文件的开头就是你编辑的内容了 - ![系统人设](resource/pic13.png) ## 和大模型工具的聊天方法,以豆包为例 1. 选择豆包 AI编程 功能 - ![豆包操作](resource/pic3.png) 2. 选择 代码文件》上传文件夹,将本工具生成的文件夹上传到豆包 - ![豆包上传](resource/pic4.png) 3. 将prompt.txt文件内容复制到豆包的输入框中,点击开始,等待分析完成 - ![豆包开始](resource/pic5.png) - ![豆包分析](resource/pic6.png) 4. 在文件比较多的时候,prompt.txt的内容比较多,豆包给出的分析可能是比较范范的,没有针对性。可以继续进一步提问,例如 - 本批次提交的内容中,哪些文件改动内容比较多? - XXX文件改动较多,请深入分析一下,并给出优化建议 5. 建议将豆包对话的内容使用 分享对话 功能产生链接,放入TAPD中,作为代码评审的证据 6. 一个和豆包沟通的样例 https://www.doubao.com/thread/w09711e62d766f04a 7. 目前常见大模型的上下文长度限制一般为128K token,豆包 AI编程 功能支持更大的文件夹上传,大家可以先试着上传未经压缩的文件包到豆包,如果发现问题,再进行文件包瘦身 8. 如果涉及多个仓库的改动,可以为每个仓库构建一个文件包,把多个prompt.txt的内容合并一下构成一个新文件包