文档/Manifest 参考

Manifest 参考

通用开发

Manifest 参考

结构

字段类型必填说明
idstring是反向域名,唯一标识
namestring是显示名称,支持本地化
descriptionstring否简短介绍
versionstring是语义化版本
sdkapinumber推荐SDK API 版本,格式 YYMMDD(如 260626)
categorystring条件必填分类 ID(与 Nexus 同步,如 utilities、productivity),用于 UI 分组(sdkapi >= 260114 必填)
mainstring是先导脚本入口,通常为 index.js
entrystring旧字段旧版 init 入口;新插件不要继续使用
preloadstring否渲染层预加载脚本
dev.enableboolean否开发模式热重载
permissionsobject否权限声明,见下方详情
permissionReasonsobject否权限用途说明
features[].acceptedInputTypesstring否text、image、files、html
featuresobject否CoreBox 指令、Widget、Workflow 节点
semanticAliasesobject否语义别名声明,识别标记为 App Semantic Alias Catalog / 应用语义别名目录(建议 sdkapi >= 260626)

SDK API 版本 (sdkapi)

sdkapi 字段用于声明插件兼容的 SDK API 版本。格式为 YYMMDD(年月日)。

  • 当前版本: 260626 (2026-06-26)
  • 支持列表: 251212、260114、260121、260215、260225、260228、260428、260615、260626
  • 未声明、非法、未列入支持列表或低于 251212: 运行时直接以 SDKAPI_BLOCKED 阻断
  • 251212 ~ 260113: 启用完整权限校验
  • 等于或高于 260114: 在 251212 基础上,要求声明 category(用于 UI 分组)
  • 等于或高于 260215: 可使用插件 SQLite SDK(usePluginSqlite)
  • 等于或高于 260228: 启用插件 capability auth 基线
  • 260428: 受支持 marker,不新增额外运行时门槛
  • 260615: 受支持 marker,不新增额外运行时门槛
  • 260626: 当前推荐 marker,开放 SemanticAliasSDK 与 semanticAliases 声明,不新增 SQLite schema 或额外运行时门槛

自 260114 起:建议补充 category 以参与 UI 分组展示;当 sdkapi >= 260114 且缺失 category 时,插件将被拒绝启动并在列表中标记问题。

建议新插件始终声明最新的 sdkapi 版本以获得完整的权限保护。

语义别名声明 (semanticAliases)

识别标记:App Semantic Alias Catalog / 应用语义别名目录。

semanticAliases 用于声明插件、Feature 或 Provider 的可发现语义词,例如短别名、类别词、中文/英文同义词和常见缩写。它是 manifest metadata,首版用于让开发者用统一结构维护别名;真实运行时接入仍应通过现有 features[].keywords、searchTokens 或 Search Provider 写入路径,不会自动新增未安装应用或外链结果。

EXAMPLE.JSON
{
  "sdkapi": 260626,
  "semanticAliases": [
    {
      "id": "todo.create",
      "target": "todo.new",
      "label": "Create Todo",
      "aliases": ["todo", "task"],
      "categories": ["office", "办公"],
      "synonyms": ["待办", "任务"]
    }
  ]
}

权限声明 (permissions)

权限系统控制插件对敏感 API 的访问。详见 Permission API 文档。

声明格式

EXAMPLE.JSON
"permissions": {
  "required": ["clipboard.read", "network.internet"],
  "optional": ["storage.shared"]
},
"permissionReasons": {
  "clipboard.read": "读取剪贴板中的待翻译文本",
  "network.internet": "连接翻译服务 API"
}

可用权限

权限 ID风险说明
fs.read中读取文件
fs.write高写入文件
fs.execute高执行文件
clipboard.read中读取剪贴板
clipboard.write低写入剪贴板(自动授予)
network.local低本地网络
network.internet中互联网访问
network.download中下载文件
system.shell高执行命令
system.notification低系统通知
system.tray中托盘交互
intelligence.basic低基础智能能力
intelligence.admin高管理级智能能力
intelligence.agents高智能体
storage.plugin低插件存储(自动授予)
storage.shared中共享存储
storage.sqlite中插件 SQLite 数据库访问
window.create低创建窗口(自动授予)
window.capture高屏幕截图

示例

EXAMPLE.JSON
{
  "id": "com.tuff.todo",
  "name": {
    "default": "待办",
    "en": "Todo"
  },
  "description": "快速记录与同步待办",
  "version": "1.3.0",
  "sdkapi": 260626,
  "category": "utilities",
  "main": "index.js",
  "features": [
    {
      "id": "todo.new",
      "name": "快速创建待办",
      "desc": "从输入文本创建本地待办",
      "keywords": ["todo", "task", "待办", "任务"],
      "push": true,
      "acceptedInputTypes": ["text", "files"],
      "commands": [
        { "type": "over", "value": ["todo", "task"] }
      ]
    }
  ],
  "semanticAliases": [
    {
      "id": "todo.create",
      "target": "todo.new",
      "aliases": ["todo", "task"],
      "categories": ["office", "办公"],
      "synonyms": ["待办", "任务"]
    }
  ],
  "permissions": {
    "required": ["clipboard.read", "storage.sqlite"],
    "optional": ["storage.shared"]
  },
  "permissionReasons": {
    "clipboard.read": "读取剪贴板中的待办内容",
    "storage.sqlite": "将待办数据存储到本地 SQLite"
  }
}

校验

  • id 为必填,使用至少三段的全小写反向域名标识。
  • name 使用全小写 slug,version 使用严格 SemVer。
  • sdkapi 必须是受支持 marker;达到文档门槛后必须声明 category。
  • Prelude 插件使用 main: "index.js";纯 UI 插件可以省略 main。
  • permissions 使用 { required: string[], optional: string[] },每个 id 必须存在于权限注册表。
  • 打包态必须关闭 dev.enable/dev.source、清空 dev address,并用 _files 绑定所有普通文件。
  • Nexus 在上传前拒绝危险归档路径/类型、重复或大小写冲突条目、身份/版本不一致和超限包。

常见错误

情况解决办法
Prelude 插件未填写 main指定 index.js 并确保文件存在;纯 UI 插件无需 Prelude 入口
继续使用 entry / init(ctx)按 插件开发任务流 迁移到先导脚本模型
权限过多被拒仅声明实际需要的权限,首版尽量最小化
features 关键词冲突使用命名空间(如 todo. 前缀)避免重复