AI 为开发者(第一部分,IDE)

  • 如果减少写坏代码的时间呢?
  • 好啊,我们把换行符写成猫的样子吧!


图片中,一个头部燃烧着火焰的人坐在电脑前,用铅笔画画,象征着创作枯竭或 burnout。(AI 生成的图片说明)|500x500

目前文档中暂不支持 RAG 和语义功能。

IDE

您觉得这样的功能如何:根据代码自动生成它所实现的功能描述?

如果您使用的是 PyCharm/IDEA,那么您可能可以使用 Devoxx 插件,该插件能够调用 LLM 进行代码审查以及您所要求的任何其他任务。

以下将介绍该插件与 LM Server API 服务的集成方案。

功能特性

  • 支持本地和云端语言模型:Anthropic、Groq、Ollama、OpenAI 等…
  • 为选定的代码片段提供提示
  • 代码审查
  • 自动生成代码功能说明

安装步骤

  • 安装插件(见下方说明)
  • 确保您已启动 Ollama、LMStudio 或 GPT4All
  • 更新设置中的提示模板
  • 可选:添加云端 LLM 提供商的 API 密钥
  • 开始使用插件

请从插件市场安装该插件。如因出口管制法规等原因插件无法安装(开源项目可安装):

…您可以从其他电脑复制该插件,或从 GitHub 下载。请注意以下文件夹和文件(Ubuntu 示例):

# 在家目录下
$ find . -iname 'devoxx*'
./.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml
./.cache/JetBrains/PyCharmCE2025.1/DevoxxGenie
./.cache/JetBrains/PyCharmCE2025.1/plugins/DevoxxGenie.zip
./.local/share/JetBrains/PyCharmCE2025.1/DevoxxGenie
```- 将 DevoxxGenie.zip 文件解压到 `~/.local/share/JetBrains/PyCharmCE2025.1` 目录或根据情况解压到 IDEA 目录。在我的情况下,PyCharmCExxx 文件夹需要手动创建,因为原本不存在。
- 将配置文件 `~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml` 放置到相应位置。
- 可选操作:您可能需要将插件及其压缩包添加到缓存中。

现在启动 IDE,您应该能在“已安装”标签页中看到插件并带有预设配置:

![IDE 设置窗口显示已安装插件,包括中文、日文和韩文语言包。(AI 生成的图注)|690x367](upload://zhRPNYpgtdcMU1upNbivGsosnJG.png)

## 设置

1. 安装插件后,请通过菜单“文件”进入程序设置,以配置 LLM 参数,例如温度、最大输出 token 数量、重试次数和超时设置。如需使用,您还可以添加云 API LLM 密钥。

   > DevOps 可为您准备一个 API 服务,作为非加密的 HTTP 服务器。若您处理敏感数据,请勿远程使用,因为流量可能被截获,公开数据将被恶意利用。

   说明中提到,在 LM Studio 中正确设置上下文窗口应使用 URL http://localhost:1234/api/v0,但此说法可能有误。实际上,模型加载时需手动将上下文窗口从 4096 扩展至 8192。

   ![DevoxxGenie 设置窗口,用户配置本地 LLM 提供商和 OpenAI 的 URL 地址。(AI 生成的图注)|599x500](upload://a1TZn4KG3kqBYd9sq6XNl2XWXa.png)

   在“提示”标签页中,您可以配置系统提示和用户提示。

   系统提示是与用户请求一同发送的指令,用于定义任务范围、搜索限制及输出格式。这是关键环节。

   请从系统提示中移除以下内容:

The Devoxx Genie is open source and available at GitHub - devoxx/DevoxxGenieIDEAPlugin: DevoxxGenie is a plugin for IntelliJ IDEA that uses local LLM's (Ollama, LMStudio, GPT4All, Jan and Llama.cpp) and Cloud based LLMs to help review, test, explain your project code..
You can follow us on Bluesky @ @devoxxgenie.bsky.social on Bluesky.


所有语言模型均支持 Markdown 格式,因此您可以构建结构化提示,包括列表、子项、代码块等。

> DevOps:默认提示(带限制的请求)定义在文件中:
> 
> ``` 
> ~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml
> ```
> 
> 模型支持将俄语请求翻译为英语。术语翻译错误或问题表述不准确会严重影响回答质量。请比较以下两个请求:“查找包含说明的页面”与“提供指向该页面的链接”。您认为哪种情况下机器人会提供链接?请严格按您期望的结果(如同向人类提出任务)进行提问。

<br>

2. 在“网络搜索”标签页中,模型可与互联网交互(默认启用)。若您拥有 Google Web Search 个人 API 密钥,可选择使用。

3. RAG 设置详情将在后续补充:

![DevoxxGenie 设置窗口,包含项目扫描与复制设置,以及使用 ChromaDB 的 Retrieval-augmented Generation(RAG)配置。(AI 生成的图注)|675x500](upload://gYED7Xn3c0twmTBEwwXsRF0f3pK.png)

## 使用插件

1. 现在,您可以打开源文件并选择代码片段,或右键单击项目文件将其添加到上下文窗口。

点击按钮 <kbd>Devoxx</kbd>:

![计算机屏幕显示终端窗口,其中包含 shell 代码,以及包含项目文件的打开文件夹。(AI 图片说明)|600x305](upload://2aBOJ4FADHQqiRrCP6OETygGNFT.png)

2. 从下拉列表中选择合适的模型。遗憾的是,列表中的一些模型可能不适合使用,例如嵌入模型。模型筛选器不可调整。

![屏幕上显示各种机器学习模型列表,包括基于 GPT 和 Qwen 的模型,以及用于 RAG 和 Web 界面的设置。(AI 图片说明)|507x500](upload://wgYHxRY5QimRgxam4SGxLL60KSd.png)

3. 确定提示上下文后,您可以开始提问或使用预设命令:/test、/review、/explain、/help。

4. 当您从所选 LLM 获得回复后,可以使用代码上方的按钮将示例代码复制到剪贴板或粘贴到您的文件中。或者,您可以获得一个用于描述脚本功能的 Markdown 格式文本(默认为英文,但您可以在提示中指定希望使用哪种语言)。

## 输出示例

使用模型 `qwen2.5-coder-14b-instruct` 分析 `/explain` 脚本:

- 代码行数:500

- 模型上下文窗口:8192(从默认值 4096 增加)

- 令牌数:

```json
"usage": {
 "prompt_tokens": 6298,
 "completion_tokens": 620,
 "total_tokens": 6918
}
  • 在 RTX 5060Ti 显卡上的分析时间:10 秒

  • 回答质量:在我的情况下非常满意。模型能够根据代码和注释生成结构化的描述,说明了该代码的作用。

剧透

当然!我们来用更简单的语言分解一下这个脚本,帮助初级开发者理解其功能。

概述

该脚本旨在通过使用 Tesseract 进行光学字符识别(OCR)来处理 PDF 和图像文件(JPG/JPEG)。它会检查 PDF 是否包含文本,如无文本则将其转换为 TIFF 和 PNG 格式,然后执行 OCR,并记录所有操作以便详细报告。

主要组件

  1. 颜色定义

    • GREENNC 用于终端中的彩色输出。
  2. 帮助函数(show_help

    • 提供使用说明、描述、选项和如何运行脚本的示例。
  3. 参数解析

    • 脚本使用 while 循环与 case 语句来解析命令行参数。
    • 选项包括设置 DPI、压缩类型、OCR 语言,以及是否在处理后保留 TIFF/PNG/TXT 文件。
  4. 验证

    • 检查提供的 DPI 是否在有效范围内(72-1200)。
    • 确保压缩算法为支持类型之一(group4lzwzip)。
  5. 日志设置

    • 初始化日志文件以记录所有操作和输出。
  6. 文件发现

    • 使用 find 命令在指定目录或当前目录(若未提供)中查找 PDF 和 JPG/JPEG 文件。
  7. PDF 文件处理

    • 对每个 PDF,使用 pdftotext 检查是否已包含文本。
    • 若发现文本,则记录为包含文本的 PDF。
    • 若无文本,则将 PDF 转换为 TIFF 和 PNG 格式,然后对 TIFF 执行 OCR。
  8. 图像文件处理

    • 对每个 JPG/JPEG 文件,直接使用 Tesseract 执行 OCR。
  9. 统计计算

    • 计算各种统计数据,如识别的总字符数、单个文件的最大字符数、按字符数分布的文本情况等。
    • 计算扫描 PDF 的百分比和平均识别速度。
  10. 摘要生成

    • 生成包含所有处理文件、统计信息和所用选项的详细摘要报告。
    • 将摘要同时记录到终端和日志文件中。

示例用法

要使用特定选项运行脚本:

./work2.sh --dpi 600 --compress lzw --lang rus+eng --no-keep-tiff --no-keep-txt ./docs
```此命令将DPI设置为600,使用LZW压缩TIFF文件,指定OCR语言为俄语和英语,并在处理后不保留TIFF/PNG/TXT文件。

### 结论

该脚本是一个功能全面的工具,用于批量处理PDF和图像文件并具备OCR能力。它提供详细日志和统计信息,适用于文档处理任务中的自动化与分析。

总结

这是一个非常实用的工具,既可用于寻找最优解决方案(例如编写函数或文档、可视化与日志记录),也可用于编写文档。

工作流程

完整的工作流程正在开发中,下一篇文章将介绍如何在GitLab中使用AI代码审查(AI Code Review)功能,在合并请求(MR)前进行审查。

graph LR
    classDef pclass fill:#f5f5dc
    classDef wclass fill:#f96
    classDef pmclass fill:#4f7
    classDef yclass fill:#ff9
    classDef oclass fill:#ffbf00

    B(IDEA) --|代码预审查|B1(AI Devoxx):::pclass
    B1 --|修改|C(修改):::wclass
    C --|自检|D{自检}:::oclass
    B --|你的代码完美|F
    F --|代码审查|H2{Code Review}:::oclass
    H2 -.-|需修改|B1
    D --|已检查|F(MR):::pmclass
    H2 --|已合并|E(Merged)

参考链接

测试结果

对102行Python脚本的代码审查。部分模型进行了两次运行,以排除模型加载到内存和预热所需的时间。"Recom"列显示模型推荐的数量。加号(+)表示详细分析。"Code = none"表示不提供修正代码示例。

分析时间列(1st、2nd)单位为秒。

架构 VL 模型 参数 量化 GB Recom Code 1st 2nd
1 qwen3 deepseek-r1-0528-qwen3 8b q8_0 8.71 3 - 126 -
2 llama deepseek-r1-distill-llama 8b q4_0 5.28 6 - 34 s -
3 qwen3 deepseek-r1-0528-qwen3 8b q4_k_m 5.03 3 none 85 -
4 gemma3 gemma-3 12b q6_k 9.66 10+ - 84 -
5 gemma3 :eye: gemma-3 4b q8_k_xl 6.84 11+ - 49 -
6 gemma3n gemma-3n 6.9b q8_0 7.35 2 none 20 -
7 gemma3 gemma-3 12b q4_k_m 7.30 10++ - 66 -
8 gemma3 :eye: gemma-3 4b q8_0 4.98 4 - 41 -
9 llama llama-3-gpt4o-ru 8b q4_k_m 4.92 8 none 25 -
10 llama llama 3.2 8x3b q3_k_s 8.25 6 - 24 -
11 llama llama 3.1 8b q6_k 6.60 8 - 25 -
12 llama llama 3.1 8b q8_0 8.54 8 - 35 -
13 phi3 phi-4 15b q4_k_m 9.05 12 - 47 34
14 phi3 phi-4-reasoning 15b q4_k_m 9.05 13 - 66 14
15 llama mistral-nemo-2407 12b q6_k 10.06 5 - 40 25
16 llama oh-dcft-v3.1-gemini-1.5-flash 8b 6_k 6.60 5 - 29 27
17 qwen3 qwen3-14b-gemini 14b q4_k_m 9.00 13+ - 127 76
18 qwen3 qwen3-8b 8b q8_0 8.71 14+ - 63 43
19 qwen2 qwen2.5-coder 14b q4_k_m 8.99 8 - 47 36
20 qwen2vl qwen2.5-vl 7b q8_0 8.10 8+4 - 41 36
21 qwen2vl spaceQwen2.5-vl 3b f16 6.18 3 - 30 -

最终代码未经过功能测试,仅提供主观分析深度评估。最受关注的模型为第5、7、14、18号,以及部分第20号。使用这些模型进行论坛主题摘要,效果最佳的是Phi 4。Gemma 3和Qwen 3表现也较好。Gemma 3还具备图像识别功能,而Qwen常切换为英文,影响使用。

测试环境为RTX 5060Ti 16GB(实际可用约15.5GB,模型超过9.5GB无法加载)。Qwen常切换英文,不利于摘要生成。

服务器:https://lmstudio.ai

上下文长度从4096提升至8192。

代码审查与聊天机器人:

代码审查、聊天机器人与摘要:

聊天机器人与摘要:

图像识别: