@amaster.ai/pi-lark 0.1.6 → 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 (178) 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 +3 -3
  10. package/skills/lark-apps/SKILL.md +24 -12
  11. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  12. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  13. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  14. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  15. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  16. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  17. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  18. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  19. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  20. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  21. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  22. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  23. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  24. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  25. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  26. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  27. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  28. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  29. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  30. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  31. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  32. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  33. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  34. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  35. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  36. package/skills/lark-apps/references/lark-apps-automation.md +80 -2
  37. package/skills/lark-apps/references/lark-apps-cache.md +61 -0
  38. package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
  39. package/skills/lark-apps/references/lark-apps-create.md +1 -2
  40. package/skills/lark-apps/references/lark-apps-db.md +1 -1
  41. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  42. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  43. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  44. package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
  45. package/skills/lark-apps/references/lark-apps-init.md +1 -1
  46. package/skills/lark-apps/references/lark-apps-list.md +1 -1
  47. package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
  48. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  49. package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
  50. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  51. package/skills/lark-base/SKILL.md +20 -13
  52. package/skills/lark-base/references/lark-base-cell-value.md +3 -3
  53. package/skills/lark-base/references/lark-base-data-query.md +11 -4
  54. package/skills/lark-base/references/lark-base-field-create.md +4 -0
  55. package/skills/lark-base/references/lark-base-field-json.md +4 -4
  56. package/skills/lark-base/references/lark-base-field-update.md +17 -1
  57. package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
  58. package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
  59. package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
  60. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  61. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  62. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  63. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  64. package/skills/lark-base/references/lark-base-role-guide.md +11 -0
  65. package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
  66. package/skills/lark-base/references/role-config.md +31 -5
  67. package/skills/lark-calendar/SKILL.md +14 -8
  68. package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
  69. package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
  70. package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
  71. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
  72. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
  73. package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
  74. package/skills/lark-contact/SKILL.md +19 -3
  75. package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
  76. package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
  77. package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
  78. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
  79. package/skills/lark-doc/references/lark-doc-xml.md +4 -3
  80. package/skills/lark-drive/SKILL.md +25 -45
  81. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
  82. package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
  83. package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
  84. package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
  85. package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
  86. package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
  87. package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
  88. package/skills/lark-drive/references/lark-drive-download.md +5 -1
  89. package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
  90. package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
  91. package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
  92. package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
  93. package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
  94. package/skills/lark-drive/references/lark-drive-preview.md +11 -1
  95. package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
  96. package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
  97. package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
  98. package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
  99. package/skills/lark-drive/references/lark-drive-search.md +7 -1
  100. package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
  101. package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
  102. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  103. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
  104. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
  105. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
  106. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  107. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  108. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  109. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  110. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  111. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  112. package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
  113. package/skills/lark-event/SKILL.md +1 -0
  114. package/skills/lark-event/references/lark-event-application.md +38 -0
  115. package/skills/lark-im/SKILL.md +1 -1
  116. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  117. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  118. package/skills/lark-im/references/card/resource/icons.md +14 -0
  119. package/skills/lark-im/references/lark-im-flag-list.md +8 -7
  120. package/skills/lark-okr/SKILL.md +71 -26
  121. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  122. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  123. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  124. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  125. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  126. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  127. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  128. package/skills/lark-slides/SKILL.md +115 -68
  129. package/skills/lark-slides/references/asset-planning.md +6 -4
  130. package/skills/lark-slides/references/iconpark.md +2 -2
  131. package/skills/lark-slides/references/lark-slides-create.md +16 -8
  132. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  133. package/skills/lark-slides/references/lark-slides-media-upload.md +2 -3
  134. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
  135. package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
  136. package/skills/lark-slides/references/lark-slides-screenshot.md +4 -4
  137. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
  138. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
  139. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
  140. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
  141. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
  142. package/skills/lark-slides/references/planning-layer.md +11 -10
  143. package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
  144. package/skills/lark-slides/references/slides_xml_schema_definition.xml +492 -76
  145. package/skills/lark-slides/references/troubleshooting.md +25 -7
  146. package/skills/lark-slides/references/validation-checklist.md +53 -16
  147. package/skills/lark-slides/references/visual-planning.md +25 -22
  148. package/skills/lark-slides/references/xml-schema-quick-ref.md +281 -45
  149. package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
  150. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1650 -165
  151. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3139 -513
  152. package/skills/lark-task/SKILL.md +7 -0
  153. package/skills/lark-task/references/lark-task-complete.md +6 -2
  154. package/skills/lark-task/references/lark-task-create.md +9 -0
  155. package/skills/lark-task/references/lark-task-update.md +6 -2
  156. package/skills/lark-whiteboard/SKILL.md +13 -12
  157. package/skills/lark-whiteboard/elements/layout.md +1 -1
  158. package/skills/lark-whiteboard/elements/schema.md +2 -2
  159. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
  160. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
  161. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
  162. package/skills/lark-whiteboard/routes/dsl.md +3 -3
  163. package/skills/lark-whiteboard/routes/mermaid.md +2 -2
  164. package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
  165. package/skills/lark-whiteboard/routes/svg.md +11 -6
  166. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  167. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  168. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  169. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  170. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  171. package/skills/lark-wiki/SKILL.md +1 -0
  172. package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
  173. package/skills/lark-slides/references/examples.md +0 -91
  174. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
  175. package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
  176. package/skills/lark-slides/references/slide-templates.md +0 -201
  177. package/skills/lark-slides/references/slides_demo.xml +0 -226
  178. package/skills/lark-slides/references/xml-format-guide.md +0 -433
@@ -1,11 +1,12 @@
1
1
  # 文档评论定位字段
2
2
 
3
- 当用户需要根据评论定位文档正文位置、对文档做 review、区分多处相同引用文本,或把评论落点映射到 `docs +fetch --detail with-ids` 的内容时,优先使用 `drive +list-comments --need-relation` 查询 docx 评论位置。
3
+ 当用户需要根据评论定位文档正文位置、对文档做 review、区分多处相同引用文本,或把评论落点映射到 `docs +fetch --detail with-ids` 的内容时,优先使用 `drive +list-comments --need-relation` 查询 docx 评论位置;已知评论 ID 时用 `drive +batch-query-comments --need-relation`。
4
4
 
5
5
  ## 适用范围
6
6
 
7
7
  - 当前只有 `file_type=docx` 支持通过 `need_relation=true` 查询评论的位置,并返回可用于定位正文 block 的 `relation`、`parent_type`、`parent_token` 等字段。
8
- - `drive +list-comments` 会在目标不是 docx 时静默忽略 `--need-relation`,避免把无效参数传给 OpenAPI。遇到 sheet、bitable、slides、普通文件等类型的评论时,不要承诺可以用 `need_relation` 精确定位正文位置,应退回普通评论字段、对应资源能力下钻或人工确认。
8
+ - `drive +list-comments` 和 `drive +batch-query-comments` 都会在目标不是 docx 时静默忽略 `--need-relation`,避免把无效参数传给 OpenAPI。遇到 sheet、bitable、slides、普通文件等类型的评论时,不要承诺可以用 `need_relation` 精确定位正文位置,应退回普通评论字段、对应资源能力下钻或人工确认。
9
+ - 注意参数位置差异:list 的 `need_relation` 在 query params,batch_query 的在请求 body(直接调 raw OpenAPI 时才需要关心;两个 shortcut 已各自处理)。
9
10
 
10
11
  ## 调用方式
11
12
 
@@ -21,20 +22,13 @@ lark-cli drive +list-comments --url '<docx_or_wiki_url>' --need-relation
21
22
  lark-cli drive +list-comments --token '<wiki_token>' --type wiki --need-relation
22
23
  ```
23
24
 
24
- 只有在需要未被 shortcut 暴露的底层参数时,才直接调用 raw OpenAPI。此时把 `need_relation` 放在 query params:
25
+ 已知评论 ID 时,用 `drive +batch-query-comments --need-relation` 直接按 ID 取:
25
26
 
26
27
  ```bash
27
- lark-cli drive file.comments list \
28
- --params '{"file_token":"<doc_token>","file_type":"docx","is_solved":false,"need_relation":true}'
28
+ lark-cli drive +batch-query-comments --url '<docx_or_wiki_url>' --comment-ids '<comment_id>' --need-relation
29
29
  ```
30
30
 
31
- 已知评论 ID 批量查询时,把 `need_relation` 放在请求体里:
32
-
33
- ```bash
34
- lark-cli drive file.comments batch_query \
35
- --params '{"file_token":"<doc_token>","file_type":"docx"}' \
36
- --data '{"comment_ids":["<comment_id>"],"need_relation":true}'
37
- ```
31
+ 只有在需要 shortcut 未暴露的底层参数时,才直接调 raw OpenAPI(两个 shortcut 已各自处理 `need_relation` 的位置差异:list 在 query params,batch_query 在请求 body)。
38
32
 
39
33
  同时获取文档内容,并要求返回 block id:
40
34
 
@@ -138,7 +132,7 @@ lark-cli docs +fetch --doc '<doc_token_or_url>' --detail with-ids
138
132
  ## 定位流程
139
133
 
140
134
  1. 确认目标是 `file_type=docx`;只有 docx 文档支持通过 `need_relation` 查询评论位置。
141
- 2. 用 `drive +list-comments --need-relation` 获取评论;已知评论 ID 且需要批量查询时,可用 `drive file.comments batch_query` 并带 `need_relation=true`。raw `drive file.comments list` 仅作为低层参数兜底。
135
+ 2. 用 `drive +list-comments --need-relation` 获取评论;已知评论 ID 且需要批量查询时,用 `drive +batch-query-comments --need-relation`。原生 `drive file.comments list/batch_query` 仅在需要 shortcut 未暴露的底层参数时兜底。
142
136
  3. 用 `docs +fetch --detail with-ids` 获取文档内容。
143
137
  4. 对每条评论先看 `relation`:
144
138
  - 如果存在 `relation.relation`,解析这个 JSON 字符串。
@@ -190,9 +184,9 @@ lark-cli base +record-list --base-token '<base_token>' --table-id '<table_id>' -
190
184
  - 若要定位画板内部节点,切到 `lark-whiteboard` 读取 raw 节点结构:
191
185
 
192
186
  ```bash
193
- lark-cli whiteboard +query \
187
+ lark-cli whiteboard +export \
194
188
  --whiteboard-token '<whiteboard_token>' \
195
- --output_as raw
189
+ --output-type raw
196
190
  ```
197
191
 
198
192
  - 如果 raw 节点中存在唯一匹配 `quote` 的文本节点,可定位到该节点;如果有多个相同文本节点,仍然是弱匹配,需要结合位置、样式、用户描述或人工确认。
@@ -0,0 +1,48 @@
1
+ # drive +delete-reply
2
+
3
+ > **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理。
4
+
5
+ 删除某条回复。**高风险写操作**:真实执行需要按 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 的高风险审批协议向用户确认后追加 `--yes`;删除不可恢复。
6
+
7
+ ## 命令
8
+
9
+ ```bash
10
+ # 先预览(--dry-run 不需要 --yes)
11
+ lark-cli drive +delete-reply --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>' --reply-id '<id>' --dry-run
12
+
13
+ # 确认后真实删除(把 --dry-run 换成 --yes)
14
+ lark-cli drive +delete-reply --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>' --reply-id '<id>' --yes
15
+ ```
16
+
17
+ ## 参数
18
+
19
+ | 参数 | 必填 | 说明 |
20
+ |---|---|---|
21
+ | `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
22
+ | `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
23
+ | `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
24
+ | `--comment-id` | 是 | 回复所属的评论 ID;来自 `drive +list-comments` |
25
+ | `--reply-id` | 是 | 要删除的回复 ID;来自 `drive +list-replies` 的 `items[].reply_id`,或 `drive +list-comments` 的 `items[].reply_list.replies[].reply_id` |
26
+ | `--yes` | 真实执行时是 | 高风险确认;`--dry-run` 预览不需要 |
27
+
28
+ ## 行为说明
29
+
30
+ - 删除永久生效,回复没有回收站或撤销。
31
+ - 删除按 reply 逐条生效:删除某条回复(包括第一条/根回复)不影响其它回复;把该评论卡片下的所有回复都删完后,评论卡片在前端页面才不再显示。
32
+ - **删除整条评论没有专门的命令,需要用本命令删光该卡片下的所有回复**(先用 `drive +list-replies` 拉全回复 id)。删除前先和用户确认删的是某条回复还是整条评论。
33
+
34
+ ## 输出
35
+
36
+ ```json
37
+ {
38
+ "file_token": "docx_token",
39
+ "file_type": "docx",
40
+ "comment_id": "<comment_id>",
41
+ "reply_id": "<reply_id>",
42
+ "deleted": true
43
+ }
44
+ ```
45
+
46
+ ## 参考
47
+
48
+ - [lark-drive-list-replies](lark-drive-list-replies.md) -- 获取回复与 reply_id
@@ -11,7 +11,7 @@
11
11
  # 下载到指定路径
12
12
  lark-cli drive +download --file-token boxbc_xxx --output ./report.pdf
13
13
 
14
- # 只提供 token,默认保存为当前目录下同名文件
14
+ # 只提供 token,默认保存到当前目录
15
15
  lark-cli drive +download --file-token boxbc_xxx
16
16
  ```
17
17
 
@@ -25,6 +25,10 @@ https://xxx.feishu.cn/drive/file/boxbc_xxx
25
25
  file_token
26
26
  ```
27
27
 
28
+ ## 排障
29
+
30
+ - 如果返回 `HTTP 403`,可以使用 [lark-drive-preview](lark-drive-preview.md) 下载源文件产物。
31
+
28
32
  ## 参考
29
33
 
30
34
  - [lark-drive](../SKILL.md) -- 云空间(云盘/云存储)全部命令
@@ -14,72 +14,10 @@
14
14
 
15
15
  ```bash
16
16
  # 推荐:直接传用户给出的完整 URL。默认只查未解决评论。
17
- lark-cli drive +list-comments \
18
- --url "<DOCUMENT_URL>"
19
-
20
- # 只有用户明确要求包含已解决评论时,才查询已解决和未解决的全部评论。
21
- lark-cli drive +list-comments \
22
- --url "<DOCUMENT_URL>" \
23
- --solved-status all
24
-
25
- # 查询已解决评论。
26
- lark-cli drive +list-comments \
27
- --url "<DOCUMENT_URL>" \
28
- --solved-status true
29
-
30
- # 只查全文评论或局部评论。
31
- lark-cli drive +list-comments \
32
- --url "<DOCUMENT_URL>" \
33
- --comment-scope whole
34
-
35
- lark-cli drive +list-comments \
36
- --url "<DOCUMENT_URL>" \
37
- --comment-scope partial
38
-
39
- # 电子表格 URL 保留 /sheets/ 路径,直接原样传入;不要把 sheet token 拼成 /docx/<token>。
40
- lark-cli drive +list-comments \
41
- --url "https://example.larksuite.com/sheets/<SHEET_TOKEN>"
42
-
43
- # 妙搭 apps URL 使用 /page/<token>,shortcut 会识别为 file_type=apps。
44
- lark-cli drive +list-comments \
45
- --url "https://example.feishu.cn/page/<APPS_TOKEN>/"
46
-
47
- # wiki URL 会自动解包。
48
- lark-cli drive +list-comments \
49
- --url "https://example.larksuite.com/wiki/<WIKI_TOKEN>"
50
-
51
- # 裸 wiki token 也支持,但必须显式声明 --type wiki。
52
- lark-cli drive +list-comments \
53
- --token "<WIKI_TOKEN>" \
54
- --type wiki
55
-
56
- # 裸 token 需要声明 token 对应类型;不要默认当作 docx。这里以 sheet 为例。
57
- lark-cli drive +list-comments \
58
- --token "<DOCUMENT_TOKEN>" \
59
- --type sheet \
60
- --page-size 100
61
-
62
- # 妙搭裸 apps token 需要显式声明 --type apps。
63
- lark-cli drive +list-comments \
64
- --token "<APPS_TOKEN>" \
65
- --type apps
66
-
67
- # docx 需要评论定位关系时再带 need-relation;非 docx 会静默忽略。
68
- lark-cli drive +list-comments \
69
- --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" \
70
- --need-relation
71
-
72
- # 分页续跑。
73
- # 先看上一页输出的 has_more;只有 has_more=true 时,才用返回的 page_token 继续。
74
- lark-cli drive +list-comments \
75
- --url "<DOCUMENT_URL>" \
76
- --page-size 100 \
77
- --page-token "<NEXT_PAGE_TOKEN>"
78
-
79
- # 预览请求链路,不发真实请求。
80
- lark-cli drive +list-comments \
81
- --url "https://example.larksuite.com/wiki/<WIKI_TOKEN>" \
82
- --dry-run
17
+ lark-cli drive +list-comments --url "<DOCUMENT_URL>"
18
+
19
+ # 只有用户明确要求包含已解决评论时,才传 --solved-status all。
20
+ lark-cli drive +list-comments --url "<DOCUMENT_URL>" --solved-status all
83
21
  ```
84
22
 
85
23
  ## 参数
@@ -103,7 +41,26 @@ lark-cli drive +list-comments \
103
41
  - URL 输入时不需要传 `--type`;如果 URL 类型和显式 `--type` 冲突,shortcut 会返回 validation error,建议移除 `--type`。
104
42
  - wiki 输入会自动解析到真实文档,再查询评论列表。JSON 输出不额外返回 wiki token 或 wiki node。
105
43
  - 输出中的 `items` 保留评论卡片字段,外层补充 `file_token`、`file_type`、`has_more`、`page_token`、`count`;`count` 是当前页返回的评论卡片数。是否继续分页以 `has_more` 为准,而不是只看 `page_token` 是否存在。
106
- - 如果需要批量按评论 ID 查询、获取更多回复、创建/编辑/删除回复,继续使用原生 `drive file.comments batch_query` 或 `drive file.comment.replys.*`。
44
+
45
+ ## 评论卡片模型
46
+
47
+ - 返回的 `items` 是评论卡片列表,每个 `item` 对应用户界面中的一张评论卡片,不是平铺的互动消息列表。
48
+ - 创建评论时会同时创建该卡片里的第一条 reply;真正承载正文的是 `item.reply_list.replies`,其中第一条 reply(根回复)在用户视角下就是这张卡片里的“评论本身”。更新根回复即改写评论正文(见 [`lark-drive-update-reply.md`](lark-drive-update-reply.md));删除按 reply 逐条生效,卡片在最后一条回复被删时才消失(见 [`lark-drive-delete-reply.md`](lark-drive-delete-reply.md))。
49
+ - `item.has_more=true` 表示该评论卡片下还有回复未包含在本次返回中;这与外层 `has_more`(是否还有下一页评论卡片)是两个不同字段。需要完整回复时继续用 `drive +list-replies --comment-id <id>` 分页拉全。
50
+
51
+ ## 统计口径
52
+
53
+ - 统计“评论数”或“评论卡片数”:统计 `items` 长度;全量统计时对所有分页返回的 `items` 长度累加。
54
+ - 统计“回复数”:统计所有 `item.reply_list.replies` 长度之和,再减去 `items` 长度。
55
+ - 统计“总互动数”:统计所有 `item.reply_list.replies` 长度之和,包含每张评论卡片里的首条评论。
56
+ - 任一 `item.has_more=true` 时,先用 `drive +list-replies --comment-id <id>` 把该卡片的回复拉全,再做回复数或总互动数统计,否则会少算。
57
+
58
+ ## 排序
59
+
60
+ - 只有当用户明确提到“最新评论”“最后评论”“最早评论”时,才需要按 `create_time` 排序。
61
+ - 排序前必须拉完所有评论分页,不能只取第一页。
62
+ - “最新评论”/“最后评论”:按 `create_time` 降序取第一条。“最早评论”:按 `create_time` 升序取第一条。
63
+ - 用户只说“第一条评论”时,直接使用返回的第一条,不需要额外排序。
107
64
 
108
65
  ## 输出
109
66
 
@@ -121,5 +78,5 @@ lark-cli drive +list-comments \
121
78
  ## 参考
122
79
 
123
80
  - [lark-drive](../SKILL.md) -- 云空间(云盘/云存储)全部命令
124
- - [lark-drive-comments-guide](lark-drive-comments-guide.md) -- 评论统计、回复限制和原生 API 说明
81
+ - [lark-drive-list-replies](lark-drive-list-replies.md) -- 拉全某张卡片下的回复(统计与 `item.has_more` 补全)
125
82
  - [lark-drive-comment-location](lark-drive-comment-location.md) -- 使用 `need_relation` 定位 docx 正文
@@ -0,0 +1,54 @@
1
+ # drive +list-replies
2
+
3
+ > **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理。
4
+
5
+ 分页获取某条评论下的回复。
6
+
7
+ ## 命令
8
+
9
+ ```bash
10
+ # 推荐:完整 URL + 评论 ID
11
+ lark-cli drive +list-replies --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>'
12
+ ```
13
+
14
+ ## 参数
15
+
16
+ | 参数 | 必填 | 说明 |
17
+ |---|---|---|
18
+ | `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
19
+ | `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
20
+ | `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
21
+ | `--comment-id` | 是 | 评论 ID;来自 `drive +list-comments` 的 `items[].comment_id` |
22
+ | `--page-size` | 否 | 1-100,默认 50 |
23
+ | `--page-token` | 否 | 上次输出的 `page_token`;`has_more=true` 时用它续拉 |
24
+ | `--need-reaction` | 否 | 在回复上返回 reaction 数据,见 [`lark-drive-reactions.md`](lark-drive-reactions.md) |
25
+
26
+ ## 行为说明
27
+
28
+ - 根回复承载评论正文本身,是回复列表中创建最早的一条:**仅第一页(未传 `--page-token`)的 `items[0]` 是根回复**;翻页后(传了 `--page-token`)返回的 `items[0]` 只是普通回复,不要按位置当作根回复去更新或删除。
29
+ - 输出字段:`items[].reply_id` / `user_id` / `create_time` / `update_time` / `content.elements`,供 `+update-reply`、`+delete-reply` 使用。
30
+ - 检查回复归属(更新/删除前):比对 `items[].user_id`(open_id)与当前身份,判断是不是自己创建的回复。
31
+ - 输出的 `items` 始终是 JSON 数组(服务端省略时归一化为 `[]`)。
32
+
33
+ ## 输出
34
+
35
+ ```json
36
+ {
37
+ "file_token": "docx_token",
38
+ "file_type": "docx",
39
+ "comment_id": "<comment_id>",
40
+ "items": [],
41
+ "has_more": false,
42
+ "page_token": "",
43
+ "count": 0
44
+ }
45
+ ```
46
+
47
+ `items` 是回复数组;是否继续翻页以 `has_more` 为准,`has_more=true` 时用返回的 `page_token` 续拉。
48
+
49
+ ## 参考
50
+
51
+ - [lark-drive-list-comments](lark-drive-list-comments.md) -- 评论卡片模型与统计口径
52
+ - [lark-drive-update-reply](lark-drive-update-reply.md) -- 更新回复
53
+ - [lark-drive-delete-reply](lark-drive-delete-reply.md) -- 删除回复
54
+ - [lark-drive-reactions](lark-drive-reactions.md) -- reaction 查询与写入
@@ -20,8 +20,8 @@ lark-cli drive +member-add \
20
20
 
21
21
  | 参数 | 必填 | 说明 |
22
22
  |------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
23
- | `--token` | 是 | 裸 token 或完整 URL。路径支持 `/drive/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`;URL 输入可从路径推断 `--type`,裸 token 不做前缀推断 |
24
- | `--type` | 必填 | 目标资源类型:`docx` / `doc` / `sheet` / `bitable` / `file` / `folder` / `wiki` / `mindnote` / `slides` / `minutes`。传 URL 时可省略;裸 token 必须显式传;若同时传 URL 和 `--type`,显式 `--type` 覆盖 URL 推断 |
23
+ | `--token` | 是 | 裸 token 或完整 URL。路径支持 `/drive/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`、`/page/`;URL 输入可从路径推断 `--type`,裸 token 不做前缀推断 |
24
+ | `--type` | 必填 | 目标资源类型:`docx` / `doc` / `sheet` / `bitable` / `file` / `folder` / `wiki` / `mindnote` / `slides` / `minutes` / `apps`。传 URL 时可省略;裸 token 必须显式传;若同时传 URL 和 `--type`,显式 `--type` 覆盖 URL 推断 |
25
25
  | `--member-id` | 是 | 协作者 ID;逗号分隔可批量添加,最多 10 个 |
26
26
  | `--member-type` | 是 | member-id 的类型;支持 `email` / `openid` / `unionid` / `openchat` / `opendepartmentid` / `groupid` / `appid` / `wikispaceid`。在实际使用里,给当前应用授权仍优先推荐 bot `open_id` + `openid`。 |
27
27
  | `--member-kind` | 条件必填 | 仅当 `--member-type=wikispaceid` 时填写,映射到请求 body 的 `type` 字段。取值:`wiki_space_member` / `wiki_space_viewer` / `wiki_space_editor`。其他 member-type 禁止传此参数。 |
@@ -0,0 +1,65 @@
1
+ # drive +member-list(查询协作者/授权成员列表)
2
+
3
+ 本 skill 对应 shortcut:`lark-cli drive +member-list`。它读取 Drive 文档、文件、文件夹或 wiki 节点的协作者/授权成员列表。
4
+
5
+ ## 命令
6
+
7
+ ```bash
8
+ # URL 自动推断 type
9
+ lark-cli drive +member-list \
10
+ --token 'https://example.feishu.cn/drive/folder/<folder_token>' \
11
+ --as user --format json
12
+
13
+ # 查询附加字段
14
+ lark-cli drive +member-list \
15
+ --token '<token>' \
16
+ --type docx \
17
+ --fields 'name,type,external_label' \
18
+ --as user --format json
19
+
20
+ ```
21
+
22
+ ## 参数
23
+
24
+ | 参数 | 必填 | 说明 |
25
+ |------|------|------|
26
+ | `--token` | 是 | 裸 token 或完整 URL。URL 路径支持 `/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`、`/page/`。 |
27
+ | `--type` | 裸 token 必填 | 目标类型:`doc` / `sheet` / `file` / `wiki` / `bitable` / `docx` / `mindnote` / `minutes` / `slides` / `folder` / `apps`。URL 可自动推断;如果同时传 URL 和冲突的 `--type`,CLI 会拒绝。 |
28
+ | `--fields` | 否 | 默认不传。可取 `name` / `type` / `avatar` / `external_label`,支持逗号分隔;也可传 `*` 请求当前支持的所有附加字段。该参数只声明期望返回的字段,不授予字段级权限。 |
29
+ | `--perm-type` | 否 | 仅 `--type wiki` 有效;取值 `container` / `single_page`。 |
30
+ | `--dry-run` | 否 | 只打印请求,不调用 API。 |
31
+
32
+ ## 输出
33
+
34
+ JSON 输出原样透传 API 的 `data` :
35
+
36
+ ```json
37
+ {
38
+ "ok": true,
39
+ "identity": "user",
40
+ "data": {
41
+ "items": [
42
+ {
43
+ "member_type": "openid",
44
+ "member_id": "ou_xxx",
45
+ "perm": "view",
46
+ "perm_type": "container",
47
+ "type": "user",
48
+ "name": "zhangsan",
49
+ "external_label": false
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ ```
55
+
56
+ `--format pretty` 会轻量展示成员 ID、成员类型、权限、wiki `perm_type` 和已返回的附加字段。机器读取优先使用 `--format json`。
57
+
58
+ ## 行为说明
59
+
60
+ - **身份支持**:`--as user` 和 `--as bot` 均可用;缺 scope 或目标权限时按统一 permission 错误路径处理。
61
+ - **接口 scope**:查询成员列表需要 `docs:permission.member:retrieve`。
62
+ - **fields 默认**:不传 `--fields` 时按官方 API 默认,不请求姓名、头像、外部标签等附加字段;需要时显式指定。
63
+ - **字段级权限**:`--fields` 只控制请求哪些附加字段,不保证服务端一定返回。请求用户的 `name` / `avatar` 时,应用还需开通 `contact:user.base:readonly`(“获取用户基本信息”;已具备官方兼容的历史通讯录权限也可满足要求)。
64
+ - **缺字段语义**:字段级权限或数据可见性不足时,接口仍可能成功,但会省略相应敏感字段。响应中缺少已请求字段表示“服务端未返回”,不能解释为字段值为空,也不能据此认定成员信息完整。
65
+ - **folder 支持**:CLI 支持 `--type folder` 并会按需求发送 `type=folder`;部分环境的后端如果尚未放开 folder 枚举,可能返回 `99992402 field validation failed`。
@@ -0,0 +1,48 @@
1
+ # drive +permission-get-setting(查询权限设置)
2
+
3
+ 本 skill 对应 shortcut:`lark-cli drive +permission-get-setting`。它读取单个 Drive 资源自身的公开访问、分享、协作者管理、安全与评论权限设置,不递归读取文件夹中的子资源。
4
+
5
+ ## 命令
6
+
7
+ ```bash
8
+ # 通过 URL 自动推断 type
9
+ lark-cli drive +permission-get-setting \
10
+ --token 'https://example.feishu.cn/drive/folder/<folder_token>' \
11
+ --as user --format json
12
+
13
+ # 通过 bare token 显式指定 type
14
+ lark-cli drive +permission-get-setting \
15
+ --token '<folder_token>' \
16
+ --type folder \
17
+ --as user --format json
18
+ ```
19
+
20
+ ## 参数
21
+
22
+ | 参数 | 必填 | 说明 |
23
+ |------|------|------|
24
+ | `--token` | 是 | bare token 或完整 URL。URL 路径支持 `/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`、`/page/`。 |
25
+ | `--type` | bare token 必填 | 目标类型:`doc` / `sheet` / `file` / `wiki` / `bitable` / `docx` / `mindnote` / `minutes` / `slides` / `folder` / `apps`。URL 可自动推断;如果同时传 URL 和冲突的 `--type`,CLI 会拒绝。 |
26
+ | `--dry-run` | 否 | 只打印请求,不调用 API。 |
27
+
28
+ ## 输出
29
+
30
+ JSON 输出中的 `data.permission_public` 是目标当前的权限设置;服务端未返回该字段时,命令会报响应结构错误,而不会把其他字段伪装成权限设置。
31
+
32
+ ```json
33
+ {
34
+ "ok": true,
35
+ "identity": "user",
36
+ "data": {
37
+ "permission_public": {}
38
+ }
39
+ }
40
+ ```
41
+
42
+ `--format pretty` 会展示完整的 `permission_public` 对象,包括服务端将来新增的字段。
43
+
44
+ ## 行为说明
45
+
46
+ - **身份支持**:`--as user` 和 `--as bot` 均可用。
47
+ - **所需 scope**:`docs:permission.setting:read`。
48
+ - **单目标读取**:命令只读取 `--token` 指向资源自身的权限设置;`--type folder` 不会递归读取子资源。
@@ -2,15 +2,24 @@
2
2
 
3
3
  > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、权限处理和安全规则。
4
4
 
5
- 列出或下载 Drive 文件可用的预览产物。这个 shortcut 不猜测默认类型:
5
+ 查看或下载 Drive 文件内容,或列出并获取文件可用的预览产物。这个 shortcut 不猜测默认类型:
6
6
 
7
+ - 如果只需要查看或下载文件内容,或不关心 PDF/text/image 等转换预览,优先使用 `--type source_file --output <path>`
7
8
  - 只想看候选项时,用 `--list-only`
9
+ - 如果需要服务端生成的预览效果,例如 doc/docx 的 PDF 版式预览,先用 `--list-only` 查看候选项,再按候选项选择 `--type pdf` / `text` / `image` 等
8
10
  - 想下载时,必须显式传 `--type` 和 `--output`
11
+ - 如果 `--list-only` 没有可用预览候选项,或错误提示明确建议使用 `--type source_file`,可以改用 `--type source_file --output <path>` 查看文件内容;资源不存在、token 无效等终态错误需要先修正输入
9
12
  - 如果某个候选项还在生成中,会返回结构化错误并提示先重新 `--list-only`
10
13
 
11
14
  ### 命令
12
15
 
13
16
  ```bash
17
+ # 查看文件内容
18
+ lark-cli drive +preview \
19
+ --file-token "<FILE_TOKEN>" \
20
+ --type source_file \
21
+ --output ./artifacts/source
22
+
14
23
  # 列出可用预览候选项
15
24
  lark-cli drive +preview \
16
25
  --file-token "<FILE_TOKEN>" \
@@ -78,6 +87,7 @@ lark-cli drive +preview \
78
87
 
79
88
  - 不传 `--list-only` 时,必须显式传 `--type` 和 `--output`
80
89
  - 不会隐式选择“第一个候选项”作为默认下载目标
90
+ - `--type source_file` 用于查看文件内容,不依赖 `--list-only` 返回的候选项;它适合读取或保存源内容,不等同于 PDF/text/image 等转换预览
81
91
  - 候选项状态来自后端 `preview_status` 枚举,例如 `READY` / `PROCESSING` / `FAILED` / `NO_SUPPORT`
82
92
  - 本地文件名在未显式带扩展名时,会结合响应头自动补扩展名
83
93
 
@@ -0,0 +1,51 @@
1
+ # drive +react-reply
2
+
3
+ > **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理。reaction 查询规则、语义联想与完整 `reaction_type` 枚举见跨切面专题 [`lark-drive-reactions.md`](lark-drive-reactions.md)。
4
+
5
+ 给一条回复添加或删除表情回应(reaction)。操作对象始终是 `reply_id`。
6
+
7
+ ## 命令
8
+
9
+ ```bash
10
+ # 加 reaction
11
+ lark-cli drive +react-reply --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --reply-id '<id>' --emoji THUMBSUP --action add
12
+
13
+ # 删除自己加的 reaction:仍需传要删除的那个 --emoji
14
+ lark-cli drive +react-reply --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --reply-id '<id>' --emoji THUMBSUP --action delete
15
+ ```
16
+
17
+ ## 参数
18
+
19
+ | 参数 | 必填 | 说明 |
20
+ |---|---|---|
21
+ | `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
22
+ | `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
23
+ | `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
24
+ | `--reply-id` | 是 | 要操作的回复 ID;来自 `drive +list-replies` 的 `items[].reply_id`。给“这条评论”加/删表情时取该评论根回复(第一页 `items[0]`)的 `reply_id` |
25
+ | `--emoji` | 是 | `reaction_type` 值,大小写敏感;本地按平台枚举校验。完整列表与语义映射见 [`lark-drive-reactions.md`](lark-drive-reactions.md) |
26
+ | `--action` | 是 | `add` 添加;`delete` 删除当前身份自己加的 reaction |
27
+
28
+ ## 行为说明
29
+
30
+ - `--emoji` 大小写敏感(如 `THUMBSUP` 与 `ThumbsDown`),并做本地枚举校验兜底。服务端不校验 `reaction_type`:任意字符串都会被接受并持久化成一条损坏的 reaction,所以本地校验是唯一防线;直接调原生命令时必须自行保证取值合法。
31
+ - add / delete 幂等:重复添加已有 reaction、删除不存在的 reaction 都会成功返回且无副作用;delete 只取消当前身份自己加的 reaction。
32
+ - 对根回复操作等价于给评论本身加 / 删表情。
33
+ - 读回 reaction:在 `drive +list-replies` / `drive +batch-query-comments` 上带 `--need-reaction`;`count=0` 的条目是已删除 reaction 的残留,判断存在与否按 `count>0` 过滤。
34
+
35
+ ## 输出
36
+
37
+ ```json
38
+ {
39
+ "file_token": "docx_token",
40
+ "file_type": "docx",
41
+ "reply_id": "<reply_id>",
42
+ "reaction_type": "THUMBSUP",
43
+ "action": "add",
44
+ "updated": true
45
+ }
46
+ ```
47
+
48
+ ## 参考
49
+
50
+ - [lark-drive-reactions](lark-drive-reactions.md) -- reaction 查询规则、语义与完整枚举
51
+ - [lark-drive-list-replies](lark-drive-list-replies.md) -- 获取 reply_id
@@ -1,8 +1,8 @@
1
1
  # drive reactions
2
2
 
3
- > **前置条件:** 先阅读 [`../SKILL.md`](../SKILL.md) 了解 Drive 评论入口,再阅读 [`lark-drive-comments-guide.md`](lark-drive-comments-guide.md) 了解评论卡片模型、评论数/回复数统计口径、`file_token` / `file_type` 规则;同时阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
3
+ > **前置条件:** 先阅读 [`../SKILL.md`](../SKILL.md) 了解 Drive 评论入口,再阅读 [`lark-drive-list-comments.md`](lark-drive-list-comments.md) 了解评论卡片模型、评论数/回复数统计口径、`file_token` / `file_type` 规则;同时阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
4
 
5
- 处理文档评论 / 回复上的 reaction(点赞、表情、各表情数量、谁点了什么、添加/删除表情)。这个场景不常见,但规则比较集中:查询时只有在用户明确需要 reaction 信息时才带 `need_reaction=true`;写入时统一使用 `drive file.comment.reply.reactions update_reaction`,操作对象始终是 `reply_id`。
5
+ 处理文档评论 / 回复上的 reaction(点赞、表情、各表情数量、谁点了什么、添加/删除表情)。这个场景不常见,但规则比较集中:查询时只有在用户明确需要 reaction 信息时才在 `drive +list-comments` / `+batch-query-comments` / `+list-replies` 上带 `--need-reaction`;写入优先使用 `drive +react-reply`(命令参数细节见 [`lark-drive-react-reply.md`](lark-drive-react-reply.md)),操作对象始终是 `reply_id`。本文是跨切面专题,集中放 reaction 的查询规则、语义联想和完整枚举。
6
6
 
7
7
  > [!IMPORTANT]
8
8
  > **`reaction_type` 只能使用本文下方“完整 `reaction_type` 列表”中定义的枚举值。**
@@ -16,49 +16,50 @@
16
16
 
17
17
  ## 查询规则
18
18
 
19
- - `drive file.comments list`、`drive file.comments batch_query`、`drive file.comment.replys list` 都支持通过指定`need_reaction`查询reaction信息。
20
- - `need_reaction` 只在用户明确需要 reaction 信息时再带;如果用户只关心评论正文、回复正文、评论数 / 回复数,默认不要加。
21
- - 遍历评论卡片并顺带拿 reaction:使用 `drive file.comments list`。
22
- - 已知评论 ID,批量查看 reaction:使用 `drive file.comments batch_query`,并在请求体里带 `need_reaction=true`。
23
- - 某张评论卡片下继续翻页拉 reply reaction:使用 `drive file.comment.replys list`。
24
- - 如果 `drive file.comments list` 返回的某个 `item.has_more=true`,且用户要完整的 reply reaction 数据,后续每一页 `drive file.comment.replys list` 都要持续带 `need_reaction=true`。
19
+ - `drive +list-comments`、`drive +batch-query-comments`、`drive +list-replies` 都支持 `--need-reaction`。
20
+ - `--need-reaction` 只在用户明确需要 reaction 信息时再带;如果用户只关心评论正文、回复正文、评论数 / 回复数,默认不要加。
21
+ - 遍历评论卡片并顺带拿 reaction:使用 `drive +list-comments --need-reaction`。
22
+ - 已知评论 ID,批量查看 reaction:使用 `drive +batch-query-comments --need-reaction`。
23
+ - 某张评论卡片下继续翻页拉 reply reaction:使用 `drive +list-replies --need-reaction`,每一页都要持续带。
24
+ - 返回形状:`items[].reactions[]` 为 `{reaction_key, count, ahead_users[]}`;**`count=0` 的条目是已删除 reaction 的残留,统计与判断是否存在都要按 `count>0` 过滤**。
25
25
 
26
26
  ## 查询示例
27
27
 
28
28
  ```bash
29
29
  # 遍历评论卡片,并把 reaction 一起拿回来
30
- lark-cli drive file.comments list \
31
- --params '{"file_token":"<DOC_TOKEN>","file_type":"docx","need_reaction":true}'
30
+ lark-cli drive +list-comments --url '<DOC_URL>' --need-reaction
32
31
 
33
32
  # 已知 comment_id,批量查询评论卡片 reaction
34
- lark-cli drive file.comments batch_query \
35
- --params '{"file_token":"<DOC_TOKEN>","file_type":"docx"}' \
36
- --data '{"comment_ids":["<COMMENT_ID>"],"need_reaction":true}'
33
+ lark-cli drive +batch-query-comments --url '<DOC_URL>' --comment-ids '<COMMENT_ID>' --need-reaction
37
34
 
38
35
  # 继续翻某张评论卡片下的 replies,并把 reaction 一起拿回来
39
- lark-cli drive file.comment.replys list \
40
- --params '{"file_token":"<DOC_TOKEN>","comment_id":"<COMMENT_ID>","file_type":"docx","need_reaction":true}'
36
+ lark-cli drive +list-replies --url '<DOC_URL>' --comment-id '<COMMENT_ID>' --need-reaction
41
37
  ```
42
38
 
43
39
  ## 写入规则
44
40
 
45
- - 添加 / 删除 reaction 时,使用 `drive file.comment.reply.reactions update_reaction`。
46
- - 请求里必须带正确的 `file_type`,并在 body 中传 `action=add|delete`、`reply_id`、`reaction_type`。
47
- - `update_reaction` 的操作对象是 `reply_id`,不是 `comment_id`。
48
- - 如果用户说要给“这条评论”加 / 删 reaction,通常需要定位到该评论卡片首条 reply 的 `reply_id` 再操作。
41
+ - 添加 / 删除 reaction 优先使用 `drive +react-reply`;命令参数、目标定位和 dry-run 见 [`lark-drive-react-reply.md`](lark-drive-react-reply.md)。
42
+ - 操作对象是 `reply_id`(来自 `drive +list-replies` 的 `items[].reply_id`),不是 `comment_id`。
43
+ - 如果用户说要给"这条评论"加 / 删 reaction,取该评论卡片根回复(第一页 `items[0]`)的 `reply_id` 再操作。
44
+ - add / delete 幂等:重复添加已有 reaction、删除不存在的 reaction 都会成功返回且无副作用;delete 只取消当前身份自己加的 reaction。
45
+ - **服务端不校验 `reaction_type`:任意字符串都会被接受并持久化成一条损坏的 reaction**;`+react-reply --emoji` 会按平台枚举做本地校验兜底,直接调原生命令时必须自行保证取值合法。
46
+ - 原生 `drive file.comment.reply.reactions update_reaction` 只在需要 shortcut 未暴露的字段时兜底使用,`--params` 带 `file_token`/`file_type`,`--data` 传 `action=add|delete`、`reply_id`、`reaction_type`。
49
47
 
50
48
  ## 写入示例
51
49
 
52
50
  ```bash
53
51
  # 给某条 reply 添加一个点赞 reaction
54
- lark-cli drive file.comment.reply.reactions update_reaction \
55
- --params '{"file_token":"<DOC_TOKEN>","file_type":"docx"}' \
56
- --data '{"action":"add","reply_id":"<REPLY_ID>","reaction_type":"THUMBSUP"}'
52
+ lark-cli drive +react-reply --url '<DOC_URL>' \
53
+ --reply-id '<REPLY_ID>' --emoji THUMBSUP --action add
54
+
55
+ # 删除某条 reply 上已有的 DONE reaction(wiki URL 自动解包)
56
+ lark-cli drive +react-reply --url '<WIKI_URL>' \
57
+ --reply-id '<REPLY_ID>' --emoji DONE --action delete
57
58
 
58
- # 删除某条 reply 上已有的 DONE reaction
59
+ # 原生命令兜底(注意:原生路径没有本地枚举校验)
59
60
  lark-cli drive file.comment.reply.reactions update_reaction \
60
61
  --params '{"file_token":"<DOC_TOKEN>","file_type":"docx"}' \
61
- --data '{"action":"delete","reply_id":"<REPLY_ID>","reaction_type":"DONE"}'
62
+ --data '{"action":"add","reply_id":"<REPLY_ID>","reaction_type":"THUMBSUP"}'
62
63
  ```
63
64
 
64
65
  > [!CAUTION]
@@ -66,7 +67,7 @@ lark-cli drive file.comment.reply.reactions update_reaction \
66
67
 
67
68
  ## `reaction_type` 使用规则
68
69
 
69
- - `reaction_type` 必须传平台定义的枚举字符串,大小写敏感。
70
+ - `reaction_type` 必须传平台定义的枚举字符串,大小写敏感;`drive +react-reply` 的 `--emoji` 会本地校验(原生命令不校验、服务端也不校验)。
70
71
  - 不要擅自把 mixed-case 值改成全大写,例如 `Yes`、`No`、`Get`、`EatingFood`、`CheckMark`、`CrossMark` 都要按原值传。
71
72
  - **不要编造列表外的 `reaction_type`,也不要把自然语言描述臆造成平台未定义的新枚举**。
72
73
  - 如果用户给的是自然语言语义(如“点赞”“在处理中”“确认一下”),可以在下方枚举列表内选择语义最接近的现有值;如果是近似映射,应在执行时明确告知用户。
@@ -110,4 +111,5 @@ Music, Typing, Pepper, CheckMark, CrossMark
110
111
  ## 参考
111
112
 
112
113
  - [lark-drive](../SKILL.md) -- 云空间(云盘/云存储)全部命令
114
+ - [lark-drive-react-reply](lark-drive-react-reply.md) -- `+react-reply` 命令参数
113
115
  - [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数