# lark-doc 画板处理指南 > **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 ## 两个 Skill 的职责边界 | Skill | 核心职责 | 约束 | |-------------------|-----------------------------------------------------------|---------------------------------| | `lark-doc` | 识别画板机会、使用 Mermaid/SVG 创建图表、调度 SubAgent、插入简单 SVG 画板或复杂空白画板 | 主 Agent 不直接创作画板内容; | | `lark-whiteboard` | 查询/导出已有画板;复杂图表生成(Mermaid/DSL/SVG 路由、场景选型、渲染验证);写入已有/空白画板 | 仅特别复杂的图表或已有画板更新时由独立 SubAgent 读取 | ## 画板优先规则 写文档时,重要信息优先画板化。遇到核心流程、系统架构、方案对比、风险链路、里程碑、指标趋势、因果归因、组织关系、能力分层等内容,不要只用段落或表格承载;除非内容只是一次性补充说明,否则应规划为画板。 同一篇文档可以有多个画板。优先设计多个聚焦画板,而不是把所有信息塞进一张大图。 ## 文档与画板协同流程 ### 步骤 1:识别画板机会 | 场景 | 入口 | |-------------------------|-----------------------------------------------------------| | 文档中需要思维导图、时序图、类图、饼图、甘特图 | 步骤 2A:使用 mermaid 插入图表 | | 文档中需要插入其他图表/自定义图形 | 步骤 2B: 使用 SVG 插入图表 | | 已有画板需要更新内容 | 先 `docs +fetch --api-version v2` 获取 `board_token`,跳至步骤 3B | | 只查看 / 下载已有画板 | 切换至 `lark-whiteboard`,不走本流程 | > [!IMPORTANT] > ⚠️ **分别对每个图表进行决策** 如果有多个位置需要插入图表,你需要根据每个图表的内容**分别决定**采用步骤 2A 还是 2B 中的方式插入这个图表。在需要插入思维导图、时序图、类图、饼图、甘特图的时候可以插入 mermaid 块,在需要插入其他类型图表时启动 SubAgent 插入 SVG。 建议优先使用 SVG 插入图表,除非其属于思维导图、时序图、类图、饼图、甘特图这类可以直接使用 mermaid 语法描述,且不适宜用 SVG 绘制的图表 ### 步骤 2A: 使用 mermaid 插入图表 ```xml mermaid 代码... ``` ### 步骤 2B: SubAgent 使用 SVG 插入图表 主 Agent 启动 SubAgent,让它用 `docs +create --api-version v2` / `docs +update --api-version v2` 插入: ```xml ... ``` Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Workflow] 章节指南: - doc token、插入位置(标题 / block_id / command) - 图表目标、受众、源段落或数据 - 要求读取 `lark-doc-xml.md`;不需要读取 `lark-whiteboard` - SVG 必须完整自包含:包含 `` 根节点和 `viewBox`,不引用外部图片、脚本、远程资源 #### 画板 SVG 设计指南 使用 SVG 插入画板时,最终交付是**画板跨越重排渲染的节点**(你写 SVG → 画板解析) **核心心智纠正 (重要)**: - 大多数 AI 如果只考虑“绝对不报错/完美映射”, 最终给出的都是全篇纯白底色加单层 `` 的方正卡片网格, 极其死板单调, * *这将被视为不及格!** - **SVG 给你了完全的设计自由**, 请大胆使用你脑内的图标路径 (``), 连接指引 (`流畅的 `), 各种环境氛围点缀, 大胆一点, 充分信任你的品味, 发挥出你的顶级艺术创造力! ##### SVG 设计 Workflow ###### 1. 想清楚要画什么 - **核心信息是什么?** 能做到一图胜千言, 绝对不要只生成平平无奇的文字表格, 要有设计感 - **内容充实度**:如果用户描述稀疏简略, 利用你的领域知识扩展, 保证信息维度和内容充实, 但不要过度堆砌, 淹没重点 - **视觉层级与隐喻**:这个没有固定的形式, 你自由判断, 比如: 给重要的节点加光环, 加高亮背景;给对比项设计天平或对称结构 ###### 2. 写 SVG > [!IMPORTANT] > 布局, 配色, 信息密度, 装饰物——**全部由你判断**, 打破单调的 `` 牢笼, 严禁通篇用矩形和文字应付用户 > 操作边界约束: - **语言跟随用户**:图表文字的语言与用户 prompt 保持一致, 技术术语用行业里通用的写法, 不机械翻译 - 文字用 ``(不是 ``), 容器宽度留够——画板按 CJK ≈ 1em / Latin ≈ 0.6em 重排 - 连线使用正交折线替代斜直线(`` 带水平/垂直折点)视觉效果更好 - 可自由使用 `translate`, `rotate`, `scale`但请尽量避免使用 `skewX` / `skewY` / `matrix(...)` 发生空间级扭曲 ###### 画板怎么处理 SVG 画板的 svg-parser 把可识别元素转成可编辑节点, 其余降级为内嵌图片(渲染没问题, 虽然不可编辑, 但是可以正常显示);但 `` / `` / `` 等装饰特性画板完全不支持,会导致渲染问题(见下方⚠️) **不需要所有元素都可编辑, 但必须避免使用不支持的装饰特性, 且要兼顾可编辑和美观漂亮** **可识别的元素** - 形状:`` / `` / `` / `` - 连线:`` / `` / ``(自动识别为直线 / 折线 / 曲线) - 文本:`` / `` 画板硬编码 Noto Sans SC **文字必须用 ``** - 分组:`` / `` / `` 引用 `` - 变换:`translate` / `rotate` / `scale` 正常;`skewX` / `skewY` / `matrix(...)` 降级 > [!IMPORTANT] > ⚠️ ** 不支持的装饰特性** - `` / `` / `` / `` / `` → 画板都不支持,**请避免使用,否则会导致画板渲染问题 ** ###### 3.插入后审查 插入画板后,可以从返回值使用 lark-cli 指令,将画板内容导出为 png 图片。若是对设计不满意,可以修改后,删除原来的画板再重新插入,或是调用 [ `../../lark-whiteboard/SKILL.md`](../../lark-whiteboard/SKILL.md) 编辑。 ```bash lark-cli whiteboard +query \ --whiteboard-token "wbcnxxxxxxxx" \ --output_as image \ --output ./preview.png ``` ### 步骤 3B:编辑已有画板 — 启动 lark-whiteboard SubAgent 复杂图和已有画板更新必须启动 SubAgent。主 Agent 只传最小上下文,不直接执行 `lark-whiteboard` 的渲染和写入流程。 复杂图 SubAgent 的最小上下文: - board_token - 图表目标、推荐画板类型、受众 - 与图表直接相关的源段落或数据 - 要求读取 [`../../lark-whiteboard/SKILL.md`](../../lark-whiteboard/SKILL.md),按其完整流程写入该 board_token 多个画板互不依赖时,可并行启动多个 SubAgent;每个 SubAgent 只负责一个画板或一个 SVG 插入点,不要互相复用上下文。 ### 步骤 4:完成校验 - Mermaid: 确认插入的是 ``,且内容 mermaid 语法完整 - SVG: 确认插入的是 ``,且内容是完整 `...` - 不保留空白占位画板;复杂路径只有空白画板而无内容视为任务未完成 --- --- ## 关联参考 - 画板查询/创作/修改/渲染写入:[`../../lark-whiteboard/SKILL.md`](../../lark-whiteboard/SKILL.md)