问题描述 / What happened?
插件安装弹窗、详情页和权限标签的风险档位都来自 apps/desktop/src/features/plugins/model.ts 的 PERMISSION_RISK(:38-83)。:37 的注释说它对应权限矩阵 docs/spec/07-plugins/13-plugin-permissions-matrix.md 的风险列,但有几处对不上:
表里没列的权限走 model.ts:127-128 的 PERMISSION_RISK[key] ?? "high",矩阵里的低、中风险权限因此显示成高风险:
ui.view(矩阵 :12,low)
ui.window.appearance(矩阵 :14,low)
session.read.own、session.update.own(矩阵 :49-50,medium)
ui.settings 在矩阵的风险表里没有这一行(只出现在 :142 的文案表),也按 high 显示
background.service 在 model.ts:67 是 high,矩阵 :36、docs/spec/07-plugins/01-plugin-system.md:374、docs/plugin-development.md:892 都是 medium,中文版对应几处也是“中等”。fix(plugin-devkit): warn on every permission the matrix marks high #1467 之后 pi-plugin check 按矩阵走,不会对它提示高风险,和弹窗也不一致。
PERMISSION_RISK 和矩阵之间没有测试,apps/desktop/test/plugin-runtime-risk.test.mjs:98-99 只断言了 fs.write、fs.read 两项。fix(plugin-devkit): warn on every permission the matrix marks high #1467 给 devkit 的列表加了从矩阵读 high 行对比的测试,muzimu217 在 review 里也提到弹窗这份还没有:fix(plugin-devkit): warn on every permission the matrix marks high #1467 (review)
影响:只用了低、中风险权限的插件,安装时也会出现带警告图标的“高风险”分组(PluginDialogs.tsx:291-300)。插件中心目录现有 52 个插件(catalog.json 更新于 2026-10-08 11:43 UTC+8),其中 7 个没有任何矩阵里的 high 权限,弹窗里却有高风险分组:
插件
被显示成高风险的权限
pi.file-manager(也是内置插件)
ui.view
pi.gitlens
ui.view
icedly.moyu-games
ui.view
pi.clipboard-history
background.service
cc.mcii.session-notify
background.service
local.miku-theme
ui.window.appearance
io.github.akshayxkill.nexus-scenic-themes
ui.settings、ui.window.appearance
复现步骤 / Steps to reproduce
在 main 11da3b2f0 的仓库根目录(Node 22)运行:
node --experimental-strip-types --input-type=module -e "const { permissionRisk } = await import('./apps/desktop/src/features/plugins/model.ts'); for (const p of ['ui.panel', 'ui.view', 'ui.window.appearance', 'ui.settings', 'session.read.own', 'session.update.own', 'background.service']) console.log(p, permissionRisk(p));"
安装弹窗按这个函数的返回值分组(PluginDialogs.tsx:291-306),所以只声明 ui.view 的插件(比如 pi.gitlens)会被归到高风险组。这一步是看代码得出的,没有截图。
预期行为 / Expected behavior
和矩阵一致:ui.view、ui.window.appearance 是 low,session.read.own、session.update.own 是 medium,background.service 和矩阵同档。
实际行为 / Actual behavior
ui.panel low
ui.view high
ui.window.appearance high
ui.settings high
session.read.own high
session.update.own high
background.service high
应用版本 / App version
main 11da3b2f0(源码,0.17.0)。v0.17.0 tag 里 model.ts 的这两处(:67、:128)也一样。
操作系统 / Operating system
Linux
其他 / Additional context
想先确认几点:
风险档位以权限矩阵为准,对吗?
background.service 应该是 medium 还是 high?如果是 high,那应该改矩阵和两份文档,不改 model.ts。
ui.settings 应该是哪一档?矩阵要补一行。
未知权限按 high 显示这个兜底我打算保留,只是让已知权限都有明确的档位。
确认后的修复打算(fix(plugins)):按矩阵补齐 PERMISSION_RISK,background.service 按答复调整,再加一个测试,从矩阵里读出每个权限的档位和 PERMISSION_RISK 逐项对比。不改界面。
问题描述 / What happened?
插件安装弹窗、详情页和权限标签的风险档位都来自
apps/desktop/src/features/plugins/model.ts的PERMISSION_RISK(:38-83)。:37的注释说它对应权限矩阵docs/spec/07-plugins/13-plugin-permissions-matrix.md的风险列,但有几处对不上:model.ts:127-128的PERMISSION_RISK[key] ?? "high",矩阵里的低、中风险权限因此显示成高风险:ui.view(矩阵:12,low)ui.window.appearance(矩阵:14,low)session.read.own、session.update.own(矩阵:49-50,medium)ui.settings在矩阵的风险表里没有这一行(只出现在:142的文案表),也按 high 显示background.service在model.ts:67是 high,矩阵:36、docs/spec/07-plugins/01-plugin-system.md:374、docs/plugin-development.md:892都是 medium,中文版对应几处也是“中等”。fix(plugin-devkit): warn on every permission the matrix marks high #1467 之后pi-plugin check按矩阵走,不会对它提示高风险,和弹窗也不一致。PERMISSION_RISK和矩阵之间没有测试,apps/desktop/test/plugin-runtime-risk.test.mjs:98-99只断言了fs.write、fs.read两项。fix(plugin-devkit): warn on every permission the matrix marks high #1467 给 devkit 的列表加了从矩阵读 high 行对比的测试,muzimu217 在 review 里也提到弹窗这份还没有:fix(plugin-devkit): warn on every permission the matrix marks high #1467 (review)影响:只用了低、中风险权限的插件,安装时也会出现带警告图标的“高风险”分组(
PluginDialogs.tsx:291-300)。插件中心目录现有 52 个插件(catalog.json 更新于 2026-10-08 11:43 UTC+8),其中 7 个没有任何矩阵里的 high 权限,弹窗里却有高风险分组:pi.file-manager(也是内置插件)ui.viewpi.gitlensui.viewicedly.moyu-gamesui.viewpi.clipboard-historybackground.servicecc.mcii.session-notifybackground.servicelocal.miku-themeui.window.appearanceio.github.akshayxkill.nexus-scenic-themesui.settings、ui.window.appearance复现步骤 / Steps to reproduce
11da3b2f0的仓库根目录(Node 22)运行:PluginDialogs.tsx:291-306),所以只声明ui.view的插件(比如pi.gitlens)会被归到高风险组。这一步是看代码得出的,没有截图。预期行为 / Expected behavior
和矩阵一致:
ui.view、ui.window.appearance是 low,session.read.own、session.update.own是 medium,background.service和矩阵同档。实际行为 / Actual behavior
应用版本 / App version
main
11da3b2f0(源码,0.17.0)。v0.17.0tag 里model.ts的这两处(:67、:128)也一样。操作系统 / Operating system
Linux
其他 / Additional context
想先确认几点:
background.service应该是 medium 还是 high?如果是 high,那应该改矩阵和两份文档,不改 model.ts。ui.settings应该是哪一档?矩阵要补一行。确认后的修复打算(
fix(plugins)):按矩阵补齐PERMISSION_RISK,background.service按答复调整,再加一个测试,从矩阵里读出每个权限的档位和PERMISSION_RISK逐项对比。不改界面。