SDK 与扩展 API
TradingAI 提供 Dart (tradingai_api) 与 Rust (wasm_plugin_sdk) 两套扩展开发方案。
扩展类型对比
| 类型 | 引擎 | 清单 | 通信 | 权限 | SDK |
|---|---|---|---|---|---|
| Dart/Stdio | dart / native | plugin.yaml | JSON-RPC over stdio | 需声明 permissions | tradingai_api |
| WASM | wasm | manifest.json | C-ABI 函数 | WASM 沙箱 | wasm_plugin_sdk |
| Webview | webview | manifest.json | 同宿主 | 同宿主 | - |
| 外部进程 | stdio | manifest.json | stdio | 需 command | - |
tradingai_api(Dart)
Dart 扩展通过 TradingAIPlugin 基类与 TradingAIContext 与宿主通信,使用 JSON-RPC over stdio。
基础用法
dart
import 'package:tradingai_api/tradingai_api.dart';
void main() => MyPlugin().run();
class MyPlugin extends TradingAIPlugin {
@override
Future<void> onActivate(TradingAIContext context) async {
await context.window.showMessage('Hello!');
await context.fs.writeString('/tmp/out.txt', 'data');
}
}
TradingAIContext 16 类 API
| API | 主要能力 |
|---|---|
| fs | readString, writeString, exists, list, downloadFile |
| http | get, post, put, delete, patch, head |
| shell | run, spawn, writeStdin, kill, onStdout/onStderr/onExit |
| window | showMessage, showQuickPick, showInputBox, createOutputChannel, createTerminal, openUrl, createWebviewPanel |
| editor | getActiveDocumentUri, insertText, replaceText, getSelections, setSelections, onDidChangeSelections, getSelectedText, replaceSelection |
| workspace | getConfiguration, onDidOpenTextDocument, onDidChangeTextDocument, onDidChangeConfiguration |
| commands | registerCommand |
| statusBar | createItem, updateItem, disposeItem |
| toolbar | registerItem, unregisterItem, onTap |
| extensions | getExtension, onDidActivate |
| market | subscribe, unsubscribe, getQuote, onQuoteUpdate |
| chart | addIndicator, removeIndicator, addDrawing |
| alerts | create, list, delete, onTriggered |
| portfolio | getPositions, getBalance |
| sduiPanel | createPanel, updatePanel, disposePanel, onAction |
参考示例:extensions/market_dashboard_plugin 演示全部 16 类 API。
wasm_plugin_sdk(Rust)
WASM 扩展使用 C-ABI 函数导出,仅支持 i32 参数与返回值。价格与百分比需定点编码。
定点编码
rust
encoded = (value × 10000) as i32
decoded = encoded as f64 / 10000.0
例如:价格 152.35 编码为 1_523_500,百分比 2% 编码为 20_000。
Plugin trait 与宏
rust
use tradingai_plugin_sdk::*;
struct MyPlugin;
impl Plugin for MyPlugin {
fn activate(_ctx: &PluginContext) -> ActivateResult { SUCCESS }
fn deactivate(_ctx: &PluginContext) -> ActivateResult { SUCCESS }
}
export_plugin!(MyPlugin);
宏会导出 plugin_activate 与 plugin_deactivate。
示例扩展
extensions/ta_calculator_plugin:技术分析计算器,演示 SMA、EMA、RSI、MACD、Bollinger、ATR、Fibonacci 及风险管理函数。
编译:cargo build --target wasm32-unknown-unknown --release
C-ABI 函数完整列表见 WASM SDK 参考。
示例扩展索引
详见 示例索引 页面,包含功能说明、API 列表及关键代码位置。
- market_dashboard_plugin:Dart,16 类 API 综合演示
- ta_calculator_plugin:WASM,技术指标与风险管理