@amaster.ai/pi-lark 0.1.8 → 0.1.10
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.
- package/README.md +1 -3
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +3 -1
- package/skills/lark-apps/references/lark-apps-cache.md +38 -5
- package/skills/lark-apps/references/lark-apps-db.md +130 -2
- package/skills/lark-apps/references/lark-apps-user-id-convert.md +63 -0
- package/skills/lark-base/SKILL.md +172 -167
- package/skills/lark-base/references/{lark-base-role-guide.md → lark-base-advanced-permission-and-role.md} +5 -5
- package/skills/lark-base/references/lark-base-app-block-data-config.md +122 -0
- package/skills/lark-base/references/lark-base-app.md +243 -0
- package/skills/lark-base/references/lark-base-cell-value.md +26 -19
- package/skills/lark-base/references/{dashboard-block-data-config.md → lark-base-dashboard-block-config.md} +65 -6
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +1 -1
- package/skills/lark-base/references/lark-base-dashboard.md +38 -20
- package/skills/lark-base/references/lark-base-data-analysis-pandas.md +93 -0
- package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +120 -0
- package/skills/lark-base/references/lark-base-data-query.md +8 -11
- package/skills/lark-base/references/lark-base-field-create.md +7 -50
- package/skills/lark-base/references/{formula-field-guide.md → lark-base-field-formula.md} +1 -1
- package/skills/lark-base/references/{lookup-field-guide.md → lark-base-field-lookup.md} +1 -1
- package/skills/lark-base/references/{lark-base-field-json.md → lark-base-field-schema.md} +25 -101
- package/skills/lark-base/references/lark-base-field-update.md +13 -51
- package/skills/lark-base/references/lark-base-filter-condition.md +19 -31
- package/skills/lark-base/references/lark-base-form-questions-create.md +36 -5
- package/skills/lark-base/references/lark-base-record-batch-create.md +5 -1
- package/skills/lark-base/references/lark-base-record-batch-update.md +5 -2
- package/skills/lark-base/references/lark-base-record-history-list.md +19 -2
- package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +145 -0
- package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +233 -0
- package/skills/lark-base/references/{role-config.md → lark-base-role-config.md} +2 -2
- package/skills/lark-base/references/lark-base-template-center.md +195 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +1 -1
- package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
- package/skills/lark-base/references/{lark-base-workflow-guide.md → lark-base-workflow.md} +1 -1
- package/skills/lark-calendar/SKILL.md +11 -6
- package/skills/lark-calendar/references/lark-calendar-create.md +4 -3
- package/skills/lark-calendar/references/lark-calendar-transfer.md +89 -0
- package/skills/lark-doc/SKILL.md +3 -3
- package/skills/lark-doc/references/lark-doc-fetch.md +9 -4
- package/skills/lark-doc/references/lark-doc-update.md +12 -8
- package/skills/lark-drive/SKILL.md +5 -3
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -2
- package/skills/lark-drive/references/lark-drive-download.md +27 -1
- package/skills/lark-drive/references/lark-drive-export.md +1 -0
- package/skills/lark-drive/references/lark-drive-member-remove.md +59 -0
- package/skills/lark-drive/references/lark-drive-preview.md +21 -2
- package/skills/lark-drive/references/lark-drive-push.md +5 -1
- package/skills/lark-drive/references/lark-drive-search.md +2 -0
- package/skills/lark-im/SKILL.md +14 -3
- package/skills/lark-im/references/lark-im-message-read-status.md +96 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +12 -12
- package/skills/lark-mail/references/lark-mail-forward.md +17 -17
- package/skills/lark-mail/references/lark-mail-reply-all.md +8 -8
- package/skills/lark-mail/references/lark-mail-reply.md +6 -6
- package/skills/lark-mail/references/lark-mail-send.md +20 -20
- package/skills/lark-mail/references/lark-mail-template-create.md +7 -6
- package/skills/lark-mail/references/lark-mail-template-update.md +7 -6
- package/skills/lark-meeting/SKILL.md +146 -0
- package/skills/lark-meeting/references/lark-minutes-apply-permission.md +92 -0
- package/skills/lark-meeting/references/lark-minutes-detail.md +52 -0
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-download.md +7 -7
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-search.md +4 -34
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-speaker-replace.md +3 -4
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-summary.md +2 -5
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-todo.md +5 -15
- package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-update.md +2 -3
- package/skills/lark-meeting/references/lark-minutes-upload.md +65 -0
- package/skills/lark-meeting/references/lark-note-detail.md +15 -0
- package/skills/{lark-note → lark-meeting}/references/lark-note-transcript.md +5 -9
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-join.md +4 -55
- package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-leave.md +2 -41
- package/skills/lark-meeting/references/lark-vc-detail.md +31 -0
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-events.md → lark-meeting/references/lark-vc-meeting-events.md} +120 -109
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-list-active.md → lark-meeting/references/lark-vc-meeting-list-active.md} +4 -29
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-message-send.md → lark-meeting/references/lark-vc-meeting-message-send.md} +3 -5
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-recording.md +5 -64
- package/skills/{lark-vc → lark-meeting}/references/lark-vc-search.md +9 -28
- package/skills/lark-meeting/scenes/create-and-edit-minutes.md +125 -0
- package/skills/lark-meeting/scenes/live-meeting-attend.md +107 -0
- package/skills/lark-meeting/scenes/live-meeting-interact.md +72 -0
- package/skills/lark-meeting/scenes/query-meeting-and-artifacts.md +90 -0
- package/skills/lark-meeting/scenes/query-minutes-and-artifacts.md +70 -0
- package/skills/lark-meeting/scenes/query-note-and-artifacts.md +127 -0
- package/skills/lark-minutes/SKILL.md +5 -197
- package/skills/lark-note/SKILL.md +5 -84
- package/skills/lark-shared/SKILL.md +25 -188
- package/skills/lark-shared/references/lark-shared-config-init.md +12 -0
- package/skills/lark-shared/references/lark-shared-high-risk-approval.md +38 -0
- package/skills/lark-shared/references/lark-shared-identity-and-permissions.md +105 -0
- package/skills/lark-shared/references/lark-shared-output-contract.md +17 -0
- package/skills/lark-shared/references/lark-shared-update-notice.md +23 -0
- package/skills/lark-slides/SKILL.md +56 -54
- package/skills/lark-slides/references/cli/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/cli/lark-slides-create.md +176 -0
- package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/cli/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/cli/lark-slides-media-upload.md +103 -0
- package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +259 -0
- package/skills/lark-slides/references/cli/lark-slides-screenshot.md +115 -0
- package/skills/lark-slides/references/{lark-slides-update-slide.md → cli/lark-slides-update-slide.md} +21 -4
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +188 -0
- package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +157 -0
- package/skills/lark-slides/references/iconpark-index.json +5 -41901
- package/skills/lark-slides/references/iconpark.md +3 -44
- package/skills/lark-slides/references/lark-slides-add-slide.md +3 -90
- package/skills/lark-slides/references/lark-slides-create.md +3 -174
- package/skills/lark-slides/references/lark-slides-delete-slide.md +3 -63
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +3 -141
- package/skills/lark-slides/references/lark-slides-history.md +3 -130
- package/skills/lark-slides/references/lark-slides-media-upload.md +3 -102
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +3 -83
- package/skills/lark-slides/references/lark-slides-replace-slide.md +3 -256
- package/skills/lark-slides/references/lark-slides-screenshot.md +3 -113
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +3 -108
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +3 -186
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +3 -155
- package/skills/lark-slides/references/planning-layer.md +1 -1
- package/skills/lark-slides/references/slides_chart_demo.xml +5 -1415
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3 -3512
- package/skills/lark-slides/references/troubleshooting.md +3 -60
- package/skills/lark-slides/references/validation-checklist.md +3 -154
- package/skills/lark-slides/references/workflow/error-handling.md +62 -0
- package/skills/lark-slides/references/workflow/slides-editing.md +143 -0
- package/skills/lark-slides/references/workflow/template-editing.md +85 -0
- package/skills/lark-slides/references/workflow/validation-xml.md +156 -0
- package/skills/lark-slides/references/xml/iconpark-index.json +37458 -0
- package/skills/lark-slides/references/xml/iconpark.md +46 -0
- package/skills/lark-slides/references/xml/slides_chart_demo.xml +1415 -0
- package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +3601 -0
- package/skills/lark-slides/references/xml/xml-schema-quick-ref.md +497 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +3 -495
- package/skills/lark-slides/scripts/iconpark_tool.py +1 -1
- package/skills/lark-slides/scripts/xml_lint.py +2989 -0
- package/skills/lark-slides/scripts/xml_lint_test.py +4720 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +3 -2975
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +5 -4712
- package/skills/lark-task/SKILL.md +13 -1
- package/skills/lark-task/references/lark-task-create.md +3 -1
- package/skills/lark-vc/SKILL.md +5 -195
- package/skills/lark-vc-agent/SKILL.md +5 -191
- package/skills/lark-wiki/SKILL.md +3 -1
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +5 -19
- package/skills/lark-wiki/references/lark-wiki-node-create.md +19 -2
- package/skills/lark-wiki/references/lark-wiki-node-get.md +15 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +1 -1
- package/skills/lark-workflow-meeting-summary/SKILL.md +20 -13
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +0 -210
- package/skills/lark-base/references/lark-base-data-query-guide.md +0 -69
- package/skills/lark-base/references/lark-base-record-upsert.md +0 -63
- package/skills/lark-minutes/references/lark-minutes-detail.md +0 -62
- package/skills/lark-minutes/references/lark-minutes-upload.md +0 -104
- package/skills/lark-note/references/lark-note-detail.md +0 -26
- package/skills/lark-vc/references/lark-vc-detail.md +0 -44
- package/skills/lark-vc/references/vc-domain-boundaries.md +0 -196
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-calendar
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-
|
|
4
|
+
description: "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-meeting)、待办任务(走 lark-task)。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
@@ -21,6 +21,8 @@ metadata:
|
|
|
21
21
|
- 查看/管理登录用户本人的日程 → `--as user`(默认,绝大多数场景)。
|
|
22
22
|
- 查看/管理 bot 自己创建/拥有的日程 → `--as bot`
|
|
23
23
|
|
|
24
|
+
**对话人称映射**:「我」= 登录用户,「你」= 应用(bot);作为字段取值的人称(参会人、会议 owner 等)不参与身份判定,如「你创建日程,邀请我、会议 owner 为我」→ `--as bot` 创建,登录用户仅作参会人与会议 owner。
|
|
25
|
+
|
|
24
26
|
```bash
|
|
25
27
|
# 用户本人日程 → user
|
|
26
28
|
lark-cli calendar +agenda --as user
|
|
@@ -40,6 +42,7 @@ lark-cli calendar +agenda --as bot
|
|
|
40
42
|
| [`+room-find`](references/lark-calendar-room-find.md) | 针对一个或多个**明确的**时间块查找可用会议室(无明确时间时禁止直接调用,需先走 +suggestion) |
|
|
41
43
|
| [`+rsvp`](references/lark-calendar-rsvp.md) | 回复日程(接受/拒绝/待定) |
|
|
42
44
|
| [`+suggestion`](references/lark-calendar-suggestion.md) | 根据非明确时间或一段时间范围,推荐多个可用时间块方案 |
|
|
45
|
+
| [`+transfer`](references/lark-calendar-transfer.md) | 把日程组织者转让给另一个用户或机器人;不可逆,需 `--yes` |
|
|
43
46
|
|
|
44
47
|
### `+get` — 单日程详情
|
|
45
48
|
|
|
@@ -125,14 +128,16 @@ lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-12 --user-id ou_xxx
|
|
|
125
128
|
|
|
126
129
|
| 用户意图 | 路由到 |
|
|
127
130
|
|----------|--------|
|
|
128
|
-
| 查询过去的会议("昨天的会议""上周的会") | [`../lark-
|
|
131
|
+
| 查询过去的会议("昨天的会议""上周的会") | [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md)(会议数据含即时会议,仅查日程会遗漏) |
|
|
132
|
+
| 今天有哪些会议| 需要合并两部分内容:[`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md) 中的 `vc +search` 查询今天已结束的会议, `calendar +agenda` 查询进行中或未开始的日程。|
|
|
129
133
|
| 查询日历/日程或未来时间的会议 | 本 skill |
|
|
130
134
|
| 按关键词搜索日程 | 本 skill(`+search-event`) |
|
|
131
135
|
| 从日程获取关联的视频会议 ID 或用户绑定的会议纪要文档 | 本 skill(`+meeting`) |
|
|
132
|
-
| 从日程进一步拿 AI 智能纪要 / 逐字稿 / 妙记产物 | 先 `+meeting` 取 `meeting_id
|
|
136
|
+
| 从日程进一步拿 AI 智能纪要 / 逐字稿 / 妙记产物 | 先 `+meeting` 取 `meeting_id`,再进入 [`lark-meeting`](../lark-meeting/SKILL.md):[`vc +detail`](../lark-meeting/references/lark-vc-detail.md) → [`note +detail`](../lark-meeting/references/lark-note-detail.md) / [`minutes +detail`](../lark-meeting/references/lark-minutes-detail.md) |
|
|
133
137
|
| 预约/改约日程、调整时间、添加/更换会议室、查会议室 | 先判断新建 vs 编辑,再进入 [schedule-meeting 工作流](references/lark-calendar-schedule-meeting.md) |
|
|
134
138
|
| 仅编辑日程字段(标题/描述)或增删参会人(不涉及时间和会议室) | 先定位 `event_id`,再读 [+update](references/lark-calendar-update.md) 执行变更 |
|
|
135
139
|
| 编辑/删除重复性日程(「改这个重复日程」「删掉后面的」「全部取消」等) | 先读 [重复性日程操作规范](references/lark-calendar-recurring.md),确认操作范围后执行 |
|
|
140
|
+
| 转让日程组织者(「把这个日程交给 XX」「组织者改成 XX」「这个会转给我」「bot 建完还给我」) | 读 [+transfer](references/lark-calendar-transfer.md);`--as` 用**当前组织者**身份,`--to-user-id` 传接收人,用户和机器人任意互转 |
|
|
136
141
|
|
|
137
142
|
## 任务类型分流
|
|
138
143
|
|
|
@@ -163,8 +168,8 @@ lark-cli calendar <resource> <method> [flags]
|
|
|
163
168
|
# 查询用户主日历
|
|
164
169
|
lark-cli calendar calendars primary
|
|
165
170
|
|
|
166
|
-
#
|
|
167
|
-
lark-cli calendar events
|
|
171
|
+
# 获取日程详情及 app_link
|
|
172
|
+
lark-cli calendar events get --calendar-id <calendar_id> --event-id <event_id>
|
|
168
173
|
|
|
169
174
|
# 删除日程
|
|
170
175
|
lark-cli calendar events delete --calendar-id <calendar_id> --event-id <event_id>
|
|
@@ -194,7 +199,7 @@ lark-cli im +chat-search --query <query> --as user
|
|
|
194
199
|
|
|
195
200
|
## 不在本 skill 范围
|
|
196
201
|
|
|
197
|
-
- 查询过去的视频会议记录 → [lark-
|
|
202
|
+
- 查询过去的视频会议记录 → [lark-meeting](../lark-meeting/SKILL.md)
|
|
198
203
|
- 待办任务管理 → [lark-task](../lark-task/SKILL.md)
|
|
199
204
|
- 通讯录 → [lark-contact](../lark-contact/SKILL.md)
|
|
200
205
|
- 即时通讯 → [lark-im](../lark-im/SKILL.md)
|
|
@@ -36,6 +36,7 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
36
36
|
| `--attendee-ids <id_list>` | 否 | 参与人 ID 列表(逗号分隔)。支持用户(`ou_`)、群组(`oc_`)和会议室(`omm_`)。AI 提取时请务必保留对应前缀。bot 可作为合法参会人,无需剔除 |
|
|
37
37
|
| `--calendar-id <id>` | 否 | 日历 ID(省略则使用主日历) |
|
|
38
38
|
| `--rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545。示例值:"FREQ=DAILY;INTERVAL=1;UNTIL=<具体日期>" |
|
|
39
|
+
| `--meeting-owner-id <ou_>` | 否 | 设置 VC 会议 owner。仅以应用(bot)身份在应用日历上操作时生效(需 `--as bot`);owner 必须为本租户用户身份的 open_id(`ou_`) |
|
|
39
40
|
| `--dry-run` | 否 | 预览 API 调用,不执行 |
|
|
40
41
|
|
|
41
42
|
> 当用户表达'每周 X'、'每周重复'、'连续 N 周'时,必须使用 rrule 创建重复性日程,而非创建多个独立日程
|
|
@@ -49,7 +50,8 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
49
50
|
|
|
50
51
|
## 高级用法(完整 API 命令)
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
> 优先策略:创建日程优先走 `+create`。遇到 `+create` 不支持的高级参数(如 `location`(地理位置,不含会议室位置)、`visibility`(日程公开范围)、自定义 `reminders`(提醒设置)、自定义 `attendee_ability`(参与人权限)、自定义 `free_busy_status`(日程忙闲状态)、参与人可选参加状态或全天日程等),**优先先用 `+create` 创建成功,再用完整 API update 对这些字段做编辑补齐**,而非整体改用完整 API 从零创建。
|
|
54
|
+
|
|
53
55
|
**注意**:
|
|
54
56
|
- 全天日程的开始日期和结束日期必须分别是日程开始的第一天和结束的最后一天。如果只有一天的话,开始日期和结束日期是相同。
|
|
55
57
|
|
|
@@ -60,11 +62,10 @@ lark-cli calendar event.attendees create \
|
|
|
60
62
|
--params '{"calendar_id":"<CALENDAR_ID>","event_id":"<EVENT_ID>"}' \
|
|
61
63
|
--data '{"attendees": [{"type": "resource", "room_id": "omm_xxx", "approval_reason": "申请原因"}]}'
|
|
62
64
|
|
|
63
|
-
完整 API
|
|
65
|
+
完整 API 命令的关键差异和处理策略:
|
|
64
66
|
- 时间参数是 **Unix 秒字符串**(非 ISO 8601)。换算时**禁止依赖容器默认时区**(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。
|
|
65
67
|
- 全天日程的开始日期和结束日期必须分别是日程开始的第一天和结束的最后一天;单日全天日程两者相同。
|
|
66
68
|
- 手动拆成“创建日程 + 添加参会人”两步时,若第二步失败,建议删除刚创建的空日程,避免遗留无参会人的日程。
|
|
67
|
-
- 设置会议 owner:`+create` 不支持,需用完整 API 命令在 `vchat.meeting_settings.owner_id` 中设置,且必须同时设置 `vchat.vc_type` 为 `vc`(代表该日程为 VC 视频会议)。仅当以应用(bot)身份在应用日历上操作时生效;owner 必须为用户身份(`ou_` open_id),不能为非用户或外部租户用户。
|
|
68
69
|
|
|
69
70
|
## 参会人类型
|
|
70
71
|
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# calendar +transfer
|
|
2
|
+
|
|
3
|
+
把一个日程的**组织者(organizer)**转让给另一个用户或机器人。用户和机器人之间可以任意互转。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 转让给某人(原组织者保留为参与人)
|
|
9
|
+
lark-cli calendar +transfer --event-id <event_id> --to-user-id ou_xxx --yes
|
|
10
|
+
|
|
11
|
+
# 转让并把原组织者从参与人中移除
|
|
12
|
+
lark-cli calendar +transfer --event-id <event_id> --to-user-id ou_xxx --remove-original-organizer --yes
|
|
13
|
+
|
|
14
|
+
# 指定日历
|
|
15
|
+
lark-cli calendar +transfer --calendar-id <calendar_id> --event-id <event_id> --to-user-id ou_xxx --yes
|
|
16
|
+
|
|
17
|
+
# 重复性日程:必须显式确认整个序列一起转让
|
|
18
|
+
lark-cli calendar +transfer --event-id <event_id> --to-user-id ou_xxx --transfer-series --yes
|
|
19
|
+
|
|
20
|
+
# 预览请求,不实际执行
|
|
21
|
+
lark-cli calendar +transfer --event-id <event_id> --to-user-id ou_xxx --dry-run
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 参数
|
|
25
|
+
|
|
26
|
+
| 参数 | 必填 | 说明 |
|
|
27
|
+
|------|------|------|
|
|
28
|
+
| `--event-id <id>` | **是** | 日程 ID(`uid_originalTime` 形式) |
|
|
29
|
+
| `--to-user-id <ou_...>` | **是** | 接收人 open_id,成为新组织者;用户和机器人都可以 |
|
|
30
|
+
| `--calendar-id <id>` | 否 | 日程所在日历 ID(省略则使用主日历) |
|
|
31
|
+
| `--remove-original-organizer` | 否 | 转让后把原组织者移出参与人;默认保留。日程在共享日历上时服务端一定会移除 |
|
|
32
|
+
| `--transfer-series` | 否 | 确认整个重复性序列一起转让;重复性日程必填 |
|
|
33
|
+
| `--yes` | **是**(非 dry-run) | 高敏写操作确认 |
|
|
34
|
+
| `--dry-run` | 否 | 预览 API 调用,不执行 |
|
|
35
|
+
|
|
36
|
+
## 转让方向
|
|
37
|
+
|
|
38
|
+
转出方和接收方是两个**互相独立**的参数,四种组合都支持:
|
|
39
|
+
|
|
40
|
+
- **转出方**由 `--as` 决定,必须是日程**当前组织者**的身份。bot 组织的日程用 `--as bot`,用户自己的日程用 `--as user`。用非组织者身份调用会返回 403。
|
|
41
|
+
- **接收方**由 `--to-user-id` 决定,传谁的 open_id 就转给谁,是人还是机器人不影响命令写法。
|
|
42
|
+
|
|
43
|
+
| 方向 | 命令 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| user → user | `--as user --to-user-id <对方用户 open_id>` |
|
|
46
|
+
| user → bot | `--as user --to-user-id <bot 的 open_id>` |
|
|
47
|
+
| bot → user | `--as bot --to-user-id <用户 open_id>` |
|
|
48
|
+
| bot → bot | `--as bot --to-user-id <另一个 bot 的 open_id>` |
|
|
49
|
+
|
|
50
|
+
**取接收人 open_id**:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 用户
|
|
54
|
+
lark-cli contact +search-user --query <姓名> --as user
|
|
55
|
+
# 机器人:从它所在群的成员列表里取 bots[] 中的 open_id
|
|
56
|
+
lark-cli im +chat-members-list --chat-id <chat_id> --member-types bot
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
机器人的 open_id 同样是 `ou_` 开头;不要传 `cli_` 开头的 app_id,那是应用 ID,不是日程参与人身份。
|
|
60
|
+
|
|
61
|
+
无论哪个方向,转让都要求转出方和接收方**同租户**,且接收方能通过高管模式的协作校验。
|
|
62
|
+
|
|
63
|
+
## 重复性日程
|
|
64
|
+
|
|
65
|
+
后端按 `uid` 定位日程,忽略 `original_time`,**无法只转让某一次实例**。因此传入任何一个实例或例外的 `event_id`,都会把整个序列(含所有例外)一起转让。
|
|
66
|
+
|
|
67
|
+
是重复性日程且未加 `--transfer-series` 时命令直接失败(`failed_precondition`),不会发出转让请求。收到这个错误时**先向用户确认"整个重复日程都转让"**,得到确认后再带 `--transfer-series` 重跑;不要自动重试。已确认时加 `--transfer-series` 会跳过这次预读。
|
|
68
|
+
|
|
69
|
+
## 返回中的 `original_organizer_removed`
|
|
70
|
+
|
|
71
|
+
**共享日历不属于任何组织者,转让时服务端会强制把原组织者移出日程;主日历则会把原组织者保留为参与人。** 转让接口成功时不返回这个结果,所以命令只在能确定时才输出该字段:
|
|
72
|
+
|
|
73
|
+
| 情况 | 返回 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| 带 `--remove-original-organizer` | `original_organizer_removed: true` |
|
|
76
|
+
| 省略 `--calendar-id`(主日历) | `original_organizer_removed: false` |
|
|
77
|
+
| 传了 `--calendar-id` 且未传 `--remove-original-organizer` | **不返回该字段**,stderr 给一条 note 说明共享日历会强制移除 |
|
|
78
|
+
|
|
79
|
+
字段缺失时**不要**告诉用户"原组织者已保留为参与人",也不要断言已被移除。需要确认就转让后读一次日程看参与人,或一开始就显式传 `--remove-original-organizer`。
|
|
80
|
+
|
|
81
|
+
## 提示
|
|
82
|
+
|
|
83
|
+
- 转让不可逆,且会连同日程上的会议纪要、笔记和附件一起移交给新组织者。
|
|
84
|
+
- 需要 `calendar:calendar.event:transfer` 权限;转让前的重复性预读需要 `calendar:calendar.event:read`(带 `--transfer-series` 时不读)。
|
|
85
|
+
|
|
86
|
+
## 参考
|
|
87
|
+
|
|
88
|
+
- [lark-calendar](../SKILL.md) -- skill 入口与路由
|
|
89
|
+
- [重复性日程操作规范](lark-calendar-recurring.md)
|
package/skills/lark-doc/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-doc
|
|
3
|
-
description: "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token
|
|
3
|
+
description: "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。"
|
|
4
4
|
metadata:
|
|
5
5
|
requires:
|
|
6
6
|
bins: ["lark-cli"]
|
|
@@ -33,7 +33,7 @@ metadata:
|
|
|
33
33
|
### 资源、画板与思维笔记
|
|
34
34
|
|
|
35
35
|
- **插入本地素材 — [`+media-insert`](references/lark-doc-media-insert.md)**:在文末插入本地图片或文件。
|
|
36
|
-
- **预览素材 — [`+media-preview`](references/lark-doc-media-preview.md)
|
|
36
|
+
- **预览素材 — [`+media-preview`](references/lark-doc-media-preview.md)**:预览文档或评论中的图片、附件或素材。
|
|
37
37
|
- **下载素材 — [`+media-download`](references/lark-doc-media-download.md)**:下载文档中的图片、附件、素材或画板缩略图。
|
|
38
38
|
- **Docx 封面 — [`+resource-download` / `+resource-update` / `+resource-delete`](references/lark-doc-resource-cover.md)**:下载、更新或删除 Docx 封面。
|
|
39
39
|
- **画板 — [`画板工作流`](references/lark-doc-whiteboard.md)**:创建或更新画板时先读取工作流;更新已有画板必须复用现有 token,禁止新建空白画板;使用 [`whiteboard +update`](../lark-whiteboard/references/lark-whiteboard-update.md) 写入。
|
|
@@ -46,4 +46,4 @@ metadata:
|
|
|
46
46
|
## 不在本 Skill 范围
|
|
47
47
|
|
|
48
48
|
- **Drive 文件级操作**:找文档、导入导出、云空间文件上传 / 下载 / 权限管理 → [`lark-drive`](../lark-drive/SKILL.md)。复制文档、创建副本或另存为副本时,按其指引使用 `lark-cli drive files copy`;不要用 `docs +fetch` + `docs +create` 重建正文。
|
|
49
|
-
-
|
|
49
|
+
- **独立评论操作**:添加、分页查看、回复评论或增删 reaction → [`lark-drive`](../lark-drive/SKILL.md);只需紧凑评论上下文时,直接使用默认 JSON 响应的 `docs +fetch`。
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
## 常用示例
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
#
|
|
8
|
+
# 读取整篇文档,并附带当前用户可见的未解决评论;
|
|
9
9
|
lark-cli docs +fetch --doc "文档URL或token"
|
|
10
10
|
|
|
11
11
|
# 按 URL 中的 #share 锚点局部读取
|
|
@@ -34,7 +34,6 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --scope section --start-block-id blkTitle
|
|
|
34
34
|
|`--context-before`|否|返回命中项之前的顶层兄弟块数量(默认 `0`)|
|
|
35
35
|
|`--context-after`|否|返回命中项之后的顶层兄弟块数量(默认 `0`)|
|
|
36
36
|
|`--max-depth`|否|`outline` 表示标题层级上限;其它模式表示子树深度(默认 `-1`,不限)|
|
|
37
|
-
|`--format`|否|`json`(默认)\| `pretty`|
|
|
38
37
|
|
|
39
38
|
## 选择详细度:`--detail`
|
|
40
39
|
|
|
@@ -90,6 +89,11 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --scope section --start-block-id blkTitle
|
|
|
90
89
|
"<ref>": {
|
|
91
90
|
"<real-attr-key>": "<real-attr-value>"
|
|
92
91
|
}
|
|
92
|
+
},
|
|
93
|
+
"comments": {
|
|
94
|
+
"c1": {
|
|
95
|
+
"data": "<comment comment-id=\"xx\" block-id=\"xx\"><quote>引用内容</quote><msg>评论内容</msg></comment>"
|
|
96
|
+
}
|
|
93
97
|
}
|
|
94
98
|
},
|
|
95
99
|
"tips": "<safe replay or degradation guidance>"
|
|
@@ -97,7 +101,8 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --scope section --start-block-id blkTitle
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
```
|
|
100
|
-
`content` 的格式由 `--doc-format` 决定。`reference_map`
|
|
104
|
+
- `content` 的格式由 `--doc-format` 决定。`reference_map` 是结构化 sidecar,一级键表示引用组:普通资源组通常以 `block_type` 命名,二级键 `ref` 对应正文中的临时引用,其值由真实属性组成;保留组 `comments` 使用 `<ref>.data` 保存评论。XML、Markdown 和 IM Markdown 在存在可见评论时都会返回该组;Markdown 正文没有与评论 key 对应的内联引用,这是有意的协议设计。没有提取数据时,`reference_map` 可能为空。`comments.tips.data` 表示评论因数量上限被截断,文档顶层 `tips` 则给出安全回放或依赖降级提示。`content` 和 `reference_map` 属于同一份响应,应保留完整 JSON 响应;`im-markdown` 仅用于获取内容后在 `lark-im` 场景下使用。设置 `--scope` 时会被 `<fragment>` 包裹,详见下文“局部读取的输出结构”。
|
|
105
|
+
- 评论内容不保证全部返回,需要详细信息时使用 `drive +list-comments` 获取完整评论。
|
|
101
106
|
|
|
102
107
|
### 理解局部读取结果
|
|
103
108
|
|
|
@@ -122,7 +127,7 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --scope section --start-block-id blkTitle
|
|
|
122
127
|
|`<whiteboard>`|提取 `token`,使用 `docs +media-download`|
|
|
123
128
|
|`<sheet>`、`<cite file-type="sheets">`|提取 `token` 和 `sheet-id`,转到 [`lark-sheets`](../../lark-sheets/SKILL.md)|
|
|
124
129
|
|`<bitable>`、`<cite file-type="bitable">`|提取 `token` 和 `table-id`,转到 [`lark-base`](../../lark-base/SKILL.md)|
|
|
125
|
-
|`<vc-transcribe-tab>`|提取 `vc-node-id`,使用 [`lark-
|
|
130
|
+
|`<vc-transcribe-tab>`|提取 `vc-node-id`,使用 [`lark-meeting`](../../lark-meeting/SKILL.md) 的 `note +detail`|
|
|
126
131
|
|`<synced_reference>`|提取 `src-token` 和 `src-block-id`,读取源文档并定位 block|
|
|
127
132
|
|
|
128
133
|
## 参考
|
|
@@ -13,12 +13,15 @@ lark-cli docs +fetch --doc "文档URL或token" --scope keyword --keyword "key1|k
|
|
|
13
13
|
# 替换文本;--content "" 可删除文本
|
|
14
14
|
lark-cli docs +update --doc "xx" --command str_replace --pattern "旧内容" --content "新内容"
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
# 替换单个 block,或同父连续范围内的 block
|
|
17
17
|
lark-cli docs +update --doc "xx" --command block_replace --block-id blkTarget --content '<p>新段落</p>'
|
|
18
|
+
lark-cli docs +update --doc "xx" --command block_replace --start-block-id blkFirst --end-block-id blkLast --content '<p></p>'
|
|
19
|
+
|
|
18
20
|
lark-cli docs +update --doc "xx" --command block_insert_after --block-id blkAnchor --content '<h2>新章节</h2><p>章节内容</p>'
|
|
19
21
|
|
|
20
|
-
#
|
|
21
|
-
lark-cli docs +update --doc "xx" --command block_delete --block-id
|
|
22
|
+
# 删除单个 block 或范围内的 block
|
|
23
|
+
lark-cli docs +update --doc "xx" --command block_delete --block-id blkA
|
|
24
|
+
lark-cli docs +update --doc "xx" --command block_delete --start-block-id blkFirst --end-block-id blkLast
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
## 推荐流程
|
|
@@ -29,8 +32,8 @@ lark-cli docs +update --doc "xx" --command block_delete --block-id "blkA,blkB"
|
|
|
29
32
|
- 只有模糊关键词:用 `--scope keyword --keyword "key1|key2" --context-before 1 --context-after 1 --detail with-ids`
|
|
30
33
|
- 明确整篇重构才读 `--detail with-ids` 全文;只读摘要或确认事实时用更轻的 fetch
|
|
31
34
|
2. **Diagnose(诊断问题)**:判断用户目标、当前结构、语气、重复、断流、事实口径和需要保留的资源;识别哪些 block 必须原样保留。
|
|
32
|
-
3. **Patch Plan(制定局部计划)**:把修改拆成最小安全操作:简单行内文本替换用 `str_replace
|
|
33
|
-
4. **Patch(精确修改)**:按 block / section
|
|
35
|
+
3. **Patch Plan(制定局部计划)**:把修改拆成最小安全操作:简单行内文本替换用 `str_replace`,但它不支持资源替换;单个 block 用一个 `--block-id`,同一直接父节点下的连续 block 用 `--start-block-id`/`--end-block-id`。连续范围适用于 `block_replace` 和 `block_delete`。整段/整块重写用 `block_replace`;增补章节用 `block_insert_after`;删冗余用 `block_delete`;调整顺序用 `block_move_after`。
|
|
36
|
+
4. **Patch(精确修改)**:按 block / section 执行局部命令。替换内容必须符合目标父容器的结构;例如替换列表项范围时使用 `<li>...</li>`。保护 `<cite>`、`<img>`、`<source>`、`<whiteboard>`、`<sheet>`、`<bitable>`、`<synced_reference>` 等 token 化内容,不要改成纯文本或占位符。同一 block 的多处修改合并成一次 `block_replace`。
|
|
34
37
|
5. **Verify(fetch 验证)**:每轮写操作后按影响范围重新 fetch,检查用户要求、结构、语气、事实、资源块和 block ID 是否符合预期;不满足就基于最新 fetch 结果继续 Diagnose / Patch,不要沿用上一轮 block ID。
|
|
35
38
|
|
|
36
39
|
除非用户明确要求完全重建,或原文已无保留价值,否则不要使用 `overwrite`;它可能丢失评论和暂不支持的资源。
|
|
@@ -51,7 +54,8 @@ lark-cli docs +update --doc "xx" --command block_delete --block-id "blkA,blkB"
|
|
|
51
54
|
|`--doc-format`|否|`xml`(默认)或 `markdown`|
|
|
52
55
|
|`--content`|视指令|写入内容;`str_replace` 传空字符串可删除文本|
|
|
53
56
|
|`--pattern`|视指令|`str_replace` 的简单行内匹配文本;不要用于多行、整段或多个 block|
|
|
54
|
-
|`--block-id`|视指令|目标 block ID
|
|
57
|
+
|`--block-id`|视指令|目标 block ID;`-1` 表示文档末尾,`0` 表示文档开头(仅适用于支持这些锚点的指令)|
|
|
58
|
+
|`--start-block-id` / `--end-block-id`|视指令|`block_replace` / `block_delete` 的同父连续闭区间,必须成对使用,且不能与 `--block-id` 混用;`--start-block-id` 用 `0` 表示从文档开头开始,`--end-block-id` 用 `-1` 表示到文档末尾结束|
|
|
55
59
|
|`--src-block-ids`|视指令|要复制或移动的源 block ID,多个 ID 用逗号分隔|
|
|
56
60
|
|`--reference-map`|否|保留或回放既有 `reference_map`,需与 `--content` 配合;支持 JSON、任务目录内的相对 `@file` 或 stdin `-`|
|
|
57
61
|
|`--revision-id`|否|基准版本号,默认 `-1`(最新版本)|
|
|
@@ -63,8 +67,8 @@ lark-cli docs +update --doc "xx" --command block_delete --block-id "blkA,blkB"
|
|
|
63
67
|
|`str_replace`|全文查找替换;支持富文本内的文本替换,但不支持资源替换;涉及多个 block 时建议用 `block_replace`;空 `--content` 表示删除|`--pattern`、`--content`|
|
|
64
68
|
|`block_insert_after`|在指定 block 后插入内容;逐章填充时指定对应标题的 block ID|`--block-id`、`--content`|
|
|
65
69
|
|`block_copy_insert_after`|按 ID 顺序复制源 block,源 block 不变;基础标签均支持,资源块仅支持 `img`、`source`、`whiteboard`、`sheet`、`chat_card`、`sub-page-list`,不支持 `task`、`bitable`、`base_ref`、`synced_reference`、`synced_source`、`okr`|`--block-id`、`--src-block-ids`|
|
|
66
|
-
|`block_replace
|
|
67
|
-
|`block_delete
|
|
70
|
+
|`block_replace`|替换单个 block(`--block-id`)或同父连续闭区间(`--start-block-id`/`--end-block-id`);不支持跨容器或反向区间|`--content`,以及 `--block-id` 或 `--start-block-id`+`--end-block-id`|
|
|
71
|
+
|`block_delete`|删除单个 block(`--block-id`)或同父连续闭区间(`--start-block-id`/`--end-block-id`);不支持跨容器或反向区间|`--block-id` 或 `--start-block-id`+`--end-block-id`|
|
|
68
72
|
|`block_move_after`|移动已有 block,支持所有块类型;|`--block-id`、`--src-block-ids`|
|
|
69
73
|
|`append`|仅在文末追加,等价于 `block_insert_after --block-id -1`|`--content`|
|
|
70
74
|
|`overwrite`|清空后重写全文,丢失图片、评论等内容,非必要不使用|`--content`|
|
|
@@ -21,17 +21,18 @@ metadata:
|
|
|
21
21
|
## 快速决策
|
|
22
22
|
|
|
23
23
|
- 用户要把**已有 Wiki 节点移出知识库,放到 Drive 文件夹或“我的空间”根目录**:切到 `lark-wiki`,使用 `lark-cli wiki +move-to-drive`;不要把 Wiki token 直接交给 `drive +move`。这是会改变文档归属和权限继承的写操作,执行前确认源节点与目标位置。
|
|
24
|
-
- 用户要**复制文档 / 创建副本
|
|
24
|
+
- 用户要**复制文档 / 创建副本 到云盘或者文件夹**时:已提供可直接使用的 URL 或 token,按 [`references/lark-drive-copy.md`](references/lark-drive-copy.md) 使用 `lark-cli drive +copy`;仅提供标题时,先按 [`references/lark-drive-search.md`](references/lark-drive-search.md) 使用 `drive +search` 唯一定位源资源,再按 copy reference 复制。如果是要复制文档 / 创建副本到知识库,使用 `wiki +node-copy`(见 [`lark-wiki-node-copy.md`](../lark-wiki/references/lark-wiki-node-copy.md))。
|
|
25
25
|
- 用户要**识别飞书 / 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)。
|
|
26
26
|
- 高风险写操作(删除、公开权限修改、owner 转移、版本删除/回滚、批量移动/覆盖/同步)必须同时满足三个条件才执行:目标已解析为该操作可直接使用的执行对象,执行细节已明确到可直接调用命令(例如删除的 file-token/type、公开权限修改的共享范围、owner 转移的目标 owner、版本删除/回滚的 version id、移动/覆盖/同步的目标位置和冲突策略),且用户在本轮明确确认执行这些具体目标和执行细节。用户只说“删除没用的文件”“开放/共享给大家”“改成开放”“覆盖/移动这些”只表示目标状态;先只读发现并列出候选、权限档位或执行方案,停止等待用户确认。
|
|
27
27
|
- 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要”权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
|
|
28
|
+
- 用户明确要**移除单个云文档协作者权限**时,使用 `lark-cli drive +member-remove`;先阅读 [`references/lark-drive-member-remove.md`](references/lark-drive-member-remove.md)。这是高风险写操作,真实执行必须确认准确的资源、成员 ID/type 和 wiki 权限范围,并显式传 `--yes`。
|
|
28
29
|
- 用户要为指定飞书文档**设置 / 修改密级标签(secure label)**,或查询当前用户可用的密级标签,直接读取 [`references/lark-drive-secure-label.md`](references/lark-drive-secure-label.md);这是 Drive 文件治理能力。
|
|
29
30
|
- 用户要**检查 / 治理文档权限、公开范围、链接分享、外部访问、复制下载权限、密级标签、owner 转移**,或要“权限风险报告、收紧权限、申请查看 / 编辑权限、转移 / 批量转移 owner”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`permission_governance`](references/lark-drive-workflow-permission-governance.md) workflow。
|
|
30
31
|
- 用户要**查询文件、文件夹或云文档自身的公开访问、分享、协作者管理、安全与评论权限设置**,优先使用 `lark-cli drive +permission-get-setting`;它只读取目标自身设置,不递归审计文件夹子文档权限。裸 token 必须显式传 `--type`。
|
|
31
32
|
- 用户要**按特定主题、关键词或内容线索跨容器查找资料,并统一收集到 Drive 文件夹或 Wiki 节点**,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`topic_move_collector`](references/lark-drive-workflow-topic-move-collector.md) workflow。该 workflow 负责搜索召回、内容验证、相关性分类、移动计划、写前确认和结果验证;禁止直接从 `drive +search` 或 `drive +move` 开始。
|
|
32
33
|
- 用户要**整理云盘 / 文件夹 / 文档库 / 知识库 / 个人文档库**,或要“盘点目录结构、找出未归档/临时/重复/空目录、生成整理方案”,必须先阅读 [`references/lark-drive-workflow.md`](references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](references/lark-drive-workflow-knowledge-organize.md) workflow。默认只生成方案;创建目录、移动资源、申请权限都必须单独确认。
|
|
33
34
|
- 按主题跨范围查找并集中归档,进入 `topic_move_collector`;对已知文件夹、文档库或知识库做目录盘点和结构重组,进入 `knowledge_organize`;只移动一个已明确资源时仍使用原子移动命令。
|
|
34
|
-
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search
|
|
35
|
+
- 用户要**搜文档 / Wiki / 电子表格 / 多维表格 / 云空间(云盘/云存储)对象**,优先使用 `lark-cli drive +search`;按标题定位和处理重复候选时遵循 [`references/lark-drive-search.md`](references/lark-drive-search.md)。自然语言里"最近我编辑过的"、"我创建的"(→ `--created-by-me`,原始创建者语义)、"我负责/owner 的"(→ `--mine`,owner 语义)、"最近一周我打开过的 xxx"、"某人 owner 的 docx" 等直接映射到扁平 flag,避免手写嵌套 JSON。
|
|
35
36
|
- 用户要对**文档评论**做任何操作(添加评论、列表 / 批量查询、回复、获取 / 更新 / 删除回复、解决 / 恢复、reaction),按下方 Shortcuts 表选择对应的 `drive +<verb>` 评论命令,执行前先阅读该命令的 ref。按评论定位文档正文位置见 [`references/lark-drive-comment-location.md`](references/lark-drive-comment-location.md)。
|
|
36
37
|
- 用户给出 doubao.com 的云空间资源 URL/token,或明确提到豆包里的 file/folder/docx/sheet/bitable/wiki 资源时,仍按资源类型、URL 路径和 token 路由到本 skill;不要因为域名不是飞书而回退到 WebFetch。
|
|
37
38
|
- 用户要把本地 `.xlsx` / `.csv` / `.base` 导入成 Base / 多维表格 / bitable,第一步必须使用 `lark-cli drive +import --type bitable`。
|
|
@@ -43,7 +44,7 @@ metadata:
|
|
|
43
44
|
- 用户要查看、下载、回滚或删除文件的**历史版本**,使用 `drive +version-history`、`drive +version-get`、`drive +version-revert`、`drive +version-delete`;这组命令同时支持 `--as user` 和 `--as bot`,自动化场景优先 `--as bot`。
|
|
44
45
|
- 用户要把本地 `.xlsx` / `.xls` / `.csv` 导入成电子表格,使用 `lark-cli drive +import --type sheet`。
|
|
45
46
|
- 用户要在云空间(云盘/云存储)里新建文件夹,优先使用 `lark-cli drive +create-folder`。
|
|
46
|
-
- 用户要查看或下载文件内容,或者查看文件可用预览格式并获取 PDF / HTML / 文本 / 图片等转换预览产物,使用 `lark-cli drive +preview`。
|
|
47
|
+
- 用户要查看或下载文件内容,或者查看文件可用预览格式并获取 PDF / HTML / 文本 / 图片等转换预览产物,使用 `lark-cli drive +preview`。`+preview` 和 `+download` 都支持 `--file-token` / `--url` / `--wiki-token` 三选一(Wiki 会解析到底层 `file`);但两者只处理 Drive **文件**,若目标是 docx/sheet/bitable/slides 等在线文档,改用 `drive +export`。
|
|
47
48
|
- 用户要获取某个文件的封面图,优先使用 `lark-cli drive +cover`;先 `--list-only` 看规格,再选 `--spec` 下载。
|
|
48
49
|
- 用户要导出云文档时,优先使用 `lark-cli drive +export --url '<文档 URL>' --file-extension <格式>`;详细参数、Wiki token 和错误码处理见 [`references/lark-drive-export.md`](references/lark-drive-export.md)。
|
|
49
50
|
- 用户要把本地文件上传到知识库 / 文档库里的某个 wiki 节点下时,仍然使用 `lark-cli drive +upload --wiki-token <wiki_token>`;不要误切到 `wiki` 域命令。
|
|
@@ -154,6 +155,7 @@ Shortcut 是对常用操作的高级封装(`lark-cli drive +<verb> [flags]`)
|
|
|
154
155
|
| [`+apply-permission`](references/lark-drive-apply-permission.md) | 以 user 身份向文档 owner 申请访问权限。 |
|
|
155
156
|
| [`+member-add`](references/lark-drive-member-add.md) | 添加一个或最多 10 个 Drive 文档、文件、文件夹或 wiki 节点协作者/授权成员;封装 Drive permission member create/batch_create,真实写入需要 `--yes`。 |
|
|
156
157
|
| [`+member-list`](references/lark-drive-member-list.md) | 查询 Drive 文档、文件、文件夹或 wiki 节点的协作者/授权成员列表。 |
|
|
158
|
+
| [`+member-remove`](references/lark-drive-member-remove.md) | 移除一个 Drive 文档、文件、文件夹或 wiki 节点协作者;封装 Drive permission member delete,真实写入需要 `--yes`。 |
|
|
157
159
|
| [`+permission-get-setting`](references/lark-drive-permission-get-setting.md) | 查询文件、文件夹或云文档自身的公开访问、分享、协作者管理、安全与评论权限设置;支持 URL 或裸 token + `--type`;不递归读取文件夹子文档权限。 |
|
|
158
160
|
| [`+secure-label-list`](references/lark-drive-secure-label.md) | 列出当前用户可用的密级标签。 |
|
|
159
161
|
| [`+secure-label-update`](references/lark-drive-secure-label.md) | 更新 Drive 文件或文档的密级标签。 |
|
|
@@ -165,10 +165,10 @@ lark-cli drive +add-comment \
|
|
|
165
165
|
- 未传 `--block-id` 时,shortcut 默认创建**全文评论**;也可以显式传 `--full-comment`。全文评论支持 `docx`、旧版 `doc` URL、白名单扩展名的 Drive file,以及最终可解析为 `doc`/`docx`/`file` 的 wiki URL。
|
|
166
166
|
- **Drive file 评论**:仅支持白名单扩展名的普通文件。当前支持:`.md`、`.txt`、`.json`、`.csv`、`.go`、`.js`、`.py`、`.pptx`、`.png`、`.jpg`、`.jpeg`、`.zip`、`.mp3`、`.mp4`。
|
|
167
167
|
- **Drive file 暂不支持**:`.pdf`、`.docx`、`.xlsx` 等未在白名单内的普通文件会被 CLI 拒绝,并提示“当前还不支持这种类型的评论”。这些类型虽然可能接受 OpenAPI 请求,但在页面评论展示上存在问题。
|
|
168
|
-
- **Drive file 只支持全文评论**:file 目标不支持局部评论,不允许传 `--block-id
|
|
168
|
+
- **Drive file 只支持全文评论**:file 目标不支持局部评论,不允许传 `--block-id`。
|
|
169
169
|
- 传 `--block-id` 时,shortcut 创建**局部评论(划词评论)**;该模式支持 `docx`、`sheet`、`slides`、Base / bitable,以及最终可解析为这些类型的 wiki URL。
|
|
170
170
|
- **Sheet 评论**:当 `--doc` 为 sheet URL 或 wiki 解析为 sheet 时,使用 `--block-id "<sheetId>!<cell>"` 指定单元格(如 `a281f9!D6`);sheet 没有全文评论,`--full-comment` 不可用。
|
|
171
|
-
- **Slide 评论**:当 `--doc` 为 slides URL、`--type slides`,或 wiki 解析为 slides 时,必须传 `--block-id "<SLIDE_BLOCK_TYPE>!<XML_ELEMENT_ID>"`。此时 `--full-comment`
|
|
171
|
+
- **Slide 评论**:当 `--doc` 为 slides URL、`--type slides`,或 wiki 解析为 slides 时,必须传 `--block-id "<SLIDE_BLOCK_TYPE>!<XML_ELEMENT_ID>"`。此时 `--full-comment` 不可用。
|
|
172
172
|
- **Base 记录局部评论**:Base 不支持全局评论,所有评论都挂在记录上;裸 token 可传 `--type bitable` 或 `--type base`,推荐 `bitable`。定位信息必须是 file token(base token)+ `--block-id "<table-id>!<record-id>!<view-id>"`,其中 table/record/view ID 通常分别以 `tbl`/`rec`/`vew` 开头;view_id 只决定被提及时点击通知打开哪个视图,不影响评论挂载点,但必须传。ID 获取参考 [`lark-base`](../../lark-base/SKILL.md)。
|
|
173
173
|
- **Slide 参数映射示例**:`--block-id` 由 PPT XML 元素类型和元素 `id` 组成。例如:
|
|
174
174
|
- `<slide id="pkk">` 对应 `--block-id slide!pkk`,表示给整页评论。
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
从飞书云空间(云盘/云存储)下载文件到本地。下载对象是 Drive **文件**(上传的 PDF/zip/图片/音视频等文件),以及支持 Wiki URL / Wiki token。
|
|
7
7
|
|
|
8
8
|
## 命令
|
|
9
9
|
|
|
@@ -13,8 +13,27 @@ lark-cli drive +download --file-token boxbc_xxx --output ./report.pdf
|
|
|
13
13
|
|
|
14
14
|
# 只提供 token,默认保存到当前目录
|
|
15
15
|
lark-cli drive +download --file-token boxbc_xxx
|
|
16
|
+
|
|
17
|
+
# 直接传 URL,CLI 自动解析类型和 token
|
|
18
|
+
lark-cli drive +download --url "https://example.feishu.cn/file/<FILE_TOKEN>" --output ./report.pdf
|
|
19
|
+
|
|
20
|
+
# Wiki URL 也可直接传,CLI 会先解析到底层 obj_token/obj_type(obj_type 必须是 file)
|
|
21
|
+
lark-cli drive +download --url "https://example.feishu.cn/wiki/<WIKI_NODE_TOKEN>" --output ./report.pdf
|
|
22
|
+
|
|
23
|
+
# 只有裸 Wiki node token 时,显式传 --wiki-token,让 CLI 先解析底层文件
|
|
24
|
+
lark-cli drive +download --wiki-token "<WIKI_NODE_TOKEN>" --output ./report.pdf
|
|
16
25
|
```
|
|
17
26
|
|
|
27
|
+
## 参数
|
|
28
|
+
|
|
29
|
+
| 参数 | 必填 | 说明 |
|
|
30
|
+
|------|------|------|
|
|
31
|
+
| `--file-token` | 条件必填 | Drive 文件 token;与 `--url` / `--wiki-token` 三选一 |
|
|
32
|
+
| `--url` | 条件必填 | 飞书文件 URL 或 Wiki URL;CLI 自动解析类型和 token |
|
|
33
|
+
| `--wiki-token` | 条件必填 | 裸 Wiki node token;CLI 先解析到底层 Drive 文件 |
|
|
34
|
+
| `--output` | 否 | 本地输出路径;不传时默认保存到当前目录 |
|
|
35
|
+
| `--overwrite` | 否 | 覆盖已存在的输出文件;不传时目标已存在会报错 |
|
|
36
|
+
|
|
18
37
|
## URL 解析
|
|
19
38
|
|
|
20
39
|
从飞书文件 URL 提取 token:
|
|
@@ -25,10 +44,17 @@ https://xxx.feishu.cn/drive/file/boxbc_xxx
|
|
|
25
44
|
file_token
|
|
26
45
|
```
|
|
27
46
|
|
|
47
|
+
Wiki URL / 裸 Wiki node token 会先解析到底层文档,解析后会在输出里附带 `wiki_token` 和 `wiki_node`(含底层 `obj_token`/`obj_type`)。
|
|
48
|
+
|
|
49
|
+
## 关键约束
|
|
50
|
+
|
|
51
|
+
- Wiki 节点解析后的 `obj_type` 必须是 `file`;不确定 token 类型时,先用 `lark-cli drive +inspect --url <TOKEN> --type wiki` 检查。
|
|
52
|
+
|
|
28
53
|
## 排障
|
|
29
54
|
|
|
30
55
|
- 如果返回 `permission_denied`,或最终下载返回 `HTTP 403`,按错误 `hint` 使用 `lark-cli drive +preview --file-token <FILE_TOKEN> --type source_file --output <path>` 获取预览产物。
|
|
31
56
|
- 如果返回限流错误,停止立即重试,稍后按指数退避重试。
|
|
57
|
+
- 如果目标(或 Wiki 解析出的底层文档)是 `docx` / `sheet` / `bitable` / `slides` 等在线文档,`+download` 无法直接下载,会返回 typed validation error;改用 [lark-drive-export](lark-drive-export.md) 渲染成 pdf / xlsx / pptx / markdown 等格式。
|
|
32
58
|
|
|
33
59
|
## 参考
|
|
34
60
|
|
|
@@ -147,6 +147,7 @@ lark-cli drive +export \
|
|
|
147
147
|
| `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` 是否与实际资源类型一致 |
|
|
148
148
|
| `1069902` | 没有当前导出任务所需权限 | 不要直接重试同一命令;先确认当前 `--as` 身份是否能访问该文档、是否有下载/导出权限,以及文档是否受分享、密级或租户策略限制。需要补权限时,让文档 owner 或管理员授权后再执行 |
|
|
149
149
|
| `99991400` / `rate_limit` | OpenAPI 请求频率受限 | 立即停止并按错误 `hint` 处理:没有 `ticket` 时,至少等待 1 分钟后重跑原 `drive +export`;已有 `ticket` 时,只执行 `drive +task_result --scenario export` 续查,不要重复创建任务。持续限频时从 1 分钟开始指数退避 |
|
|
150
|
+
| `9499` + `too many request(s)` | 导出任务接口的另一种限频响应;同一个 `9499` 在其它 Drive 接口也可能表示参数类型错误,CLI 会结合服务端消息区分 | 按 `rate_limit` 处理:立即停止,等待至少 1 分钟并指数退避;已有 `ticket` 时只续查该任务,不要重新创建 |
|
|
150
151
|
| `99991679` | 缺少 OpenAPI scope | 按错误 envelope 中的 `missing_scopes` / `required_scope` / `hint` 补齐授权;常见方式是重新执行 `lark-cli auth login --scope "<缺失 scope>"`。补 scope 前不要反复重试导出命令 |
|
|
151
152
|
|
|
152
153
|
## 推荐续跑方式
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# drive +member-remove(移除协作者权限)
|
|
2
|
+
|
|
3
|
+
> 这是高风险写操作。真实执行会移除权限,需要核对资源和成员后显式加 `--yes`。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
lark-cli drive +member-remove \
|
|
9
|
+
--token "<bare_token_or_url>" \
|
|
10
|
+
--type docx \
|
|
11
|
+
--member-id "ou_xxx" \
|
|
12
|
+
--member-type openid \
|
|
13
|
+
--yes
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 参数
|
|
17
|
+
|
|
18
|
+
| 参数 | 必填 | 说明 |
|
|
19
|
+
|------|------|------|
|
|
20
|
+
| `--token` | 是 | 裸 token 或完整 URL。路径支持 `/drive/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`、`/page/`;URL 可从路径推断类型,裸 token 必须同时传 `--type`。 |
|
|
21
|
+
| `--type` | 条件必填 | 资源类型:`docx` / `doc` / `sheet` / `bitable` / `file` / `folder` / `wiki` / `mindnote` / `slides` / `minutes` / `apps`。完整 URL 可省略。 |
|
|
22
|
+
| `--member-id` | 是 | 要移除的单个协作者 ID。逗号分隔的多成员输入会被拒绝;批量场景应逐个调用。 |
|
|
23
|
+
| `--member-type` | 是 | ID 类型:`email` / `openid` / `openchat` / `opendepartmentid` / `userid` / `unionid` / `groupid` / `wikispaceid`。 |
|
|
24
|
+
| `--member-kind` | 条件必填 | 仅 `--member-type=wikispaceid` 使用:未启用知识库成员分组时传 `wiki_space_member`,启用后根据权限传 `wiki_space_viewer` 或 `wiki_space_editor`。 |
|
|
25
|
+
| `--perm-type` | 否 | 仅 wiki 协作者使用:`container`(默认,当前页面及子页面)或 `single_page`(仅当前页面)。 |
|
|
26
|
+
| `--dry-run` | 否 | 只预览 DELETE URL、query 和 body,不调用接口。 |
|
|
27
|
+
| `--yes` | 真实执行时是 | 确认高风险权限移除操作。 |
|
|
28
|
+
|
|
29
|
+
## 输出
|
|
30
|
+
|
|
31
|
+
以移除 `openid` 类型的用户协作者为例,成功后返回:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"ok": true,
|
|
36
|
+
"identity": "user",
|
|
37
|
+
"data": {
|
|
38
|
+
"removed": true,
|
|
39
|
+
"resource_token": "doxcnxxx",
|
|
40
|
+
"resource_type": "docx",
|
|
41
|
+
"member_id": "ou_xxx",
|
|
42
|
+
"member_type": "openid",
|
|
43
|
+
"member_kind": "user"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Wiki 普通协作者还会返回 `perm_type`;`wikispaceid` 返回所传的 `member_kind`。
|
|
49
|
+
|
|
50
|
+
`removed: true` 表示删除请求成功完成,不保证该权限此前一定存在。
|
|
51
|
+
|
|
52
|
+
## 行为说明
|
|
53
|
+
|
|
54
|
+
- **身份支持**:支持 `--as user` 和 `--as bot`。
|
|
55
|
+
- **部门协作者**:`--member-type=opendepartmentid` 只能配合 `--as user`;bot 身份会在客户端提前拒绝。
|
|
56
|
+
- **安全编码**:资源 token 和 member ID 都作为独立 path segment 编码。
|
|
57
|
+
- **Wiki 范围**:普通 wiki 协作者默认删除 `container` 权限;只删除当前页面权限时显式传 `single_page`。
|
|
58
|
+
- **Wiki 空间成员**:`--member-type=wikispaceid` 仅支持 `--type=wiki`;必须用 `--member-kind` 指明成员角色,并且不能同时传 `--perm-type`。
|
|
59
|
+
- **错误处理**:OpenAPI 返回的 typed error 原样透传,可根据错误信封中的 subtype、code、hint 和权限信息处理。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、权限处理和安全规则。
|
|
4
4
|
|
|
5
|
-
查看或下载 Drive
|
|
5
|
+
查看或下载 Drive 文件内容,或列出并获取文件可用的预览产物。对象是 Drive **文件**,也支持 Wiki URL / node token(CLI 先把 Wiki 节点解析到底层文件,`obj_type` 必须是 `file`)。这个 shortcut 不猜测默认类型:
|
|
6
6
|
|
|
7
7
|
- 如果只需要查看或下载文件内容,或不关心 PDF/text/image 等转换预览,优先使用 `--type source_file --output <path>`
|
|
8
8
|
- 只想看候选项时,用 `--list-only`
|
|
@@ -20,6 +20,22 @@ lark-cli drive +preview \
|
|
|
20
20
|
--type source_file \
|
|
21
21
|
--output ./artifacts/source
|
|
22
22
|
|
|
23
|
+
# 推荐:直接传 URL,CLI 自动解析类型和 token
|
|
24
|
+
lark-cli drive +preview \
|
|
25
|
+
--url "https://example.feishu.cn/file/<FILE_TOKEN>" \
|
|
26
|
+
--list-only
|
|
27
|
+
|
|
28
|
+
# Wiki URL 也可直接传,CLI 会先解析到底层 obj_token/obj_type(obj_type 必须是 file)
|
|
29
|
+
lark-cli drive +preview \
|
|
30
|
+
--url "https://example.feishu.cn/wiki/<WIKI_NODE_TOKEN>" \
|
|
31
|
+
--type source_file \
|
|
32
|
+
--output ./artifacts/source
|
|
33
|
+
|
|
34
|
+
# 只有裸 Wiki node token 时,显式传 --wiki-token
|
|
35
|
+
lark-cli drive +preview \
|
|
36
|
+
--wiki-token "<WIKI_NODE_TOKEN>" \
|
|
37
|
+
--list-only
|
|
38
|
+
|
|
23
39
|
# 列出可用预览候选项
|
|
24
40
|
lark-cli drive +preview \
|
|
25
41
|
--file-token "<FILE_TOKEN>" \
|
|
@@ -50,7 +66,9 @@ lark-cli drive +preview \
|
|
|
50
66
|
|
|
51
67
|
| 参数 | 必填 | 说明 |
|
|
52
68
|
|------|------|------|
|
|
53
|
-
| `--file-token` |
|
|
69
|
+
| `--file-token` | 条件必填 | Drive 文件 token;与 `--url` / `--wiki-token` 三选一 |
|
|
70
|
+
| `--url` | 条件必填 | 飞书文件 URL 或 Wiki URL;CLI 自动解析类型和 token |
|
|
71
|
+
| `--wiki-token` | 条件必填 | 裸 Wiki node token;CLI 先解析到底层 Drive 文件 |
|
|
54
72
|
| `--type` | 条件必填 | 预览类型;优先使用 `--list-only` 返回的 `type`,如 `pdf` / `html` / `text` / `png` / `jpg` / `source_file` |
|
|
55
73
|
| `--version` | 否 | 文件版本号 |
|
|
56
74
|
| `--list-only` | 否 | 仅返回候选项,不下载 |
|
|
@@ -90,6 +108,7 @@ lark-cli drive +preview \
|
|
|
90
108
|
- `--type source_file` 用于查看文件内容,不依赖 `--list-only` 返回的候选项;它适合读取或保存源内容,不等同于 PDF/text/image 等转换预览
|
|
91
109
|
- 候选项状态来自后端 `preview_status` 枚举,例如 `READY` / `PROCESSING` / `FAILED` / `NO_SUPPORT`
|
|
92
110
|
- 本地文件名在未显式带扩展名时,会结合响应头自动补扩展名
|
|
111
|
+
- Wiki URL / 裸 Wiki node token 会先解析到底层文档,解析后会在输出里附带 `wiki_token` 和 `wiki_node`(含底层 `obj_token`/`obj_type`);`obj_type` 必须是 `file`。如果 Wiki 指向 `docx` / `sheet` / `bitable` / `slides` 等在线文档,`+preview` 无法直接处理,CLI 会返回 typed validation error,并在 hint 中提示改用 [lark-drive-export](lark-drive-export.md)
|
|
93
112
|
|
|
94
113
|
### 参考
|
|
95
114
|
|
|
@@ -134,6 +134,8 @@ lark-cli drive +push --local-dir ./repo --folder-token fldcnxxxxxxxxx \
|
|
|
134
134
|
|
|
135
135
|
`+push` 的失败项带结构化字段,agent 必须优先读 `items[].error_class` / `phase` / `code`,不要只看自然语言 `error` 文本。`summary.aborted=true` 表示命令已经遇到终止性错误并停止后续批处理;这时**不要原样重试**,先修复根因。
|
|
136
136
|
|
|
137
|
+
`retryable=true` 只表示修复根因或等待后可以再次尝试,不表示应该立即、无限重放整个 push;重试时采用有上限的指数退避和抖动。
|
|
138
|
+
|
|
137
139
|
常见终止性错误:
|
|
138
140
|
|
|
139
141
|
| `error_class` | 常见 `code` | 含义 | Agent 应对 |
|
|
@@ -144,8 +146,10 @@ lark-cli drive +push --local-dir ./repo --folder-token fldcnxxxxxxxxx \
|
|
|
144
146
|
| `invalid_api_parameters` | `1061002` | API 参数被服务端拒绝 | 停止重试,检查 `--folder-token`、覆盖模式、`file_token`、文件名和上传参数;不要对同一参数组合批量重试 |
|
|
145
147
|
| `parent_node_missing` | `1061044` | 上传 / 建目录使用的父文件夹不存在或当前身份不可见 | 停止重试,检查 `--folder-token` 是否仍存在、是否有权限、父目录是否在 push 过程中被删除;不要继续上传同一目录树 |
|
|
146
148
|
| `parent_sibling_limit` | `1062507` | 目标父文件夹单层子节点数量超过上限 | 停止重试,清理目标目录、换一个 `--folder-token`,或把上传内容拆到多个子目录 |
|
|
149
|
+
| `quota_exceeded` | `1061101` / `1061061` | 租户或当前用户的 Drive 容量配额已满 | 停止重试,释放容量、调整目标位置或扩容后再执行 push |
|
|
147
150
|
| `rate_limited` | `99991400` | 触发频控 | 停止当前批次,退避后再重试 |
|
|
148
|
-
| `
|
|
151
|
+
| `conflict` | `1061045` | 同一目标发生资源竞争 | 停止当前批次,避免并发操作同一目标;退避后有限重试 |
|
|
152
|
+
| `server_error` | `1663` / `1061001` / `2200` / HTTP 5xx | Drive 服务端或网关异常 | 停止当前批次,稍后有限重试 |
|
|
149
153
|
|
|
150
154
|
非终止但需要解释的状态:
|
|
151
155
|
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
>
|
|
26
26
|
> **`--query` 最长 30 个字符**:按字符数(Unicode 码点)算,中文每字算 1 个,与 ASCII 同口径;超过 30 会被服务端拒绝(`99992402 field validation failed`,**是报错不是截断**)。长关键词必须先压缩成核心实体 + 主题词(如把整句问题压成「项目名 + 主题」再搜),不要把整句原问塞进 `--query`。
|
|
27
27
|
>
|
|
28
|
+
> **按完整标题定位:** 使用 `--only-title`;标题不超过 30 个字符时直接查询,超长标题使用不超过限制的稳定片段召回,再按返回标题严格匹配。使用相同 query 和过滤条件按 `page_token` 检查,最多 3 页;仅在 `has_more=false` 且跨页恰好一个严格匹配时继续写操作,否则请用户缩小范围或补充信息。`drive files list` 只用于枚举已知文件夹的直接子项。
|
|
29
|
+
>
|
|
28
30
|
> **列表型请求不要硬塞关键词**:如果用户只是要求"我这月创建的所有文档"、"最近半年我编辑过的文档"、"按类型分类统计"这类范围浏览 / 汇总请求,且没有给出标题片段或业务关键词,应使用 `--query ""` 搭配 `--created-by-me`、`--mine`、`--created-*`、`--edited-*`、`--doc-types` 等过滤条件。不要把"查找"、"所有文档"、"最近更新过"、"按类型分类统计"这类动作词或统计意图放进 `--query`,否则会把本来应靠 filter 命中的结果过度收窄。
|
|
29
31
|
>
|
|
30
32
|
> **标题词 + 正文词联合搜索**:如果用户同时给出标题关键词和正文关键词,并要求同一资源同时满足两项条件,优先执行一条普通联合搜索:`lark-cli drive +search --query "标题词 正文词"`,并在同一条命令中叠加用户指定的 `--folder-tokens`、`--doc-types` 等过滤条件。不要把这种联合搜索拆成“标题搜索 + 正文搜索”后自行拼交集;也不要把 `--only-title` 或 `intitle:` 用作主候选路径。只有用户明确只查标题时,才使用 `--only-title` 或 `intitle:`。
|