1. 状态栏那行小字,为什么让补全彻底哑火
VS Code 右下角那个 Copilot 图标,平时安安静静待着,一旦被划上一道斜杠,鼠标悬停显示Status Ready (disabled),整个补全就彻底不工作了。这个状态最迷惑人的地方在于:扩展面板里明明写着 enabled globally,账户也显示已登录,可代码就是一行都不补。你敲function它没反应,你写注释它装死,重启 VS Code 也没用。
我把它拆成三条线来看:扩展本身的状态、账户授权是否过期、以及settings.json里有没有配置冲突。这三条线任何一条断了,都会让状态栏停在Ready (disabled)。Ready说明 Copilot 语言服务其实已经起来了,disabled才是关键——它表示补全功能被某个开关关掉了,而不是扩展崩了。
适合谁看:正在用 VS Code 写代码、Copilot 突然不补全、状态栏出现斜杠图标的开发者。不管你是刚装完扩展,还是用了几个月突然失效,这套排查路径都能覆盖。下面我会给出可直接复制的settings.json片段、逐项验证动作,以及怎么把请求切到 TaoToken 的兼容端点,让补全重新跑起来。
先说结论:Ready (disabled)九成不是网络问题,而是本地开关或授权状态的问题。所以排查顺序应该是先看状态栏菜单,再看输出面板日志,最后才动配置文件。顺序反了,你会在网络配置上白折腾半天。
2. 三条排查线:扩展、授权、settings.json 配置冲突
2.1 扩展状态线:先确认 Copilot 到底有没有被禁用
打开 VS Code,按Ctrl+Shift+X进扩展面板,搜索GitHub Copilot。注意看两个东西:一是扩展是否显示Disable(说明当前是启用状态),二是旁边有没有Reload Required的提示。如果显示的是Enable,那说明扩展被禁用了,点一下启用,然后Ctrl+Shift+P输入Developer: Reload Window重载窗口。
重载后看右下角图标。如果斜杠消失、显示Ready,问题解决。如果还是Ready (disabled),继续往下走。这里有个细节:Copilot 现在拆成了两个扩展,GitHub Copilot和GitHub Copilot Chat,两个都要确认是启用状态。只启用一个,补全可能仍然不工作。
2.2 授权线:账户过期是高频原因
点击右下角 Copilot 图标,会弹出一个小菜单。如果菜单里显示Sign in to GitHub,说明授权掉了,重新登录即可。如果显示的是Enable Completions,那说明补全被手动关了,点它开启。
授权过期有个隐蔽表现:扩展面板显示已登录,但实际 token 已经失效。这时候点图标菜单,可能会看到Signed in as xxx但补全依然不工作。解决办法是Ctrl+Shift+P输入GitHub Copilot: Sign Out,登出后再Sign In重新走一遍授权流程。浏览器会弹出授权页,确认后回到 VS Code,状态栏应该恢复Ready。
2.3 配置线:settings.json 里的冲突项
前两条都没问题,那大概率是settings.json里有配置把补全关掉了。按Ctrl+Shift+P输入Preferences: Open User Settings (JSON),打开用户级配置文件。重点检查这几个键:
{ "github.copilot.enable": { "*": true, "plaintext": false, "markdown": true, "scminput": false }, "github.copilot.inlineSuggest.enable": true, "github.copilot.editor.enableAutoCompletions": true }github.copilot.enable里如果"*"被设成了false,那所有语言的补全都会被关掉,状态栏就会显示Ready (disabled)。inlineSuggest.enable如果为false,内联建议也不会出现。把这几项改成上面的值,保存后重载窗口。
如果你用的是工作区级配置,还要检查项目根目录下的.vscode/settings.json,工作区配置会覆盖用户配置。有时候团队模板里把 Copilot 关了,你自己没注意,就会一直卡在 disabled。
2.4 把请求切到 TaoToken 兼容端点
如果你希望补全请求走 TaoToken 的兼容端点,可以在settings.json里加一段配置。TaoToken 提供 OpenAI 兼容接口,Base URL 是https://taotoken.net/api,模型 ID 可以用gpt-4o或claude-3-5-sonnet这类。配置片段如下:
{ "github.copilot.advanced": { "debug.overrideProxyUrl": "https://taotoken.net/api", "debug.overrideEngine": "gpt-4o", "debug.testOverrideProxyUrl": "https://taotoken.net/api", "debug.testOverrideEngine": "gpt-4o" } }注意:这段配置是覆盖 Copilot 的代理地址和引擎,适合你想统一走 TaoToken 的场景。API Key 需要在 TaoToken 控制台生成,然后通过环境变量或扩展的认证流程注入。如果你只是想让原生 Copilot 恢复,不需要加这段,改回上面的 enable 配置即可。
三件套记牢:Base URL 填https://taotoken.net/api,Key 在控制台生成,Model ID 填gpt-4o。缺一个,请求就会 401 或 model not found。
3. 可复制的 settings.json 片段与逐项验证动作
3.1 完整配置片段
把下面这段整体贴进用户级settings.json,覆盖原有 Copilot 相关配置。路径:Ctrl+Shift+P→Preferences: Open User Settings (JSON)。
{ "github.copilot.enable": { "*": true, "plaintext": true, "markdown": true, "scminput": true, "python": true, "javascript": true, "typescript": true }, "github.copilot.inlineSuggest.enable": true, "github.copilot.editor.enableAutoCompletions": true, "github.copilot.advanced": { "debug.overrideProxyUrl": "https://taotoken.net/api", "debug.overrideEngine": "gpt-4o", "debug.testOverrideProxyUrl": "https://taotoken.net/api", "debug.testOverrideEngine": "gpt-4o" }, "editor.inlineSuggest.enabled": true, "editor.quickSuggestions": { "other": true, "comments": true, "strings": true } }editor.inlineSuggest.enabled这个键很关键,它是 VS Code 层面的内联建议总开关。如果它是false,Copilot 就算正常也不会显示建议,状态栏同样可能显示 disabled。editor.quickSuggestions控制注释和字符串里的建议,补全在写注释时特别有用,建议都打开。
3.2 逐项验证动作
保存配置后,按顺序做这几步:
第一步,Ctrl+Shift+P输入Developer: Reload Window,重载窗口。这一步必须做,因为settings.json的改动不会热生效。
第二步,看右下角图标。斜杠消失、显示Ready即成功。如果还是Ready (disabled),点图标看菜单里有没有Enable Completions,有就点一下。
第三步,打开一个.js或.py文件,输入function或def,停一秒看有没有灰色内联建议。有建议说明补全恢复。
第四步,Ctrl+Shift+P输入Output: Focus on Output View,右上角下拉选GitHub Copilot,看日志里有没有request和response记录。有记录说明请求发出去了。
第五步,如果配了 TaoToken 端点,日志里应该能看到请求打到taotoken.net/api。如果看到401,说明 Key 没配好;看到model not found,说明 Model ID 写错了。
3.3 验证请求是否成功
在输出面板里,正常的请求日志长这样:
[INFO] [copilot] Request sent to https://taotoken.net/api/v1/completions [INFO] [copilot] Response received, status 200 [INFO] [copilot] Suggestion rendered如果看到status 401,去 TaoToken 控制台重新生成 Key,确认没有多余空格。如果看到local proxy failed,说明debug.overrideProxyUrl写错了,检查是不是漏了https://或者多了斜杠。如果看到reading choices相关报错,通常是响应格式不兼容,换一个 Model ID 试试。
4. 验证请求与成功结果:状态栏恢复 Ready 的完整过程
4.1 重载窗口后的状态确认
重载窗口后,右下角图标应该从斜杠状态变成正常状态。鼠标悬停显示Ready,不再有(disabled)后缀。这时候点一下图标,菜单里应该显示Completions: Enabled,而不是Enable Completions。这个区别很重要:显示Enable Completions说明当前是关闭的,需要点击开启;显示Completions: Enabled说明已经开启。
如果重载后还是 disabled,别急着重载第二次。先点图标菜单,看有没有Enable Completions选项。有就点,点完状态栏会立刻变Ready。这个操作等价于在settings.json里把github.copilot.enable的"*"改成true,但更快。
4.2 输出面板日志逐行解读
打开输出面板,选GitHub Copilot,清空日志,然后在编辑器里敲几个字符触发补全。正常日志会按这个顺序出现:
[INFO] [copilot] Extension activated [INFO] [copilot] Auth status: authenticated [INFO] [copilot] Inline suggest enabled: true [INFO] [copilot] Request sent to https://taotoken.net/api/v1/completions [INFO] [copilot] Response received, status 200 [INFO] [copilot] Suggestion rendered, length 42Auth status: authenticated说明授权正常。如果是Auth status: unauthenticated,回到第 2.2 节重新登录。Inline suggest enabled: true说明内联建议开关是开的。如果这里是false,检查editor.inlineSuggest.enabled。
Request sent和Response received成对出现,说明请求链路通了。如果只有Request sent没有Response received,可能是网络超时或端点不可达。如果status不是 200,按状态码排查:401 查 Key,404 查路径,429 查额度。
4.3 补全实际生效的验证
日志正常后,实际验证补全效果。新建一个test.js,输入:
// 计算两个数的和 function停一秒,应该出现灰色内联建议,类似add(a, b) { return a + b; }。按Tab接受建议。如果没出现,检查editor.quickSuggestions里comments是否为true,因为注释触发的建议受这个键控制。
再试一个 Python 例子:
# 读取文件内容 def同样应该出现建议。如果 JavaScript 有建议但 Python 没有,检查github.copilot.enable里"python"是否为true。这个键支持按语言粒度控制,有时候"*"是 true 但某个语言被单独设成了 false。
4.4 状态栏恢复 Ready 的最终确认
所有验证通过后,状态栏应该稳定显示Ready。这时候你可以关掉输出面板,正常写代码。如果过一段时间又变 disabled,可能是授权 token 过期,重新登录即可。也可能是某个扩展冲突,比如其他 AI 补全扩展抢了内联建议的控制权,禁用它们再试。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
5.1 401 Unauthorized
报错原文:
[ERROR] [copilot] Request failed with status 401 [ERROR] [copilot] Unauthorized: invalid API key原因:TaoToken 的 API Key 没配、配错、或者过期。解决:去 TaoToken 控制台重新生成 Key,确认复制时没有多余空格或换行。Key 通常以sk-开头。配好后重载窗口。
如果你用的是原生 Copilot 授权,401 说明 GitHub token 过期,Ctrl+Shift+P输入GitHub Copilot: Sign Out再Sign In。
5.2 local proxy failed
报错原文:
[ERROR] [copilot] local proxy failed: connect ECONNREFUSED 127.0.0.1:xxxx原因:debug.overrideProxyUrl配了一个本地地址,但本地没有服务在跑。解决:把debug.overrideProxyUrl改成https://taotoken.net/api,或者直接删掉这个键,让 Copilot 走默认端点。检查settings.json里有没有残留的http://localhost:xxxx配置。
5.3 reading choices 相关报错
报错原文:
[ERROR] [copilot] Error reading choices from response原因:响应格式和 Copilot 期望的不一致。通常是 Model ID 填错了,或者端点返回的不是 OpenAI 兼容格式。解决:确认debug.overrideEngine填的是gpt-4o或claude-3-5-sonnet这类标准模型 ID,不要填自定义名称。确认 Base URL 是https://taotoken.net/api,不要多加/v1或漏掉。
5.4 OAuth 授权失败
报错原文:
[ERROR] [copilot] OAuth flow failed: timeout原因:浏览器授权页没打开,或者授权后回调没成功。解决:检查默认浏览器是否能正常打开,授权时不要关闭弹出的页面。如果公司网络有限制,换一个网络环境重试。授权成功后回到 VS Code,状态栏会自动刷新。
5.5 状态栏一直显示 Ready (disabled) 但日志正常
这种情况通常是editor.inlineSuggest.enabled为false。日志里Inline suggest enabled: false会明确写出来。把它改成true,重载窗口。另一个可能是其他扩展冲突,比如 TabNine、Codeium 等,它们会接管内联建议。禁用这些扩展再试。
6. 把补全稳定跑起来:TaoToken 接入与长期使用建议
6.1 TaoToken 接入三件套
如果你决定把 Copilot 的请求统一走 TaoToken,记住三件套:
Base URL:https://taotoken.net/api
API Key:在 TaoToken 控制台生成,路径是console→api-keys。生成后复制,填到扩展的认证配置或环境变量里。
Model ID:gpt-4o或claude-3-5-sonnet。填到debug.overrideEngine。
这三个缺一个,请求就会失败。Base URL 不要加/v1,TaoToken 的兼容层会自动处理路径。Key 不要泄露到公开仓库,用环境变量或本地配置文件。
6.2 长期编码场景的建议
如果你每天大量写代码,补全请求频率很高,建议关注额度使用情况。TaoToken 控制台可以看到请求量和消耗。如果额度不够,可以在console里调整套餐。对于长期编码和 Agent 场景,Coding Plan 更适合,它针对高频请求做了优化。
模型对话功能可以用来测试不同模型的效果,比如对比gpt-4o和claude-3-5-sonnet在补全质量上的差异。在模型对话页面输入一段代码上下文,看哪个模型的建议更符合你的风格,然后把对应的 Model ID 填到settings.json里。
6.3 配置备份与迁移
settings.json改好后,建议备份一份。换电脑或重装 VS Code 时,直接贴回去,省得重新排查。备份时注意把 API Key 单独存,不要和配置文件放一起。如果你用 Settings Sync,确认 Copilot 相关配置有没有被同步,有时候同步会覆盖本地配置,导致状态又变 disabled。
6.4 最后的实用技巧
状态栏图标点一下就能切换补全开关,比改配置文件快。遇到Ready (disabled)先点图标看菜单,有Enable Completions就点,大概率立刻恢复。输出面板的GitHub Copilot日志是最可靠的排查依据,任何报错都会写在那里。记住这三条线:扩展状态、授权、配置冲突,按顺序查,基本不会卡住。
如果你在 TaoToken 接入过程中遇到 401 或 model not found,先去api-keys页面确认 Key 状态,再去doc页面核对 Base URL 和 Model ID 的写法。文档里有完整的兼容端点说明和示例请求,照着改就行。补全恢复后,正常写代码,状态栏保持Ready就说明一切正常。