vscode里的"油猴插件"
时间:2025-9-16 10:35 作者:六度科技 分类: cursor&vscode
「通杀」方案:
只要编辑器 基于 VS Code 1.90+(Trae、Cursor、 Windsurf、VSCodium、Code - OSS 等),不想碰签名校验、又想开机自动注入 JS/CSS,都可以直接照抄。
核心思路:
「内置扩展 + product.json 白名单」——完全不碰被签名的 workbench.html,升级后只需改 1 行 JSON 即可复活。
一、一次制作,到处通用
-
新建扩展文件夹(名字随意,下文用
auto-inject)auto-inject/ ├─ package.json ├─ extension.js └─ inject.js ← 你的「油猴」代码写这里 -
三个文件的内容(复制即可)
package.json{ "name": "auto-inject", "displayName": "Auto Inject (Tampermonkey-like)", "version": "0.0.1", "engines": { "vscode": "^1.90.0" }, "main": "extension.js", "activationEvents": ["*"] }extension.js
const fs = require('fs'); const path = require('path'); const vscode = require('vscode'); exports.activate = function (context) { const code = fs.readFileSync(path.join(__dirname, 'inject.js'), 'utf8'); // 方案 A:只在 workbench 注入一次(最轻量) const disposable = vscode.window.registerWebviewPanelSerializer('workbench', { deserializeWebviewPanel: (wb, state) => { wb.webview.html += `<script>${code}</script>`; } }); // 方案 B:保证 100% 注入(含动态 iframe/shadowDOM) const inject = () => { const s = document.createElement('script'); s.textContent = code; document.head.appendChild(s); }; const timeout = setInterval(() => { if (typeof document !== 'undefined') { clearInterval(timeout); inject(); } }, 200); context.subscriptions.push(disposable); };inject.js(写你自己的「油猴」脚本)
console.log('[Auto-Inject] 脚本已生效'); /* 下面随意发挥,比如自动点按钮、改颜色、加图标等 */ -
把扩展放到“内置扩展”目录
各编辑器路径一览:编辑器 内置扩展目录(无就把文件夹拖进去即可) Trae %USERPROFILE%\.trae\extensions\auto-inject-0.0.1\Cursor %USERPROFILE%\.cursor\extensions\auto-inject-0.0.1\Windsurf %USERPROFILE%\.windsurf\extensions\auto-inject-0.0.1\VSCodium %USERPROFILE%\.vscode-oss\extensions\auto-inject-0.0.1\Code - OSS ~/.vscode-oss/extensions/auto-inject-0.0.1/普通 VS Code %USERPROFILE%\.vscode\extensions\auto-inject-0.0.1\放进去后不需要手动安装,编辑器会把带版本号的文件夹直接识别为“内置扩展”。
二、告诉编辑器“允许这个扩展在启动阶段就跑”
- 打开
resources/app/product.json(此文件不在签名校验范围,随便改)。 - 在根节点加 / 改两行(没有就新增):
"extensionEnabledApiProposals": ["auto-inject"], "enableBuiltinExtensions": true - 保存,重启编辑器。
DevTools Console 里出现[Auto-Inject] 脚本已生效即成功,且不会再弹“安装损坏”。
三、升级后 10 秒恢复
编辑器整包升级会把 resources/app 目录整个换掉,只需:
- 再次把
"auto-inject"写进新的product.json(第 2 步)。 - 扩展本体仍在
~/.xxx/extensions/auto-inject-0.0.1/,无需任何改动。
| 四、常见问题速答 | 问题 | 解决 |
|---|---|---|
| 担心 product.json 以后也被签名 | 目前所有 VS Code 衍生版都没签它,真签了再换 argv.json 的 enable-proposed-api 即可。 |
|
| 想注入 CSS | 在 inject.js 里 document.head.appendChild(document.createElement('style')).textContent = '你的CSS' |
|
| 要热更新脚本 | 改 inject.js → Ctrl+Shift+P → Reload Window 立即生效,无需重启电脑。 |
|
| 公司电脑无管理员权限 | 本方案全程写用户目录,不需要管理员。 |
五、一句话总结
「内置扩展 + product.json 白名单」是目前 唯一不破坏签名、不弹损坏、升级后 10 秒复活 的通用“油猴”注入法;
所有 VS Code 系 IDE 都能直接复用,一次制作,终身拷贝即可。