ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Void 配 TaoToken:开源 Cursor 平替的 settings.json 骨架与连通验证

Void 配 TaoToken:开源 Cursor 平替的 settings.json 骨架与连通验证 1. 为什么我最终把 Cursor 换成了 Void如果你和我一样日常写代码离不开 AI 补全和对话但又对「代码被上传到某个不透明的服务器」这件事心里发毛那 Void 值得你花半小时折腾一下。Void 是一个基于 VS Code 源码构建的开源编辑器定位就是 Cursor 和 GitHub Copilot 的开源替代品完全免费而且它最大的特点是消息直接发给你指定的模型提供方不经过额外的中间服务器留存。换句话说模型走哪条通道、用哪个 Key完全由你在配置文件里说了算。它保留了 VS Code 的界面、主题、快捷键和插件体系你可以一键导入原有配置几乎零学习成本。功能上Tab 智能补全、CtrlK 内联编辑、Agent 模式能搜索/创建/编辑文件甚至访问终端、Gather 只读搜索模式、Checkpoints 可视化改动追踪这些 Cursor 上你习惯的操作它都有。更关键的是即使是不支持工具调用的开源模型也能在 Agent 模式下跑起来。但问题来了Void 本身只是个「壳」它需要你告诉它去哪里调用模型。默认情况下你得自己填各家厂商的 API 地址和 Key模型一多配置就散落各处换模型要改好几处。我试过把 OpenAI、Anthropic、DeepSeek 的 Key 分别塞进不同字段结果补全和对话用的还不是同一套配置调试起来很烦。后来我改用 TaoToken 作为统一通道一个 Key、一个 API 地址对话和补全都走它settings.json 里清爽很多。这篇就把这套骨架和验证方法完整写出来你照着填就能跑通。2. 前置准备Void 装好TaoToken Key 拿到手在动 settings.json 之前有两件事要先确认。第一Void 已经能正常启动。如果你还没装最省事的方式是去 GitHub Releases 下载对应平台的安装包想自己构建的话克隆仓库后npm install在 VS Code 里按CtrlShiftBMac 是CmdShiftB构建完成后运行./scripts/code.batWindows或./scripts/code.shMac/Linux。构建大概五分钟看到两个勾选标记就说明成功了。构建过程中如果报 node-gyp 相关错误Linux 下先跑npm install -g node-gyp再按发行版装好build-essential、libx11-dev、libxkbfile-dev、libsecret-1-dev这些依赖。第二拿到 TaoToken 的 API Key。打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台里创建一个 Key。这个 Key 就是你后面填进 settings.json 的唯一凭证。API 的基础地址是https://taotoken.net/api注意这个地址不带任何查询参数直接用它就行。提示Key 只在创建时完整显示一次复制后先存到密码管理器里别直接贴在聊天窗口或截图里。拿到 Key 之后先别急着改配置可以用一条 curl 命令确认通道是通的这样后面出问题能快速定位是网络还是配置的锅curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer 你的Key返回一个模型列表的 JSON就说明 Key 和地址都没问题。如果返回 401检查 Key 有没有复制全返回连接超时检查本机网络。3. settings.json 可复制骨架对话与补全一次配好Void 的模型配置入口在设置里但真正落地是写进settings.json。你可以按CtrlShiftP打开命令面板输入Preferences: Open User Settings (JSON)直接编辑用户级配置文件。下面这份骨架是我实测能同时跑通对话和补全的版本把你的Key替换成真实 Key 即可。{ void.providers: { taotoken: { type: openai-compatible, baseUrl: https://taotoken.net/api/v1, apiKey: 你的Key, models: [ claude-sonnet-4-20250514, gpt-4o, deepseek-chat ] } }, void.chat.defaultProvider: taotoken, void.chat.defaultModel: claude-sonnet-4-20250514, void.autocomplete.provider: taotoken, void.autocomplete.model: gpt-4o, void.autocomplete.enabled: true, void.agent.provider: taotoken, void.agent.model: claude-sonnet-4-20250514, void.gather.provider: taotoken, void.gather.model: deepseek-chat }几个字段的含义拆开说。void.providers里定义了一个叫taotoken的提供方type用openai-compatible因为 TaoToken 的接口兼容 OpenAI 的调用格式这样 Void 不需要额外适配就能识别。baseUrl填https://taotoken.net/api/v1注意结尾的/v1不能少这是 OpenAI 兼容接口的约定路径。models数组里列出你打算用的模型名写几个常用的就行不用把全部模型都列上。void.chat控制对话面板void.autocomplete控制 Tab 补全void.agent控制 Agent 模式void.gather控制只读搜索模式。我特意让补全用gpt-4o、对话和 Agent 用claude-sonnet-4-20250514因为补全追求响应快、token 省对话和 Agent 需要更强的推理和长上下文。你可以按自己的偏好换只要模型名在models数组里出现过就行。注意如果你之前配过其他提供方别把旧的void.providers整个覆盖掉把taotoken这个键合并进去否则原来的配置会丢。改完保存Void 一般会自动重载配置。如果没有生效按CtrlRMac 是CmdR手动重载窗口。这一步做完界面上模型选择器里应该能看到taotoken这个来源以及你列出的模型。4. 连通性验证对话、补全、Agent 三处都要过一遍配置写完不代表能用得逐个验证。我习惯按「对话 → 补全 → Agent」的顺序来因为对话最容易确认补全和 Agent 依赖的链路更长。先验证对话。按CtrlL打开对话面板在模型下拉里选taotoken / claude-sonnet-4-20250514然后输入一句简单的话比如「用一句话解释什么是闭包」。如果几秒内返回了正常回答说明 Key、baseUrl、模型名三者都对上了。如果报错先看错误信息里的状态码401 是 Key 问题404 多半是模型名写错或 baseUrl 少了/v1429 是额度或频率限制。再验证补全。新建一个.js文件输入下面这段代码停在return后面function add(a, b) { return }正常情况下Void 会在光标处给出灰色的补全建议按 Tab 接受。如果没反应检查void.autocomplete.enabled是不是true以及void.autocomplete.model填的模型是否在models数组里。补全对延迟敏感如果用的是推理型模型可能会等很久才出建议换成gpt-4o这类响应快的会好很多。最后验证 Agent 模式。按CtrlShiftP输入Void: Open Agent或者用侧边栏的 Agent 入口。让它做一个只读操作比如「列出当前项目根目录下的所有文件」。Agent 会调用工具去读目录返回文件列表。这一步能过说明工具调用链路是通的。如果 Agent 卡住不动多半是模型不支持工具调用换成claude-sonnet-4-20250514或gpt-4o再试。三处都通过之后你可以在对话里让它读一个文件、改一行代码确认 Checkpoints 能正常记录改动。到这一步Void 的对话和补全就算完整可用了。5. 本篇常见错排查从 401 到补全不触发配置过程中最容易踩的坑我按出现频率排一下。401 UnauthorizedKey 错了或者没带上。检查apiKey字段有没有多余空格Key 是否完整。用第 2 节那条 curl 命令单独测一下能排除是 Void 配置问题还是 Key 本身问题。404 Not FoundbaseUrl写错。常见的是漏了/v1或者写成了https://taotoken.net/api少了/v1。正确写法是https://taotoken.net/api/v1。另外模型名拼错也会返回 404比如把claude-sonnet-4-20250514写成claude-sonnet-4去控制台确认准确的模型 ID。补全不触发先确认void.autocomplete.enabled为true再看void.autocomplete.provider和model是否指向了存在的提供方和模型。如果都對可能是模型响应太慢Void 等超时就放弃了换个快模型试试。还有一种情况是文件类型不在补全范围内Void 默认对某些语言不开启补全可以在设置里调整。Agent 模式报「model does not support tools」说明当前模型不支持工具调用。Void 虽然声称不支持工具调用的模型也能在 Agent 模式下用但实际体验会打折扣。直接换成支持工具调用的模型比如claude-sonnet-4-20250514。配置改了不生效Void 有时不会自动重载。按CtrlR重载窗口或者完全退出再启动。如果还不行检查是不是改错了文件——用户级配置和项目级配置可能同时存在项目级的会覆盖用户级。多个提供方冲突如果你之前配过别的提供方void.chat.defaultProvider可能还指向旧的。确认这几个defaultProvider字段都改成了taotoken。6. 把 Key 管好把通道用顺配置跑通之后日常使用其实就没什么存在感了——补全该出就出对话该答就答。但有两件事值得养成习惯。一是 Key 的轮换。TaoToken 控制台里可以随时创建新 Key、停用旧 Key。如果你在多个设备上用 Void建议每个设备一个 Key这样某个设备丢了或者不用了单独停用那一个就行不影响其他设备。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Key 管理在 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。二是模型分工。补全用快模型、对话用强模型这个思路在长期使用中能明显省额度。如果你主要用 Agent 做重构、跨文件修改这类重活可以考虑 Coding Plan它在长任务上的额度策略更适合连续调用https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。只是想快速验证某个模型的表现用模型对话页面直接试就行https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档里有各语言 SDK 的调用示例如果你想把 TaoToken 用到其他工具里可以参考https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。Void 这边settings.json 骨架已经是最小可用集后面想加模型往models数组里追加、改一下defaultModel就行不用动其他字段。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进