@amaster.ai/pi-lark 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README.md +5 -1
  2. package/dist/config.d.ts +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -2
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/package.json +4 -4
  10. package/skills/lark-approval/references/lark-approval-initiate.md +2 -5
  11. package/skills/lark-approval/references/lark-approval-instances-initiated.md +6 -0
  12. package/skills/lark-approval/references/lark-approval-tasks-query.md +9 -0
  13. package/skills/lark-approval/references/lark-approval-tasks-rollback.md +8 -2
  14. package/skills/lark-apps/SKILL.md +46 -16
  15. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  16. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  17. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  18. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  19. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  20. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  21. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  22. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  23. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  24. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  25. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  26. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  27. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  28. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  29. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  30. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  31. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  32. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  33. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  34. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  35. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  36. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  37. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  38. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  39. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  40. package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
  41. package/skills/lark-apps/references/lark-apps-automation.md +242 -0
  42. package/skills/lark-apps/references/lark-apps-cache.md +61 -0
  43. package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
  44. package/skills/lark-apps/references/lark-apps-create.md +1 -2
  45. package/skills/lark-apps/references/lark-apps-db-execute.md +186 -2
  46. package/skills/lark-apps/references/lark-apps-db.md +4 -4
  47. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  48. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  49. package/skills/lark-apps/references/lark-apps-get.md +43 -0
  50. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  51. package/skills/lark-apps/references/lark-apps-html-publish.md +5 -4
  52. package/skills/lark-apps/references/lark-apps-init.md +2 -3
  53. package/skills/lark-apps/references/lark-apps-list.md +1 -1
  54. package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
  55. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  56. package/skills/lark-apps/references/lark-apps-release-create.md +5 -3
  57. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  58. package/skills/lark-apps/references/lark-apps-role.md +133 -0
  59. package/skills/lark-base/SKILL.md +26 -15
  60. package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
  61. package/skills/lark-base/references/lark-base-cell-value.md +12 -7
  62. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
  63. package/skills/lark-base/references/lark-base-dashboard.md +11 -2
  64. package/skills/lark-base/references/lark-base-data-query.md +20 -11
  65. package/skills/lark-base/references/lark-base-field-create.md +8 -2
  66. package/skills/lark-base/references/lark-base-field-json.md +56 -19
  67. package/skills/lark-base/references/lark-base-field-update.md +21 -3
  68. package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
  69. package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
  70. package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
  71. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  72. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  73. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  74. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  75. package/skills/lark-base/references/lark-base-role-guide.md +11 -0
  76. package/skills/lark-base/references/lark-base-view-set-filter.md +14 -138
  77. package/skills/lark-base/references/role-config.md +31 -5
  78. package/skills/lark-calendar/SKILL.md +101 -37
  79. package/skills/lark-calendar/references/lark-calendar-create.md +13 -43
  80. package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
  81. package/skills/lark-calendar/references/lark-calendar-room-find.md +7 -10
  82. package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
  83. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +60 -0
  84. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  85. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
  86. package/skills/lark-calendar/references/lark-calendar-suggestion.md +2 -6
  87. package/skills/lark-calendar/references/lark-calendar-update.md +12 -11
  88. package/skills/lark-contact/SKILL.md +19 -3
  89. package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
  90. package/skills/lark-doc/SKILL.md +1 -1
  91. package/skills/lark-doc/references/lark-doc-fetch.md +14 -4
  92. package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
  93. package/skills/lark-doc/references/lark-doc-whiteboard.md +13 -8
  94. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +76 -0
  95. package/skills/lark-doc/references/lark-doc-xml.md +6 -4
  96. package/skills/lark-drive/SKILL.md +35 -43
  97. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
  98. package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
  99. package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
  100. package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
  101. package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
  102. package/skills/lark-drive/references/lark-drive-comment-location.md +18 -12
  103. package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
  104. package/skills/lark-drive/references/lark-drive-delete.md +35 -11
  105. package/skills/lark-drive/references/lark-drive-download.md +5 -1
  106. package/skills/lark-drive/references/lark-drive-export.md +39 -10
  107. package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
  108. package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
  109. package/skills/lark-drive/references/lark-drive-list-comments.md +82 -0
  110. package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
  111. package/skills/lark-drive/references/lark-drive-member-add.md +3 -3
  112. package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
  113. package/skills/lark-drive/references/lark-drive-move.md +5 -3
  114. package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
  115. package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
  116. package/skills/lark-drive/references/lark-drive-preview.md +11 -1
  117. package/skills/lark-drive/references/lark-drive-pull.md +3 -3
  118. package/skills/lark-drive/references/lark-drive-push.md +33 -6
  119. package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
  120. package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
  121. package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
  122. package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
  123. package/skills/lark-drive/references/lark-drive-search.md +7 -1
  124. package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
  125. package/skills/lark-drive/references/lark-drive-status.md +12 -14
  126. package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
  127. package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
  128. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  129. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
  130. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
  131. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
  132. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
  133. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  134. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  135. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  136. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  137. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  138. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  139. package/skills/lark-drive/references/lark-drive-workflow.md +5 -3
  140. package/skills/lark-event/SKILL.md +3 -1
  141. package/skills/lark-event/references/lark-event-application.md +38 -0
  142. package/skills/lark-event/references/lark-event-approval.md +170 -0
  143. package/skills/lark-im/SKILL.md +6 -5
  144. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  145. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  146. package/skills/lark-im/references/card/resource/icons.md +14 -0
  147. package/skills/lark-im/references/lark-im-flag-list.md +8 -7
  148. package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
  149. package/skills/lark-im/references/lark-im-messages-send.md +1 -1
  150. package/skills/lark-mail/SKILL.md +12 -9
  151. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  152. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  153. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  154. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  155. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  156. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  157. package/skills/lark-markdown/SKILL.md +3 -2
  158. package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
  159. package/skills/lark-minutes/SKILL.md +19 -4
  160. package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
  161. package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
  162. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
  163. package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
  164. package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
  165. package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
  166. package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
  167. package/skills/lark-okr/SKILL.md +71 -26
  168. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  169. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  170. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  171. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  172. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  173. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  174. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  175. package/skills/lark-shared/SKILL.md +26 -8
  176. package/skills/lark-sheets/SKILL.md +98 -29
  177. package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
  178. package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
  179. package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
  180. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
  181. package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
  182. package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
  183. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
  184. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
  185. package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
  186. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
  187. package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
  188. package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
  189. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
  190. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
  191. package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
  192. package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
  193. package/skills/lark-slides/SKILL.md +121 -63
  194. package/skills/lark-slides/references/asset-planning.md +18 -5
  195. package/skills/lark-slides/references/iconpark.md +3 -3
  196. package/skills/lark-slides/references/lark-slides-create.md +30 -3
  197. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  198. package/skills/lark-slides/references/lark-slides-media-upload.md +1 -3
  199. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +85 -0
  200. package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
  201. package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -4
  202. package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
  203. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +5 -6
  204. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +5 -2
  205. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +5 -5
  206. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +14 -13
  207. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +67 -31
  208. package/skills/lark-slides/references/planning-layer.md +41 -10
  209. package/skills/lark-slides/references/slides_chart_demo.xml +1416 -0
  210. package/skills/lark-slides/references/slides_xml_schema_definition.xml +499 -78
  211. package/skills/lark-slides/references/troubleshooting.md +5 -5
  212. package/skills/lark-slides/references/validation-checklist.md +65 -19
  213. package/skills/lark-slides/references/visual-planning.md +26 -22
  214. package/skills/lark-slides/references/xml-schema-quick-ref.md +285 -45
  215. package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
  216. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +2429 -91
  217. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3567 -70
  218. package/skills/lark-task/SKILL.md +8 -0
  219. package/skills/lark-task/references/lark-task-complete.md +6 -2
  220. package/skills/lark-task/references/lark-task-create.md +23 -1
  221. package/skills/lark-task/references/lark-task-update.md +6 -2
  222. package/skills/lark-vc/SKILL.md +6 -3
  223. package/skills/lark-vc/references/lark-vc-recording.md +0 -2
  224. package/skills/lark-vc/references/vc-domain-boundaries.md +9 -1
  225. package/skills/lark-vc-agent/SKILL.md +25 -15
  226. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
  227. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
  228. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
  229. package/skills/lark-whiteboard/SKILL.md +13 -12
  230. package/skills/lark-whiteboard/elements/layout.md +1 -1
  231. package/skills/lark-whiteboard/elements/schema.md +2 -2
  232. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
  233. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
  234. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +12 -19
  235. package/skills/lark-whiteboard/routes/dsl.md +3 -3
  236. package/skills/lark-whiteboard/routes/mermaid.md +2 -2
  237. package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
  238. package/skills/lark-whiteboard/routes/svg.md +11 -6
  239. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  240. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  241. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  242. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  243. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  244. package/skills/lark-wiki/SKILL.md +8 -3
  245. package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
  246. package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
  247. package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
  248. package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
  249. package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
  250. package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
  251. package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
  252. package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -72
  253. package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
  254. package/skills/lark-slides/references/examples.md +0 -261
  255. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -330
  256. package/skills/lark-slides/references/slide-templates.md +0 -201
  257. package/skills/lark-slides/references/slides_demo.xml +0 -226
  258. package/skills/lark-slides/references/xml-format-guide.md +0 -369
@@ -0,0 +1,132 @@
1
+ # slides history(历史版本与回滚)
2
+
3
+ 用于查看 Slides XML presentation 历史版本、按 `history_version_id` 回滚,以及查询回滚任务状态。
4
+
5
+ `entries[].edit_time` 是 UTC RFC3339 时间字符串(例如 `2026-06-22T12:24:45Z`)。按时间匹配时先将其解析为时间值,再比较先后关系或时间差。
6
+
7
+ ## 安全流程
8
+
9
+ 1. 先用分页接口 `+history-list` 找到目标版本的 `history_version_id`。
10
+ 2. 如果用户指定的是 `revision_id`,不要假设它唯一,也不要把 `revision_id` 直接传给 `+history-revert`。先拉一页并在 `entries[]` 中筛选 `revision_id` 相同的候选;如果未匹配到且 `has_more=true`,继续用 `page_token` 翻页;如果已匹配到候选,最多额外再拉一页补齐可能跨页的相邻候选。最终优先根据用户目标时间与 `edit_time` 的接近程度选择最合适的一条,取同一条的 `history_version_id`;如果没有目标时间,或多个候选无法可靠区分,再向用户展示候选版本(`history_version_id`、`revision_id`、`edit_time`、`name/description`)并确认后回滚。
11
+ 3. 如果用户指定的是某一时刻但没有指定 `revision_id`,按 `entries[].edit_time` 匹配;优先选择不晚于目标时刻的最近一条历史记录,无法明确匹配时先向用户确认候选版本。
12
+ 4. 使用 `+history-revert` 发起回滚。接口会立即返回 `task_id`,回滚任务在服务端异步执行。
13
+ 5. 如果返回 `status: running`,保存 `task_id`,按照返回的 `poll_after_ms` 等待后调用 `+history-revert-status`。任务创建成功后,不得因为状态查询失败而重新发起回滚。
14
+ 6. 状态变为 `done`、`partial_failed` 或 `failed` 后停止轮询;达到整体轮询上限时也停止轮询,并向用户返回 `task_id` 和当前状态。
15
+ 7. 回滚完成后,用 `slides +xml-get` 或 `slides xml_presentations get` 读取演示文稿确认内容。
16
+
17
+ ## 按 revision_id 或时间点回滚
18
+
19
+ 当用户说“回滚到 revision_id=42”“恢复到昨天下午 3 点的版本”这类需求时,流程是:
20
+
21
+ 1. 执行 `slides +history-list --presentation <presentation>` 获取第一页历史记录;`+history-list` 是分页接口,只有 `has_more=true` 且还需要更多候选时才继续传 `--page-token` 翻页。
22
+ 2. 如果用户给出 `revision_id`:先筛选当前页中 `entries[].revision_id == 用户给出的 revision_id`。如果未命中且 `has_more=true`,继续拉下一页;如果已经命中候选,最多额外再拉一页,补齐同一个 `revision_id` 可能跨页出现的相邻 `history_version_id`。若用户同时给出目标时间,在候选里选择 `edit_time` 与目标时间最接近的一条;若未给目标时间但候选只有一条,可直接使用;若多个候选无法可靠区分,不要自行取第一条,向用户展示候选并确认。
23
+ 3. 如果用户只给出时间:用 `entries[].edit_time` 匹配,选择目标时刻之前最近的一条;如果用户表达的是“最接近某时刻”,则选择绝对时间差最小的一条。
24
+ 4. 从最终匹配条目读取 `history_version_id`。`history_version_id` 对应服务端 `minor_history.version`,这是回滚接口需要的 ID。
25
+ 5. 执行 `slides +history-revert --presentation <presentation> --history-version-id <history_version_id>`。
26
+
27
+ 候选确认时使用类似格式:
28
+
29
+ ```text
30
+ 同一个 revision_id 命中多个历史版本,请确认要回滚哪一条:
31
+ - history_version_id=11 revision_id=42 edit_time=2026-06-22T12:24:45Z name=...
32
+ - history_version_id=12 revision_id=42 edit_time=2026-06-22T12:25:14Z name=...
33
+ ```
34
+
35
+ ## 命令
36
+
37
+ ```bash
38
+ # 列出历史版本
39
+ lark-cli slides +history-list --presentation "<slides_url_or_token>" --page-size 20
40
+
41
+ # 翻页
42
+ lark-cli slides +history-list --presentation "<slides_url_or_token>" --page-size 20 --page-token "<page_token>"
43
+
44
+ # 发起回滚任务,立即返回 task_id
45
+ lark-cli slides +history-revert --presentation "<slides_url_or_token>" --history-version-id 42
46
+
47
+ # 查询回滚任务状态
48
+ lark-cli slides +history-revert-status --presentation "<slides_url_or_token>" --task-id "<task_id>"
49
+ ```
50
+
51
+ ## 参数
52
+
53
+ | 命令 | 参数 | 必填 | 说明 |
54
+ |-|-|-|-|
55
+ | `+history-list` | `--presentation` | 是 | `xml_presentation_id`、Slides URL,或可解析为 Slides 的 wiki URL |
56
+ | `+history-list` | `--page-size` | 否 | 返回条数,范围 `1-20`,默认 `20` |
57
+ | `+history-list` | `--page-token` | 否 | 上一页返回的 `page_token` |
58
+ | `+history-revert` | `--presentation` | 是 | 同一个演示文稿 |
59
+ | `+history-revert` | `--history-version-id` | 是 | `+history-list` 返回的 `history_version_id`,必须大于 0 |
60
+ | `+history-revert-status` | `--presentation` | 是 | 同一个演示文稿 |
61
+ | `+history-revert-status` | `--task-id` | 是 | `+history-revert` 返回的 `task_id` |
62
+
63
+ ## 异步轮询策略
64
+
65
+ 1. `+history-revert` 返回 `task_id` 后,认为回滚任务已经成功创建。
66
+ 2. 如果 `status` 不是 `running`,不再调用状态接口。
67
+ 3. 如果 `status` 是 `running`,等待响应中的 `poll_after_ms` 后调用 `+history-revert-status`;`poll_after_ms` 缺失、为 `0` 或非法时,默认等待 10 秒。
68
+ 4. 状态查询返回 `running` 时继续轮询;返回 `done`、`partial_failed` 或 `failed` 时停止。
69
+ 5. 除非用户另有要求,默认最多轮询 5 分钟。达到上限后停止轮询,向用户说明任务仍在运行并返回 `task_id`,不得将其描述为回滚失败。
70
+ 6. 状态查询出现临时错误时,按相同间隔最多连续重试 3 次;只重试 `+history-revert-status`,不得重新调用 `+history-revert`。
71
+ 7. `done` 后读取当前演示文稿内容进行验证。
72
+ 8. `partial_failed` 或 `failed` 时展示 `failed_block_tokens`;除非用户明确确认,不得自动再次发起回滚。
73
+
74
+ ## 返回值要点
75
+
76
+ `+history-list` 返回:
77
+
78
+ ```json
79
+ {
80
+ "entries": [
81
+ {
82
+ "revision_id": 42,
83
+ "history_version_id": "11",
84
+ "edit_time": "2026-06-22T12:24:45Z",
85
+ "type": 1,
86
+ "name": "版本名",
87
+ "description": "版本说明",
88
+ "editor_ids": ["ou_xxx"]
89
+ }
90
+ ],
91
+ "has_more": true,
92
+ "page_token": "page_token"
93
+ }
94
+ ```
95
+
96
+ `+history-revert` 返回:
97
+
98
+ ```json
99
+ {
100
+ "task_id": "task_xxx",
101
+ "status": "running",
102
+ "history_version_id": "11",
103
+ "poll_after_ms": 10000
104
+ }
105
+ ```
106
+
107
+ `+history-revert-status` 返回:
108
+
109
+ ```json
110
+ {
111
+ "status": "partial_failed",
112
+ "history_version_id": "11",
113
+ "failed_block_tokens": ["blk_xxx"]
114
+ }
115
+ ```
116
+
117
+ `status` 可能是 `running`、`done`、`partial_failed`、`failed`。当状态是 `partial_failed` 或 `failed` 时,优先检查 `failed_block_tokens`。
118
+
119
+ ## 回滚后验证
120
+
121
+ 回滚成功后必须读取一次当前内容确认:
122
+
123
+ ```bash
124
+ lark-cli slides +xml-get --presentation "<slides_url_or_token>" --output ./presentation.xml
125
+ ```
126
+
127
+ 如果只需要快速检查返回结构,也可以走 raw OpenAPI:
128
+
129
+ ```bash
130
+ lark-cli api get "/open-apis/slides_ai/v1/xml_presentations/<xml_presentation_id>" \
131
+ --params '{"revision_id":-1}'
132
+ ```
@@ -1,8 +1,6 @@
1
1
 
2
2
  # slides +media-upload(上传本地图片到飞书幻灯片)
3
3
 
4
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
5
-
6
4
  把本地图片上传到指定演示文稿的 drive 媒体库,返回 `file_token`。**返回的 token 作为 `<img src="...">` 的值塞进 slide XML 即可显示图片。**
7
5
 
8
6
  ## 命令
@@ -107,7 +105,7 @@ lark-cli slides +replace-slide --as user \
107
105
 
108
106
  `+media-upload` 内部调用 `POST /open-apis/drive/v1/medias/upload_all`(单次上传,最大 20 MB),固定使用:
109
107
 
110
- - `parent_type=slide_file`(slides 后端唯一接受的取值,已实测验证)
108
+ - `parent_type=slide_file`(slides 后端唯一接受的取值)
111
109
  - `parent_node=<xml_presentation_id>`
112
110
 
113
111
  **不要尝试用 `slides_image`、`slide_image` 等 parent_type**——后端会返回 1061001 / 1061002 错误。这是 slides 的特殊约定。
@@ -0,0 +1,85 @@
1
+ # PPT Template Rewrite Principles
2
+
3
+ 核心原则:模板不是风格参考,而是必须沿用的编辑底稿。
4
+
5
+ ## Import First
6
+
7
+ 如果用户提供的模板是 PPTX 格式,先把模板导入成 Lark Slides。后续写入目标是导入后的 Slides,不是新建一个脱离模板的 deck,也不是先在本地重画 PPTX 再导入。
8
+
9
+ 直接使用以下命令,不需要先加载 `lark-drive` Skill:
10
+
11
+ ```bash
12
+ lark-cli drive +import --as user --file "<template.pptx>" --type slides --json
13
+ ```
14
+
15
+ 可选参数:用 `--name "<title>"` 指定导入后的 Slides 标题;用 `--folder-token <FOLDER_TOKEN>` 指定目标文件夹。若返回 `ready=false` / `timed_out=true`,直接执行返回值里的 `next_command`;等价形式是:
16
+
17
+ ```bash
18
+ lark-cli drive +task_result --scenario import --ticket <TICKET>
19
+ ```
20
+
21
+ ## Read Before Editing
22
+
23
+ 导入后必须阅读 Slides 内容,理解每页的真实版式、字体、层级、图片、图表、shape、表格和文本容器。阅读结果是后续编辑的事实来源。
24
+
25
+ 阅读页面时至少判断:
26
+
27
+ - 该页原本承担的角色,例如封面、章节页、目录、流程、对比、数据、总结。
28
+ - 该页的主要版式结构,例如图文关系、箭头、时间线、节点、表格、图表、左右对照、背景图或产品图。
29
+ - 哪些文本框、shape 标签、表格单元格或图表标签承载内容。
30
+ - 原页面的字体、字号、颜色、对齐、层级和留白关系。
31
+
32
+ ## Edit The Imported Slides Directly
33
+
34
+ 理解页面后,直接在导入后的 Slides 上编辑。允许的操作包括:
35
+
36
+ - 填写、替换、凝练或删除文字。
37
+ - 替换或补充图片。
38
+ - 更新图表、表格、数字标签或节点标签里的内容。
39
+ - 按需复制、删除或重排模板页。
40
+ - 在源页面没有合适承载位置时,做局部、小范围新增元素。
41
+
42
+ 新增元素只能补足内容缺口,不能成为新的主版式。页面主体仍应由模板原有版式承载。
43
+
44
+ ## Preserve Design
45
+
46
+ 编辑必须严格沿用原版式和字体,只改内容,不做设计。
47
+
48
+ 默认保留:
49
+
50
+ - 页面布局、视觉层级、留白和对齐关系。
51
+ - 原字体、字号体系、颜色、文本框位置和 shape 顺序。
52
+ - 背景图、图片、logo、图表、表格、装饰形状、线条、图标和页面结构。
53
+ - 模板中不同页型之间的差异。
54
+
55
+ 不要把模板页改造成统一的通用卡片、空白板式布局、标题栏、三栏、2x2 卡片或大面积遮罩。不要把模板当作背景图后另起一套设计系统。
56
+
57
+ ## Content Only
58
+
59
+ 内容必须优先进入原页面已有的文本框、shape 标签、节点、表格单元格、图表标签或注释容器。
60
+
61
+ 如果原容器空间不足,优先:
62
+
63
+ - 凝练文字。
64
+ - 降低字号但保持原字体体系。
65
+ - 拆分到页面已有的邻近容器。
66
+ - 使用模板已有的注释、标签或补充说明区域。
67
+ - 复制同页或同模板中的原生容器样式做局部补充。
68
+
69
+ 不要为了容纳长文案而重画页面主体结构。不要用新增大卡片遮住原图表、箭头、图片、背景或关键 shape。
70
+
71
+ ## Readback And Tune
72
+
73
+ 完成编辑后必须回读结果,并逐页微调。
74
+
75
+ 回读时重点检查:
76
+
77
+ - 文字是否溢出、截断、压线或超出容器。
78
+ - 文本是否遮挡图片、图表、shape、箭头、节点或其他文字。
79
+ - shape 顺序是否导致内容被覆盖或遮住。
80
+ - 新内容是否仍然落在模板原有版式中,而不是覆盖模板结构。
81
+ - 字体、字号、颜色、对齐和层级是否仍贴近原页。
82
+
83
+ 发现文字溢出时,优先凝练文字或缩减字号。发现遮挡时,调整 shape 顺序、局部位置或复用原有空白区域解决。只有在这些方法都不能满足内容表达时,才做局部新增或删除。
84
+
85
+ 完成标准是“原模板的版式、字体和视觉结构仍清晰存在,内容已经被准确替换,并且回读后没有溢出和遮挡”。
@@ -89,7 +89,7 @@ lark-cli slides +replace-pages --as user \
89
89
 
90
90
  ## 使用建议
91
91
 
92
- 1. 大幅改写前先 `xml_presentations.get` 保存当前 XML,并记录要替换页面的 `slide_id`。
92
+ 1. 大幅改写前先 `slides +xml-get` 保存当前 XML,并记录要替换页面的 `slide_id`。
93
93
  2. 生成只含 `slide_id` 的 `pages.json` 后先跑 `--dry-run` 或 `--validate-only`。
94
94
  3. 默认不要开 `--continue-on-error`,除非能接受部分页面已替换。
95
95
  4. 替换后再回读全文 XML 并截图检查,确认页序、视觉和文本没有破损。
@@ -1,7 +1,5 @@
1
1
  # slides +replace-slide(块级替换 / 插入)
2
2
 
3
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
-
5
3
  对指定 slide 做块级替换或插入。编辑已有 PPT 的主路径——`slide_id` 不变、页序不动、只影响被指定的块。
6
4
 
7
5
  相比直接调 `xml_presentation.slide.replace`,这个 shortcut 的四个额外价值:
@@ -47,7 +45,7 @@ lark-cli slides +replace-slide --as user \
47
45
  | 参数 | 必填 | 说明 |
48
46
  |------|------|------|
49
47
  | `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
50
- | `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `xml_presentations.get` 都能拿到) |
48
+ | `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `slides +xml-get` 都能拿到) |
51
49
  | `--parts` | 是 | JSON 数组(`[{...}, ...]`),单次最多 200 条。支持 `@<file>` 和 `-`(stdin)读取 |
52
50
  | `--revision-id` | 否 | 基础版本号;默认 `-1` 表示基于最新版执行;传具体版本号时,服务端以该版本为 base 执行;**传不存在的版本号(超过当前 revision)返回 3350002** |
53
51
  | `--tid` | 否 | 并发事务 ID;多人协作长事务才用,单次单人调用留空 |
@@ -88,7 +86,6 @@ lark-cli slides +replace-slide --as user \
88
86
  | `<table>` | 表格 | 整表替换会**重建内部 td id**,旧 td block_id 立即失效 |
89
87
  | `<td>` | 单元格局部替换 | 只能 `block_replace`,不能 `block_insert`;`block_id` 必须是最新 `slide.get` 拿到的 td id |
90
88
  | `<chart>` | 图表(line/bar/column/pie/area/radar/combo) | 必须嵌 `<chartPlotArea>` + `<chartData>` + `<dim1>/<dim2>/<chartField>` |
91
- | `<whiteboard>` | 画板(SVG 或 Mermaid) | 内嵌 `<svg>` 或 `<mermaid>`;`slide.get` 返回结构不含内部数据,但可直接写完整新 XML 做 `block_replace` 覆盖;详见 [`lark-slides-whiteboard.md`](lark-slides-whiteboard.md) |
92
89
 
93
90
  **不可作为根元素**:
94
91
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  获取幻灯片页面截图并保存为本地图片文件。默认用于已存在 PPT 页面截图;传入 `--content` 时用于直接渲染单个 `<slide>` XML 片段预览。本 shortcut 会在 CLI 进程内解码并写入文件,stdout 只返回文件路径、大小、页面 ID 等元信息,避免把图片 Base64 输出给模型。
6
6
 
7
- 注意:该截图能力受应用白名单限制,绝大多数应用不可用。截图失败时不要引导用户申请 `slides:presentation:screenshot` 权限;记录错误后降级到 XML 读回、结构 lint、文本重叠检查等非截图检查路径。
7
+ 截图失败则降级到 XML 读回、结构 lint等非截图检查路径。
8
8
 
9
9
  ## 命令
10
10
 
@@ -26,8 +26,8 @@ lark-cli slides +screenshot --as user \
26
26
  | 参数 | 必需 | 说明 |
27
27
  |------|------|------|
28
28
  | `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
29
- | `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入 |
30
- | `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入 |
29
+ | `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-id slide_1,slide_2`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
30
+ | `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-number 1,2,3`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
31
31
  | `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
32
32
  | `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
33
33
  | `--output-name` | 否 | render 模式的输出文件名 stem;未指定时优先用返回的 `slide_id`,否则用 `rendered-slide`。若目标文件已存在,会自动追加递增后缀避免覆盖 |
@@ -44,6 +44,8 @@ lark-cli slides +screenshot --as user \
44
44
 
45
45
  ### 多页截图
46
46
 
47
+ 一次不要超过 10 页;如需更多页面,分批调用。可以重复传参,也可以用逗号分隔一次传多个:
48
+
47
49
  ```bash
48
50
  lark-cli slides +screenshot --as user \
49
51
  --presentation slides_example_presentation_id \
@@ -66,7 +68,8 @@ lark-cli slides +screenshot --as user \
66
68
 
67
69
  ```json
68
70
  {
69
- "code": 0,
71
+ "ok": true,
72
+ "identity": "user",
70
73
  "data": {
71
74
  "xml_presentation_id": "slides_example_presentation_id",
72
75
  "output_dir": ".lark-slides/screenshots",
@@ -79,8 +82,7 @@ lark-cli slides +screenshot --as user \
79
82
  "size": 12345
80
83
  }
81
84
  ]
82
- },
83
- "msg": "success"
85
+ }
84
86
  }
85
87
  ```
86
88
 
@@ -90,5 +92,6 @@ lark-cli slides +screenshot --as user \
90
92
  2. 已存在 PPT 页面截图时,不传 `--content`,用 `--presentation` + `--slide-id` 或 `--slide-number`。
91
93
  3. 本地 XML 预览时,传 `--content @file` 或 `--content -`,内容应为单个 `<slide>` XML 片段;此时不要传 `--presentation` / `--slide-id` / `--slide-number`。
92
94
  4. `slide_id` 是页面 short ID,页码请用 `--slide-number`。
93
- 5. list 模式默认文件名包含 presentation ID、页码和/或 slide ID;文件已存在时自动追加 `_2`、`_3` 等后缀,避免覆盖旧截图。
94
- 6. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
95
+ 5. list 模式一次最多传 10 页(`--slide-id` + `--slide-number` 合计小于等于 10);更多页面请分批截图。
96
+ 6. list 模式默认文件名包含 presentation ID、页码和/或 slide ID;文件已存在时自动追加 `_2`、`_3` 等后缀,避免覆盖旧截图。
97
+ 7. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
@@ -67,7 +67,7 @@ lark-cli slides xml_presentation.slide create --as user --params '<json_params>'
67
67
  </slide>
68
68
  ```
69
69
 
70
- 详细格式请参考 [xml-format-guide.md](xml-format-guide.md) 和 [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
70
+ 详细格式请参考 [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
71
71
 
72
72
  ## 使用示例
73
73
 
@@ -162,7 +162,7 @@ lark-cli slides xml_presentation.slide create --as user \
162
162
  | 元素 | 说明 |
163
163
  |------|------|
164
164
  | `<style>` | 页面样式(背景填充) |
165
- | `<data>` | 图形元素容器(shape、img、table、chart、whiteboard 等) |
165
+ | `<data>` | 图形元素容器(shape、img、table、chart 等) |
166
166
  | `<note>` | 演讲者备注 |
167
167
 
168
168
  > [!IMPORTANT]
@@ -188,7 +188,7 @@ lark-cli slides xml_presentation.slide create --as user \
188
188
  4. **fill / border 写法**: 颜色填充使用 `<fill><fillColor color="..."/></fill>`,边框常用 `<border color="..." width="2"/>`
189
189
  5. **插入位置**: 通过 `before_slide_id` 指定插入目标,而不是用 `position`
190
190
  6. **JSON 转义**: 如果直接内联 XML,需要正确转义双引号
191
- 7. **建议**: 先使用 `xml_presentations.get` 获取现有结构,再添加新页面
191
+ 7. **建议**: 先使用 `slides +xml-get` 获取现有结构,再添加新页面
192
192
 
193
193
  ## 批量添加建议
194
194
 
@@ -214,7 +214,6 @@ done
214
214
  ## 相关命令
215
215
 
216
216
  - [slides +create](lark-slides-create.md) - 创建空白 PPT
217
- - [xml_presentations get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容
217
+ - [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
218
218
  - [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
219
- - [xml-format-guide.md](xml-format-guide.md) - XML 格式详细规范
220
- - [xml-schema-quick-ref.md](xml-schema-quick-ref.md) - Schema 快速参考
219
+ - [xml-schema-quick-ref.md](xml-schema-quick-ref.md) - XML Schema 快速参考
@@ -49,7 +49,10 @@ lark-cli slides xml_presentation.slide delete --as user --params '{
49
49
 
50
50
  ```bash
51
51
  # 先读取 XML 内容,确认待删除页面
52
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' | jq -r '.data.xml_presentation.content'
52
+ lark-cli slides +xml-get --as user \
53
+ --presentation "slides_example_presentation_id" \
54
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
55
+ --json
53
56
 
54
57
  # 然后按已知 slide_id 删除
55
58
  lark-cli slides xml_presentation.slide delete --as user --params '{"xml_presentation_id":"slides_example_presentation_id","slide_id":"slide_example_id"}'
@@ -119,5 +122,5 @@ done
119
122
  ## 相关命令
120
123
 
121
124
  - [slides +create](lark-slides-create.md) - 创建空白 PPT
122
- - [xml_presentations get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容
125
+ - [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
123
126
  - [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
@@ -65,15 +65,15 @@ lark-cli slides xml_presentation.slide get --as user --params '{
65
65
 
66
66
  ```json
67
67
  {
68
- "code": 0,
68
+ "ok": true,
69
+ "identity": "user",
69
70
  "data": {
70
71
  "slide": {
71
72
  "slide_id": "slide_example_id",
72
73
  "content": "<slide id=\"slide_example_id\"><style/><data>...</data></slide>"
73
74
  },
74
75
  "revision_id": 100
75
- },
76
- "msg": "success"
76
+ }
77
77
  }
78
78
  ```
79
79
 
@@ -94,7 +94,7 @@ lark-cli slides xml_presentation.slide get --as user --params '{
94
94
  ## 注意事项
95
95
 
96
96
  1. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.get` 查看最新参数结构
97
- 2. **block_id 提取**:返回 XML 里每个顶层块(shape、img、table、chart、whiteboard 等)的 `id` 属性即为 `block_id`,通常是 3 字符短码,例如 `<shape id="bUn" ...>`。用以下命令列出当前页所有 block_id:
97
+ 2. **block_id 提取**:返回 XML 里每个顶层块(shape、img、table、chart 等)的 `id` 属性即为 `block_id`,通常是 3 字符短码,例如 `<shape id="bUn" ...>`。用以下命令列出当前页所有 block_id:
98
98
 
99
99
  ```bash
100
100
  lark-cli slides xml_presentation.slide get --as user \
@@ -106,5 +106,5 @@ lark-cli slides xml_presentation.slide get --as user --params '{
106
106
 
107
107
  - [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 shortcut(推荐)
108
108
  - [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
109
- - [xml_presentations get](lark-slides-xml-presentations-get.md) — 读整个 PPT
109
+ - [slides +xml-get](lark-slides-xml-presentations-get.md) — 读整个 PPT 并保存到本地文件
110
110
  - [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环
@@ -130,24 +130,28 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
130
130
 
131
131
  ```json
132
132
  {
133
- "code": 0,
133
+ "ok": true,
134
+ "identity": "user",
134
135
  "data": {
135
136
  "revision_id": 105
136
- },
137
- "msg": "success"
137
+ }
138
138
  }
139
139
  ```
140
140
 
141
141
  ### 失败(任一 part 失败,整批不生效)
142
142
 
143
- 失败时返回非零错误码(如 3350001)。若后端能定位失败的 part,`data` 中可能附带:
143
+ 失败时命令以非零退出码结束,stderr 返回类型化错误信封(`error.code`(如 3350001)/ `error.message` / `error.hint`),stdout 不会打印后端原始响应:
144
144
 
145
145
  ```json
146
146
  {
147
- "code": 3350001,
148
- "data": {
149
- "failed_part_index": 0,
150
- "failed_reason": "block not found"
147
+ "ok": false,
148
+ "identity": "user",
149
+ "error": {
150
+ "type": "api",
151
+ "subtype": "...",
152
+ "code": 3350001,
153
+ "message": "...",
154
+ "hint": "..."
151
155
  }
152
156
  }
153
157
  ```
@@ -155,8 +159,6 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
155
159
  | 字段 | 类型 | 说明 |
156
160
  |------|------|------|
157
161
  | `data.revision_id` | integer | 成功时返回更新后最新版本号 |
158
- | `data.failed_part_index` | integer | 失败的 part 在 `parts` 数组中的索引(从 0 起) |
159
- | `data.failed_reason` | string | 失败原因 |
160
162
 
161
163
  ## 常见错误
162
164
 
@@ -171,13 +173,12 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
171
173
  ## 注意事项
172
174
 
173
175
  1. **parts 原子事务**:任一条失败整批回滚,不会出现"前几条成功、后几条失败"的中间态。
174
- 2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart、whiteboard 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
176
+ 2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
175
177
  3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。
176
178
  4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。
177
179
  5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。
178
180
  6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。
179
- 7. **`<whiteboard>` 返回结构不含内部数据**:`slide.get` 返回的 whiteboard 块只有外层标签和位置属性,SVG / Mermaid 内容不会随 XML 一起返回。但 `block_replace` 仍然可以强行覆盖——直接写入完整新 whiteboard XML 即可。
180
- 8. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
181
+ 7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
181
182
 
182
183
  ## 相关命令
183
184
 
@@ -4,13 +4,66 @@
4
4
 
5
5
  读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。
6
6
 
7
- ## 命令
7
+ ## Shortcut
8
+
9
+ 使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。
10
+
11
+
12
+ ```bash
13
+ lark-cli slides +xml-get --as user \
14
+ --presentation "slides_example_presentation_id" \
15
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
16
+ --json
17
+ ```
18
+
19
+ ### 参数说明
20
+
21
+ | 参数 | 类型 | 必需 | 说明 |
22
+ |------|------|------|------|
23
+ | `--presentation` | string | 是 | 演示文稿的唯一标识符 |
24
+ | `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 |
25
+ | `--output` | string | 是 | 本地文件,必须使用相对路径 |
26
+ | `--remove-attr-id` | flag | 否 | 移除 XML id 属性后读取 |
27
+ | `--json` | flag | 是 | 必须按照 json 格式输出 |
28
+
29
+
30
+ ### 基础示例
31
+
32
+ ```bash
33
+ lark-cli slides +xml-get --as user \
34
+ --presentation "slides_example_presentation_id" \
35
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
36
+ --json
37
+ ```
38
+
39
+ ### 指定版本读取
40
+
41
+ ```bash
42
+ lark-cli slides +xml-get --as user \
43
+ --presentation "slides_example_presentation_id" \
44
+ --revision-id 10 \
45
+ --output .lark-slides/plan/slides_example_presentation_id/readback-r10.xml \
46
+ --json
47
+ ```
48
+
49
+ ### 移除 XML id 属性后读取
50
+
51
+ ```bash
52
+ lark-cli slides +xml-get --as user \
53
+ --presentation "slides_example_presentation_id" \
54
+ --remove-attr-id \
55
+ --output .lark-slides/plan/slides_example_presentation_id/readback-no-id.xml \
56
+ --json
57
+ ```
58
+
59
+
60
+ ## 底层原生命令形态
8
61
 
9
62
  ```bash
10
63
  lark-cli slides xml_presentations get --as user --params '<json_params>'
11
64
  ```
12
65
 
13
- ## 参数说明
66
+ ### 参数说明
14
67
 
15
68
  | 参数 | 类型 | 必需 | 说明 |
16
69
  |------|------|------|------|
@@ -30,41 +83,22 @@ lark-cli slides xml_presentations get --as user --params '<json_params>'
30
83
  | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
31
84
  | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
32
85
 
33
- ## 使用示例
34
-
35
- ### 基础示例
36
-
37
- ```bash
38
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}'
39
- ```
40
86
 
41
- ### 结合 jq 格式化输出
42
-
43
- ```bash
44
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' | jq -r '.data.xml_presentation.content'
45
- ```
46
-
47
- ### 保存到文件
48
-
49
- ```bash
50
- lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' > presentation_data.json
51
- ```
52
-
53
- ## 返回值
87
+ ### 返回值
54
88
 
55
89
  成功时返回演示文稿的完整信息:
56
90
 
57
91
  ```json
58
92
  {
59
- "code": 0,
93
+ "ok": true,
94
+ "identity": "user",
60
95
  "data": {
61
96
  "xml_presentation": {
62
97
  "presentation_id": "slides_example_presentation_id",
63
98
  "revision_id": 1,
64
99
  "content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
65
100
  }
66
- },
67
- "msg": "success"
101
+ }
68
102
  }
69
103
  ```
70
104
 
@@ -76,7 +110,7 @@ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id"
76
110
  | `data.xml_presentation.revision_id` | integer | 版本号 |
77
111
  | `data.xml_presentation.content` | string | XML 格式的完整内容 |
78
112
 
79
- ## 常见错误
113
+ ### 常见错误
80
114
 
81
115
  | 错误码 | 含义 | 解决方案 |
82
116
  |--------|------|----------|
@@ -84,12 +118,14 @@ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id"
84
118
  | 403 | 权限不足 | 检查是否拥有 `slides:presentation:read` scope,或是否有访问权限 |
85
119
  | 400 | 参数格式错误 | 确保 `--params` 是合法的 JSON 字符串 |
86
120
 
87
- ## 注意事项
88
121
 
89
- 1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
90
- 2. 返回的 XML 在 `data.xml_presentation.content` 字段中
91
- 3. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
92
- 4. 建议将获取的 XML 保存为文件,便于后续编辑或备份
122
+ ### 注意事项
123
+
124
+ 1. lark-slides 工作流默认使用 `slides +xml-get`;只有必须直接调底层 API 时,才使用
125
+ 2. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
126
+ 3. 返回的 XML 在 `data.xml_presentation.content` 字段中
127
+ 4. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
128
+ 5. 不要在普通工作流中把完整 XML 打到终端;用 `slides +xml-get --output` 保存文件
93
129
 
94
130
  ## 相关命令
95
131