产品约 1 分钟
用户脚本运行时
两套执行引擎、元数据匹配、GM API 与权限模型。
本页目录
Lumo Userscripts 通过原生 chrome.userScripts API 注册每个脚本。运行时有两套引擎:页面世界 runner 与隔离的 USER_SCRIPT host。两者都通过带 nonce 的 MessageChannel 与扩展通信。同一个管理器还可以选择通过 MCP 暴露脚本,见 连接智能体。
执行模型#
| 引擎 | 世界 | 适用场景 |
|---|---|---|
us-runner | MAIN | 需要页面真实 window,或声明 @grant unsafeWindow 的脚本。 |
us-host | USER_SCRIPT | 需要与页面全局隔离,同时仍使用 GM API 的脚本。 |
@inject-into page 与 @grant none 的脚本运行在页面世界。USER_SCRIPT 脚本拿到隔离世界的 window,无法提供同步的页面对象。
元数据#
脚本头typescript
管理器在保存时校验元数据,支持 @match / @include / @exclude 的 glob 与正则规则,并把相对 @require / @resource URL 解析到安装来源。
GM API#
- 值:
GM_setValue、GM_getValue、GM_deleteValue、GM_listValues。 - 网络:
GM_xmlhttpRequest用于跨域请求。 - 浏览器:
GM_cookie、GM_download、GM_notification、GM_setClipboard。 - 页面:
GM_addStyle、GM_addElement、unsafeWindow。 - 外壳:
GM_registerMenuCommand、标签页状态与 Promise 化的GM.*别名。
权限#
| 权限 | 用途 |
|---|---|
userScripts | 通过 Chrome 原生 API 动态注册。 |
storage, unlimitedStorage | 设置与有界元数据。 |
tabs, activeTab, webNavigation, scripting | 标签页上下文与诊断。 |
declarativeNetRequest | 把 .user.js 导航重定向到安装页。 |
cookies, downloads | 支撑 GM_cookie 与 GM_download。 |
notifications, contextMenus, alarms, clipboardWrite | GM API 与后台任务。 |
更新会检查权限
如果新版本需要更多访问权,更新会等待用户决定。管理器绝不会悄悄扩大脚本的触达范围。