Notepad++ 插件开发入门:调用Qwen3.5-2B为文本编辑增添AI智慧

张开发
2026/4/21 6:24:44 15 分钟阅读

分享文章

Notepad++ 插件开发入门:调用Qwen3.5-2B为文本编辑增添AI智慧
Notepad 插件开发入门调用Qwen3.5-2B为文本编辑增添AI智慧1. 前言当文本编辑器遇上AI作为一名长期使用Notepad的开发者你是否想过让这个轻量级编辑器变得更智能想象一下选中一段文字点击菜单就能自动完成语法检查、内容润色甚至语言翻译。今天我们就来实现这个想法——通过开发Notepad插件集成Qwen3.5-2B模型为你的文本编辑工作流注入AI智慧。这个教程不需要你精通AI模型部署我们会从最基础的插件开发讲起逐步实现搭建Notepad插件开发环境创建基础插件框架集成Qwen3.5-2B模型推理能力实现文本处理并返回结果的完整流程整个过程就像搭积木一样简单明了跟着步骤走90分钟内你就能拥有一个AI增强版的Notepad。2. 开发环境准备2.1 基础工具安装首先确保你的开发环境已经准备好以下工具所有工具都可以从官网下载Notepad官网下载最新版本Visual Studio推荐2019或2022社区版完全免费CMake版本3.15或更高vcpkg用于管理C依赖项2.2 获取Notepad插件开发包Notepad提供了完整的插件开发支持从GitHub克隆官方插件模板git clone https://github.com/npp-plugins/PluginTemplate.git解压后你会看到清晰的目录结构其中src文件夹存放核心代码2.3 准备Qwen3.5-2B推理环境我们需要让插件能够调用Qwen模型vcpkg install onnxruntime vcpkg install nlohmann-json这些库将帮助我们加载模型并处理输入输出。3. 创建基础插件框架3.1 初始化插件项目用VS创建一个新的DLL项目选择动态链接库(DLL)模板命名为NPQwenAI将PluginTemplate中的关键文件复制到项目PluginInterface.h→ 插件通信接口resource.h→ 资源定义dllmain.cpp→ 主入口点3.2 实现基础插件结构编辑dllmain.cpp添加基础框架#include PluginInterface.h extern C __declspec(dllexport) void setInfo(NppData notepadPlusData) { // 初始化时Notepad会调用此函数 } extern C __declspec(dllexport) const TCHAR * getName() { return _T(Qwen AI Plugin); } extern C __declspec(dllexport) FuncItem * getFuncsArray(int *nbF) { static FuncItem funcItems[1] { { _T(Process with Qwen), processText, 0, false, nullptr } }; *nbF 1; return funcItems; }4. 集成Qwen3.5-2B模型4.1 加载模型在插件初始化时加载模型#include onnxruntime_cxx_api.h Ort::Env env(ORT_LOGGING_LEVEL_WARNING, QwenPlugin); Ort::SessionOptions session_options; std::unique_ptrOrt::Session session; void loadModel() { const wchar_t* model_path Lqwen3.5-2b.onnx; session std::make_uniqueOrt::Session(env, model_path, session_options); }4.2 实现文本处理函数添加核心处理逻辑std::string processWithQwen(const std::string input) { // 准备输入输出 Ort::AllocatorWithDefaultOptions allocator; std::vectorint64_t input_shape {1, static_castint64_t(input.size())}; // 创建输入Tensor Ort::Value input_tensor Ort::Value::CreateTensorchar( allocator, input_shape.data(), input_shape.size()); // 运行推理 const char* input_names[] {input}; const char* output_names[] {output}; auto outputs session-Run( Ort::RunOptions{nullptr}, input_names, input_tensor, 1, output_names, 1); // 处理输出 char* output_data outputs[0].GetTensorMutableDatachar(); return std::string(output_data); }5. 实现编辑器交互5.1 获取选中文本添加获取当前选中文本的功能std::string getSelectedText() { int length (int)::SendMessage(nppData._nppHandle, NPPM_GETCURRENTSELECTEDTEXT, 0, 0); if(length 0) return ; std::vectorchar buffer(length 1); ::SendMessage(nppData._nppHandle, NPPM_GETCURRENTSELECTEDTEXT, length 1, (LPARAM)buffer.data()); return std::string(buffer.data()); }5.2 替换选中文本实现将处理结果插回编辑器void replaceSelectedText(const std::string text) { ::SendMessage(nppData._nppHandle, NPPM_REPLACESEL, 0, (LPARAM)text.c_str()); }6. 完整功能集成6.1 实现菜单命令处理将各个模块串联起来void processText() { // 1. 获取选中文本 std::string input getSelectedText(); if(input.empty()) return; // 2. 调用模型处理 std::string output processWithQwen(input); // 3. 替换选中文本 replaceSelectedText(output); }6.2 添加模型功能选项扩展功能支持不同处理类型enum ProcessType { TRANSLATE_EN, GRAMMAR_CHECK, TEXT_SUMMARY }; std::string processWithOptions(const std::string input, ProcessType type) { // 根据不同类型构造不同的prompt std::string prompt; switch(type) { case TRANSLATE_EN: prompt 翻译成英文 input; break; case GRAMMAR_CHECK: prompt 检查并修正语法 input; break; // 其他功能... } return processWithQwen(prompt); }7. 编译与部署7.1 生成插件DLL在Visual Studio中选择Release配置目标平台设置为x64生成解决方案7.2 安装插件到Notepad将生成的DLL文件复制到Notepad安装目录的plugins文件夹新建一个同名的子文件夹如NPQwenAI将模型文件qwen3.5-2b.onnx放入该文件夹重启Notepad8. 实际效果与使用技巧现在你的Notepad已经获得了AI超能力选中一段中文文本 → 右键选择Process with Qwen → 立即获得英文翻译选中语法不通顺的句子 → 获得修正建议选中长段落 → 得到简洁摘要实用小技巧对于大段文本处理建议分批处理避免超时模型响应速度取决于你的硬件配置首次加载可能需要10-20秒可以在插件配置中添加你自己的prompt模板9. 总结与扩展方向通过这个教程我们成功将Qwen3.5-2B模型集成到了Notepad中实现了基础的AI文本处理功能。整个过程虽然涉及多个技术环节但每个步骤都不复杂就像搭积木一样把各个模块组合起来。实际使用下来这个插件对于日常的文字工作帮助很大特别是需要快速处理大量文本的场景。模型的理解和生成能力也令人满意基本能满足大部分常见需求。如果你想进一步扩展功能可以考虑添加配置界面让用户自定义prompt支持更多模型功能如代码生成、情感分析等实现历史记录功能保存处理结果添加快捷键支持提高操作效率获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章