void
在网上了解到,Void 是一款开源的 AI 代码编辑器,堪称 Cursor 的开源平替。其功能强大,可兼容各类模型,并支持本地运行,使用户能够全面掌控自身数据,真正做到安全可控。
我尝试使用这款允许本地 AI 运行的 IDE,检验一下实际效果。
选取的测试用例:请它帮我生成一份英语单词拼写测验题(网页)。用于小学英语练习。
先撰写需求提示词:
我想在 wordspell-exam 目录下编写一个html 页面,实现英语单词拼写练习。我可以在代码内配置很多单词,每次打开页面 在配置的词库中随机产生20道单词题目,让用户一个单词一个单词轮流答题。
每一题单词答题时,画面全屏幕显示 :上面1行中文大字(题目),中间一行为输入框,输入框可体现出单词的字符数量框(类似于大多数网页输入6位验证码的样式);下面一行为确认按钮。
点击确认按钮会跳转下一题,如果所有单词题目答题完毕后,会自动出结果、得分。
结果需要包含 错误的单词 和 对应的正确答案,得分采用百分制换算计算得出。
出答案的时候需要顺便发送webhook。
- Webhook请求地址:
'https://open.feishu.cn/open-apis/bot/v2/hook/yyyyyy-xxxxxxx'
- 请求方式:
POST
- 请求头:
Content-Type: application/json
- 请求体:
{"msg_type":"text","content":{"text":"request example"}}
界面现代化简约一点,适配iPad和pc。
第一次直接用void搭配LM Studio的Qwen3-30B-A3B MLX 4bit量化测试:
非常不尽人意。没有全部命中目标。
第一次做的,他产出题目是英文,答案是英文,且没有字符数量框。
第二次测试,优化提示词
第二次,我先用提示词转换成更有逻辑性的策划文档。
转换后的提示词:
🎯 需求背景
我们要在
wordspell-exam
目录下开发一个英语单词拼写练习的 HTML 页面,用于用户进行单个单词的拼写训练。页面需要具备以下功能:
🧩 功能模块拆解
1. 词库配置
- 在 HTML 或 JS 中内置一个单词列表(数组),例如:
const wordList = [ { en: "apple", zh: "苹果" }, { en: "banana", zh: "香蕉" }, // ...更多单词 ];
- 每次打开页面时,从这个词库中随机抽取 20 个单词,作为本次练习的题目。
2. 答题界面
每次只显示一个单词,用户逐个答题。
界面布局如下:
[全屏显示] 中文题目(大字) ------------------- | | | _ _ _ _ | (输入框,显示字符数量) ------------------- [确认按钮]
输入框样式:类似验证码的格式,比如
____
(4 个下划线),根据单词长度自动调整。输入框只允许输入字母,大小写不敏感。
3. 答题流程
- 用户在输入框中输入单词,点击“确认”按钮。
- 系统判断是否正确:
- 正确:进入下一题
- 错误:记录错误,并进入下一题
- 所有题目答完后,自动跳转到结果页。
4. 结果显示
- 显示总得分(百分制)
- 展示所有错误的单词及正确答案
- 例如:
错误:apple → 正确是 "apple" 错误:banan → 正确是 "banana"
5. Webhook 发送
- 在结果页生成后,自动发送 POST 请求到指定地址:
- URL:
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx
- Method:
POST
- Headers:
Content-Type: application/json
- Body 示例:
{ "msg_type": "text", "content": { "text": "用户完成拼写练习,得分:80%" } }
- 注意:实际发送的内容应包含用户得分、错误单词列表等信息,具体格式可由你定义。
6. 界面设计
- 简洁现代风格,适配 PC 和 iPad。
- 使用响应式设计(如 Flex 或 Grid),确保在不同设备上显示正常。
🧰 技术建议(供程序员参考)
- 前端技术:HTML + CSS + JavaScript
- 状态管理:可以用
let
或const
变量保存当前题号、用户输入、错误记录等- 样式建议:使用
flex
布局,字体大、间距合理- 移动端适配:使用
viewport
设置和媒体查询(Media Query)
✅ 总结
这个页面的核心是:
- 随机抽取 20 题
- 逐题答题,显示字符数
- 结果页展示得分和错误信息
- 自动发送 webhook
然后让它做,好家伙,它做的直接写成python了。
那么问题出在哪里,30B的模型不可能连这个需求都不理解吧?
Qwen大模型更换8位量化
用Qwen3-30B-A3B 4bit
不满意,怀疑是量化的问题。
准备换8bit量化,基于信息:
- 因为查资料有人说Qweb3-4B不量化版本都很强的。
- 问豆包,说8bit量化效果跟全尺寸的接近,4bit量化可以观测到明显性能下降。
所以,拟先更换为可流畅运行的Qwen3-14B-MLX 8bit
(16GB)版本,试其效果;继而再以Qwen3-30B-A3B 8bit
(32.46GB)版本进一步验证,以期获得更优结果。
测试Qwen3-14B 8bit
测试14B配合void,但是发现出问题了,void持续在报错。我把上下文调到40960后重新继续。
还是报错
Error: Unable to write file '/Users/rhett/MyWork/2025/AIToolWorkspace/wordspell-exam/spell_practice.html <content> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>英语单词拼写练习</title>...
奇了怪了,换成30B-A3B-4bit
试试看,重新执行,又可以生成html但是不自动插入到文件里,只显示在agent对话里。但void agent面板里不报错。
测试 Qwen3-30B-A3B
换成30B-A3B 8bit,和4bit一样,生成html但是不能自动写入到文件里,而且对需求的理解没做到位,比如根本没有实现提交webhook的需求。
观察记录:
- Qwen3-14B Dense模型 8bit的运行速度显著慢于Qwen3-30B-A3B MoE的4bit。占内存小一些但速度慢。
- Qwen3-30B-A3B 8bit的速度也比14B快,说明Dense模型速度没有MoE快。
- void应该是在某些方面没有适配好千问模型,所以导致内容无法插入到具体文件。
修改void参数后再试Qwen3-30B-A3B 8bit
就算是Qwen3-30B-A3B
,他对我的需求居然理解都不到位,我很震惊。我提出的6个要求,他居然都不能复述出来。感觉全是幻觉。
晚上吃完饭后,我脑子清醒了,再研究了一下配置,无意间发现了一个配置,在模型开关旁边有个加号,点击可以打开advanced settings,这玩意默认给contextWindow是4096,reserved是8192,我改成40960和我LM Studio设置一致,并减少reserved之后,终于能听懂我的需求了:
听懂需求后输出的html看起来是对的,但是——
这一版的问题在于,代码在浏览器运行会报错。
人肉检查了一下,发现30B的代码写得上下衔接有问题。莫非千问30B不适合写代码?
换openrouter/qwen2.5-coder-32b(free)测试
速度明显比本地30B的慢多了。
能够自动在输出html后执行写入文件操作!
能够代码运行不报错,完整实现了需求中提出的所有功能,走完单词拼写和检查流程,也有提交webhook。
奇怪,难道void搭配coder模型就可以写入文件?
目前还没有在本地部署这个模型,所以无法确认在void中不能自动写入文件是本地部署的问题还是qwen3模型的问题。也不需要验证了,反正云端调用是免费的,那就不需要本地运行了。
嗯看来搭配void目前免费方案最靠谱的就是这个**openrouter/qwen2.5-coder-32b(free)**模型了。
豆包阐述较好的写代码模型
关于你提到的模型档次:
- Qwen2.5-Coder-32B-Instruct:Free:属于中等偏上水平,适合日常开发任务,在中文编程场景中表现较好。
- DeepSeek-R1-Zero:Free:属于入门级模型,适合简单代码生成和学习使用,对于复杂任务支持有限。
- Qwen3-30B-A3B:属于高端模型,具备较强的代码理解和生成能力,可应对复杂开发需求。
选择建议:
- 初学者或简单任务:可选择免费的入门级模型,如 DeepSeek-R1-Zero:Free。
- 专业开发者:建议使用 Qwen3-30B-A3B 或 GPT-4 Turbo 等高端模型。
- 中文场景优先:Qwen 系列是不错的选择。
为什么我今天的测试例子,感觉qwen2.5-coder-32b比Qwen3-30B-A3B靠谱呢?看来我还需要继续观察观察了。
计划下周在小程序开发场景进一步试试看谁写小程序项目靠谱。
总结
- Void 是一款开源的 AI 代码编辑器,可作为 Cursor 的平替使用。
- Void 支持本地运行,用户可以全面掌控数据,确保安全可控。
- 测试目标是使用 Void 生成一个英语单词拼写测验的 HTML 页面。
- 第一次测试中,模型未完全理解需求,生成的内容不符合预期。
- 优化提示词后,模型仍未能正确生成 HTML 页面,而是输出了 Python 代码。
- 更换为 Qwen3-14B 和 Qwen3-30B 的 8bit 量化版本后,模型仍存在理解偏差和功能缺失。
- Void 在写入文件时出现错误,可能与模型适配或配置有关。
- 调整 Void 的上下文窗口设置后,模型开始正确生成 HTML 内容,但代码存在运行错误。
- 使用 OpenRouter 上的 Qwen2.5-Coder-32B 模型时,模型能够正确生成并写入 HTML 文件。
- Qwen2.5-Coder-32B 在测试中表现优于 Qwen3-30B-A3B,适合当前需求。
- 未来计划在小程序开发场景中进一步测试不同模型的表现。
技术内容转载请注明来源,个人日记不允许转载,欢迎指出任何有错误或不够清晰的表达。可以邮件至 mousebomb@gmail.com