Cursor+obsidian架构图生成

Cursor+obsidian架构图生成

原创 whyiyhw 积木成楼 2025年04月29日 08:16 湖北

如何通过 Prompt 将一句话转为架构逻辑图?

今天给大家分享下,我在逻辑可视化方面的探索,主要使用 cursor 进行编辑。

    • • 用户 输入逻辑 --> cursor (加入 prompt )--> Canvas 文件 --> 通过obsidian 可视化展示

图片

还有一些其他版本的

图片

好处就是,可以通过 ai 去编辑这个 canvas 各位也可以试试,这个版本还不算完善,主要在复杂 模块间的关系,跟内容与大小的关系prompt设计上,感觉还是需要代码进行判定。


## Obsidian Canvas Prompt 指南

这是一个用于指导 AI 创建或更新 Obsidian Canvas 白板的详细 Prompt。

# 指令:创建/更新白板

请根据以下描述和最佳实践,生成用于描述 Obsidian Canvas 白板元素的 JSON 对象。JSON 结构应符合以下规范:

## JSON 结构

{
  "nodes": [
    {
      "id": "节点的随机唯一标识符 (例如: 8a9892c32a0af51a)",
      "x": 0,
      "y": 0,
      "width": 100,
      "height": 50,
      "type": "text | image | file | group | link",
      "text": "节点内显示的文字内容,支持Markdown格式 (例如: **加粗**, *斜体*, - [ ] 任务列表, # 标题, *列表项*...)",
      "color": "颜色名或代码 (可选, 例如 '1'-'6' 或 '#RRGGBB')",
      "label": "分组标题 (仅当 type 为 'group' 时使用)",
      "url": "网页链接地址 (仅当 type 为 'link' 时使用)",
      "src": "图片来源 URL (仅当 type 为 'image' 时使用)",
      "filePath": "文件路径 (仅当 type 为 'file' 时使用)"
    }
  ],
  "edges": [
    {
      "id": "连线的随机唯一标识符 (例如: 837b9fecf5c41ff9)",
      "fromNode": "起始节点的 ID",
      "fromSide": "left | right | top | bottom",
      "toNode": "目标节点的 ID",
      "toSide": "left | right | top | bottom",
      "color": "连线颜色 (可选, 例如 '1'-'6' 或 '#RRGGBB')",
      "label": "连线上的文字 (可选)"
    }
  ]
}

## 字段说明

### 节点 (`nodes`)

*   `id`: **必需**,节点的随机唯一标识符 (字符串)。
*   `x`, `y`: **必需**,节点左上角在画布上的坐标 (数字)。
*   `width`, `height`: **必需**,节点的尺寸 (数字)。
*   `type`: **必需**,节点类型 (字符串): 
    *   `text`: 纯文本节点。
    *   `image`: 图片节点。
    *   `file`: 文件引用节点。
    *   `group`: 分组节点,可包含其他节点。
    *   `link`: 链接节点。
*   `text`: 节点内显示的文本内容,支持 **Markdown 格式** (字符串)。
*   `color`: 节点背景颜色 (可选,字符串)。可以是预设颜色编号 (`"1"` 到 `"6"`) 或十六进制颜色代码 (`"#ff0000"`)。
*   `label`: 当 `type` 为 `group` 时,显示的分组标题 (可选,字符串)。
*   `url`: 当 `type` 为 `link` 时,链接的目标网址 (可选,字符串)。
*   `src`: 当 `type` 为 `image` 时,图片的来源 URL (可选,字符串)。
*   `filePath`: 当 `type` 为 `file` 时,引用的文件路径 (可选,字符串)。

### 连线 (`edges`)

*   `id`: **必需**,连线的随机唯一标识符 (字符串)。
*   `fromNode`, `toNode`: **必需**,连线的起点和终点节点的 `id` (字符串)。
*   `fromSide`, `toSide`: **必需**,连线连接到节点的哪一边 (字符串: `left`, `right`, `top`, `bottom`)。
*   `color`: 连线颜色 (可选,字符串)。同节点颜色规则。
*   `label`: 显示在连线上的说明文字 (可选,字符串)。

## 白板设计最佳实践

### 1. 布局与组织

*   **流程方向**: 优先使用从左到右或从上到下的流程。对于复杂流程,可考虑 Z 型布局。
*   **空间与对齐**: 
    *   相关节点应紧密放置并对齐。
    *   不同功能组之间保持 `100px` 以上的间距。
*   **分组 (`group`) 使用**:
    *   使用 `type: "group"` 创建分组节点,将相关节点包裹起来形成逻辑单元。
    *   **适用场景**: 功能模块、流程阶段、层级结构、跨功能协作等。
    *   **分组尺寸计算**: 
        *   **宽度**: 内部最宽节点宽度 + 左右内边距 (至少 `100px` - `120px`)。
        *   **高度**: 所有内部节点高度总和 + 节点间垂直间距总和 (每对节点间至少 `50px` - `70px`) + 上下内边距 (至少 `100px` - `120px`)。
        *   **冗余空间**: 对于多节点分组,建议额外增加 `180px` - `280px` 的高度作为未来扩展空间。
        *   **Markdown 格式**: 使用 Markdown 的内容会占用更多空间,计算高度时应额外考虑增加 40-50%。
        *   **换行符 (`\n`)**: 每个包含 `\n` 的节点,在计算分组高度时额外增加 `10px` - `20px`。
        *   **内容容纳**: 必须确保分组尺寸足够容纳所有内部节点,避免内容被折叠或显示不全。
    *   **分组标题 (`label`)**: 使用 `label` 字段为分组提供简洁明了的标题。
    *   **分组位置 (`x`, `y`)**: 通常放置在其包含的第一个内部节点的左上方约 `40px` - `50px` 处。
    *   **避免重叠**: **绝对禁止**不同分组之间发生重叠,以免造成数据覆盖和视觉混乱。
    *   **组内节点布局**:
        *   **垂直间距**: 垂直排列时,相邻节点间距至少为节点高度的 30% 或 `80px` - `100px`。
        *   **上下边距**: 第一个节点距分组顶部至少 `70px` - `90px`;最后一个节点距分组底部至少 `70px` - `90px`。
        *   **左右边距**: 节点距分组左右边界至少 `50px` - `60px`。
        *   **对齐**: 垂直排列时,建议保持节点左侧边缘对齐。不同尺寸节点可基于中心线或左侧边缘对齐。
        *   **防止节点重叠**: 计算节点位置时,下一个节点的 `y` 坐标应 **至少** 为 `上一个节点的 y + 上一个节点的高度 + 80px`。
    *   **垂直流布局优化**:
        *   **视觉区分**: 垂直流动时,每个节点应与其上下节点有明确的视觉区分。
        *   **垂直连线间距**: 上下关联节点的垂直连线,建议间距为 `120px` - `150px`。
        *   **引用连接间距**: 引用型连接 (如上指向下) 至少需要 `80px` - `100px` 间距,确保箭头清晰。
        *   **重要引用节点**: 标题、API 参考等引用节点,应置于内容顶部,与被引用内容保持 `140px` - `180px` 距离。
        *   **视觉分隔**: 可使用虚线或不同颜色连线增强相关节点间的垂直分隔。

### 2. 连接与交互 (`edges`)

*   **连接类型**: 分组节点可与任何节点(包括其他分组)连接。
    *   **组 -> 组**: 表示整体流程或阶段关系。
    *   **组 -> 节点**: 表示从整体到特定元素的交互。
    *   **节点 -> 组**: 表示一个元素对整体的影响。
*   **连线样式与语义**:
    *   **实线**: 表示直接的数据流或流程转换。
    *   **虚线** (`style: "dashed"`,虽然 Canvas 核心不支持,但可作为生成提示): 表示引用关系或间接影响。
    *   **箭头**: 明确指示数据/信息流向 (由 `fromSide` 和 `toSide` 决定)。
    *   **颜色 (`color`)**: 建议与源或目标节点颜色保持一致,增强关联性。
    *   **标签 (`label`)**: 简洁明了,通常 2-4 字描述关系。
*   **垂直流连接建议**:
    *   **语义**: 自上而下通常表示层级关系或顺序步骤。
    *   **标签**: 垂直连线标签应简短,避免文字挤压。
    *   **引用间距**: 垂直引用间距保持 `140px` - `180px`,确保箭头清晰。
    *   **长距离连接**: 复杂垂直流可考虑使用中间节点或调整布局,避免过长直连。
    *   **多对一连接**: 多个上层节点连到同一下层节点时,可使用不同线型或颜色区分关系。
*   **分组间距建议 (基于连线复杂度)**:
    *   **简单 (1-2 条)**: 保持 `200px` - `250px` 距离。
    *   **中等 (3-5 条)**: 保持 `300px` - `350px` 距离。
    *   **复杂 (>5 条)**: 保持 `450px` - `500px` 以上距离。
    *   **密度调整**: 每增加 2 条平行连线,额外增加 `50px` - `80px` 间距。
    *   **交叉处理**: 每对交叉连线,额外增加 `80px` - `100px` 间距。
    *   **布局优化**: 高连接度分组可考虑梯形或 Z 字形排列。
    *   **垂直错开**: 水平空间有限时,可将相邻分组垂直错开减少交叉。

### 3. 节点内容与尺寸匹配

*   **文本节点 (`type: 'text'`) 尺寸指南**:
    *   短文本 (1-2 行): 宽 `180px` - `220px`, 高 `80px` - `110px`。
    *   中长文本 (3-5 行): 宽 `220px` - `280px`, 高 `130px` - `200px`。
    *   长文本 (>5 行): 宽 `250px` - `350px`, 高 `220px` - `320px`。
    *   **含 Markdown**: 预留额外 40-50% 空间。
*   **图片节点 (`type: 'image'`) 尺寸指南**:
    *   **保持宽高比**: 避免图片变形。
    *   标准尺寸: 宽 `240px` - `320px`, 高自适应 (通常 `150px` - `250px`)。
    *   小型图标/徽标: 宽 `150px` - `200px`, 高约 `80px` - `120px`。
    *   截图/复杂图表: 考虑宽 `360px` - `480px` 以保清晰。
    *   **边距**: 添加约 `20px` 的额外尺寸用于边框或视觉间距。
*   **文件节点 (`type: 'file'`) 尺寸指南**:
    *   标准: 宽 `220px` - `260px`, 高 `90px` - `120px`。
    *   含预览: 宽 `250px` - `300px`, 高 `180px` - `220px`。
    *   **文件名长度**: 长文件名需增加 `30px` - `50px` 宽度。
*   **内容增量计算 (估算)**:
    *   多行文本: 每行增加约 `30px` - `35px` 高度。
    *   换行符 (`\n`): 每个额外增加 `5px` - `10px` 高度。
    *   标题 (`#`, `##`...): 预留约 `50px` - `60px` 额外高度 (一级标题 `#` 可能需 `60px` - `70px`)。
    *   列表 (`-`, `*`): 每项预留约 `35px` - `40px` 高度。
    *   任务列表 (`- [ ]`): 每项增加约 `35px` - `40px` 高度。
    *   加粗/斜体: 预留额外 10-15% 空间。
    *   链接: 预留额外 15-20% 空间。
    *   代码块 (```): 每行预留 `45px` - `50px` 高度。
    *   嵌套列表: 每级嵌套额外增加 `10px` 宽度/缩进。
*   **安全边界**: 
    *   为所有节点添加额外 `20px` - `30px` 底部高度作为溢出保护。
    *   对复杂格式组合 (如带格式化列表),总高度乘以 1.2 作为安全系数。
*   **避免常见尺寸问题**:
    *   **内容溢出**: 宽度不足导致断行不当;高度不足导致文本截断。
    *   **过度空白**: 尺寸远超内容量。
    *   **不平衡宽高比**: 过窄或过扁影响阅读。
    *   **格式化失效**: 节点太小导致 Markdown 显示异常。
    *   **高度坍缩**: 换行符 (`\n`) 后内容可能因高度不足被折叠。

### 4. 术语表/注释节点 使用

*   **用途**: 解释复杂概念、技术术语或缩写,提升图表可理解性。
*   **设计建议**:
    *   **颜色**: 使用明显但非核心的颜色 (如灰色系 `"6"` 或 `#A9A9A9`, 浅紫色系)。
    *   **位置**: 放置在图表边缘,如右上角或左上角。
    *   **尺寸**: 宽度建议 `300px` - `350px`;高度根据术语数量调整,每项约 `40px` - `50px`。
    *   **格式**: 术语使用 `**加粗**`,解释使用普通文本。
*   **内容组织**:
    *   **标题**: 使用 Markdown 标题,如 `## 注释/术语表`。
    *   **排序**: 可按字母或重要性排序。
    *   **简洁性**: 解释应简明扼要。
    *   **内容**: 可包含技术名词、缩写全称、关键概念定义等。
*   **示例 Markdown 内容**:
    ```markdown
    ## 注释/术语表
    
    - **BERT**: 基于 Transformer 的语言理解模型。
    - **ASR**: 自动语音识别 (Automatic Speech Recognition)。
    - **OCR**: 光学字符识别 (Optical Character Recognition)。
    - **BI**: 商业智能 (Business Intelligence)。
    - **扩散模型**: 用于图像生成的生成式 AI 模型。
    - **多模态**: 同时处理多种数据类型 (文本/图像/音频/视频) 的能力。
    - **LLM**: 大语言模型 (Large Language Model),如 GPT 系列。
    - **文生图**: 将文本描述转换为图像的 AI 技术。
    - **Transformer**: 现代 AI 模型常用的基于注意力机制的架构。
    ```

### 5. 颜色策略

*   **功能性配色 (建议)**:
    *   输入/数据源: 蓝色系 (`"5"` / `#4682B4`)。
    *   处理/转换: 绿色系 (`"4"` / `#66CDAA`)。
    *   输出/结果: 红色系 (`"1"` / `#CD5C5C`)。
    *   选择/决策: 黄/橙色系 (`"2"`, `"3"` / `#FFD700`)。
    *   注释/说明: 灰色系或紫色系 (`"6"` / `#A9A9A9`)。
*   **搭配建议**: 限制使用 3-5 种主要颜色。可使用同色系不同深浅或对比色。
*   **视觉层次**: 核心节点可使用更饱和颜色、更大尺寸,并放置在中心或起始位置。

### 6. 常见布局模式参考

*   **线性流程图**: 展示顺序流程 (从左到右 / 从上到下)。
    *   *适用*: 简单步骤、工作流、时间序列。
*   **分层树状图**: 展示层级关系。
    *   *适用*: 组织架构、系统架构、从属关系。
*   **环形布局**: 展示循环流程或相互关联概念。
    *   *适用*: 周期流程、反馈循环、依赖系统。
*   **矩阵布局**: 用于比较或分类。
    *   *适用*: 四象限分析、对比矩阵、决策表。
*   **放射状布局**: 从中心向外发散。
    *   *适用*: 头脑风暴、概念图、主题延伸。

### 7. 常见问题与解决方案

*   **问题: 布局混乱** (节点无序,连线交叉严重)
    *   **解决**: 网格对齐 (`20px`/`40px`);相关节点同色/分组;减少交叉;使用分组隔离模块。
*   **问题: 视觉过载** (节点过多,信息密度高)
    *   **解决**: 拆分子图;使用分组整合;层级结构 (隐藏细节);渐进显示。
*   **问题: 内容溢出** (文本截断,格式失效)
    *   **解决**: 根据指南预留足够空间;长文本拆分节点;缩略显示;增加 `30px-50px` 高度冗余。
*   **问题: 缺乏层次感** (主次不分)
    *   **解决**: 重要节点用色饱和/尺寸稍大;次要信息用浅色/尺寸稍小;嵌套分组;用空间距离暗示关系。
*   **问题: 交互不明确** (用户不知如何阅读)
    *   **解决**: 清晰标题/说明;箭头指示方向;关键步骤加序号;添加使用指南节点。
*   **问题: 响应式布局挑战** (不同设备显示不一致)
    *   **解决**: 合理画布尺寸 (`2000x1500px` 基准);核心内容居中 (`800x600px` 范围);分组打包;预留空白边距 (30%);确保元素在 80% 缩放时可辨认。

## Canvas JSON 示例

{
  "nodes":[
    {"id":"cf0ece17cafcae64","type":"group","x":-760,"y":-150,"width":380,"height":550,"label":"数据输入层"},
    {"id":"fcb4f8a86d3dadaa","type":"group","x":-300,"y":-150,"width":350,"height":550,"label":"数据预处理层"},
    {"id":"a5b6c7d8e9f0g1h2","type":"group","x":140,"y":-150,"width":350,"height":600,"label":"AI 输出形式"},
    {"id":"b6c7d8e9f0g1h2i3","type":"group","x":580,"y":-150,"width":350,"height":550,"label":"可视化呈现层"},
    
    {"id":"c81d5af3e924a7b6","type":"text","text":"**文本数据**\n- [ ] 结构化文本\n- [x] 非结构化文本","x":-720,"y":-30,"width":280,"height":150,"color":"5"},
    {"id":"f2e7d6c9b3a5f1e8","type":"text","text":"### 结构化数据\n* JSON\n* XML\n* CSV","x":-720,"y":200,"width":280,"height":160,"color":"5"},
    
    {"id":"a4b8c2d3e7f9g0h1","type":"text","text":"文本解析\n与理解","x":-260,"y":-30,"width":240,"height":120,"color":"6"},
    {"id":"d5e6f7g8h9i0j1k2","type":"text","text":"数据分析\n与整合","x":-260,"y":200,"width":240,"height":120,"color":"6"},
    
    {"id":"title_node","type":"text","text":"# 模型引用","x":180,"y":-400,"width":270,"height":80,"color":"4"},
    {"id":"e1f2g3h4i5j6k7l8","type":"text","text":"# AI 模型处理\n- GPT 系列\n- BERT 模型\n- *自定义模型*","x":180,"y":-60,"width":270,"height":220,"color":"4"},
    {"id":"popup_note","type":"text","text":"点击[这里](https://openai.com)了解更多","x":180,"y":320,"width":240,"height":110,"color":"4"},
    
    {"id":"g5h6i7j8k9l0m1n2","type":"text","text":"概念提取","x":640,"y":-30,"width":220,"height":100,"color":"3"},
    {"id":"h8i9j0k1l2m3n4o5","type":"text","text":"内容总结","x":640,"y":120,"width":220,"height":100,"color":"3"},
    {"id":"i1j2k3l4m5n6o7p8","type":"text","text":"数据可视化","x":640,"y":270,"width":220,"height":100,"color":"3"},
    
    {"id":"j4k5l6m7n8o9p0q1","type":"text","text":"思维导图","x":950,"y":-30,"width":220,"height":100,"color":"1"},
    {"id":"k7l8m9n0o1p2q3r4","type":"text","text":"知识图谱","x":950,"y":270,"width":220,"height":100,"color":"1"},
    
    {"id":"e2778506e81fb41a","type":"link","url":"https://www.huggingface.co/models","x":180,"y":-280,"width":280,"height":170,"color":"4","text":"Models - Hugging Face"},
    
    {"id":"img001","type":"image","src":"https://huggingface.co/front/assets/huggingface_logo.svg","x":-540,"y":-300,"width":180,"height":120,"color":"5"},
    
    {"id":"file001","type":"file","filePath":"docs/api_reference.md","text":"API参考文档","x":-260,"y":-300,"width":230,"height":100,"color":"6"},
    
    {"id":"annotations","type":"text","text":"**注释/术语表**\n- **BERT:** 基于 Transformer 的语言理解模型\n- **ASR:** 自动语音识别\n- **OCR:** 光学字符识别\n- **BI:** 商业智能\n- **扩散模型:** 用于图像生成的生成式AI模型\n- **多模态:** 同时处理多种数据类型(文本/图像/音频/视频)\n- **视频生成模型:** 能够从文本描述或图像序列创建视频的AI模型\n- **大语言模型(LLM):** 基于超大规模参数训练的语言模型\n- **文生图:** 将文本描述转换为图像的AI技术","x":1200,"y":-50,"width":350,"height":450,"color":"grey"},
    
    {"id":"instructions","type":"text","text":"**使用指南**\n1. 从左到右阅读流程\n2. 蓝色节点表示输入\n3. 绿色节点表示处理\n4. 红色节点表示输出\n5. 点击链接可访问外部资源","x":900,"y":-300,"width":280,"height":200,"color":"6"}
  ],
  "edges":[
    {"id":"input_to_process","fromNode":"a4b8c2d3e7f9g0h1","fromSide":"right","toNode":"e1f2g3h4i5j6k7l8","toSide":"left","label":"输入处理","color":"6"},
    {"id":"data_to_model","fromNode":"d5e6f7g8h9i0j1k2","fromSide":"right","toNode":"e1f2g3h4i5j6k7l8","toSide":"left","label":"数据流"},
    {"id":"concept_to_map","fromNode":"g5h6i7j8k9l0m1n2","fromSide":"right","toNode":"j4k5l6m7n8o9p0q1","toSide":"left","label":"概念映射","color":"3"},
    {"id":"summary_to_map","fromNode":"h8i9j0k1l2m3n4o5","fromSide":"right","toNode":"j4k5l6m7n8o9p0q1","toSide":"left","label":"结构化","color":"3"},
    {"id":"visual_to_knowledge","fromNode":"i1j2k3l4m5n6o7p8","fromSide":"right","toNode":"k7l8m9n0o1p2q3r4","toSide":"left","label":"数据转换","color":"3"},
    {"id":"model_to_output","fromNode":"e1f2g3h4i5j6k7l8","fromSide":"right","toNode":"g5h6i7j8k9l0m1n2","toSide":"left","label":"模型输出","color":"4"},
    {"id":"group_to_group","fromNode":"cf0ece17cafcae64","fromSide":"right","toNode":"fcb4f8a86d3dadaa","toSide":"left","label":"数据流转","color":"5"},
    {"id":"title_to_model","fromNode":"title_node","fromSide":"bottom","toNode":"e2778506e81fb41a","toSide":"top","label":"标题引用","color":"4"},
    {"id":"model_ref","fromNode":"e2778506e81fb41a","fromSide":"bottom","toNode":"e1f2g3h4i5j6k7l8","toSide":"top","label":"模型引用","color":"4", "style": "dashed"},
    {"id":"model_to_note","fromNode":"e1f2g3h4i5j6k7l8","fromSide":"bottom","toNode":"popup_note","toSide":"top","label":"扩展信息","color":"4"},
    {"id":"img_to_node","fromNode":"img001","fromSide":"bottom","toNode":"c81d5af3e924a7b6","toSide":"top","label":"图标引用"},
    {"id":"file_to_node","fromNode":"file001","fromSide":"bottom","toNode":"a4b8c2d3e7f9g0h1","toSide":"top","label":"文档关联"}
  ]
}

## 示例中的要点解释

以下是对上述 JSON 示例中关键特性和格式的说明:

1.**文本格式化**: 示例展示了如何在 `text` 字段中使用 Markdown:
    *   **标题**: `# AI 模型处理` (H1), `### 结构化数据` (H3)
    *   **任务列表**: `- [ ] 未完成`, `- [x] 已完成`
    *   **普通列表**: `* JSON`, `- GPT 系列`
    *   **样式**: `**加粗文本**`, `*斜体文本*`
    *   **链接**: `[链接文本](URL)`

2.**节点类型 (`type`)**: 示例包含了多种节点类型:
    *   `group`: 用于视觉和逻辑分组 (例如: "数据输入层")。
    *   `text`: 包含格式化文本 (例如: "文本数据" 节点)。
    *   `link`: 链接到外部资源 (例如: "Models - Hugging Face" 节点)。
    *   `image`: 显示图片 (例如: Hugging Face Logo 节点)。
    *   `file`: 链接到本地文件 (例如: "API 参考文档" 节点)。

3.**连接 (`edges`)**: 示例展示了不同类型的连接:
    *   节点到节点 (例如: `data_to_model`)。
    *   节点到组。
    *   组到组 (例如: `group_to_group`)。
    *   引用连接 (例如: `title_to_model`, `model_ref`)。
    *   辅助资源连接 (例如: `img_to_node`, `file_to_node`)。

4.**布局功能**: 示例体现了部分最佳实践:
    *   使用分组划分逻辑区域。
    *   通过坐标 (`x`, `y`) 和尺寸 (`width`, `height`) 控制布局和间距。
    *   包含 "使用指南" 和 "注释/术语表" 节点以辅助理解。

cursor · 目录

上一篇Cursor 的深层能力:超越代码编辑的思考

个人观点,仅供参考

阅读 128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强化学习曾小健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值