Files
dingtalk-workspace-cli/docs/shortcut-lark-alignment.md

15 KiB
Raw Permalink Blame History

lark-cli Shortcut 深度对齐矩阵

12 个 agent 逐条深读 lark 每个 shortcut 的智能实现(Validate/DryRun/ID解析/投影/多步/分页),映射钉钉、标注保真度差距。

2026-07-13 最新源码复核

对比基线:

  • DWS:feature/shortcut@b7c14c1(已合并 origin/main@390b611)
  • lark-cli:main@e96c4fa5
  • lark-cli 本轮更新范围:f495cbb1..e96c4fa5

本轮 lark-cli 没有增加或删除生产 shortcut 命令,变化集中在已有命令的实现保真度:统一 --json shorthand、文档分享锚点读取、whiteboard 本地文件安全内联、VC meeting events 的 identity/timeline/NDJSON 投影、Apps DB 环境自动选择、Drive push 错误分类,以及 Wiki token 解析兼容性。因此下方历史 gap 清单的命令面没有因本轮 pull 新增条目,但若要追平体验,以下实现差距需要上调优先级。

当前命令面快照

指标 数量 说明
DWS built-in shortcut 366 16 个服务;运行时 registry 实测
lark-cli primary shortcut 363 19 个服务;排除 _test.go 与 42 个 sheets/backward 隐藏兼容别名
双方可映射服务内命令 DWS 313 / lark 324 12 组产品映射,不含平台特有服务
同服务同名命令 50 仅是名称交集,不等于语义等价或保真度一致
DWS 平台特有 shortcut 53 attendance / ding / oa / report 等
lark 平台特有 shortcut 39 okr / vc / slides / markdown / whiteboard / note / event

双方重叠服务的命令面如下;“同名”只用于定位,能力判断仍需看参数、验证、多步编排、输出投影和 dry-run:

产品映射 DWS lark 同名
aitable ↔ base 82 87 31
calendar ↔ calendar 23 10 3
chat ↔ im 89 21 2
contact ↔ contact 16 2 1
devapp ↔ apps 30 63 3
doc ↔ doc 19 14 1
drive ↔ drive 9 26 3
mail ↔ mail 10 21 0
minutes ↔ minutes 13 9 1
sheet ↔ sheets 2 42 0
todo ↔ task 13 17 2
wiki ↔ wiki 7 12 3

最新优先差距

  1. 文档与白板资源保真度:lark doc +fetch/+update 已支持分享链接 selection anchor、HTML5 block 资源引用,以及相对路径内的 SVG/Mermaid/PlantUML whiteboard 安全内联。DWS 具备文档读写和媒体原子能力,但缺少统一引用解析、路径门禁和资源回写编排。
  2. Sheets typed workflow:lark 的 typed table、批量样式、维度移动/冻结、range copy/fill/sort、workbook import/export 仍是最大可建设缺口。DWS 原生 helper 已有部分底层能力,但 shortcut 层只有 2 个精选命令,缺少跨 sheet 分块写、类型推断和 partial rollback。
  3. Drive 本地同步体验:lark +push/+pull/+sync/+import/+export 带批量计划、错误分类、路径保护和版本操作;DWS 目前偏原子上传/搜索,缺完整目录同步和可恢复批处理。
  4. Mail 高保真写链路:lark 对 send/reply/reply-all/forward 提供模板、签名、HTML lint、线程头、定时和附件编排;DWS 有底层发信/草稿工具,但 smart shortcut 尚未覆盖这些组合体验。
  5. 消息资源与统一搜索:DWS 已有 +search-msg/+chat-messages/+thread-replies/+at-me 等拆分场景,lark +messages-search 仍在统一多维过滤、会话上下文富化、reaction/资源下载方面更完整。
  6. 会议事件输出:lark vc +meeting-events 本轮新增当前身份、actor、会议状态推断、timeline 与 NDJSON 元数据。DWS 最新 main 已有更强的实时 event bus 和个人事件订阅,但尚未沉淀成同等级 shortcut 投影;这是“底层能力领先、shortcut UX 未收口”。

不建议机械追平

  • lark Apps DB、Spark 发布、Lark Drive/Wiki 特有对象模型属于平台差异,不应只为同名率复制。
  • DWS 的 attendance、DING、OA、report、agoal 和最新 event bus 是钉钉侧差异化能力,应优先做场景化组合,而不是追求 363 vs 366 的数字对齐。
  • DWS 已具备按姓名解析、跨产品智能编排、失败回滚和 usage→自定义 shortcut 沉淀闭环,这些能力无法由同名命令统计体现。

注:下方“361 条”汇总是上一轮逐条人工分类的历史基线;当前 lark-cli primary shortcut 是 363 条,另有 42 个不应重复计为能力的 Sheets 隐藏兼容别名。历史条目的判断仍可复用,但总量数字不能直接代表本轮最新覆盖率,后续应把新增条目按 covered-1to1 / covered-smart / gap-buildable / no-dingtalk-tool 四类补录。

汇总(361 条 lark shortcut)

dws_status 数量 含义
covered-1to1 144 lark 组合在钉钉塌缩成 1:1,封装层已覆盖
no-dingtalk-tool 127 钉钉无对应工具,客观不可对齐
gap-buildable 42 钉钉有工具、值得补成智能 shortcut(建设目标);已建 minutes +detail/+replace-batch、base +record-share-links/+resolve-base、im +thread-replies/+chat-messages、task +related-tasks
covered-smart 48 已建智能 shortcut / 部分覆盖

🎯 gap-buildable 目标清单(原 49 条,已建 7 → 剩 42,按服务)

已落地:minutes +detail(✅ smart +detail)、minutes +word-replace(✅ smart +replace-batch,批量+去重)、base +record-share-link-create(✅ smart +record-share-links,>20 去重+分片+合并)、im +threads-messages-list(✅ smart chat +thread-replies,list_topic_replies + 投影)、task +get-related-tasks(✅ smart todo +related-tasks,三角色并集+去重+投影)。

im → chat(6)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+chat-list read dws 有 list-my-groups/list-all-conversations 原子 tool,但无 types 枚举+bot剥p2p降级、无 exclude-muted 客户端过滤、无字段投影
+chat-messages-list ✅ read 已建 smart chat +chat-messages:群/单聊 list_conversation_message_v2 / list_individual_chat_message 互斥 + sender/text/time 投影。剩余未做:reactions 富化、资源下载
+chat-search read dws 无群名模糊搜索v2对应 tool(search_common_groups/find 语义不同),缺 query规范化、mode映射、mute过滤、meta投影
+messages-resources-download write dws download-media 走 get_resource_download_url 拿URL,缺分片Range下载/重试/扩展名推断/安全落盘路径校验
+messages-search read dws 有 search_messages_by_keyword/by_time_range/by_sender/at_me 多个原子 tool,但各自单点,缺统一多维filter编排+mget+chat上下文富化+跨字段Validate
+threads-messages-list ✅ read 已建 smart chat +thread-replies:list_topic_replies + sender/text/time 投影。剩余未做:reactions 富化、资源下载

task → todo(3)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+reminder write dws 有 add_todo_reminder/reset_todo_reminder 但无 lark 的先查现有再替换编排、相对时间(15m/1h)解析与互斥校验,值得补智能 shortcut
+get-related-tasks ✅ read 已建 smart todo +related-tasks:creator+executor+participant 三角色并集 + taskId 去重 + 投影。剩余未做:followed-by-me 成员比对、subtask_count/tasklists 富投影
+upload-attachment write dws add-attachment 走 init→PUT→commit 三步 MCP 上传(能力更重),但无 50MB/regular 校验、applink 提取与 dry-run 计划展示;可对齐成更智能 shortcut

calendar → calendar(1)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+room-find read dws 有 room search(query_available_meeting_room 按单一时间段+过滤)和 busy search,但无多slot并发room_find聚合、无city/building/floor/capacity维度过滤、无按attendee推荐可用室,值得补成智能 shortcut 但未建

doc (docs) → doc(2)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+media-insert write dws doc media insert 为3步(取凭证→PUT→insert_document_block)无回滚、无selection定位、无剪贴板、无宽高比补算、无wiki解析;可补成带回滚的智能shortcut
+media-download read dws doc media download 走resourceId→downloadUrl两段,缺whiteboard导图分支、自动扩展名、路径安全、overwrite防护;media分支可对齐,whiteboard无工具

drive → drive(1)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+import write dws drive upload 有 --workspace --convert 可转在线文档,但缺按目标类型(docx/sheet/bitable/slides)导入、缺 target-token 挂载与异步轮询

mail → mail(4)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+reply write dws reply 走 create_reply_draft+send_draft 两步、附件仅上传会话,缺 EML 线程头构造、签名自动注入、模板合并、HTML lint、读回执、send-time 定时、跨字段校验
+reply-all write dws reply-all 两步且收件人由服务端决定,缺原文收件人抽取去重排己、线程头、签名/模板/lint/定时等编排保真
+send write dws send_email 单步(附件时先 create_draft 再传再 send),缺签名/模板/lint/日历内嵌/定时发送/发件人profile解析/跨字段校验
+forward write dws forward 走 create_forward_draft+send_draft,缺 Fw:主题/引用块/原附件转载 EML 构建、签名/模板/lint/定时保真

wiki → wiki(1)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+node-get read dws 无 get_node 对应 tool(proxy wiki doc read 读的是文档正文而非节点元数据/space解析);缺 token/obj_token/URL→node 解析、obj_type推断、space交叉校验——是值得补的智能 shortcut 缺口

minutes → minutes(4)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+search read dws list_by_keyword_and_time_range 只按 keyword+时间+归属(created/shared)过滤,缺 owner/participant 的 me 解析与筛选、缺 query 长度与跨字段互斥校验、缺输出投影与去头像
+download read dws 只有 query_minutes_audio_url 返回 OSS 地址(相当于 --url-only 单条),缺真正落盘下载、批量 fanout+限速+去重、文件名推断、SSRF 防护与覆盖保护
+word-replace ✅ write 已建 smart +replace-batch:多组 原文=>替换 批量替换 + 去重校验 + 逐组结果聚合(补齐 1:1 +word-replace 的单组限制)。剩余未做:@file/stdin 输入
+detail ✅ read 已建 smart +detail:单命令按 --artifacts fanout basic/summary/keywords/transcript/todos + partial-failure 容错 + rt.Output 投影。剩余未做:wait-ready 轮询、transcript 落盘

base → aitable(10)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+title-resolve ✅ read 已建 smart aitable +resolve-base:search_bases 按名解析 baseId + 0/1/多候选消歧投影。剩余未做:Drive doc_wiki 全文搜索
+field-create write dws create_fields 支持批量,但缺 formula/lookup guide-ack 门禁与逐字段节流,可补智能 shortcut
+field-update write dws update_field 缺 formula/lookup guide-ack 保护
+record-share-link-create ✅ read 已建 smart +record-share-links:>20 条记录去重 + 分片(≤20/批) + 跨 aitable-helper server fanout + 合并 {recordId,shareUrl},补齐单批 20 条上限
+record-upload-attachment write dws 只有 prepare_attachment_upload(拿上传凭证),缺 分片上传编排+append_attachments 回填单元格的完整链路
+dashboard-block-list read dws 仪表盘块是 chart(create/get/update/delete_chart),缺通用 block list,可对齐补
+dashboard-block-get read dws get_chart 覆盖 chart 类块,缺通用 block get
+dashboard-block-create write dws create_chart 覆盖图表块,缺其他 block 类型的通用创建
+dashboard-block-update write dws update_chart 覆盖图表块更新
+dashboard-block-delete high-risk-write dws delete_chart 覆盖图表块删除

sheets → sheet(14)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+sheet-hide write dws update_sheet可能含hidden属性但未见独立hide命令,需确认
+sheet-unhide write 同上,dws无独立unhide命令
+sheet-set-tab-color write dws update_sheet或可设tab色但无独立命令
+sheet-show-gridline write dws无网格线显隐命令
+sheet-hide-gridline write dws无网格线显隐命令
+workbook-create write dws有create_workspace_sheet但仅建空表,缺typed一步建表+填充+样式+partial回滚编排
+dim-hide write dws update-dimension或含hidden但无独立hide命令
+dim-unhide write 同上,dws无独立unhide命令
+dim-freeze write dws update-dimension可能含frozen但无独立freeze命令
+cells-get read dws range read存在但缺include样式/公式投影统一封装
+table-get read dws缺typed table读回+列类型推断+多sheet编排,只有裸csv/range读
+table-put write dws有append/set_cell_range但缺typed多sheet分块写+建缺失sheet+样式+partial回滚编排
+rows-resize write dws update-dimension可调尺寸但无独立rows-resize+size/type互斥校验
+cols-resize write dws update-dimension可调尺寸但无独立cols-resize+互斥校验

apps → devapp(3)

lark 命令 risk 保真度差距(钉钉有 tool,缺什么智能)
+release-create write dws 有 create_dev_app_version(开放平台版本)可类比,但妙搭 release 是低代码应用发布、语义与产物不同
+release-get read dws 有 get_dev_app_version_detail 可类比但产品域(开放平台vs妙搭)不同
+release-list read dws 有 list_dev_app_versions 可类比但无 status 枚举过滤且产品域不同

已建智能 shortcut(covered-smart,48)— 可继续升级保真度

  • im: +chat-members-list +messages-send +threads-messages-list
  • task: +complete +assign +get-my-tasks +get-related-tasks
  • contact: +search-user
  • calendar: +agenda +create +update +freebusy +suggestion
  • doc (docs): +history-revert
  • drive: +upload +search +inspect
  • mail: +triage
  • minutes: +upload +latest-minutes +action-items +transcript +minutes-search +detail +replace-batch
  • base: +table-get +table-create +view-create +view-get-filter +view-set-filter +view-get-visible-fields +view-set-visible-fields +view-get-group +view-set-group +view-get-sort +view-set-sort +view-get-timebar +view-set-timebar +view-get-card +view-set-card +record-list +record-search +record-get +record-upsert +base-create +workflow-list +form-create +form-list +form-get +record-share-link-create