NoteGenNOTEGEN.

插件系统

使用和管理 NoteGen 插件,为编辑器与笔记工作流增加可控的扩展能力。

插件可以在不改变 Markdown 文件格式的前提下,为 NoteGen 增加命令、菜单、状态栏信息、设置项和笔记工作流。

桌面端入口位于“设置 → 插件”,包含“已安装”“发现”“更新”,开发者模式开启后另有“开发者”标签。权限在每个已安装插件的设置详情内。插件安装与运行目前只在桌面端开放,移动端暂不运行插件。

桌面端写作统计保留内置兜底;官方统计插件显示状态栏内容时隐藏兜底,避免重复显示。移动端保留原生字符统计,可在“设置 → 编辑器 → 写作统计”开关,不需要安装插件。

更新日期:2026-09-10。四个 SDK 包已发布 npm,官方插件签名市场已上线;社区投稿尚未开放。接口说明以当前开发分支为准,未发布的新增能力需使用对应源码版本。远程安装还要求 NoteGen 支持插件系统并内置正式根公钥。

插件、Skills 与 MCP 的区别

类型作用范围典型用途
NoteGen 插件扩展 NoteGen 本地界面和笔记工作流自定义命令、菜单与写作辅助
Skills告诉 AI Agent 如何完成一类任务按固定结构整理会议记录
MCP让 AI Agent 调用外部工具或数据连接第三方服务

安装 NoteGen 插件不会创建 Skill,也不会授予模型、Agent 或 MCP 权限。

当前支持的插件类型

官方插件

官方插件由 NoteGen 团队维护源码,并由市场根索引中登记的 NoteGen 发布者签名。它们与社区插件使用相同的沙箱、权限审核、安装、更新、回滚和卸载流程,不拥有宿主内部特权。

官方插件可以独立于 NoteGen 应用发布新版本。市场中的“官方”标记来自受信任的签名索引,不应通过插件名称、作者文字或 ID 前缀自行判断。

社区插件

社区插件将通过签名市场索引安装。市场包经过摘要校验和发布者签名验证,但插件仍可能读取你明确授权的内容或创建文件。安装前应检查发布者、源码、许可证、更新记录、平台和权限摘要。

当前官方与社区市场插件都只支持桌面端。市场尚未开放时,NoteGen 不会绕过信任检查安装远程包。

找到需要的入口

打开“设置 → 插件”:

入口用途
已安装搜索本机插件、刷新本机状态、启用或禁用插件
发现浏览市场、刷新签名目录、审核并安装插件
更新只列出有兼容新版本的市场插件;没有记录不代表没有安装插件
开发者开发者模式开启后显示;导入本地构建目录、查看日志、导出诊断

在“已安装”点击插件右侧“设置”展开详情。详情提供启用范围、使用说明正文、设置和权限;更新、回滚和卸载操作直接显示在详情最下方,不必再展开一层。“权限”不是独立的顶部标签。

安装并开始使用

  1. 在“发现”搜索插件,点击“安装”。
  2. 查看版本、发布者、公钥标识、许可证、源码链接、包摘要和权限摘要,再确认安装。
  3. NoteGen 获取新鲜的签名索引,验证下载包的摘要、完整性清单和发布者签名。
  4. 安装完成后转到“已安装”,启用插件并确认授权。安装本身不等于启用或授权。
  5. 展开插件详情阅读使用说明。按说明从命令面板、菜单、状态栏、侧栏或编辑器标签使用功能。

插件命令面板快捷键是 macOS 的 Command + Shift + P,Windows/Linux 的 Ctrl + Shift + P。具体功能取决于插件声明的入口;使用说明下方不再提供通用“立即使用”按钮。

市场不可用或无法取得新鲜签名索引时,安装和更新会停止。陈旧缓存只能浏览,不能用于安装。若提示“程序已安装但设置保存失败”,先刷新本机列表,再启用并审核,不要立即重复安装。

选择启用范围

范围行为
禁用停止运行,保留程序与数据
当前工作区只在当前工作区运行
所有工作区在已有有效启用记录、完成所需审核的工作区运行

“所有工作区”不会替未来的新工作区授权。首次进入新工作区仍需启用和审核。没有声明权限的插件也需要当前工作区的有效启用记录。

确认权限

授权弹窗中,每张权限卡片包含名称、说明、必需/可选标记,以及该权限的目录、路径或网络范围。

  • 首次审核时声明的权限默认选中;必需权限不可取消,可选权限可以取消。
  • 左下角“全选”可选中或取消所有可选权限,必需权限始终保留;部分选中时显示中间状态。
  • 再次打开保留此前的选择;已有授权记录的插件新增可选权限时,不自动选中该项。
  • 没有保存路径的 workspace-folder 权限默认选择“整个工作区”,可以改成更小的目录;已有范围继续保留。
  • 文件级权限仍需指定文件;网络权限仍需填写允许的 HTTPS origin,不会默认开放整个网络。
  • 默认勾选只是表单初始值,点击“授权并启用”后才提交。取消弹窗不会新增授权。

“整个工作区”在路径输入中表示为 .。路径相对当前工作区,不接受绝对路径或 ..。展开“高级:指定新目录或多个路径”可用逗号分隔多个范围。某些插件将一组必需权限绑定到同一个目录设置,弹窗会集中显示一次目录选择。

审核过程中切换工作区或更换插件包会使弹窗失效。关闭后重新打开,确认当前工作区和版本再提交。

权限能力

插件只能使用 manifest 中声明、且你在当前工作区授予的能力。当前公开权限包括:

权限能力
editor.read读取当前活动 Markdown 编辑器或选区
editor.write在 revision 校验通过后修改当前活动 Markdown 编辑器
notes.read读取授权的工作区 Markdown 文件
notes.list列举授权目录中的 Markdown 文件
notes.create在授权目录中创建 Markdown 文件
notes.open打开授权目录中的 Markdown 文件
notes.write修改授权的 Markdown 文件
notes.delete删除授权的 Markdown 文件
notes.move在授权的源路径和目标路径之间移动 Markdown 文件
network.fetch请求你明确授权的 HTTPS origin

network.fetch 不是通用联网权限。插件只能访问 manifest 声明且你逐项授权的 HTTPS origin,不能自行扩大到其他域名。插件也没有 Shell、数据库、Tauri、DOM 或任意文件系统访问权限。

查看和撤销

到“已安装 → 插件设置 → 权限”,查看各工作区的已授权、已拒绝、未审核、已变化状态及路径。只能在当前工作区调整授权。撤销可选权限立即拒绝新调用;撤销必需权限同时禁用插件。已进入宿主原子提交阶段的写入可能完成,撤销授权不会撤销已经完成的文件修改。

修改设置

开关、选择项立即保存;单行文本与数字在 Enter 或失焦后保存;多行文本在失焦后保存。输入中文时用于确认候选词的 Enter 不会提交设置。

设备/工作区表示本机配置作用域,不表示跨设备同步。修改目录设置不会自动扩大现有授权;出现权限拒绝时,重新审核目录范围。授权弹窗中的共享目录绑定是显式确认流程,会同步对应目录设置。

新版本已发布但没有更新提示

  1. 到“已安装”查看实际版本和来源标签。“开发版本”来自本地导入,不参与市场更新;“插件市场”来源才能更新到兼容的新版本。
  2. 到“发现”点击“刷新”,再返回“更新”。当前客户端可能复用未过期索引,只打开更新页不会主动获取新索引。
  3. 若仍没有更新,核对已安装版本与市场版本,以及新版本要求的 NoteGen 最低版本、API 范围和支持平台。

“发现”中的版本是市场版本,“已安装”按钮只表示同 ID 已存在,不表示已经装上该版本。从开发版改用市场版,需要先卸载开发版,再从“发现”安装;卸载确认时留意数据保留选项。

测试 0.1.0 → 0.1.1 这类升级流程,应在新版本发布前先通过市场安装旧版本。直接安装最新版不能验证这次升级。

更新、回滚与撤销版本

市场更新需要用户确认,不会自动安装。到“更新”查看兼容新版本,也可在插件详情底部操作。来源相同且未扩权时可迁移有效启用记录和授权;新增或扩大的权限需要复核。发布者 ID 不能自行更换,换钥必须经过根签名目录登记;换钥后的新包需要重新审核。

新市场版本首次成功激活前显示“等待激活确认”,这个状态跨重启保留。首次激活失败会退回上一版本;候选版确认或回滚前不能继续安装其他版本。详情底部“回滚”仅在存在上一版本时显示。

回滚会切回上一包及它对应的 storage.device/workspace 数据副本;不会回滚贡献设置、Markdown 修改或远端服务操作。旧版数据不会自动合并新版运行期间产生的写入。

市场可通过签名索引的 revoked 标记撤销具体版本。宿主取得该标记后停止运行该版本,阻止再次加载、安装或回滚到它,并显示原因。移除索引条目不是撤销;离线设备不会即时获知新标记。

本地开发插件

开发者模式下导入已构建的 .notegen/package 绝对路径。启用后自动监听构建产物,没有“重载”按钮或“自动重载”开关;关闭设置页面后继续监听,重启宿主后恢复。关闭开发者模式或禁用插件会停止/暂停监听。

作者在插件项目中运行 notegen-plugin dev,源码变化后生成新产物,NoteGen 校验并导入新的不可变快照。运行时和界面会重建,表单草稿不跨重载保留;扩权仍需审核。详细步骤见开发第一个插件

失败和诊断

插件详情显示运行状态、失败代码和次数。成功激活会清除之前的失败记录;未清除的运行时失败累计三次后,插件隔离并禁用。可清除失败记录后重新启用、更新、回滚或卸载。

开发者日志包含宿主消息及作者通过 ctx.log.info/warning/error 写入的内容,不自动收集 console。可以按插件筛选并导出诊断 JSON;日志不持久化,退出应用前导出。诊断包含版本、运行状态和日志,分享前检查作者写入的正文是否含私人内容。

卸载

到“已安装 → 插件设置”,在详情最下方点击“卸载”:

  • 卸载并保留数据:删除程序、禁用所有工作区并清除授权,保留贡献设置与 KV。
  • 卸载并删除数据:还会删除该插件的设备设置、工作区设置与 KV。

两者都不会删除插件创建的 Markdown,也不会撤销已完成的操作。清理部分数据失败时,插件已停止且授权已撤销,但会提示仍有残留。不要删除包含其他插件数据的共享存储文件来消除提示。

同步、备份和恢复

插件包、权限和启用状态不会随工作区同步到其他设备。Markdown 文件按普通工作区规则同步。

管理备份通过独立的 plugin-user-data.json 保存插件 KV。恢复归档工作区时重新绑定其 KV 工作区 ID;不会恢复插件程序、发布者信任、旧权限或启用凭据。重新安装并授权后才能使用恢复的数据。贡献设置保留目标设备已有状态,其他工作区数据不会自动绑定到当前目录。

本机 plugins/*.json.bak 是损坏恢复副本,不是跨设备备份。遇到存储损坏,应退出应用、保留完整插件数据目录并联系维护者,不要直接删除状态文件。新版存储格式不保证能被旧宿主读取。

数据保存位置

数据保存位置与行为
插件程序NoteGen 应用数据目录;不进入 Markdown 工作区
启用范围、授权、贡献设置应用数据目录下的 plugins/host-state.json;当前不跨设备同步
storage.devicestorage.workspace应用数据目录下的 plugins/storage.json;后者只是按工作区 ID 分区,也不跨设备同步
插件创建或修改的 Markdown普通工作区文件,按你现有的工作区同步与备份规则处理

因此,在另一台设备上同步到同一工作区,不会自动安装、启用或授权社区插件。卸载插件也不会删除它曾创建的 Markdown 文件。

插件状态由宿主原生层串行写入,采用同目录临时文件原子替换,并维护有效的 .json.bak 恢复副本。成功保存前,两份文件都会更新到已提交状态,避免恢复时重新带回已撤销的授权或已删除的数据。读取时会尝试从有效备份恢复损坏的文件;两份都无法读取时会报告错误,不会静默重置授权或数据。旧版根目录中的 plugins.jsonplugin-data.json 只作为首次迁移来源,迁移后不再承接新设置或 KV 写入。

常见问题

现象处理
已安装但没有功能入口检查当前工作区是否启用、权限是否待审核,再读插件使用说明
看不到开发者标签在“设置 → 通用 → 高级”打开开发者模式
更新页为空,找不到卸载到已安装插件详情最下方;更新页只显示可更新插件
修改源码后没变化确认 notegen-plugin dev 正在运行、导入的是 .notegen/package、开发者模式和插件均已启用
自动重载报错后不再尝试修复并生成不同的新产物,或重启宿主;同一失败产物不无限重试
权限已选中仍报错文件级权限需要具体文件,网络权限需要明确 origin;检查当前工作区及路径
同步到新设备后插件没运行在新设备重新安装、启用并授权;同步笔记不代表同步插件信任

安全边界

官方、社区与本地开发插件都运行在独立 Worker 中的 QuickJS 隔离环境,通过受控消息桥请求宿主能力。NoteGen 会在每次调用时检查插件身份、权限和路径范围,并限制内存、执行时间、消息大小、调用频率和本地存储额度。

这套机制用于缩小风险面,不代表插件经过功能或隐私背书。只安装你信任的发布者,并只授予完成任务所需的最小路径范围。

开发者阅读路线

先完成开发第一个插件,再查阅 开发工具概览命令行工具。通过 插件配置声明能力,结合 接口与类型参考功能调用与权限扩展应用界面实现功能。分发前阅读插件运行机制插件测试打包与验证发布到插件市场