AI探索:通过宏脚本给小众编辑器EverEdit插上AI的翅膀!
1 AI探索:通过宏脚本给小众编辑器EverEdit插上AI的翅膀!
1.1 背景
在AI编程大行其道的背景下,各种AI编程工具:Cursor、VSCode的各种插件、Trae等等搞得不亦乐乎!您是否很苦恼自己使用的工具居然不支持AI,就像作者最爱的文本编辑器EverEdit,它没有原生AI的支持,技术群一片苦苦呼唤而不得?
本着求人不如求己的原则,作者摸索了一天EverEdit的插件语法及AI平台的接口,做出了一个在EverEdit中使用AI的原型,希望通过这个总结,可以启发您给自己的日常工具插上AI的翅膀!
1.2 准备工作
1.2.1 申请AI账号:账号注册
注:注册账号时输入手机号、验证码,其他保持不变。
说明:
为什么选择“硅基流动”平台:该平台提供近30款免费AI模型、和近60款价格不一的付费AI模型,且注册赠送2000万tokens,个人可以使用很久。
1.3 制作EverEdit的AI插件
由于我们希望有一个独立的对话窗口用于输入任务给AI,所以需要使用EverEdit的Web形式插件。
1.3.1 制作1个html页面用于在EverEdit中输入任务及向AI平台发送请求
这个html做了如下几件事:
- 提供
操作界面 - 读取本地
ai_setting.ini文件中密钥、模型等参数 - 读取
html页面中用户输入的任务 - 将任务描述通过AI平台的API接口发送给平台
- 接收AI平台的响应并解析
- 将解析后的内容打印到
html页面的日志窗口 - 将解析后的内容插件到
EverEdit当前光标位置
好吧,这个html页面也是AI生成的,我本人也会点html、css、javascript,但不经常用所以荒疏了,要速度把这3者结合起来,生成一个可用的html页面,可能要花个1天,而AI给我生成的这个页面,前后调试加需求修改,只花了不到1小时(时间主要花在我的思考)。html界面如下:
html文件中的核心函数(向AI平台发送请求,并解析响应报文)
// 处理按钮点击事件
function sendRequest() {
// 获取文本框中的内容
var inputText = document.getElementById('inputText').value;
// 从文件中获取 API 密钥
//var apiKey = getApiKeyFromFile();
var apiKey = 'Bearer ' + ReadIniValue("AI", "API");
var model = ReadIniValue("AI", "MODEL");
if (!apiKey) {
return;
}
// 获取状态图标元素
var statusIcon = document.getElementById('status-icon');
// 切换到运行态图标
statusIcon.style.backgroundImage = "url('running.gif')";
// 创建 XMLHttpRequest 对象
var xhr = createXMLHttpRequest();
if (xhr === null) {
// 切换回初始态图标
statusIcon.style.backgroundImage = "url('initial.png')";
return;
}
// 配置请求选项
var options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
},
body: '{"model":"' + model +'","stream":false,"messages":[{"role":"user","content":"' + inputText + '"}]}'
};
// 初始化请求
xhr.open(options.method, url, true);
// 设置请求头
for (var header in options.headers) {
xhr.setRequestHeader(header, options.headers[header]);
}
// 处理响应
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
// 切换到完成态图标
statusIcon.style.backgroundImage = "url('completed.png')";
var logWindow = document.getElementById('logWindow');
if (xhr.status >= 200 && xhr.status < 300) {
try {
// 使用引入的 json2.js 提供的 JSON.parse 方法
var response = JSON.parse(xhr.responseText);
// 解析出 content 属性的值
var content = response.choices && response.choices[0] && response.choices[0].message && response.choices[0].message.content;
if (content) {
// 将 content 内容显示在日志窗口中
logWindow.value += content + '\n';
var App = window.external;
App.ActiveDoc.Insert(content);
} else {
logWindow.value += '未找到 content 属性\n';
}
} catch (e) {
logWindow.value += 'Error parsing JSON response: ' + e.message + '\n';
}
} else {
logWindow.value += 'Request failed with status: ' + xhr.status + '\n';
}
}
};
// 发送请求
xhr.send(options.body);
说明:
说实话, 这个函数我自己写不出来,这个函数是AI给我写的!并且没怎么调试,中间读取ini文件的函数是我自己写的,由于读取ini文件使用了EverEdit的API,而AI平台不识别这个API,所以需要我自己操刀。
1.3.2 编写EverEdit的宏脚本调用html弹出窗口
这里写EverEdit的宏脚本就比较简单了,新建一个AI助手.ejs文件,编码使用GB2312. 脚本的内容如下:
htmlFile = "file:///" + SCRIPT_PATH + "\\ai.html"
var dlg=App.ShowHtmlDialog(true, htmlFile, 700, 1120);
dlg.SetTitle("AI助手")
1.3.3 编写ai_setting.ini文件
ai_setting.ini文件主要存放AI平台的API密钥、AI模型等配置信息,文件内容如下:
[AI]
API=请粘贴您的硅基流动的API密钥
MODEL=Qwen/Qwen2.5-Coder-7B-Instruct
截图示例:
参数说明:
点击模型后,进入弹出页面,单击复制按钮,如下图所示:
说明:
硅基流动中有近100种模型,免费模型有近30种,可以根据需要自由选择。
1.3.4 完整的AI助手插件下载地址
- AI助手下载地址:EverEdit扩展- AI助手0.1
- EverEdit插件安装指南:如何安装EverEdit扩展脚本(方法2)
1.4 效果演示
1.5 工作原理
- 读者如果有兴趣, 可以下载
AI助手后使用任一文本编辑器打开阅读,该插件是源代码形式。 - 阅读AI平台的接口文档,如下所示:

作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright 2022~2025 All rights reserved.
AI探索:通过宏脚本给小众编辑器EverEdit插上AI的翅膀!的更多相关文章
- 王亮:游戏AI探索之旅——从alphago到moba游戏
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 演讲嘉宾:王亮,腾讯AI高级研究员.2013年加入腾讯,从事大数据预测以及游戏AI研发工作.目前 ...
- Procomm Plus 与ASPECT脚本语言在基于远程终端设备上的测试应用
产测 ---------------------------------------------------- 原文:http://www.bixuanzl.com/20180801/1084478. ...
- git clone开启云上AI开发
摘要:相比于传统的软件开发,AI开发存在以下4个痛点:算法繁多:训练时间长:算力需求大:模型需手动管理,我们可以使用云上AI开发的方式来缓解以上4个痛点. 本文分享自华为云社区<git clon ...
- 只能从脚本中调用在类定义上有[ScriptService]属性的Web服务问题的解决方案
ajax调用webservice中的接口时, 会出现[只能从脚本中调用在类定义上有[ScriptService]属性的...]的异常. 这是因为, 在.net3.5中, 访问web服务, 要对web服 ...
- Android艺术开发探索第三章——View的事件体系(上)
Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...
- ASP利用xhEditor编辑器实现图片上传的功能。
本人这几天在做一个软件,无意中用到xhEditor在线编辑器,这个编辑器虽然看着比较简单,但功能非常强大,大家可以去官网上查看,废话不说了. 这篇文件主要是实现在ASP环境中利用xhEditor编辑器 ...
- SouthidcEditor编辑器如何支持上传png图片
SouthidcEditor编辑器如何支持上传png图片? asp网站一般都是用的南方数据SouthidcEditor编辑器,可是这个编辑器上传图片功能不能上传png类型的图片,那怎么办?我(红蜘蛛网 ...
- uedit富文本编辑器及图片上传控件
微力后台 uedit富文本编辑器及文件上传控件的使用,无时间整理,暂略,参考本地代码.能跑起来.
- kindeditor编辑器和图片上传独立分开的配置细节
关于kindeditor编辑器上传按钮的异步加载最关键的部署问题,它的上传图片的组件都已经封装得很好了的,只需要监听到页面按钮的点击事件给编辑器对象传递一些对应的初始化参数即可显示图片上传的弹窗实现异 ...
- shell脚本批量执行命令----必需判断上一步执行结果--没有捷径
# 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...
随机推荐
- 推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue
推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue 很多同学都是用过 Elasticsearch 的 GUI 工具 Kibana ,但 Kibana 相对比较重,这篇 ...
- 08C++选择结构(2)——教学
一.逻辑变量 教学视频 存储类似灯亮或灯灭.是男还是女等结果只有两种可能的数据时,可以使用逻辑型变量. 逻辑型变量用关键字bool定义,所以又称为布尔变量,其值只有两个false(假)和true(真) ...
- 【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
想到英语四级考了两次都没过,我觉得要多使用英文,所以本文使用英文书写. 本文讲述了遇到的问题,解决的思路,并讲述了解决方案,也许对你会有帮助. 目录 Problem description Solut ...
- 【Python】【爬虫】【爬狼】005_爬取数据处理-有的链接缺少了“http”的解决方案(not in)
我认为这一篇文章是没有意义的,说白了就是判断字符串是否包含指定内容. 爬图片链接的时候,发现了一个问题 有的链接缺了http 像我这种使用HTML表格输出的,本来是可以把图片链接显示为图片的,但是有的 ...
- 【前端】【H5 API】addEventListener监听网络状态的变动
WebviewObject Webview窗口对象,用于操作加载HTML页面的窗口 属性 id:webview窗口的标识 方法:监听 addEventListener 添加事件监听器 wobj.add ...
- Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
一.前言说明 在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作.经过搜索发 ...
- modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
一.前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一 ...
- springboot的yml文件中如何配置redis?
springboot的yml文件中如何配置redis? 解决方法: spring: #redis配置 redis: database: 0 timeout: 0 # Redis服务器地址 host: ...
- [转]Winform实现多线程异步更新UI(进度及状态信息)
引言 在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验.所以在大量数 ...
- Windows应用开发-常用工具集推荐
.NET/WPF开发 Visual Studio 最新版本是VS2022,官网下载:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 VsColorOutput 控制台 ...

