Skills 与插件
插件
插件能做什么、两种形态、权限如何授予。
插件是什么
插件可以真正扩展客户端本身:贡献 Agent 工具、自定义编辑器、菜单命令、侧栏视图、斜杠命令——比 Skill 更强:Skill 只是指令文本,插件带可执行代码(或至少一个入口)。
浏览插件市场查看已发布插件,卡片上会列出它声明的能力与自带 Skill。
两种形态
| 形态 | 代码 | 适用 |
|---|---|---|
extension | 单文件 ESM(main 必填),宿主为它起隔离进程 | 工具、编辑器、命令等有逻辑的插件 |
webapp | 零代码,只有清单里写死的网址 | 「把一个网站带进来」:一个图标加一个地址,宿主一个进程都不起 |
webapp 的地址在安装界面就能看到,因此不需要任何能力声明;它可以开在对话 Tab、外层功能 Tab 或右侧面板。
权限模型
铁律:清单里声明的能力 = 运行期最多能拿到的能力。市场审核和用户安装时看到的就是那两个数组;插件运行期想再要数组之外的东西,直接拒绝、不弹窗——一次静默自动更新不能把一个只读插件变成能跑命令的插件。
permissions:必选能力,不批就不激活。optionalPermissions:可选能力,运行期逐条请求。hostPermissions:出网域名白名单——「能联网」和「能连哪些站」是两道门。allowedCommands:可执行命令白名单(裸命令名);空数组 = 一条命令都不许跑。
写类能力(写文件、跑命令、git 写操作)和模型自己动手走同一条审批链,不是另开一条路。
安装与启用
- 客户端「扩展 › 插件」→ 市场搜索安装,或用 CLI:
npx @aidotnet/nextcowork install plugin <slug>。 - 安装后需在客户端里启用;禁用后它的工具、菜单、Skill 全部即时撤回。
- 卸载会删掉
~/.next-cowork/plugins/<publisher>.<name>/(登录账户时在 config-profiles 下)。
升级与扩权
新版本如果新增了必选能力,插件进入「待批准」状态:用户不批就不激活,授权界面会逐条列出新增的项。堵的是「装完之后自动更新悄悄扩权」。
安全模型
- 安装包下载后本地校验 SHA-256,与服务端权威摘要一致才落盘(中间被换掉的包过不了校验)。
- ZIP 防线:体积、条目数、展开体积、目录深度都有上限,符号链接拒绝。
- 能力授予逐条进行,拒绝某项能力不影响其他能力。
- 插件代码在隔离上下文里运行,只能经
ncw.*白名单 API 触碰宿主。
发布插件
见开发插件。