@amaster.ai/pi-lark 0.1.2-beta.40 → 0.1.2-beta.42

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 (122) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-apps/SKILL.md +15 -3
  3. package/skills/lark-apps/references/lark-apps-automation.md +164 -0
  4. package/skills/lark-apps/references/lark-apps-db-execute.md +1 -1
  5. package/skills/lark-apps/references/lark-apps-db.md +2 -2
  6. package/skills/lark-apps/references/lark-apps-get.md +43 -0
  7. package/skills/lark-apps/references/lark-apps-html-publish.md +7 -2
  8. package/skills/lark-apps/references/lark-apps-init.md +1 -2
  9. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  10. package/skills/lark-apps/references/lark-apps-release-create.md +3 -1
  11. package/skills/lark-base/SKILL.md +1 -1
  12. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
  13. package/skills/lark-calendar/SKILL.md +89 -31
  14. package/skills/lark-calendar/references/lark-calendar-create.md +8 -39
  15. package/skills/lark-calendar/references/lark-calendar-room-find.md +5 -9
  16. package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
  17. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
  18. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  19. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
  20. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -5
  21. package/skills/lark-calendar/references/lark-calendar-update.md +2 -7
  22. package/skills/lark-doc/SKILL.md +1 -1
  23. package/skills/lark-doc/references/lark-doc-fetch.md +4 -2
  24. package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
  25. package/skills/lark-doc/references/lark-doc-whiteboard.md +4 -0
  26. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +35 -0
  27. package/skills/lark-doc/references/lark-doc-xml.md +3 -2
  28. package/skills/lark-drive/SKILL.md +17 -7
  29. package/skills/lark-drive/references/lark-drive-comment-location.md +16 -4
  30. package/skills/lark-drive/references/lark-drive-comments-guide.md +16 -8
  31. package/skills/lark-drive/references/lark-drive-delete.md +12 -0
  32. package/skills/lark-drive/references/lark-drive-export.md +39 -10
  33. package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
  34. package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
  35. package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
  36. package/skills/lark-drive/references/lark-drive-member-add.md +1 -1
  37. package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
  38. package/skills/lark-drive/references/lark-drive-pull.md +3 -3
  39. package/skills/lark-drive/references/lark-drive-push.md +33 -6
  40. package/skills/lark-drive/references/lark-drive-status.md +12 -14
  41. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
  42. package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
  43. package/skills/lark-im/SKILL.md +5 -4
  44. package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
  45. package/skills/lark-im/references/lark-im-messages-send.md +1 -1
  46. package/skills/lark-mail/SKILL.md +12 -9
  47. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  48. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  49. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  50. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  51. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  52. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  53. package/skills/lark-markdown/SKILL.md +3 -2
  54. package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
  55. package/skills/lark-minutes/SKILL.md +19 -4
  56. package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
  57. package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
  58. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
  59. package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
  60. package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
  61. package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
  62. package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
  63. package/skills/lark-shared/SKILL.md +26 -8
  64. package/skills/lark-sheets/SKILL.md +98 -29
  65. package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
  66. package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
  67. package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
  68. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
  69. package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
  70. package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
  71. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
  72. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
  73. package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
  74. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
  75. package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
  76. package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
  77. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
  78. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
  79. package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
  80. package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
  81. package/skills/lark-slides/SKILL.md +29 -18
  82. package/skills/lark-slides/references/asset-planning.md +16 -5
  83. package/skills/lark-slides/references/examples.md +57 -227
  84. package/skills/lark-slides/references/iconpark.md +2 -2
  85. package/skills/lark-slides/references/lark-slides-create.md +21 -2
  86. package/skills/lark-slides/references/lark-slides-media-upload.md +0 -1
  87. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
  88. package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
  89. package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -1
  90. package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
  91. package/skills/lark-slides/references/lark-slides-whiteboard.md +31 -30
  92. package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
  93. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +9 -7
  94. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +4 -4
  95. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +12 -10
  96. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +14 -13
  97. package/skills/lark-slides/references/planning-layer.md +32 -2
  98. package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
  99. package/skills/lark-slides/references/slides_xml_schema_definition.xml +1 -1
  100. package/skills/lark-slides/references/troubleshooting.md +7 -25
  101. package/skills/lark-slides/references/validation-checklist.md +18 -9
  102. package/skills/lark-slides/references/visual-planning.md +4 -3
  103. package/skills/lark-slides/references/xml-format-guide.md +50 -1
  104. package/skills/lark-slides/references/xml-schema-quick-ref.md +7 -3
  105. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +647 -52
  106. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +529 -0
  107. package/skills/lark-task/SKILL.md +1 -0
  108. package/skills/lark-task/references/lark-task-create.md +14 -1
  109. package/skills/lark-vc/references/lark-vc-recording.md +0 -2
  110. package/skills/lark-vc-agent/SKILL.md +24 -14
  111. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
  112. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
  113. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
  114. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +5 -2
  115. package/skills/lark-wiki/SKILL.md +4 -2
  116. package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
  117. package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
  118. package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
  119. package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
  120. package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
  121. package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
  122. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -220
@@ -1,6 +1,5 @@
1
1
  # calendar +suggestion
2
2
 
3
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
4
3
 
5
4
  根据非明确时间或一段时间范围,推荐多个可用时间块方案。帮助用户解决协调时间的难题。
6
5
 
@@ -8,8 +7,6 @@
8
7
  - ✅ **当用户需求涉及寻找时间块,且时间未完全确定**(如`今天`、`近三天`、`本周`、`下午`, `无时间描述`)时,调用此工具来获取推荐时间块给用户选择(包括但不限于预约日程)。
9
8
  - ❌ **当用户已经明确了具体的时间点**(如`今天下午3点`),则**不需要**调用此工具
10
9
 
11
- 需要的scopes: ["calendar:calendar.free_busy:read"]
12
-
13
10
  ## 命令
14
11
 
15
12
  ```bash
@@ -121,5 +118,4 @@ lark-cli calendar +suggestion \
121
118
  ## 参考
122
119
 
123
120
  - [lark-calendar-create](lark-calendar-create.md) — 创建日程
124
- - [lark-calendar-freebusy](lark-calendar-freebusy.md) — 查询忙闲时段和rsvp状态
125
- - [lark-calendar](../SKILL.md) — 日历完整 API
121
+ - [lark-calendar](../SKILL.md) — skill 入口与路由
@@ -1,13 +1,10 @@
1
1
  # calendar +update
2
2
 
3
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
3
 
5
4
  更新既有日程字段,或独立增量添加/移除参会人和会议室。
6
5
 
7
6
  `+update` 支持三类互相独立的动作:更新日程字段、添加参会人/会议室、移除参会人/会议室。它们可以单独执行,也可以在同一次命令中组合执行。
8
7
 
9
- 需要的 scopes: ["calendar:calendar.event:update"]
10
-
11
8
  ## 推荐命令
12
9
 
13
10
  ```bash
@@ -66,8 +63,8 @@ lark-cli calendar +update \
66
63
  - 如需替换某个参与人、群组或会议室,使用 `--remove-attendee-ids <旧ID>` + `--add-attendee-ids <新ID>`。
67
64
  - 会议室是 resource attendee,必须使用 `omm_` ID 添加到参会人列表,不能脱离日程单独预定。
68
65
  - 更新重复性日程时,必须先确定操作范围(仅此次/全部/此次及后续),然后按 [重复性日程操作规范](lark-calendar-recurring.md) 执行。
69
- - 如果需要验证更新结果,等待至少 2 秒后再查询,避免同步延迟导致读到旧数据。
70
66
  - 当同一次命令组合多个动作时,执行顺序为“日程字段 -> 移除参会人 -> 添加参会人”。若中途失败,不会自动回滚已成功步骤;错误信息会说明已完成的步骤。
67
+ **⚠️ 高风险操作**: 修改时间时必须先读取原日程时长并计算新 end。如果 end 计算错误,会导致日程时长变化,用户会直接感知,禁止擅自改变原日程的时长。
71
68
 
72
69
  ## 高级用法(完整 API 命令)
73
70
 
@@ -98,8 +95,6 @@ lark-cli calendar +update \
98
95
 
99
96
  ## 参考
100
97
 
101
- - [lark-calendar](../SKILL.md) -- 日历全部命令
102
- - [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
98
+ - [lark-calendar](../SKILL.md) -- skill 入口与路由
103
99
  - [lark-calendar-schedule-meeting](lark-calendar-schedule-meeting.md) -- 预约/改约会议与会议室工作流
104
100
  - [lark-calendar-room-find](lark-calendar-room-find.md) -- 查找可用会议室
105
- - [lark-calendar-freebusy](lark-calendar-freebusy.md) -- 查询忙闲
@@ -14,7 +14,7 @@ metadata:
14
14
 
15
15
  ```bash
16
16
  # 常用示例
17
- lark-cli docs +fetch --doc "文档URL或token"
17
+ lark-cli docs +fetch --doc "文档URL或token;若 URL 存在 #share-... 锚点,优先使用锚点方式读取,不要全文拉取"
18
18
  lark-cli docs +create --content '<title>标题</title><p>内容</p>'
19
19
  lark-cli docs +update --doc "文档URL或token" --command append --content '<p>内容</p>'
20
20
  ```
@@ -17,8 +17,10 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --detail with-ids
17
17
  lark-cli docs +fetch --doc Z1Fj...tnAc --scope outline --max-depth 3
18
18
 
19
19
  # 按 block id 区间精读
20
- lark-cli docs +fetch --doc Z1Fj...tnAc \
21
- --scope range --start-block-id blkA --end-block-id blkB --detail with-ids
20
+ lark-cli docs +fetch --doc Z1Fj...tnAc --scope range --start-block-id blkA --end-block-id blkB --detail with-ids
21
+
22
+ # URL 带 #share 选区锚点时自动局部读取
23
+ lark-cli docs +fetch --doc 'docURL#share-anchor'
22
24
 
23
25
  # 读整个章节(以标题 id 为锚点,自动展开到下一个同级/更高级标题前)
24
26
  lark-cli docs +fetch --doc Z1Fj...tnAc \
@@ -9,6 +9,20 @@
9
9
  > `mindnotes nodes create` 是新增/更新节点命令,**不是**新建一个新的思维笔记。
10
10
  > 如果用户要**新建思维笔记**,不要走本链路,改走 [lark-doc-whiteboard](lark-doc-whiteboard.md)。
11
11
 
12
+ ## 获取 `mindnote_id`
13
+
14
+ `--mindnote-id` 传 **Mindnote 文档 token**,不是节点 ID。`lark-cli mindnotes` 只负责读取和写入思维笔记内部节点。
15
+
16
+ ```bash
17
+ # 用户给了 Mindnote URL,或给了可能包着 Mindnote 的 Wiki URL
18
+ lark-cli drive +inspect --url "<mindnote_or_wiki_url>"
19
+ ```
20
+
21
+ 处理规则:
22
+
23
+ - 普通 Mindnote URL:`drive +inspect` 返回的 Mindnote token 可作为 `--mindnote-id`。
24
+ - Wiki URL:不要把 `/wiki/` 路径里的 wiki token 当作 `--mindnote-id`;必须先 `drive +inspect` 解包,确认底层类型是 `mindnote` 后再使用返回的真实 token。直接把 wiki token 传给 `mindnotes nodes list` 通常会返回 `3410003 resource not found`。
25
+
12
26
  ## 命令
13
27
 
14
28
  ```bash
@@ -96,8 +110,8 @@ lark-cli mindnotes nodes create \
96
110
 
97
111
  1. 先判断用户目标是不是“新建一个思维笔记”。
98
112
  2. 如果是新建思维笔记,切到 [lark-doc-whiteboard](lark-doc-whiteboard.md)。
99
- 3. 如果是操作已有思维笔记,先通过 token 类别判断。
100
- 4. 确认是 **Mindnote** 后再拿到 `mindnote_id`。
113
+ 3. 如果是操作已有思维笔记,先按上方「获取 `mindnote_id`」确认已拿到 Mindnote 文档 token。
114
+ 4. 确认目标类型是 **Mindnote** 后,把真实 Mindnote token 作为 `--mindnote-id`。
101
115
  5. 先执行 `mindnotes nodes list`,确认目标 `parent_id`。
102
116
  6. 新增子节点时,在 `nodes[]` 里传 `parent_id`;更新已有节点时,在 `nodes[]` 里传已有 `node_id`。
103
117
  7. 再执行 `mindnotes nodes create`。
@@ -110,4 +124,5 @@ lark-cli mindnotes nodes create \
110
124
 
111
125
  - [lark-doc-fetch](lark-doc-fetch.md) — 获取文档内容
112
126
  - [lark-doc-whiteboard](lark-doc-whiteboard.md) — 新建思维笔记走画板链路
127
+ - [lark-drive](../../lark-drive/SKILL.md) — 解析 Mindnote / Wiki 等云空间资源
113
128
  - [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
@@ -44,6 +44,8 @@ SubAgent 插入 SVG。
44
44
  </whiteboard>
45
45
  ```
46
46
 
47
+ 如果 Mermaid 已在本地文件中,可写成 `<whiteboard type="mermaid" path="@diagram.mmd"></whiteboard>`;CLI 会在写入前读取文件并展开为内联内容。
48
+
47
49
  ### 步骤 2B: SubAgent 使用 SVG 插入图表
48
50
 
49
51
  主 Agent 启动 SubAgent,让它用 `docs +create` / `docs +update` 插入:
@@ -56,6 +58,8 @@ SubAgent 插入 SVG。
56
58
  </whiteboard>
57
59
  ```
58
60
 
61
+ 如果 SVG 已在本地文件中,可写成 `<whiteboard type="svg" path="@diagram.svg"></whiteboard>`;PlantUML 文件同理使用 `<whiteboard type="plantuml" path="@sequence.puml"></whiteboard>`。
62
+
59
63
  Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Workflow] 章节指南:
60
64
 
61
65
  - doc token、插入位置(标题 / block_id / command)
@@ -0,0 +1,35 @@
1
+ # XML 扩展块补充说明
2
+
3
+ 本文件用于补充说明 block XML 扩展能力。常用标签和通用规则见 [`lark-doc-xml.md`](lark-doc-xml.md);后续新增其他 block 说明时可继续追加到本文件。
4
+
5
+ ## OKR block
6
+
7
+ OKR block 可用 XML 格式完整表达。创建前先参考 [`lark-okr`](../../lark-okr/SKILL.md) 确认可用周期;创建时只写 root-only `<okr cycle-id="..."/>` 挂载已有 OKR,不构造 Objective/KR/Progress 子树。
8
+
9
+ 获取时,XML 结构示例如下:
10
+
11
+ ```xml
12
+ <okr cycle-id="" cycle-name="CYCLE_NAME" user-name="USER_NAME">
13
+ <okr-objective objective-id="OBJECTIVE_ID" status="normal" percent="80" score="75">
14
+ <p>O 描述</p>
15
+ <okr-progress>
16
+ <p>O 进展</p>
17
+ <checkbox done="true">事项</checkbox>
18
+ <ul><li>列表项内可包含 <a href="https://example.com">链接</a></li></ul>
19
+ </okr-progress>
20
+ <okr-key-result key-result-id="KEY_RESULT_ID" status="risk" percent="60" score="80">
21
+ <p>KR 描述</p>
22
+ <okr-progress>
23
+ <p>KR 进展</p>
24
+ </okr-progress>
25
+ </okr-key-result>
26
+ </okr-objective>
27
+ </okr>
28
+ ```
29
+
30
+ - `cycle-id` 仅用于创建时挂载已有当前周期 OKR;`cycle-name`、`user-name` 只读。
31
+ - `objective-id`、`key-result-id` 为只读业务 ID,更新已有 OKR 时保持不变。
32
+ - `okr-objective` / `okr-key-result`
33
+ - 可更新 `status`、`percent`、`score`;`percent` / `score` 取值 0-100,`status` 取值 `unset`/`normal`/`risk`/`extended`。
34
+ - 不可更新 objective 和 key-result 内容描述。
35
+ - `okr-progress` 承载进展内容,支持更新。直接子节点支持 `<p>`、`<checkbox>`、`<grid>`、`<img>`、`<source>`、`<ol>`、`<ul>`、`<h1>` 到 `<h9>`。
@@ -41,12 +41,13 @@ p, h1-h9, ul, ol, li, table, thead, tbody, tr, th, td, blockquote, pre, code, hr
41
41
  文档中可嵌入外部资源块(属于容器标签的特殊形式),需要额外语法创建:
42
42
 
43
43
  - `<img>` — `<img href="https://..."/>` 上传网络图片
44
- - `<whiteboard>` — 简单图由 SubAgent 直接插入 `<whiteboard type="svg">完整自包含 SVG</whiteboard>`;复杂图使用 `<whiteboard type="blank"></whiteboard>` 先创建空白画板,再按 [`lark-doc-whiteboard.md`](lark-doc-whiteboard.md) 启动 SubAgent 调用 `lark-whiteboard` 写入;
44
+ - `<whiteboard>` — 简单图由 SubAgent 直接插入 `<whiteboard type="svg">完整自包含 SVG</whiteboard>`;也可用本地文件简写 `<whiteboard type="svg" path="@diagram.svg"></whiteboard>`、`<whiteboard type="mermaid" path="@flow.mmd"></whiteboard>`、`<whiteboard type="plantuml" path="@sequence.puml"></whiteboard>`,CLI 会写入前展开为内联内容;复杂图使用 `<whiteboard type="blank"></whiteboard>` 先创建空白画板,再按 [`lark-doc-whiteboard.md`](lark-doc-whiteboard.md) 启动 SubAgent 调用 `lark-whiteboard` 写入;
45
45
  - `<sheet>` — `<sheet type="blank"></sheet>` 空白;`<sheet sheet-id="SID" token="TOKEN"></sheet>` 复制已有
46
46
  - `<task>` — `<task task-id="GUID"></task>`,必传 task-id(任务 guid)
47
47
  - `<chat_card>` — `<chat_card chat-id="CHAT_ID"></chat_card>`,必传 chat-id
48
48
  - `<sub-page-list>` — `<sub-page-list></sub-page-list>` 子页面列表块;仅 wiki 文档可插入
49
- - bitable、base_ref、synced_reference、synced_source、okr — 不可创建,仅支持移动
49
+ - bitable、base_ref、synced_reference、synced_source — 不可创建,仅支持移动
50
+ - `<okr>` — 创建时仅支持 root-only `<okr cycle-id="..."/>` 挂载已有 OKR;完整结构与字段规则见 [`lark-doc-xml-extended-blocks.md`](lark-doc-xml-extended-blocks.md#okr-block)
50
51
 
51
52
  # 四、块级复制与移动
52
53
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: lark-drive
3
3
  version: 1.0.0
4
- description: "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、评论/权限/订阅、标题、版本和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。"
4
+ description: "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、评论/权限/订阅、标题、版本和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["lark-cli"]
@@ -21,10 +21,14 @@ metadata:
21
21
  ## 快速决策
22
22
 
23
23
  - 用户要**复制文档 / 创建副本 / 另存为副本**时,使用 `lark-cli drive files copy`。先用 `lark-cli schema drive.files.copy --format json` 确认参数;如果来源是 wiki URL/token,先用 `lark-cli drive +inspect` 获取底层 `token` 和 `type`,不要把 wiki token 直接当 `file_token`。`params.file_token` 传源文档 token,`data.folder_token` 传目标文件夹 token,`data.name` 传副本名称,`data.type` 传源文件类型(如 `docx` / `sheet` / `bitable` / `slides`)。示例:`lark-cli drive files copy --params '{"file_token":"<DOC_TOKEN>"}' --data '{"folder_token":"<FOLDER_TOKEN>","name":"<COPY_NAME>","type":"docx"}'`。如返回 `confirmation_required`,按 `lark-shared` 高风险审批协议向用户确认后,在原命令末尾追加 `--yes` 重试。
24
+ - 用户要**识别飞书 / doubao 云空间 URL 的类型和 token**时,可以先按 URL 路径形态做轻量判断;当路径已明确指向 docx / sheet / bitable / slides / file / folder 等资源时,可直接提取对应 token/type。传入 wiki URL、需要识别标题或 canonical URL、URL/token 有歧义,或后续操作依赖底层真实资源时,再使用 `lark-cli drive +inspect --url '<url>'` 进行识别;具体用法、失败处理和边界见 [`references/lark-drive-inspect.md`](references/lark-drive-inspect.md)。
25
+ - 高风险写操作(删除、公开权限修改、owner 转移、版本删除/回滚、批量移动/覆盖/同步)必须同时满足三个条件才执行:目标已解析为该操作可直接使用的执行对象,执行细节已明确到可直接调用命令(例如删除的 file-token/type、公开权限修改的共享范围、owner 转移的目标 owner、版本删除/回滚的 version id、移动/覆盖/同步的目标位置和冲突策略),且用户在本轮明确确认执行这些具体目标和执行细节。用户只说“删除没用的文件”“开放/共享给大家”“改成开放”“覆盖/移动这些”只表示目标状态;先只读发现并列出候选、权限档位或执行方案,停止等待用户确认。
24
26
  - 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要“权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
25
- - 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow-knowledge-organize.md`](references/lark-drive-workflow-knowledge-organize.md)。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
27
+ - 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](references/lark-drive-workflow-knowledge-organize.md) workflow。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
26
28
  - 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search`。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。
27
- - 用户要**根据文档评论定位正文位置**,例如 根据评论 review 文档、根据评论内容回看文档、区分多处相同引用文本时,对于 docx 类型(`file_type=docx`)的文档支持通过 `need_relation=true` 返回评论位置,其他类型暂不支持,具体用法需要先阅读 [`references/lark-drive-comment-location.md`](references/lark-drive-comment-location.md) 了解。
29
+ - 用户要**获取文档评论列表**时,优先使用 `lark-cli drive +list-comments --url '<url>'`,不要优先手写 `drive file.comments list`;支持妙搭 apps 的 `/page/<token>` URL;具体使用方式先阅读 [`references/lark-drive-list-comments.md`](references/lark-drive-list-comments.md)。
30
+ - 妙搭 apps 评论场景:除新增全文/局部评论不支持外,评论列表、批量查询、解决/恢复、回复创建/读取/更新/删除、reaction 添加/删除等评论管理能力已支持;使用原生命令时文档类型传 `apps`(`file_type=apps`),裸 token 调 shortcut 时传 `--type apps`。
31
+ - 用户要**根据文档评论定位正文位置**,例如 根据评论 review 文档、根据评论内容回看文档、区分多处相同引用文本时,对于 docx 类型(`file_type=docx`)的文档支持通过 `drive +list-comments --need-relation` 返回评论位置,其他类型会静默忽略该参数;具体用法需要先阅读 [`references/lark-drive-comment-location.md`](references/lark-drive-comment-location.md) 了解。
28
32
  - 用户给出 doubao.com 的云空间资源 URL/token,或明确提到豆包里的 file/folder/docx/sheet/bitable/wiki 资源时,仍按资源类型、URL 路径和 token 路由到本 skill;不要因为域名不是飞书而回退到 WebFetch。
29
33
  - 用户要把本地 `.xlsx` / `.csv` / `.base` 导入成 Base / 多维表格 / bitable,第一步必须使用 `lark-cli drive +import --type bitable`。
30
34
  - 用户要把本地 `.md` / `.docx` / `.doc` / `.txt` / `.html` 导入成在线文档,使用 `lark-cli drive +import --type docx`。
@@ -37,6 +41,7 @@ metadata:
37
41
  - 用户要在云空间(云盘/云存储)里新建文件夹,优先使用 `lark-cli drive +create-folder`。
38
42
  - 用户要查看某个文件有哪些可下载预览格式,或想下载 PDF / HTML / 文本 / 图片等预览产物,使用 `lark-cli drive +preview`。
39
43
  - 用户要获取某个文件的封面图,优先使用 `lark-cli drive +cover`;先 `--list-only` 看规格,再选 `--spec` 下载。
44
+ - 用户要导出云文档时,优先使用 `lark-cli drive +export --url '<文档 URL>' --file-extension <格式>`;详细参数、Wiki token 和错误码处理见 [`references/lark-drive-export.md`](references/lark-drive-export.md)。
40
45
  - 用户要把本地文件上传到知识库 / 文档库里的某个 wiki 节点下时,仍然使用 `lark-cli drive +upload --wiki-token <wiki_token>`;不要误切到 `wiki` 域命令。
41
46
  - `lark-base` 只负责导入完成后的 Base 内部操作(表、字段、记录、视图),不要在“本地文件 -> Base”这一步提前切到 `lark-base`。
42
47
  - 用户给的是 wiki URL / token,且后续还没明确底层资源类型时,先用 `lark-cli drive +inspect` 解包;`+inspect` 失败后不要自动切到别的写接口继续尝试,先按错误提示处理权限、scope 或链接问题。
@@ -59,6 +64,7 @@ metadata:
59
64
  | `/doc/` | `https://example.larksuite.com/doc/doccnxxxxxxxxx` | `file_token` | URL 路径中的 token 直接作为 `file_token` 使用 |
60
65
  | `/wiki/` | `https://example.larksuite.com/wiki/wikcnxxxxxxxxx` | `wiki_token` | 不能直接当底层 `file_token`;优先用 `drive +inspect` 解包获取 `obj_token` |
61
66
  | `/sheets/` | `https://example.larksuite.com/sheets/shtcnxxxxxxxxx` | `file_token` | URL 路径中的 token 直接作为 `file_token` 使用 |
67
+ | `/page/` | `https://example.feishu.cn/page/N1BWmMrqndT5ZcamAIBcnvDLnOf/` | apps token | 妙搭 apps 类型;用于评论列表时直接作为 `file_token`,`file_type=apps` |
62
68
  | `/drive/folder/` | `https://example.larksuite.com/drive/folder/fldcnxxxx` | `folder_token` | URL 路径中的 token 作为文件夹 token 使用 |
63
69
 
64
70
  ### Wiki 链接特殊处理
@@ -78,13 +84,14 @@ lark-cli drive +inspect --url 'https://xxx.feishu.cn/wiki/wikcnXXX'
78
84
  | 添加全文评论 | `file_token` | 不传 `--block-id` 时,`drive +add-comment` 默认创建全文评论;支持 `docx`、旧版 `doc` URL、白名单扩展名的 Drive file,以及最终解析为 `doc`/`docx`/`file` 的 wiki URL |
79
85
  | 下载文件 | `file_token` | 从文件 URL 中直接提取 |
80
86
  | 上传文件 | `folder_token` / `wiki_node_token` | 目标位置的 token |
81
- | 列出文档评论 | `file_token` | 同添加评论 |
87
+ | 列出文档评论 | URL 或 `file_token` | 优先使用 `drive +list-comments --url '<url>'`;wiki URL/token 会自动解析到底层真实 token/type;妙搭 apps URL 使用 `/page/<token>` |
82
88
 
83
89
  ### 评论能力入口
84
90
 
85
91
  - 添加评论优先使用 [`+add-comment`](references/lark-drive-add-comment.md):review / 审阅 / 校对场景默认尽量创建局部评论,不要把多个可定位问题合并为一条全文评论。
92
+ - 获取评论列表优先使用 [`+list-comments`](references/lark-drive-list-comments.md):推荐传 `--url`,支持 wiki 自动解包;参数细节见 reference。
86
93
  - 评论查询、统计、排序、回复限制,先读 [`lark-drive-comments-guide.md`](references/lark-drive-comments-guide.md)。
87
- - 需要根据评论定位正文位置时,先确认目标是 `file_type=docx`,再读 [`lark-drive-comment-location.md`](references/lark-drive-comment-location.md);其他文档类型暂不支持返回定位字段。
94
+ - 需要根据评论定位正文位置时,先确认目标是 `file_type=docx`,再读 [`lark-drive-comment-location.md`](references/lark-drive-comment-location.md),并使用 `drive +list-comments --need-relation`;其他文档类型会静默忽略该参数。
88
95
  - reaction / 表情相关操作先读 [`lark-drive-reactions.md`](references/lark-drive-reactions.md);只有用户明确需要 reaction 信息时才带 `need_reaction=true`。
89
96
  - `drive +add-comment` 的 `--content` 需要传 `reply_elements` JSON 数组字符串,例如 `--content '[{"type":"text","text":"正文"}]'`。
90
97
  - `slides` 评论要求显式传 `--block-id <slide-block-type>!<xml-id>`;CLI 会将其拆分后写入 `anchor.block_id` 和 `anchor.slide_block_type`。其中 `<xml-id>` 是 PPT XML 协议中的元素 `id`;不支持 `--selection-with-ellipsis` 和 `--full-comment`。
@@ -102,7 +109,7 @@ lark-cli drive +inspect --url 'https://xxx.feishu.cn/wiki/wikcnXXX'
102
109
  |----------|------|----------|
103
110
  | `not exist` | 使用了错误的 token | 检查 token 类型,wiki 链接必须先查询获取 `obj_token` |
104
111
  | `permission denied` | 没有相关操作权限 | 引导用户检查当前身份对文档/文件是否有相应操作权限;如果需要,可以授予相应权限 |
105
- | `invalid file_type` | file_type 参数错误 | 根据 `obj_type` 传入正确的 file_type(docx/doc/sheet/slides/bitable) |
112
+ | `invalid file_type` | file_type 参数错误 | 根据 `obj_type` 传入正确的 file_type(docx/doc/sheet/slides/bitable/apps) |
106
113
  | `232140101` / `232140100` / `233523001`(常见于 `drive +import` 的 `job_error_msg`) | 同一位置下存在并发导入 / 创建操作 | 批量导入到同一文件夹、根目录或同一 `--target-token` 时改为串行执行;每个失败项每次重试前等待几秒,总共最多重试 3 次,仍失败就停止并报告冲突 |
107
114
 
108
115
  ### 权限能力入口
@@ -137,6 +144,7 @@ Shortcut 是对常用操作的高级封装(`lark-cli drive +<verb> [flags]`)
137
144
  | [`+push`](references/lark-drive-push.md) | 将本地目录推送到 Drive 文件夹,支持 skip / smart / overwrite 与确认后删除远端。 |
138
145
  | [`+create-shortcut`](references/lark-drive-create-shortcut.md) | 在另一个文件夹里创建现有 Drive 文件的快捷方式。 |
139
146
  | [`+add-comment`](references/lark-drive-add-comment.md) | 给 doc/docx/file/sheet/slides/base(bitable) 添加评论,也支持解析到这些类型的 wiki URL;评论统计、回复和 reaction 细则见 [`lark-drive-comments-guide.md`](references/lark-drive-comments-guide.md)。 |
147
+ | [`+list-comments`](references/lark-drive-list-comments.md) | 获取 doc/docx/sheet/file/slides/base(bitable)/apps 评论列表;优先传 URL,支持 wiki 自动解包和妙搭 `/page/<token>` URL。 |
140
148
  | [`+export`](references/lark-drive-export.md) | 将 doc/docx/sheet/bitable/slides 导出为本地文件。 |
141
149
  | [`+export-download`](references/lark-drive-export-download.md) | 根据导出产物的 file_token 下载文件。 |
142
150
  | [`+import`](references/lark-drive-import.md) | 将本地文件导入为飞书在线文档、表格、多维表格或幻灯片。 |
@@ -162,7 +170,7 @@ lark-cli drive <resource> <method> [flags] # 调用 API
162
170
 
163
171
  > **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。
164
172
  >
165
- > **高频原生命令:** 读取 Drive 文件夹清单时使用 `drive files list`,必须按 [`references/lark-drive-files-list.md`](references/lark-drive-files-list.md) 的模板通过 `--params` 传 `folder_token` / `page_token`,并手动处理分页;不要把 `--page-all` 输出直接交给 JSON 解析脚本。
173
+ > **高频原生命令:** 读取 Drive 文件夹清单时使用 `drive files list`,使用前先读 [`references/lark-drive-files-list.md`](references/lark-drive-files-list.md),按模板通过 `--params` 传参并手动处理分页;不要把 `--page-all` 输出直接交给 JSON 解析脚本。
166
174
 
167
175
  ### files
168
176
 
@@ -204,10 +212,12 @@ lark-cli drive <resource> <method> [flags] # 调用 API
204
212
  ### file.statistics
205
213
 
206
214
  - `get` — 获取文件统计信息
215
+ - 获取 docx / 文件统计信息时,建议优先使用 typed flags:`lark-cli drive file.statistics get --file-token <token> --file-type <type> --format json`;`--params` JSON 也支持,适合批量拼装或 raw 参数场景。
207
216
 
208
217
  ### file.view_records
209
218
 
210
219
  - `list` — 获取文档的访问者记录
220
+ - 查看 docx 最近访问记录、返回 open_id、最多 N 条时,建议优先使用 typed flags:`lark-cli drive file.view_records list --file-token <docx_token> --file-type docx --page-size <N> --viewer-id-type open_id --format json`;`--params` JSON 也支持,适合批量拼装、分页续跑或 raw 参数场景。
211
221
 
212
222
  ### file.comment.reply.reactions
213
223
 
@@ -1,15 +1,27 @@
1
1
  # 文档评论定位字段
2
2
 
3
- 当用户需要根据评论定位文档正文位置、对文档做 review、区分多处相同引用文本,或把评论落点映射到 `docs +fetch --detail with-ids` 的内容时,docx 文档的评论查询必须带 `need_relation=true`。
3
+ 当用户需要根据评论定位文档正文位置、对文档做 review、区分多处相同引用文本,或把评论落点映射到 `docs +fetch --detail with-ids` 的内容时,优先使用 `drive +list-comments --need-relation` 查询 docx 评论位置。
4
4
 
5
5
  ## 适用范围
6
6
 
7
7
  - 当前只有 `file_type=docx` 支持通过 `need_relation=true` 查询评论的位置,并返回可用于定位正文 block 的 `relation`、`parent_type`、`parent_token` 等字段。
8
- - 其他文件类型暂不支持通过 `need_relation` 查询评论位置。遇到 sheet、bitable、slides、普通文件等类型的评论时,不要承诺可以用 `need_relation` 精确定位正文位置,应退回普通评论字段、对应资源能力下钻或人工确认。
8
+ - `drive +list-comments` 会在目标不是 docx 时静默忽略 `--need-relation`,避免把无效参数传给 OpenAPI。遇到 sheet、bitable、slides、普通文件等类型的评论时,不要承诺可以用 `need_relation` 精确定位正文位置,应退回普通评论字段、对应资源能力下钻或人工确认。
9
9
 
10
10
  ## 调用方式
11
11
 
12
- 分页列出评论时,把 `need_relation` 放在 query params:
12
+ 分页列出评论时,优先传 URL;Wiki URL / Wiki token 会自动解析到底层真实 token/type:
13
+
14
+ ```bash
15
+ lark-cli drive +list-comments --url '<docx_or_wiki_url>' --need-relation
16
+ ```
17
+
18
+ 如果只有 Wiki token,显式传 `--type wiki`:
19
+
20
+ ```bash
21
+ lark-cli drive +list-comments --token '<wiki_token>' --type wiki --need-relation
22
+ ```
23
+
24
+ 只有在需要未被 shortcut 暴露的底层参数时,才直接调用 raw OpenAPI。此时把 `need_relation` 放在 query params:
13
25
 
14
26
  ```bash
15
27
  lark-cli drive file.comments list \
@@ -126,7 +138,7 @@ lark-cli docs +fetch --doc '<doc_token_or_url>' --detail with-ids
126
138
  ## 定位流程
127
139
 
128
140
  1. 确认目标是 `file_type=docx`;只有 docx 文档支持通过 `need_relation` 查询评论位置。
129
- 2. 用 `drive file.comments list` 或 `drive file.comments batch_query` 获取评论,并带 `need_relation=true`。
141
+ 2. 用 `drive +list-comments --need-relation` 获取评论;已知评论 ID 且需要批量查询时,可用 `drive file.comments batch_query` 并带 `need_relation=true`。raw `drive file.comments list` 仅作为低层参数兜底。
130
142
  3. 用 `docs +fetch --detail with-ids` 获取文档内容。
131
143
  4. 对每条评论先看 `relation`:
132
144
  - 如果存在 `relation.relation`,解析这个 JSON 字符串。
@@ -1,6 +1,6 @@
1
1
  # Drive 评论查询、统计与回复指南
2
2
 
3
- > 前置条件:先阅读 [`../SKILL.md`](../SKILL.md) 的“评论能力入口”,添加评论参数细节见 [`lark-drive-add-comment.md`](lark-drive-add-comment.md),reaction 见 [`lark-drive-reactions.md`](lark-drive-reactions.md)。
3
+ > 前置条件:先阅读 [`../SKILL.md`](../SKILL.md) 的“评论能力入口”,添加评论参数细节见 [`lark-drive-add-comment.md`](lark-drive-add-comment.md),获取评论列表优先使用 [`lark-drive-list-comments.md`](lark-drive-list-comments.md),reaction 见 [`lark-drive-reactions.md`](lark-drive-reactions.md)。
4
4
 
5
5
  ## 评论模式
6
6
 
@@ -16,14 +16,21 @@
16
16
 
17
17
  ## 查询默认口径
18
18
 
19
- `drive file.comments list` 默认必须传 `is_solved:false`,即仅查询未解决评论。即使用户说“所有评论”“全部评论”“把评论都列出来”,只要没有明确提到要包含已解决评论,仍然按默认口径查询未解决评论。仅当用户明确要求包含已解决评论时,才可省略 `is_solved` 参数。
19
+ 优先使用 `drive +list-comments`,不要优先手写 `drive file.comments list`。shortcut 默认 `--solved-status false`,即仅查询未解决评论。即使用户说“所有评论”“全部评论”“把评论都列出来”,只要没有明确提到包含已解决评论,仍然按默认口径查询未解决评论;仅当用户明确要求包含已解决评论时,才传 `--solved-status all`。只查已解决评论时传 `--solved-status true`。
20
20
 
21
21
  ```bash
22
22
  # 默认查询:仅未解决评论
23
- lark-cli drive file.comments list --params '{"file_token":"xxx","file_type":"docx","is_solved":false}'
23
+ lark-cli drive +list-comments --url '<DOC_URL>'
24
+
25
+ # 全部评论:包含已解决和未解决
26
+ lark-cli drive +list-comments --url '<DOC_URL>' --solved-status all
27
+
28
+ # 已解决评论
29
+ lark-cli drive +list-comments --url '<DOC_URL>' --solved-status true
30
+
31
+ # 裸 wiki token
32
+ lark-cli drive +list-comments --token '<WIKI_TOKEN>' --type wiki
24
33
 
25
- # 包含已解决评论:仅当用户明确要求时使用
26
- lark-cli drive file.comments list --params '{"file_token":"xxx","file_type":"docx"}'
27
34
  ```
28
35
 
29
36
  ## 评论卡片与统计
@@ -53,12 +60,13 @@ lark-cli drive file.comments list --params '{"file_token":"xxx","file_type":"doc
53
60
  ## batch_query 与 list
54
61
 
55
62
  - `drive file.comments batch_query` 用于已知评论 ID 后的批量查询,需要传入具体评论 ID 列表。
56
- - `drive file.comments list` 用于分页获取评论列表,适合统计评论总数、遍历所有评论、获取最新或最后 N 条评论等场景。
63
+ - `drive +list-comments` 用于分页获取评论列表;如果要统计全量评论数、遍历包含已解决评论在内的所有评论、获取全量最新评论或最后 N 条评论,请先传 `--solved-status all` 并拉完所有分页。它会处理 URL、wiki token 和 token/type 匹配问题。
64
+ - `drive file.comments list` 是原生命令。需要 shortcut 未暴露的字段时才使用。
57
65
 
58
66
  ## 评论定位字段
59
67
 
60
- - 需要根据评论定位到文档正文位置时(例如根据评论 review 文档、区分多处相同引用文本、把评论落点映射到 `docs +fetch` 的 block),先确认目标是 `file_type=docx`,再阅读 [`lark-drive-comment-location.md`](lark-drive-comment-location.md)。
61
- - 其他文档类型暂不支持返回定位字段。
68
+ - 需要根据评论定位到文档正文位置时(例如根据评论 review 文档、区分多处相同引用文本、把评论落点映射到 `docs +fetch` 的 block),先确认目标是 `file_type=docx`,再阅读 [`lark-drive-comment-location.md`](lark-drive-comment-location.md),并使用 `drive +list-comments --need-relation`。
69
+ - `--need-relation` 仅 docx 生效;其他文档类型会静默忽略。
62
70
 
63
71
  ## 原生 API
64
72
 
@@ -7,6 +7,18 @@
7
7
 
8
8
  > [!CAUTION]
9
9
  > 这是**高风险写操作**。CLI 层要求显式传 `--yes`;如果用户已经明确要求删除且目标明确,直接执行并带上 `--yes`。
10
+ > “目标明确”表示用户给出了可解析为 `file-token` + `type` 的具体 URL/token,或对你刚列出的可解析资源列表逐项/整批确认删除。按“没用的”“临时的”“疑似重复的”“全部旧文件”等描述搜索出来的候选属于待确认目标;这类请求先列候选、说明筛选依据和影响范围,然后停止等待确认。
11
+
12
+ ## 删除前门槛
13
+
14
+ 执行 `drive +delete --yes` 前同时满足:
15
+
16
+ | 条件 | 可执行信号 |
17
+ |------|------------|
18
+ | 具体目标 | 单个可解析为 `file-token` + `type` 的 URL/token,或用户确认过且可解析的资源列表 |
19
+ | 执行确认 | 用户在本轮明确说确认删除这些具体目标 |
20
+
21
+ 若缺少任一条件,使用 `drive +search`、`drive +inspect` 或只读 API 收集候选并回复待确认清单;启发式规则(打开时间、标题模式、owner、文件类型等)只能作为候选筛选依据,不能升级为删除确认。执行 `drive +delete` 时必须使用解析后的 `--file-token` 和 `--type`。
10
22
 
11
23
  ## 命令
12
24
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
5
5
 
6
- 把 `doc` / `docx` / `sheet` / `bitable` / `slides` 导出到本地文件。这个 shortcut 内置有限轮询:
6
+ 把 `doc` / `docx` / `sheet` / `bitable` / `slides`(也支持 Wiki URL / Wiki node token 自动解包)导出到本地文件。这个 shortcut 内置有限轮询:
7
7
 
8
8
  - 如果导出任务在轮询窗口内完成,会直接下载到本地目录
9
9
  - 如果轮询结束仍未完成,会返回 `ticket`、`ready=false`、`timed_out=true` 和 `next_command`
@@ -13,6 +13,22 @@
13
13
  ## 命令
14
14
 
15
15
  ```bash
16
+ # 推荐:直接传 URL,CLI 自动解析类型和 token
17
+ lark-cli drive +export \
18
+ --url "https://example.feishu.cn/docx/<DOCX_TOKEN>" \
19
+ --file-extension pdf
20
+
21
+ # Wiki URL 也推荐直接传,CLI 会先解析到底层 obj_token/obj_type
22
+ lark-cli drive +export \
23
+ --url "https://example.feishu.cn/wiki/<WIKI_NODE_TOKEN>" \
24
+ --file-extension pdf
25
+
26
+ # 只有裸 Wiki node token 时,显式传 --doc-type wiki,让 CLI 先解析到底层文档类型
27
+ lark-cli drive +export \
28
+ --token "<WIKI_NODE_TOKEN>" \
29
+ --doc-type wiki \
30
+ --file-extension pdf
31
+
16
32
  # 导出新版文档为 pdf,默认保存到当前目录
17
33
  lark-cli drive +export \
18
34
  --token "<DOCX_TOKEN>" \
@@ -96,8 +112,9 @@ lark-cli drive +export \
96
112
 
97
113
  | 参数 | 必填 | 说明 |
98
114
  |------|------|------|
99
- | `--token` | 是 | 源文档 token |
100
- | `--doc-type` | 是 | 源文档类型:`doc` / `docx` / `sheet` / `bitable` / `slides` |
115
+ | `--url` | 与 `--token` 二选一 | 源文档 URL,推荐优先使用;CLI 自动解析类型和 token,Wiki URL 会解析到底层 `obj_token/obj_type` |
116
+ | `--token` | 与 `--url` 二选一 | 源文档裸 token;裸 token 必须同时传 `--doc-type`。裸 Wiki node token 必须传 `--doc-type wiki`,CLI 会先解析到底层 `obj_token/obj_type` |
117
+ | `--doc-type` | 条件必填 | 源文档类型:`doc` / `docx` / `sheet` / `bitable` / `slides` / `wiki`;仅当使用裸 `--token` 时必填,使用 `--url` 时自动推断。`wiki` 只用于裸 Wiki node token,解析后会按真实底层类型发起导出 |
101
118
  | `--file-extension` | 是 | 导出格式:`docx` / `pdf` / `xlsx` / `csv` / `markdown` / `base` / `pptx` |
102
119
  | `--sub-id` | 条件必填 | 当 `sheet` / `bitable` 导出为 `csv` 时必填 |
103
120
  | `--only-schema` | 否 | 仅当 `--doc-type bitable --file-extension base` 时可用;只导出多维表格结构,不导出记录数据 |
@@ -107,22 +124,34 @@ lark-cli drive +export \
107
124
 
108
125
  ## 关键约束
109
126
 
110
- - `markdown` 只支持 `docx`
111
- - `base` 只支持 `bitable`
112
- - `--only-schema` 只支持 `bitable` 导出为 `.base`,用于仅导出表结构
113
- - `pptx` 只支持 `slides`
127
+ - 推荐优先传 `--url`,不要从 URL 手工拆 token 和 type;尤其是 Wiki URL,CLI 会自动解包到底层资源
128
+ - `--url` 和 `--token` 互斥
129
+ - 裸 `--token` 必须传 `--doc-type`;裸 Wiki node token 使用 `--doc-type wiki`
130
+ - `doc` 支持导出为 `docx` / `pdf`
131
+ - `docx` 支持导出为 `docx` / `pdf` / `markdown`
132
+ - `sheet` 支持导出为 `xlsx` / `csv`
133
+ - `bitable` 支持导出为 `xlsx` / `csv` / `base`
114
134
  - `slides` 支持导出为 `pptx` / `pdf`
115
- - `sheet` / `bitable` 导出为 `csv` 时必须带 `--sub-id`
135
+ - `csv` 只支持 `sheet` / `bitable`,且必须带 `--sub-id`
136
+ - `--only-schema` 只支持 `bitable` 导出为 `.base`,用于仅导出表结构
137
+ - 如果格式不匹配,CLI 会返回 typed validation error,并在 `hint` 中给出可重试的 `--file-extension` 建议;例如 `docx + csv` 会提示改用 `docx/pdf/markdown`,或改传 sheet/bitable URL
116
138
  - shortcut 内部固定有限轮询:最多 10 次,每次间隔 5 秒
117
139
  - 轮询超时不是失败;会返回 `ticket`、`timed_out=true` 和 `next_command`,供后续继续查询
118
140
 
141
+ ## 错误码处理
142
+
143
+ | 错误码 | 含义 | 处理方式 |
144
+ |--------|------|----------|
145
+ | `1069914` | token 非法或 token/type 不匹配;常见原因是把 Wiki node token 当作底层 `docx` / `sheet` / `bitable` token 使用,没有传 `--doc-type wiki` | 优先改用 `--url <Wiki URL>`;只有裸 Wiki token 时,用 `--token <WIKI_NODE_TOKEN> --doc-type wiki`。不确定 token 类型时,先用 `lark-cli drive +inspect --url <TOKEN> --type wiki` 检查是否能解包为 Wiki node;如果不是 Wiki token,再检查 token 来源、`--doc-type` 是否与实际资源类型一致 |
146
+ | `1069902` | 没有当前导出任务所需权限 | 不要直接重试同一命令;先确认当前 `--as` 身份是否能访问该文档、是否有下载/导出权限,以及文档是否受分享、密级或租户策略限制。需要补权限时,让文档 owner 或管理员授权后再执行 |
147
+ | `99991679` | 缺少 OpenAPI scope | 按错误 envelope 中的 `missing_scopes` / `required_scope` / `hint` 补齐授权;常见方式是重新执行 `lark-cli auth login --scope "<缺失 scope>"`。补 scope 前不要反复重试导出命令 |
148
+
119
149
  ## 推荐续跑方式
120
150
 
121
151
  ```bash
122
152
  # 第一步:先尝试直接导出
123
153
  lark-cli drive +export \
124
- --token "<DOCX_TOKEN>" \
125
- --doc-type docx \
154
+ --url "<DOCX_URL>" \
126
155
  --file-extension pdf \
127
156
  --file-name "weekly-report.pdf"
128
157
 
@@ -41,12 +41,37 @@ lark-cli drive files list \
41
41
 
42
42
  也可以省略 `folder_token` 字段来请求根目录,但在 Agent 编排中建议显式传空字符串,避免把“忘记传参数”和“确认请求根目录”混在一起。
43
43
 
44
+ ## 按时间排序
45
+
46
+ 默认不要传 `order_by` / `direction`;服务端会按默认顺序返回。只有用户明确要求按创建时间或编辑时间排序时,才使用服务端排序参数。
47
+
48
+ 按创建时间升序列出当前文件夹直接子项:
49
+
50
+ ```bash
51
+ lark-cli drive files list \
52
+ --params '{"folder_token":"<folder_token>","order_by":"CreatedTime","direction":"ASC","page_size":200}' \
53
+ --format json
54
+ ```
55
+
56
+ 按编辑时间降序列出当前文件夹直接子项:
57
+
58
+ ```bash
59
+ lark-cli drive files list \
60
+ --params '{"folder_token":"<folder_token>","order_by":"EditedTime","direction":"DESC","page_size":200}' \
61
+ --format json
62
+ ```
63
+
64
+ 以上示例返回排序后的当前页;如果返回 `has_more=true`,保持相同 `folder_token` / `order_by` / `direction` / `page_size`,把 `next_page_token` 放入 `page_token` 继续翻页。
65
+
44
66
  ## 参数规则
45
67
 
46
68
  1. `folder_token` 必须放在 `--params` JSON 里;不要使用不存在的 `--folder-token` flag。
47
69
  2. `page_token` 必须放在 `--params` JSON 里;不要依赖 shell 变量拼接不完整的 JSON。
48
- 3. `page_size` 建议显式设置为 `200`。如果服务端或环境返回参数错误,再降级到服务端允许的值,并记录降级原因。
49
- 4. 调用前如果不确定字段结构,先运行 `lark-cli schema drive.files.list` 查看 `--params` 结构。
70
+ 3. 默认不要传 `order_by` / `direction`;只有用户明确要求按创建时间 / 编辑时间排序时才使用服务端排序参数。
71
+ 4. 排序参数映射:创建时间 -> `order_by:"CreatedTime"`;编辑时间 / 修改时间 -> `order_by:"EditedTime"`;升序 -> `direction:"ASC"`;降序 -> `direction:"DESC"`。不要省略排序参数后再用 Python / shell 客户端排序替代。
72
+ 5. 排序查询建议带 `page_size:200` 减少翻页;只有用户要求完整分页、递归盘点、大目录全量导出,或当前页返回 `has_more=true` 后继续翻页时,才加入 `page_token`。
73
+ 6. `page_size` 在分页、递归盘点或全量导出时建议显式设置为 `200`。如果服务端或环境返回参数错误,再降级到服务端允许的值,并记录降级原因。
74
+ 7. 调用前如果不确定字段结构,先运行 `lark-cli schema drive.files.list` 查看 `--params` 结构。
50
75
 
51
76
  ## 返回结构与解析
52
77
 
@@ -47,4 +47,6 @@ JSON 输出包含以下字段:
47
47
  - `--url` 为必填参数
48
48
  - 当 `--url` 是 bare token(非完整 URL)时,`--type` 也是必填的
49
49
  - wiki URL 会自动调用 `get_node` API 解包,输出中 `type` 和 `token` 是底层文档的类型和 token
50
+ - `+inspect` 只用于识别/消歧;如果任务已能通过 URL 路径形态完成路由判断,不必把它作为所有 Drive 操作的通用前置步骤
51
+ - `+inspect` 失败后不要自动切到写接口继续尝试,先按错误提示处理权限、scope 或链接问题
50
52
  - 支持 `--dry-run` 查看将调用的 API 步骤