Skip to content

希望支持飞书"文本绘图"小组件(block_type=40 add_ons),不止画板 #911

@kyle-pengzhike

Description

@kyle-pengzhike

背景 / 问题

lark-doc skill 中 <whiteboard type="mermaid|plantuml|svg"> 创建的是飞书**画板(whiteboard)**对象(block_type=43),是一个独立的画板编辑器。

而飞书文档里实际还有另一种更常见、对设计文档协作更友好的图表块:"文本绘图"小组件(add_ons,block_type=40,component_type_id=blk_631fefbbae02400430b8f9f4),它支持:

  • view: codeChart —— 左代码、右渲染图(最常用,可即时编辑源码并预览)
  • view: chart —— 仅渲染图
  • view: code —— 仅源码

两种块的体验差异非常大:

维度 <whiteboard type="mermaid">(block_type=43 画板) 文本绘图小组件(block_type=40 add_ons)
渲染形态 独立画板对象 文档内嵌图表块
编辑入口 双击进入画板编辑器,要切上下文 文档内直接看到源码、点一下就改、即时预览
协作场景 一次性展示、复杂可视化 设计文档常用:流程图 / 时序图 / 状态机 / 架构图
用户期望 "看一眼就好" "源码版本化、随时改"

目前 skill 没有任何方式生成后者,导致:

  1. AI 按 skill 引导生成 <whiteboard type="mermaid"> → 用户拿到的是画板,与团队既有设计文档风格(普遍是文本绘图)不一致
  2. 用户反馈"我要左代码右图那种",AI 没有官方路径,只能改用原生 OpenAPI 裸调 add_ons 块(已验证可行,下文给最小调用样例)

真实复现场景

  1. 用户给参考文档 A(其中图表块都是文本绘图小组件 readonly-block type="isv")
  2. 让 AI 在新文档 B 里按 A 的风格绘图
  3. AI 按 skill 指引使用 <whiteboard type="mermaid"> 写入
  4. 用户打开 B 后反馈:"不对,我要的是左代码右图那种,方便我直接改源码"

这个场景在团队内写设计文档非常普遍。

期望支持的能力

1. 在 lark-doc XML 协议里增加"文本绘图"标签(最重要)

方案 A:扩展现有 <whiteboard> 标签语义(兼容性最好)

<whiteboard> 增加一个 mode 属性区分画板 vs 文本绘图:

<!-- 现状:画板对象(block_type=43) -->
<whiteboard type="mermaid">graph LR; A-->B</whiteboard>

<!-- 提议:文本绘图小组件(block_type=40 add_ons) -->
<whiteboard type="mermaid" mode="add_ons" view="codeChart">graph LR; A-->B</whiteboard>

或用更直观的 view="codeChart|chart|code" 单独表达 add_ons 形态:缺省 = 画板,显式给 view = 文本绘图小组件。

方案 B:新增独立标签(语义更清晰)

<text-chart type="mermaid" view="codeChart">graph LR; A-->B</text-chart>

可选属性:type(mermaid/plantuml/graphviz) / view(chart/codeChart/code) / theme / scale

推荐方案 A:复用 <whiteboard> 标签,按属性区分两种 block,对现有文档兼容。

2. 在 skill 文档里明确两种块的选型指引

建议在 references/lark-doc-xml.md 的"内嵌图表"章节加一张选型表:

场景 推荐
设计文档、想随时改源码 / 团队协作 文本绘图小组件(推荐默认)
一次性展示、不需后续编辑 画板对象 <whiteboard>
复杂可视化(>10 节点、需精排版) lark-whiteboard skill

3. lark-cli 提供 docs add-on 子命令封装

类似 docs +media-insert,可考虑增加:

lark-cli docs +chart --doc DOC --type mermaid --view codeChart --content @flow.mmd
lark-cli docs +chart --doc DOC --replace-block BLOCK_ID --content @new.mmd

4. PATCH block 接口支持更新 add_ons.record

让用户能直接改图表源码,不必"删除+重建"(重建会换 block_id,破坏外部锚点引用)。

环境信息

  • lark-cli: 1.0.31
  • lark-doc skill: v2(DocxXML)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions