SDK 与 Web 模式
AGNX Excalidraw 提供两种使用方式:Web 应用 和 SDK 集成。
概览
| 特性 | Web 应用 | SDK 模式 |
|---|---|---|
| 使用方式 | 直接运行完整应用 | 集成到你的项目 |
| 适用场景 | 独立白板工具 | 自定义开发 |
| 配置 | UI 界面配置 | 代码配置 |
| 部署 | Vercel/静态托管 | npm 包/源码引入 |
Web 应用模式
直接运行完整的 Excalidraw 白板应用,包含所有 UI 和功能。
目录结构
src/web/
├── App.tsx # 主应用组件
├── main.tsx # 入口文件
├── styles.css # 全局样式
├── components/ # UI 组件
│ ├── ExcalidrawCanvas.tsx # 画布组件
│ ├── AiChatPanel.tsx # AI 对话面板
│ ├── MermaidPanel.tsx # Mermaid 面板
│ ├── DslPanel.tsx # DSL 编辑面板
│ ├── AiSettingsPanel.tsx # AI 设置面板
│ └── AIToolbar.tsx # AI 工具栏
├── hooks/ # 自定义 Hooks
│ ├── useDiagramStorage.ts # 图表存储
│ └── useChatHistory.ts # 聊天记录
└── lib/ # 工具函数
启动方式
# 开发模式
pnpm dev
# 构建生产版本
pnpm build
# 预览
pnpm preview
适用场景
- ✅ 需要一个完整的 AI 白板工具
- ✅ 快速部署到 Vercel 或其他平台
- ✅ 不需要深度定制 UI
- ✅ 个人或团队独立使用
SDK 模式
将核心功能集成到你自己的 React 项目中。
目录结构
src/sdk/
├── index.ts # SDK 导出入口
├── types.ts # 类型定义
├── ai/ # AI 功能
│ ├── client.ts # AI 客户端 API
│ ├── config.ts # 配置管理
│ ├── prompts.ts # Prompt 模板
│ ├── storage.ts # 配置存储
│ ├── text_generation.ts # 文本生成
│ └── text_generation.json # Provider 定义
├── dsl/ # DSL 转换
│ ├── index.ts
│ └── converter.ts # JSON ↔ DSL 转换
└── utils/ # 工具函数
├── mermaid-to-excalidraw-loader.ts
└── sanitize-elements.ts
导入方式
// 从 SDK 导入所需功能
import {
// AI 生成
generateMermaid,
streamMermaid,
convertMermaidToExcalidraw,
// DSL 编辑
generateDslEdit,
streamDslEdit,
applyDslChanges,
convertJsonToDsl,
convertDslToJson,
// 配置
loadAppConfig,
persistAppConfig,
resolveActiveProvider,
isConfigReady,
} from './src/sdk';