
1. 为什么我把 Cursor 换成了 Void 编辑器Cursor 用久了总会遇到几个绕不开的问题订阅费用按月扣、模型选择被锁死在官方套餐里、公司项目代码不敢往云端传。我试过在几个团队里推 Cursor反馈最集中的就是这三点。Void 编辑器正好卡在这个位置上——它是 Visual Studio Code 的开源分支界面、快捷键、插件体系几乎零迁移成本但模型接入完全交给你自己决定。Void 是什么一句话说清楚一个开源的 AI 代码编辑器VSCode 的 fork支持 BYOKBring Your Own Key你可以把模型请求指向任何兼容 OpenAI 协议的服务端点。它能做什么Tab 自动补全、CtrlK 内联编辑、Agent/Gather/普通聊天三种模式这些和 Cursor 对得上。适合谁已经用 VSCode 或 Cursor、想控制模型成本、对数据流向有要求的开发者。真正让我决定写这篇配置教程的原因是 Void 的 Base URL 自定义能力。默认情况下 Void 会让你填 OpenAI 或 Anthropic 的官方 Key但设置里有一个「Custom Provider」入口允许你改 Base URL。这意味着你可以把请求统一指向 TaoToken 的 API 通道https://taotoken.net/api用一个 Key 管理多个模型不用在 Void 里反复切换供应商配置。我实测下来Void 的配置文件和 VSCode 的 settings.json 是同一套机制改起来不复杂但有几个坑点Base URL 末尾斜杠、模型 ID 大小写、API Key 的存储位置。下面按步骤拆开讲你跟着改就能跑通。2. TaoToken 前置准备Key 与 Base URL 怎么拿在动 Void 的配置文件之前先把 TaoToken 这边的信息准备好。你需要两样东西一个 API Key一个 Base URL。API Key 的获取路径是登录 TaoToken 控制台在 API Keys 页面创建一个新 Key。创建时建议给 Key 起个能识别的名字比如void-editor-dev方便后面在多个工具之间区分。Key 的格式通常是一串以sk-开头的字符串复制后先存到密码管理器里页面刷新后就不再完整显示了。Base URL 这块要注意TaoToken 的 API 入口是https://taotoken.net/api注意末尾没有斜杠。很多人在配置时习惯性加一个/结果请求变成https://taotoken.net/api//v1/chat/completions直接 404。Void 的 Custom Provider 配置里Base URL 填https://taotoken.net/api就行Void 会自动拼接/v1/chat/completions这类路径。模型 ID 需要提前确认。TaoToken 支持的模型列表在文档页可以查到常见的比如claude-sonnet-4-20250514、gpt-4o、deepseek-chat这些。Void 的模型配置里要填准确的 Model ID大小写和连字符都不能错。我建议先在 TaoToken 的模型对话页面测试一下目标模型能不能正常返回确认可用后再写进 Void 配置。如果你还没注册 TaoToken可以先通过官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content了解套餐和计费方式。对于个人开发者按量计费通常比 Cursor 的月订阅更灵活尤其是你只在特定项目里用 AI 辅助的时候。这里有个细节Void 的 API Key 存储走的是系统密钥链macOS Keychain / Windows Credential Manager不是明文写在 settings.json 里。所以你在设置界面填 Key 之后配置文件里只会看到一个引用标识不会暴露真实 Key。这个设计比某些编辑器直接把 Key 写进 JSON 要安全。3. 可复制配置Void 的 settings.json 与 Custom Provider 片段Void 的配置分两层一层是 VSCode 系的settings.json控制编辑器行为另一层是 Void 自己的 AI Provider 配置存在~/.void/config.jsonmacOS/Linux或%APPDATA%\Void\config.jsonWindows。模型接入主要改后者但settings.json里也有几个相关项需要同步。先看 Void 的 Provider 配置。打开 Void按Cmd/Ctrl Shift P调出命令面板输入Void: Open Settings进入 AI 设置页。在 Provider 列表里选「Custom OpenAI-Compatible」然后填三个字段{ provider: custom-openai, baseUrl: https://taotoken.net/api, apiKey: sk-your-taotoken-key, model: claude-sonnet-4-20250514, maxTokens: 8192, temperature: 0.2 }这段配置对应的是 Void 内部存储的 Provider 条目。实际写入时apiKey字段会被 Void 替换成密钥链引用你在界面上看到的是掩码后的 Key。如果你手动编辑~/.void/config.json注意不要直接把 Key 明文写进去Void 启动时会校验格式明文 Key 可能导致加载失败。然后是settings.json里需要同步的项。Void 的 AI 补全和聊天功能会读取这几个配置{ void.ai.provider: custom-openai, void.ai.customBaseUrl: https://taotoken.net/api, void.ai.customModel: claude-sonnet-4-20250514, void.ai.enableTabAutocomplete: true, void.ai.enableInlineEdit: true, void.ai.chatMode: agent }void.ai.chatMode有三个可选值agent、gather、chat。Agent 模式会调用工具链适合让 AI 直接改文件Gather 模式会先收集上下文再回答适合大项目里定位问题普通 chat 就是纯对话。我日常用 agent 模式最多但要注意 agent 模式下模型需要支持 function callingTaoToken 上的 Claude 和 GPT 系列都支持。如果你用的是 Cline MCP 或者 Codex 的auth.json方案配置逻辑类似核心三件套是 Base URL、API Key、Model ID。Void 这边不需要额外装插件内置的 Provider 系统直接支持。还有一个容易忽略的点Void 的 Tab 自动补全走的是单独的补全模型配置和聊天模型可以分开。如果你想让补全用便宜快速的模型比如gpt-4o-mini聊天用强模型比如claude-sonnet-4可以在 Provider 配置里加一个completionModel字段{ provider: custom-openai, baseUrl: https://taotoken.net/api, model: claude-sonnet-4-20250514, completionModel: gpt-4o-mini }这样补全请求和聊天请求会走不同的模型 ID成本能压下来不少。4. 验证请求从 Void 发一条测试消息看返回配置写完别急着写代码先做连通性验证。Void 的设置页有一个「Test Connection」按钮点下去会发一条最小请求到 Base URL返回 200 就说明网络和 Key 都没问题。但这个方法只能验证连通性不能验证模型 ID 是否正确。更可靠的验证方式是在 Void 的聊天面板里直接发一条消息。打开右侧聊天栏输入「用 Python 写一个快速排序」看返回。如果返回正常说明整条链路通了。如果报错错误信息会显示在聊天面板底部。我建议同时用 curl 做一次独立验证排除 Void 本身的问题curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-your-taotoken-key \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复 OK}], max_tokens: 10 }正常返回应该是一个 JSONchoices[0].message.content里是模型回复。如果 curl 通了但 Void 不通问题就在 Void 的配置层如果 curl 也不通问题在 Key 或 Base URL。还有一个验证点是 Tab 补全。新建一个.py文件输入def等一两秒看有没有灰色补全建议。如果有按 Tab 接受。Tab 补全走的是completionModel如果这个字段没配Void 会 fallback 到主模型。补全请求频率高建议单独配一个轻量模型。实测下来从配置到跑通大概需要 5 分钟主要时间花在确认模型 ID 和测试不同模式上。Agent 模式的验证稍微麻烦一点因为它需要模型支持工具调用。你可以在聊天里输入「列出当前目录的文件」如果 AI 返回了文件列表说明 agent 模式的工具链正常。5. 常见报错排查401、local proxy failed、reading choices配置过程中最容易撞上的几个报错我按出现频率排一下。401 UnauthorizedKey 不对或者没带上。检查三点Key 是否完整复制没有多余空格、Base URL 是否是https://taotoken.net/api、请求头里Authorization: Bearer格式是否正确。Void 的密钥链有时候会缓存旧 Key改完 Key 之后重启一次 Void 再试。local proxy failed这个报错通常出现在 Void 尝试走本地代理但代理没启动的时候。Void 的某些版本会默认启用本地代理来转发请求如果你没配代理就会报这个。解决办法是在设置里关掉void.ai.useLocalProxy或者检查系统代理设置。注意这里说的是 Void 自身的代理功能不是网络层的代理。reading choices 报错完整报错通常是Cannot read properties of undefined (reading choices)。这说明请求返回了非预期格式Void 在解析choices字段时拿到 undefined。原因一般是 Base URL 拼错了比如多了一个/v1或者少了/api。TaoToken 的 Base URL 是https://taotoken.net/apiVoid 会自动补/v1/chat/completions你不需要手动加/v1。OAuth 相关报错如果你之前用官方 Provider 登录过Void 可能还在尝试走 OAuth 流程。需要在设置里把 Provider 切换成 Custom并清除之前的登录状态。Void 的账号体系和 Provider 配置是分开的切换 Provider 不会影响编辑器本身的登录。模型返回空内容有时候请求通了但content是空的。这通常是maxTokens设得太小或者模型 ID 对应的模型不支持当前请求格式。把maxTokens调到 4096 以上再试。Tab 补全不触发检查void.ai.enableTabAutocomplete是否为 true以及completionModel是否配置正确。如果补全模型和聊天模型是同一个补全延迟会比较高建议分开配。排查的时候有个技巧打开 Void 的开发者工具Help Toggle Developer Tools在 Network 面板里看实际发出的请求 URL 和请求体。这样能直接看到 Base URL 拼接后的完整路径比猜要快得多。6. 把 Void 接入 TaoToken 后的日常使用建议配置跑通之后日常使用有几个点可以优化。模型切换不用改配置文件。Void 的聊天面板顶部有一个模型选择器如果你在 TaoToken 这边配了多个模型可以在 Provider 配置里加一个models数组Void 会把它们列在下拉菜单里。这样写代码时想换模型点一下就行不用重启编辑器。成本控制方面建议把 Tab 补全和聊天分开计费。补全用gpt-4o-mini这类轻量模型聊天用claude-sonnet-4这类强模型。TaoToken 的按量计费模式下补全请求虽然频繁但单次 token 少聊天请求少但 token 多分开配能避免用强模型跑补全造成的浪费。Agent 模式的工具权限要注意。Void 的 agent 模式默认可以读写文件、执行终端命令。如果你在敏感项目里用建议在设置里限制 agent 的文件访问范围或者切到 Gather 模式。Gather 模式只读上下文不会改文件。最后Void 的配置可以导出成 JSON 分享给团队。把~/.void/config.json里的 Provider 部分抽出来去掉 Key就是一个团队模板。新成员导入后只需要填自己的 TaoToken Key 就能用。这比每个人单独配 Cursor 要省事得多。如果你还没试过 TaoToken 的 API 通道可以从模型对话页面先测几个模型确认延迟和返回质量符合预期再写进 Void 配置。接入文档里有完整的 Base URL 和模型 ID 列表配置时对照着填就行。