返回顶部
f

feishu-doc-editing飞书文档编辑

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.1
安全检测
已通过
357
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

feishu-doc-editing

飞书文档编辑 — 性能最佳实践

核心原则:最小改动

切勿对部分编辑使用write(全文替换)——它会破坏现有的富文本格式(颜色、高亮、内联样式)。始终使用有针对性的块级操作。

完整的决策树(何时使用update_block vs delete+insert vs append,以及保护机制)位于~/self-improving/domains/feishu.md中的最小改动原则部分。

策略1:一次扫描,并行操作

模式: 一次list_blocks → 规划所有变更 → 同时触发独立操作。

  1. 1. feishudoc(action: listblocks, doc_token: xxx)
→ 包含ID、类型、内容的完整块树
  1. 2. 识别需要更新/删除/插入的块
  1. 3. 在一次工具调用批次中发出所有独立操作:
- updateblock(blockid: A, content: new text) - updateblock(blockid: B, content: new text) - deleteblock(blockid: C) - insert(afterblockid: D, content: ...)

原因: 对不同块执行update_block没有依赖关系。OpenClaw在单次响应中并发执行独立的工具调用(其他AI框架可能不同——在假设前请验证)。

结果: 10次串行更新(3-5秒)→ 10次并发更新(约0.3-1秒)。

缓存块树: 在整个会话中复用list_blocks。仅在插入/删除导致结构变化后重新获取。

策略2:插入/删除时从后往前操作

当混合使用insert和delete时,从文档末尾向开头操作。

原因: 插入或删除一个块会改变所有后续兄弟块的索引。从后往前操作可保持前面的索引稳定——无需在每次操作后重新查询。

示例: 删除索引为5、12、20的块 → 先删除20,然后12,最后5。

策略3:合并相邻插入

将连续的插入合并为一次调用:

json
{
action: insert,
doc_token: xxx,
afterblockid: target_block,
content: ## 新章节\n\n第一段。\n\n第二段。\n\n标题
}

在insert/append中使用alt形式的图片会自动内联定位——当URL公开时无需单独的upload_image。

策略4:定位图片插入

方法使用时机
使用url markdown的insert公开URL,图片与周围文本一起显示
uploadimage + parentblock_id + index
本地文件/base64,需要精确定位 |

带位置的upload_image:

json
{
action: upload_image,
doc_token: xxx,
file_path: /tmp/chart.png,
parentblockid: docrootorparentid,
index: 5
}

查找索引: 从list_blocks中,在父块的children数组中定位目标。使用该索引在目标前插入,或使用index+1在目标后插入。

策略5:表格性能

Docx表格是最慢的——每个单元格需要单独的clear + convert + insert API调用。

  • - 数据密集型表格优先使用多维表格。 多维表格有原生的批量记录API。
  • 尽量减少单元格数量。
  • 新表格: 使用createtablewith_values(一步完成)。
  • 现有表格: 只更新变化的单元格,而非整个表格。

策略6:大文档分块

飞书document.convert API和documentBlockChildren.create有每次请求的大小限制。对于长内容:

  • - 每次追加分块为300-600行(或约3K字符),以避免400错误。
  • 在标题边界处拆分(#或##)——保持每个分块的语义连贯性。
  • 避免在围栏代码块内拆分。
  • OpenClaw的append/insert在内部自动分块,但提供较小的片段可减少转换失败。

策略7:速率限制与重试

飞书API在请求频率过高时返回429。处理方法:

  • - 控制并发调用——如果触发10个以上并行操作,使用约5的并发限制。
  • 对429使用指数退避——重试前等待1秒、2秒、4秒。最多重试3次。
  • 尽可能批量创建块——一次包含多个children的请求优于N次单独请求。

OpenClaw的内置工具处理基本重试,但在快速连续编排多个操作时需注意。

策略8:富文本保留

update_block替换整个文本元素数组——所有内联样式(粗体、斜体、颜色、链接)都会丢失。要保留格式:

  • - 首先通过getblock读取块,检查现有的textelementstyle字段。
  • 只更新实际文本发生变化的块——即使正在重写某个部分,也跳过未更改的块。
  • 对于仅样式更改(颜色、高亮),使用colortext操作而非updateblock。
  • 当必须精确保留富文本时,考虑使用deleteblock + insert配合重新表达格式的markdown,而非会剥离样式的update_block。

策略9:冲突避免

当多个代理或用户可能同时编辑同一文档时:

  • - 在进行更改前检查revisionid(来自read操作)。如果自listblocks以来版本已更新,在编辑前重新获取。
  • 最小化编辑窗口——快速连续地扫描、规划和执行。不要持有过时的块树数分钟。
  • 追加内容优先使用append——追加到末尾很少与在中间编辑的其他编辑者冲突。
  • 除非明确指示,否则避免删除非自己创建的块。

反模式

不要做应该做
使用write更改几个段落对特定块使用updateblock
逐个串行updateblock
在一次工具调用中批量处理独立操作 | | 不带位置参数的uploadimage | 传递parentblock_id + index,或使用带url的insert | | 并行uploadimage配合afterblockid到不同位置 | 串行:追加文本 → uploadimage → 追加文本 → uploadimage(API在并行时忽略afterblock_id) | | 每次编辑后重新获取list_blocks | 缓存并复用;仅在结构变化后重新获取 | | 混合插入/删除时从上到下插入 | 从后往前以避免索引偏移 | | 一次调用追加2000行markdown | 每次追加分块为约300-600行 | | 忽略429速率限制 | 指数退避,将并发限制在约5 | | 盲目对格式化文本使用updateblock | 检查现有样式;对仅样式编辑使用colortext |

兼容性

  • - 与OpenClaw内置的feishu_doc工具配合使用——无需代码更改
  • 补充feishu-doc技能(API参考)和feishu-readability技能(格式规则)
  • 适用于所有飞书账号(球球星球/小米/任何租户)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 feishu-doc-editing-1776195261 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 feishu-doc-editing-1776195261 技能

通过命令行安装

skillhub install feishu-doc-editing-1776195261

下载

⬇ 下载 feishu-doc-editing v1.1.1(免费)

文件大小: 3.99 KB | 发布时间: 2026-4-15 11:02

v1.1.1 最新 2026-4-15 11:02
Routine update

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部