插件清单格式

TradingAI 支持 manifest.json 与 plugin.yaml 两种清单格式,根据扩展引擎选择对应格式。

扩展类型与清单对应

引擎清单文件入口字段
wasmmanifest.jsonmain (指向 .wasm)
dart / nativeplugin.yamlentry_point (bin/main.dart)
webviewmanifest.jsonmain (指向 .html)
stdiomanifest.jsoncommand + main (脚本路径)

engine 规则

  • wasm:main 必填,且必须以 .wasm 结尾
  • dart / native:main 推荐 bin/main.dart,需有 pubspec.yaml
  • webview:main 必须指向 .html 文件,可选 entryPoints
  • stdio:command 必填,main 为脚本路径(如 .py、.js)

manifest.json

用于 WASM、Webview、stdio 扩展。

示例(WASM)

json
{
  "id": "com.example.my-extension",
  "name": "My Extension",
  "version": "1.0.0",
  "description": "A description of my extension",
  "author": "Your Name",
  "engine": "wasm",
  "main": "target/wasm32-unknown-unknown/release/plugin.wasm",
  "category": "indicators"
}

示例(Dart/Stdio 也用 manifest.json 时)

json
{
  "id": "com.example.my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "description": "Description",
  "engine": "dart",
  "main": "bin/main.dart"
}

字段说明

字段必填说明
id反向域名格式,如 com.company.plugin
name显示名称
version语义化版本,如 1.0.0
description推荐插件描述
author推荐作者名
enginewasm | native | dart | webview | stdio
main依 engine入口文件路径
commandstdio 必填可执行命令,如 python、node
categoryindicators | trading | analysis | scanner | charting | notifications | other

plugin.yaml

用于 Dart 扩展,支持更丰富的声明式配置。

完整示例

yaml
id: market_dashboard
name: 'Market Dashboard'
description: 'A comprehensive market dashboard plugin.'
version: '1.0.0'
author: 'TradingAI Team'
entry_point: 'bin/main.dart'

permissions:
  - fileSystem:
      - '${workspace}/**'
      - '${extensionPath}/**'
  - network:
      - 'api.tradingai.com'
  - shell:
      - echo
      - date

activationEvents:
  - '*'

configuration:
  - key: market_dashboard.watchSymbols
    type: string
    description: 'Comma-separated symbols to watch.'
    default: 'AAPL,MSFT,GOOGL'

contributes:
  commands:
    - id: market_dashboard.openDashboard
      title: 'Market Dashboard: Open Dashboard'
      category: 'Market Dashboard'
  keybindings:
    - command: market_dashboard.openDashboard
      key: 'ctrl+shift+d'
  viewContainers:
    sidebar:
      - id: market_dashboard
        title: 'Market Dashboard'
        icon: 'dashboard'
        order: 80
  views:
    market_dashboard:
      - id: market_dashboard.overview
        name: 'Market Overview'
        order: 0

permissions 结构

  • fileSystem:路径列表,支持 ${workspace}、${extensionPath}
  • network:域名列表
  • shell:允许的命令列表

activationEvents

  • *:启动时激活
  • onView:viewId:打开指定视图时激活
  • onCommand:commandId:执行命令时激活
  • onLanguage:languageId:打开对应语言文件时激活

contributes

  • commands:id, title, category
  • keybindings:command, key, when
  • viewContainers:sidebar 下的容器列表
  • views:各容器内的视图

完整参考见 贡献点参考