使用Void(平替Cursor)的测试记录

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
  • 状态管理:可以用 letconst 变量保存当前题号、用户输入、错误记录等
  • 样式建议:使用 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