右键菜单消失大概率是翻译类插件抢注context菜单失败所致;常见于AI翻译插件(如OpenClaw Node、CodeWhisperer)因网络未就绪、命令ID冲突或使用废弃API导致注册静默失败,可用Developer: Start Extension Bisect三步定位,并通过控制台日志验证加载状态。

右键菜单消失,大概率不是翻译插件“没汉化”,而是它和其他插件抢注册点失败了——菜单项被覆盖或注册流程中断,VSCode 甚至不报错。
为什么翻译插件会干掉右键菜单
中文语言包(如 vscode-language-pack-zh-hans)本身不注册任何右键菜单,但它常和 AI 翻译类插件(如 OpenClaw Node for VS Code、CodeWhisperer 或某些自研翻译助手)共存。后者会在激活时动态注入 editor/context 菜单项(比如“翻译选中内容”),而这类插件:
- 启动依赖网络或 token 验证,未就绪时不注册菜单,也不抛异常,表现为“菜单凭空消失”
- 若同时启用多个翻译/解释类插件,它们可能注册相同 command ID(如 translator.translate),导致 VSCode 只保留最后一个,前者的菜单项直接被丢弃
- 某些旧版翻译插件使用已废弃的 contributes.menus 写法,在 VSCode 1.89+ 中注册失败但无提示
用 Developer: Start Extension Bisect 快速锁定翻译插件
别手动禁用,二分法最准:
- 按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并回车:Developer: Start Extension Bisect
- 它会自动分组禁用插件,每轮提示你“右键菜单是否恢复”,只需答“是”或“否”
- 重点测试场景:打开一个 .js 文件 → 选中一段字符串 → 右键 → 看是否有“翻译”“解释”等条目,以及原生的“Copy”“Format Document”是否还在
- 通常 3–4 轮就能定位到具体插件,例如输出:The extension causing the issue is 'OpenClaw Node for VS Code'
确认插件是否真加载成功
即使 bisect 指向某个翻译插件,也得验证它是否真的跑起来了:
- 执行 Developer: Toggle Shared Process,看状态栏是否显示 Shared Process: Running;若为 Not Responding,说明该插件卡死,仅重载窗口无效,必须彻底关闭所有 VSCode 窗口再重启
- 打开开发者工具(Ctrl+Shift+I),切到 Console 标签页,过滤关键词 contextMen 或 translate,看是否有 Failed to register menu item 或 Cannot read property 'registerCommand' 类报错
- 运行 Developer: Show Running Extensions,检查目标插件的加载耗时:超过 1000ms 就值得怀疑,状态为 Activation failed 则基本确认失效
修复后右键仍不显示?检查命令冲突和 settings.json
菜单恢复 ≠ 功能可用,还得防深层冲突:
- 打开控制台(Ctrl+Shift+I),搜索 Command 'xxx' is already registered,常见于多个翻译插件共用 translator.* 命令 ID
- 查看 settings.json,删掉冗余配置,例如同时存在:"translator.defaultEngine" 和 "codeWhisperer.language",可能引发初始化竞争
- 若你只用中文语言包 + 一个翻译插件,建议显式禁用其他同类插件:在 settings.json 加上 "extensions.ignoreRecommendations": true,避免 VSCode 自动启用冲突项
真正麻烦的不是菜单消失,而是它消失得毫无征兆——没有红字报错,没有弹窗提示,只有你右键时那一秒的空白。这种静默失败,恰恰说明插件在注册阶段就断链了,而不是功能坏了。盯住控制台里的 contextMen 和 Extension host 日志,比反复重启更有效。


















