@amaster.ai/pi-lark 0.1.2-beta.39 → 0.1.2-beta.41

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 (64) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-apps/SKILL.md +10 -0
  3. package/skills/lark-apps/references/lark-apps-db-execute.md +1 -1
  4. package/skills/lark-apps/references/lark-apps-db.md +2 -2
  5. package/skills/lark-calendar/SKILL.md +89 -31
  6. package/skills/lark-calendar/references/lark-calendar-create.md +7 -39
  7. package/skills/lark-calendar/references/lark-calendar-room-find.md +5 -9
  8. package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
  9. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
  10. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  11. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
  12. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -5
  13. package/skills/lark-calendar/references/lark-calendar-update.md +2 -7
  14. package/skills/lark-doc/SKILL.md +1 -1
  15. package/skills/lark-doc/references/lark-doc-fetch.md +4 -2
  16. package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
  17. package/skills/lark-doc/references/lark-doc-whiteboard.md +4 -0
  18. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +34 -0
  19. package/skills/lark-doc/references/lark-doc-xml.md +3 -2
  20. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +4 -3
  21. package/skills/lark-drive/SKILL.md +7 -3
  22. package/skills/lark-drive/references/lark-drive-delete.md +12 -0
  23. package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
  24. package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
  25. package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
  26. package/skills/lark-drive/references/lark-drive-push.md +32 -5
  27. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
  28. package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
  29. package/skills/lark-mail/SKILL.md +12 -9
  30. package/skills/lark-mail/references/lark-mail-forward.md +1 -1
  31. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  32. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  33. package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
  34. package/skills/lark-mail/references/lark-mail-reply.md +1 -1
  35. package/skills/lark-mail/references/lark-mail-watch.md +1 -1
  36. package/skills/lark-markdown/SKILL.md +3 -2
  37. package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
  38. package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
  39. package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
  40. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
  41. package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
  42. package/skills/lark-minutes/references/lark-minutes-todo.md +0 -2
  43. package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
  44. package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
  45. package/skills/lark-shared/SKILL.md +18 -0
  46. package/skills/lark-slides/references/asset-planning.md +16 -4
  47. package/skills/lark-slides/references/lark-slides-whiteboard.md +31 -30
  48. package/skills/lark-slides/references/planning-layer.md +31 -1
  49. package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
  50. package/skills/lark-slides/references/slides_xml_schema_definition.xml +1 -1
  51. package/skills/lark-slides/references/xml-format-guide.md +50 -1
  52. package/skills/lark-slides/references/xml-schema-quick-ref.md +1 -1
  53. package/skills/lark-task/references/lark-task-create.md +14 -1
  54. package/skills/lark-vc/references/lark-vc-recording.md +0 -2
  55. package/skills/lark-vc-agent/SKILL.md +13 -10
  56. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +64 -36
  57. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +7 -7
  58. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +5 -2
  59. package/skills/lark-wiki/SKILL.md +4 -2
  60. package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
  61. package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
  62. package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
  63. package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
  64. package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
@@ -14,17 +14,14 @@
14
14
  ## 命令
15
15
 
16
16
  ```bash
17
- # 默认用法:全量拉取当前可见事件
18
- lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28 --page-all --format pretty
17
+ # 默认用法:全量拉取当前身份可见事件;输出易读时间线
18
+ lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-all --format pretty
19
19
 
20
20
  # 指定时间范围,并拉全该时间窗内当前可见事件
21
- lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28 --start 2026-04-17T15:00:00+08:00 --end 2026-04-17T16:00:00+08:00 --page-all --format pretty
21
+ lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --start 2026-04-17T15:00:00+08:00 --end 2026-04-17T16:00:00+08:00 --page-all --format pretty
22
22
 
23
23
  # 基于上一次保存的 page_token 继续查新增事件
24
- lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28 --page-token <last_page_token> --page-all --format pretty
25
-
26
- # 调试或控制返回体大小时,显式只查一页
27
- lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28 --page-size 20 --format json
24
+ lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-token <last_page_token> --page-all --format pretty
28
25
  ```
29
26
 
30
27
  ## 参数
@@ -54,9 +51,10 @@ lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28
54
51
 
55
52
  ### 2. 身份来源是读取事件的权限锚点
56
53
 
57
- - 用户身份路径:先用 `+meeting-list-active --as user` 发现当前登录用户的会议,再用 `+meeting-events --as user` 读取该 `meeting_id`。
58
- - 应用身份路径:应用机器人必须在会中或参会过;不要拿任意 `meeting_id` 直接用 `--as bot` 查。
59
- - 不要混用身份。身份不一致时,常见结果是空列表、`no permission` 或 `bot is not in meeting`。
54
+ - `+meeting-events` 支持 `--as user` 和 `--as bot`。
55
+ - 用户身份路径:用户身份发现的会议继续用用户身份读取。
56
+ - 应用身份路径:应用机器人必须在会中或参会过;不要拿任意 `meeting_id` 直接查。
57
+ - 不要在拿到 `meeting_id` 后随意切换身份。身份不一致时,常见结果是空列表、`no permission` 或 `bot is not in meeting`。
60
58
 
61
59
  ### 3. 读取事件前必须先拿到可见的 meeting_id
62
60
 
@@ -67,21 +65,21 @@ lark-cli vc +meeting-events --as <same_identity> --meeting-id 69xxxxxxxxxxxxx28
67
65
  lark-cli vc +meeting-join --as bot --meeting-number 123456789
68
66
 
69
67
  # 再查询事件
70
- lark-cli vc +meeting-events --as bot --meeting-id <meeting.id>
68
+ lark-cli vc +meeting-events --as bot --meeting-id <id>
71
69
  ```
72
70
 
73
71
  如果应用机器人已经在会中,也可以先通过 active meeting 找会:
74
72
 
75
73
  ```bash
76
74
  lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
77
- lark-cli vc +meeting-events --as bot --meeting-id <meeting_id> --page-all --format pretty
75
+ lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
78
76
  ```
79
77
 
80
- 如果只是查询当前登录用户所在会议:
78
+ 如果要查询当前登录用户所在会议:
81
79
 
82
80
  ```bash
83
81
  lark-cli vc +meeting-list-active --as user --format json
84
- lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty
82
+ lark-cli vc +meeting-events --as user --meeting-id <id> --page-all --format pretty
85
83
  ```
86
84
 
87
85
  若应用机器人已离会、未入会、或会议已经无法再判断身份,后端通常会报:
@@ -104,18 +102,19 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
104
102
 
105
103
  执行准则:
106
104
 
107
- - **默认命令模板**:`lark-cli vc +meeting-events --as <same_identity> --meeting-id <meeting.id> --page-all --format pretty`
105
+ - **默认命令模板**:`lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-all --format pretty`
108
106
  - 如果你发现自己执行成了不带 `--page-all` 的单页查询,而响应里又出现 `has_more=true` / `more available` / 非空 `page_token`,应立刻意识到这只是部分结果。
109
- - 遇到上述情况,默认补救方式是继续使用返回的 `page_token` 续拉,例如:`lark-cli vc +meeting-events --as <same_identity> --meeting-id <meeting.id> --page-token <returned_page_token> --page-all --format pretty`
107
+ - 遇到上述情况,默认补救方式是继续使用返回的 `page_token` 续拉,例如:`lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-token <returned_page_token> --page-all --format pretty`
110
108
  - 只有在用户明确要求“就看第一页”“先不要翻页”时,才不要默认带 `--page-all`
111
109
  - 只要你是基于 `+meeting-events` 来回答一场**正在进行中的会议内容**,就不能直接复用上一次查询结果。无论用户是在问“现在是谁在说话”“刚刚发生了什么”“最新事件有哪些”,还是让你“总结一下这个会议讲什么”,都必须先重新执行一次 `+meeting-events`,确认拿到的是最新事件流,再回答用户。只有在用户明确要求基于某次历史快照继续分析时,才可以复用旧结果。
112
110
 
113
- ### 5. pretty / json 输出差异
111
+ ### 5. 输出格式差异
114
112
 
115
- - `--format pretty`:输出会议主题、会议时间和逐条时间线,适合快速理解“发生了什么”,也是本 skill 的默认推荐格式。
116
- - `--format json`:保留完整原始 `events[]` 结构——参会人 open_id、聊天原文、share_doc、分页字段都在原始响应里,适合提取字段、联动其他命令或做进一步程序处理。
113
+ - `--format json`:结构化契约,顶层包含 `meeting`、`identity`、`events`、`has_more`、`page_token`。`identity` 表示当前读取身份;事件 actor 统一含 `participant_type`、`role`、`label`;每条事件保留 `payload` 便于追溯细节。
114
+ - `--format pretty`:默认推荐格式,输出当前身份和逐条时间线,适合快速理解“发生了什么”。
115
+ - `--format ndjson`:输出事件行,并带 metadata 行,适合流式消费。
117
116
 
118
- **选型原则**:只要目标是告诉用户“发生了什么”,默认就用 `--page-all --format pretty`;只有在需要完整原始消息流和结构化字段时,才改用 `json`。
117
+ **选型原则**:只在 `pretty`、`json`、`ndjson` 之间选择。目标是告诉用户“发生了什么”时,用 `--page-all --format pretty`;需要稳定字段给 agent 做结构化消费、总结、转发或二次处理时用 `--format json`;需要流式消费时用 `--format ndjson`。
119
118
 
120
119
  > **注意**:pretty 输出中的正文文本会做单行转义,真实换行会显示为 `\n`,避免打乱时间线布局。
121
120
 
@@ -132,10 +131,10 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
132
131
 
133
132
  执行准则:
134
133
 
135
- - 如果上下文已有明确 `meeting_id` 和来源身份,直接用同一身份执行 `+meeting-events --page-all --format json`。
136
- - 如果上下文没有明确 `meeting_id`,先按用户当前意图选择身份:问“我/当前用户所在会议”用 `lark-cli vc +meeting-list-active --as user --format pretty`;问“应用机器人可见的目标用户会议”用 `lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format pretty`。返回多个会议时先让用户选择。
134
+ - 如果上下文已有明确 `meeting_id`,沿用该 `meeting_id` 的来源身份执行 `+meeting-events --page-all --format json`。
135
+ - 如果上下文没有明确 `meeting_id`,先按用户当前意图选择身份:问“我/当前用户所在会议”用 `lark-cli vc +meeting-list-active --as user --format json`;问“应用机器人可见的目标用户会议”用 `lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json`。返回多个会议时先让用户选择。
137
136
  - 如果上下文只有 9 位会议号,先按当前身份执行 `+meeting-list-active` 并按 `meeting_no` 匹配;匹配到唯一会议后再查事件。不要为了总结会议而自动调用 `+meeting-join`。
138
- - 这类问题拿到 `meeting_id` 后,用 `lark-cli vc +meeting-events --as <same_identity> --meeting-id <meeting.id> --page-all --format json` 拉取最新事件流。
137
+ - 这类问题拿到 `meeting_id` 后,用同一身份执行 `lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-all --format json` 拉取最新事件流。
139
138
  - 如果事件中出现共享文档线索,例如:
140
139
  - `magic_share_started`
141
140
  - `share_doc.title`
@@ -159,7 +158,10 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
159
158
 
160
159
  | 字段 | 说明 |
161
160
  |------|------|
162
- | `events` | 事件列表 |
161
+ | `meeting` | 会议身份与时间状态,包含 `id/topic/meeting_no/start_time/end_time/status` |
162
+ | `identity` | 当前读取身份,包含 `id/name/participant_type/label` |
163
+ | `events` | 结构化事件列表;每条事件含参与者 `actors` 和事件细节 `payload` |
164
+ | `warnings` | 非阻断告警列表;事件列表本身仍可使用 |
163
165
  | `has_more` | 是否还有下一页 |
164
166
  | `page_token` | 下一页游标 |
165
167
 
@@ -174,6 +176,32 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
174
176
  | `magic_share_started` | 开始共享内容 / 文档 |
175
177
  | `magic_share_ended` | 结束共享 |
176
178
 
179
+ ### Forwarding meeting chat and reactions to IM
180
+
181
+ 转发到 IM 时,Agent 必须先用 `+meeting-events --format json` 的结构化事件构造完整 Feishu `post` 内容,再调用 IM 发送 shortcut。不要解析 pretty/Markdown 输出,也不要先生成纯文本或 Markdown 后再期望 IM 侧二次识别 reaction。
182
+
183
+ 对 `event_type == "chat_received"` 的事件逐项处理 `payload.chat_received_items`:
184
+
185
+ - `message_type == 3` 是会中 reaction;构造 IM `post` 内容时,以 [`lark-im` reaction emoji 列表](../../lark-im/references/lark-im-reactions.md) 作为 IM `emotion` 白名单。白名单内的 key 写成 `{"tag":"emotion","emoji_type":"<content>"}`,例如 `JIAYI`、`THUMBSUP`、`OK`。
186
+ - 对不在 IM reaction emoji 白名单内的 reaction key,保留原始 key 但写成文本节点,例如 `{"tag":"text","text":"[<content>]"}`;不应直接写入 `emotion.emoji_type`,否则 IM 发送会失败。
187
+ - 不要大小写归一化或猜测映射;`content` 是原始 reaction key,必须原样判断。
188
+ - 其他聊天消息写成文本节点:`{"tag":"text","text":"<content>"}`。
189
+ - 最终调用 `im +messages-send --msg-type post --content '<post-json>'`,其中 `<post-json>` 应混合使用可渲染 `emotion` 节点和文本 fallback;不要用 `--markdown` 承载会中 reaction。
190
+ - 如果 IM 返回 `message_content_emotion_tag's emoji_type is invalid`,只降级非法 reaction key,不要把整条消息退化成纯文本。
191
+ - 如果用户原始请求已经明确“发给我 / 推送给我 / 发到我的聊天框 / 发到我的单聊”,这已经覆盖本次收件人、内容和发送动作,直接发送给当前用户,不要再二次询问“是否发送”。
192
+ - 默认用应用身份 `--as bot` 发送;只有用户明确要求“用本人身份 / 用户身份发送”时才切到 `--as user`。
193
+ - 如果用户要求发给某个群或其他人但收件人不可唯一确定,只询问缺失的收件人信息。
194
+
195
+ ```bash
196
+ lark-cli vc +meeting-events \
197
+ --as <same_identity> \
198
+ --meeting-id <id> \
199
+ --page-all \
200
+ --format json
201
+ ```
202
+
203
+ 如果用户已经要求“发给我”,`<open_id>` 使用当前用户的 open_id;需要解析时先用用户查询能力获取当前用户信息。构造 IM post 时只发送用户请求范围内的会中内容,不要把前一条自然语言预览当作发送内容。
204
+
177
205
  ## pretty 输出示例
178
206
 
179
207
  ```text
@@ -197,28 +225,29 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
197
225
 
198
226
  ## Agent 组合场景
199
227
 
200
- ### 场景 1:入会后查看会中发生了什么
228
+ ### 场景 1:入会后读取会中发生了什么
201
229
 
202
230
  ```bash
203
231
  # 第 1 步:加入会议,记录返回的 meeting.id
204
- lark-cli vc +meeting-join --as bot --meeting-number 123456789
232
+ JOIN=$(lark-cli vc +meeting-join --as bot --meeting-number 123456789 --format json)
233
+ MID=$(echo "$JOIN" | jq -r '.data.meeting.id')
205
234
 
206
- # 第 2 步:查询事件流
207
- lark-cli vc +meeting-events --as bot --meeting-id <meeting.id> --page-all --format pretty
235
+ # 第 2 步:用 meeting.id 读取当前可见事件
236
+ lark-cli vc +meeting-events --as bot --meeting-id "$MID" --page-all --format pretty
208
237
  ```
209
238
 
210
239
  ### 场景 1b:应用机器人已在会中,先发现 meeting_id 再读事件
211
240
 
212
241
  ```bash
213
242
  lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
214
- lark-cli vc +meeting-events --as bot --meeting-id <meeting_id> --page-all --format pretty
243
+ lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
215
244
  ```
216
245
 
217
246
  ### 场景 1c:当前登录用户正在会中,先发现 meeting_id 再读事件
218
247
 
219
248
  ```bash
220
249
  lark-cli vc +meeting-list-active --as user --format json
221
- lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty
250
+ lark-cli vc +meeting-events --as user --meeting-id <id> --page-all --format pretty
222
251
  ```
223
252
 
224
253
  ### 场景 2:过滤某段时间内的事件
@@ -226,7 +255,7 @@ lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --for
226
255
  ```bash
227
256
  lark-cli vc +meeting-events \
228
257
  --as <same_identity> \
229
- --meeting-id <meeting.id> \
258
+ --meeting-id <id> \
230
259
  --start 2026-04-17T15:00:00+08:00 \
231
260
  --end 2026-04-17T16:00:00+08:00 \
232
261
  --page-all \
@@ -240,7 +269,7 @@ lark-cli vc +meeting-events \
240
269
  # 这次直接从该游标继续拉新增事件
241
270
  lark-cli vc +meeting-events \
242
271
  --as <same_identity> \
243
- --meeting-id <meeting.id> \
272
+ --meeting-id <id> \
244
273
  --page-token <last_page_token> \
245
274
  --page-all \
246
275
  --format pretty
@@ -257,10 +286,9 @@ lark-cli vc +meeting-events \
257
286
  | 错误现象 | 根本原因 | 解决方案 |
258
287
  |---------|---------|---------|
259
288
  | `--meeting-id is required` | 未传入 `--meeting-id` | 传入长数字 `meeting.id` |
260
- | `not a 9-digit meeting number` | 把 9 位会议号误传给 `--meeting-id` | 如果只是查询会中内容,先用 `+meeting-list-active` 按 `meeting_no` 匹配拿长数字 `meeting_id`;只有用户明确要求入会时才用 `+meeting-join --as bot --meeting-number <9位号>` |
261
- | `10005 bot is not in meeting` | 使用应用身份读取,但应用机器人从未真实入会该会议;或会议已结束但应用机器人从未在会中出现过 | 如果本来是用户身份发现的 `meeting_id`,改回 `--as user`;如果确实要应用身份读取,先 `+meeting-join --as bot --meeting-number <9位号>` 真实入会再查。**如果只是想看参会人快照,改用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants`** |
262
- | 用户身份不支持 | 当前事件读取接口不支持用用户身份访问 | 不要反复执行 `auth login`。改用应用身份流程:先通过 `+meeting-list-active --as bot --user-id <user_open_id>` 获取应用身份可读的 `meeting_id`,或在用户明确同意后让应用机器人入会,再用 `+meeting-events --as bot` 读取 |
263
- | `20001 meeting_status_MEETING_END` | 会议已结束且已超出后端允许的 5 分钟宽限窗口 | 本接口不再适合继续拉取事件。先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息,再根据 `note_id` / `minute_token` 和用户意图选择纪要正文、逐字稿或妙记;参会人请用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants` |
289
+ | `10005 bot is not in meeting` | 使用应用身份读取,但应用机器人从未真实入会该会议;或会议已结束但应用机器人从未在会中出现过 | 如果 `meeting_id` 来自用户身份发现,改回 `--as user`;如果确实要应用身份读取,先让应用机器人入会或确认它曾参会后再用 `--as bot`。**如果只是想看参会人快照,改用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants`** |
290
+ | 用户身份无权限 / 不可见 | 当前用户不是该会议的可见参与者,或 `meeting_id` 不是从用户身份路径获得 | 不要反复执行 `auth login`。先确认 `meeting_id` 是否来自 `+meeting-list-active --as user`;如果用户明确要切到应用身份,再通过 `+meeting-list-active --as bot --user-id <user_open_id>` 获取应用身份可读的 `meeting_id`,或在用户明确同意后让应用机器人入会,再用 `+meeting-events --as bot` 读取 |
291
+ | `20001 meeting_status_MEETING_END` | 会议已结束且已超出后端允许的 5 分钟宽限窗口 | 本接口不再适合继续拉取事件。先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息,再根据 `note_display_type` / `note_id` / `minute_token` 和用户意图选择纪要正文、逐字稿或妙记;参会人请用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants` |
264
292
  | `20002 meeting not exist` | `meeting_id` 错误,或会议实例当前已不可获取(常见于把 9 位会议号当 meeting_id 传) | 确认传入的是长数字 `meeting_id`,不是 9 位会议号 |
265
293
  | 应用身份权限不足 | 应用权限、租户安装、权限可访问的数据范围或 VC Agent privilege 未配置完整 | 不要执行 `auth login`。以 CLI 返回的 metadata / error envelope 为准确认缺失权限;检查应用发布/安装,以及开放平台“权限可访问的数据范围”:选择“按条件筛选”,条件为“会议的归属者 包含 与应用的可用范围一致”;仍失败再排查内测 privilege / 灰度 |
266
294
  | `HTTP 404` / `HTTP 500` | 服务端当前无法找到或处理该会议实例 | 换一个正在进行且 bot 可见的 meeting_id,或排查后端问题 |
@@ -29,7 +29,7 @@ lark-cli vc +meeting-list-active --as bot --user-id ou_xxx --format json
29
29
  | 用户身份 | `--as user` | 当前登录用户正在参加的会议 | 继续 `+meeting-events --as user` |
30
30
  | 应用身份 | `--as bot --user-id <user_open_id>` | 目标用户正在参加、且应用机器人也在会中的会议 | 继续 `+meeting-events --as bot` |
31
31
 
32
- 硬规则:`meeting_id` 从哪种身份路径拿到,后续 `+meeting-events` 就沿用哪种身份。不要把用户身份拿到的 `meeting_id` 改用应用身份查,也不要把应用身份拿到的 `meeting_id` 改用用户身份查,除非用户明确要求切换场景。
32
+ 硬规则:`meeting_id` 从哪种身份路径拿到,后续 `+meeting-events` 就沿用哪种身份。不要把应用身份拿到的 `meeting_id` 改用用户身份读事件,也不要把用户身份拿到的 `meeting_id` 强制切到应用身份。
33
33
 
34
34
  应用身份返回空,不代表目标用户不在任何会议中,只能说明没有找到“目标用户在会中且应用机器人也在会中”的当前会。
35
35
 
@@ -38,22 +38,22 @@ lark-cli vc +meeting-list-active --as bot --user-id ou_xxx --format json
38
38
  ```bash
39
39
  # 方式 1:先让应用机器人入会,直接从 join 响应拿 meeting.id
40
40
  lark-cli vc +meeting-join --as bot --meeting-number 123456789 --format json
41
- lark-cli vc +meeting-events --as bot --meeting-id <meeting.id> --page-all --format pretty
41
+ lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
42
42
 
43
43
  # 方式 2:应用机器人已经在会中时,用应用身份发现 meeting_id
44
44
  lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
45
- lark-cli vc +meeting-events --as bot --meeting-id <meeting_id> --page-all --format pretty
45
+ lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
46
46
 
47
- # 方式 3:只回答当前登录用户所在会议发生了什么
47
+ # 方式 3:查询当前登录用户所在会议发生了什么
48
48
  lark-cli vc +meeting-list-active --as user --format json
49
- lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty
49
+ lark-cli vc +meeting-events --as user --meeting-id <id> --page-all --format pretty
50
50
  ```
51
51
 
52
52
  ## 多会议选择
53
53
 
54
54
  - 如果返回多个会议,不要自动挑第一个。
55
55
  - 向用户展示每个候选的 `meeting_title` / `meeting_no` / `meeting_id`,等待用户选择。
56
- - 选择后继续使用发现该会议时的同一身份调用 `+meeting-events`。
56
+ - 选择后用同一身份执行 `+meeting-events` 读取事件。
57
57
 
58
58
  ## 9 位会议号匹配
59
59
 
@@ -80,7 +80,7 @@ lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
80
80
  |---------|---------|---------|
81
81
  | `--user-id is required when --as bot` | 应用身份未传目标用户 | 传入目标用户 open_id |
82
82
  | 用户身份返回空列表 | 当前登录用户没有可见的进行中会议 | 确认用户是否在会中,或是否切错身份 |
83
- | 用户身份不支持 | 当前接口不支持用用户身份访问 | 不要反复执行 `auth login`。改用应用身份流程:先拿目标用户 open_id,再执行 `+meeting-list-active --as bot --user-id <user_open_id>`;同时按应用身份权限配置检查应用权限、安装、数据范围和灰度 |
83
+ | 用户身份无权限 / 不可见 | 当前登录用户没有可见的进行中会议,或当前身份无法读取该会议 | 不要反复执行 `auth login`。先确认当前登录用户是否在会中、是否切错 profile;如果用户明确要查询应用机器人可见的会议,再拿目标用户 open_id 执行 `+meeting-list-active --as bot --user-id <user_open_id>`,并按应用身份权限配置检查应用权限、安装、数据范围和灰度 |
84
84
  | 应用身份返回空列表 | 没有满足“目标用户在会中且应用机器人也在会中”的当前会 | 先让应用机器人入会,或确认 `user_id` 和会议状态 |
85
85
  | `--user-id` 格式错误 | 传入了 internal user_id 或其他非 `ou_...` 值 | 改传目标用户 open_id |
86
86
  | 应用身份权限不足 | 应用权限、租户安装、权限可访问的数据范围或 VC Agent privilege 未配置完整 | 不要执行 `auth login`。以 CLI 返回的 metadata / error envelope 为准确认缺失权限;检查应用发布/安装,以及开放平台“权限可访问的数据范围”:选择“按条件筛选”,条件为“会议的归属者 包含 与应用的可用范围一致”;仍失败再排查内测 privilege / 灰度 |
@@ -47,11 +47,14 @@
47
47
 
48
48
  **然后按图表类型 × 身份选路径**,读对应文件按其完整 workflow 执行(含读 scene 指南、生成内容、渲染审查、交付):
49
49
 
50
+ 按上到下匹配, 命中即停:
51
+
50
52
  | 图表类型 | 身份 | 路径 |
51
53
  |--------------------|-------------------------------------|------------------------------------------------|
52
54
  | 思维导图、时序图、类图、饼图、甘特图 | 任何身份 | [`../routes/mermaid.md`](../routes/mermaid.md) |
53
- | 其他图表 | `Claude` / `Gemini` / `GPT` / `GLM` | [`../routes/svg.md`](../routes/svg.md) |
54
- | 其他图表 | `Doubao` / `Seed` / `Other` | [`../routes/dsl.md`](../routes/dsl.md) |
55
+ | 鱼骨图、金字塔图、流程图 | `Doubao` / `Seed` | [`../routes/dsl.md`](../routes/dsl.md) |
56
+ | 其他图表 | `Claude` / `Gemini` / `GPT` / `GLM` / `Doubao` / `Seed` | [`../routes/svg.md`](../routes/svg.md) |
57
+ | 其他图表 | `Other` | [`../routes/dsl.md`](../routes/dsl.md) |
55
58
 
56
59
  > **⚠️ SVG 路径失败回退**:走 `routes/svg.md` 时,碰到以下情况之一 → **丢弃当前 SVG,改读 `routes/dsl.md` 从零重画,不要逐行修补**:
57
60
  > - 渲染命令直接报错(语法级崩溃,不是 `--check` 的 warn/error)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lark-wiki
3
- version: 1.0.1
3
+ version: 1.0.2
4
4
  description: "飞书知识库:管理知识空间、空间成员和文档节点。创建和查询知识空间、查看和管理空间成员、管理节点层级结构、在知识库中组织文档和快捷方式。当用户需要在知识库中查找或创建文档、浏览知识空间结构、查看或管理空间成员、移动或复制节点时使用。当用户给出 doubao.com 的 /wiki/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:上传文件到知识库节点下(走 lark-drive)、编辑文档/表格/Base 内容(走 lark-doc / lark-sheets / lark-base)。"
5
5
  metadata:
6
6
  requires:
@@ -24,7 +24,7 @@ metadata:
24
24
 
25
25
  ## 快速决策
26
26
 
27
- - 用户要**整理 / 盘点 / 归类 / 重构知识库、个人文档库、文档库目录或 Wiki 节点结构**,或要生成整理方案、目标目录树、移动计划时,不要只使用 Wiki 节点 API。必须先阅读 [`../lark-drive/references/lark-drive-workflow-knowledge-organize.md`](../lark-drive/references/lark-drive-workflow-knowledge-organize.md),该 workflow 负责 Drive / Wiki / 个人文档库的统一入口解析、资源盘点、分类计划、写前确认和结果验证。
27
+ - 用户要**整理 / 盘点 / 归类 / 重构知识库、个人文档库、文档库目录或 Wiki 节点结构**,或要生成整理方案、目标目录树、移动计划时,不要只使用 Wiki 节点 API。必须先阅读 [`../lark-drive/references/lark-drive-workflow.md`](../lark-drive/references/lark-drive-workflow.md),再按其中 `Workflow Registry` 进入 [`knowledge_organize`](../lark-drive/references/lark-drive-workflow-knowledge-organize.md) workflow;该 workflow 负责 Drive / Wiki / 个人文档库的统一入口解析、资源盘点、分类计划、写前确认和结果验证。
28
28
  - 用户给的是知识库 URL(`.../wiki/<token>`),且后续要查成员/加成员/删成员:先调用 `lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}'` 获取 `space_id`,后续成员接口统一使用 `space_id`。
29
29
  - 用户要**删除**知识空间(`wiki +delete-space`)但只给了名称或 URL:**不能**把名称 / URL 原样传给 `--space-id`,必须先解析出真实 `space_id`。解析方式:
30
30
  - URL(`.../wiki/<token>`):`lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --format json`,读 `data.node.space_id`。
@@ -34,6 +34,8 @@ metadata:
34
34
  - 用户明确选定后再执行 `lark-cli wiki +delete-space --space-id <ID> --yes`(高风险写操作,必须显式 `--yes`)。
35
35
  - 反例:不要把 wiki URL / 名称直接当 `--space-id`(如 `--space-id "https://.../wiki/<wiki_token>"`);务必先用 `wiki spaces get_node` 解析出 `data.node.space_id` 再传。
36
36
  - 用户要在知识库中创建新节点,优先使用 `lark-cli wiki +node-create`。
37
+ - 用户要列出 Wiki 节点:先用 `wiki +space-list --as user` 拿数字 `space_id`,再用 `wiki +node-list --space-id <space_id>`。不要把 wiki URL、node token、doc token、名称直接当 `--space-id`。钻子节点时 `--parent-node-token` 必须是 wiki node token;如果用户给的是 docx/sheet/base URL,先用 `wiki +node-get --node-token <url>` 解析出 `node_token`。
38
+ - `wiki +node-list` 命中 `invalid_parameters`、`not_found`、`permission_denied` 时,不要重复调用同一参数;按 hint 修 `space_id` / `parent_node_token` / 权限。只有 `rate_limit` 才做退避重试。
37
39
  - 用户说“给知识库添加成员/管理员”:先把目标解析成“用户 / 群 / 部门 / 应用”四类之一,再决定 `--member-type`,不要先调 `wiki +member-add` 再根据报错反推类型。
38
40
  - 用户说“部门 + bot”:这是已知不支持路径。不要继续尝试 `wiki +member-add --as bot`;直接提示必须改成 `--as user`,或明确告知当前要求无法完成。
39
41
  - 用户说“用户 / 群 / 应用 + 添加成员”:先解析对应 ID,再执行 `wiki +member-add`。
@@ -19,7 +19,7 @@ lark-cli wiki +node-get \
19
19
  |------|------|----------|---------|-------------|
20
20
  | `--node-token` | string | **Yes** | — | `node_token`, cloud-doc `obj_token`, or a Lark URL embedding one (e.g. `https://feishu.cn/wiki/<token>` or `https://feishu.cn/docx/<token>`). Matches the `--node-token` naming used by sibling `+node-delete` / `+node-copy` / `+move`. |
21
21
  | `--token` | string | — (deprecated) | — | Deprecated original name; still accepted for backward compatibility but emits a `Flag --token has been deprecated, use --node-token instead` warning on stderr. New scripts should use `--node-token`. |
22
- | `--obj-type` | enum | No | — | Needed when `--node-token` is a raw `obj_token`; auto-inferred from the URL path. Not allowed when the token looks like a `node_token` (`wik...`) |
22
+ | `--obj-type` | enum | No | — | Needed when `--node-token` is a raw `obj_token`; auto-inferred from typed Lark URLs. If omitted for a raw token, the shortcut treats it as a wiki `node_token`. |
23
23
  | `--space-id` | string | No | — | Optional cross-check: fail if the resolved node does not live in this space |
24
24
  | `--format` | enum | No | `json` | `json` / `pretty` / `table` / `csv` / `ndjson` |
25
25
  | `--as` | enum | No | `auto` | Identity `user`/`bot`; wiki is user-centric → pass `--as user` |
@@ -11,6 +11,9 @@ lark-cli wiki +node-list --space-id <SPACE_ID>
11
11
  # Drill into a sub-directory (still single page by default)
12
12
  lark-cli wiki +node-list --space-id <SPACE_ID> --parent-node-token <NODE_TOKEN>
13
13
 
14
+ # Drill with a wiki URL (CLI normalizes /wiki/<token> to node_token)
15
+ lark-cli wiki +node-list --space-id <SPACE_ID> --parent-node-token "https://feishu.cn/wiki/wikcn_xxx"
16
+
14
17
  # Personal document library (user identity only)
15
18
  lark-cli wiki +node-list --space-id my_library --as user
16
19
 
@@ -31,8 +34,8 @@ lark-cli wiki +node-list --space-id <SPACE_ID> --format pretty
31
34
 
32
35
  | Flag | Type | Required | Default | Description |
33
36
  |------|------|----------|---------|-------------|
34
- | `--space-id` | string | **Yes** | — | Wiki space ID. Use `my_library` for personal document library (user only) |
35
- | `--parent-node-token` | string | No | — | Parent node token; omit to list the space root |
37
+ | `--space-id` | string | **Yes** | — | Numeric wiki space ID. Use `my_library` for personal document library (user only) |
38
+ | `--parent-node-token` | string | No | — | Parent wiki node token, or a `/wiki/<token>` URL; omit to list the space root |
36
39
  | `--page-size` | int | No | 50 | Page size, 1-50 |
37
40
  | `--page-token` | string | No | — | Page cursor; implies single-page fetch (no auto-pagination) |
38
41
  | `--page-all` | bool | No | `false` | Automatically paginate through all pages (capped by `--page-limit`) |
@@ -82,6 +85,10 @@ lark-cli wiki +node-list --space-id 6946843325487912356 --parent-node-token wikc
82
85
  ## Notes
83
86
 
84
87
  - `--space-id my_library` is a per-user alias and only valid with `--as user`. The shortcut will refuse `--as bot` with `my_library` upfront.
88
+ - `--space-id` is a numeric wiki `space_id`. Do not pass a wiki URL, wiki node token, document token, or title. Use `lark-cli wiki +space-list --as user` to discover it.
89
+ - `--parent-node-token` must resolve to a wiki node token. If you have a docx/sheet/base/file URL, first run `lark-cli wiki +node-get --node-token <url>` and use the returned `node_token`.
90
+ - Treat `invalid_parameters` (`space_id is not int`, `invalid page_token`), `not_found` (`node not found by parent node token`), and `permission_denied` as terminal for the current arguments. Fix the argument or permission before retrying.
91
+ - For `rate_limit`, stop immediate retries and retry later with exponential backoff or a smaller `--page-limit`.
85
92
 
86
93
  ## Required Scope
87
94
 
@@ -1,78 +0,0 @@
1
-
2
- # calendar +agenda
3
-
4
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
5
-
6
- 查看近期日程安排。只读操作,不修改任何日程。
7
-
8
- 需要的scopes: ["calendar:calendar.event:read"]
9
-
10
- ## 命令
11
-
12
- ```bash
13
- # 查看今天日程(默认)
14
- lark-cli calendar +agenda
15
-
16
- # 自定义时间范围(ISO 8601)
17
- lark-cli calendar +agenda --start "2026-03-10T00:00+08:00" --end "2026-03-17T00:00+08:00"
18
-
19
- # 自定义时间范围(仅日期)
20
- lark-cli calendar +agenda --start 2026-03-10 --end 2026-03-17
21
-
22
- # 人类可读格式输出
23
- lark-cli calendar +agenda --format pretty
24
-
25
- # 指定日历
26
- lark-cli calendar +agenda --calendar-id cal_xxx
27
- ```
28
-
29
- ## 参数
30
-
31
- | 参数 | 必填 | 说明 |
32
- |------|------|------|
33
- | `--start <time>` | 否 | 开始时间(ISO 8601 或仅日期,默认当天) |
34
- | `--end <time>` | 否 | 结束时间(默认与 `--start` 属于同一天,自动取当天结束时间) |
35
- | `--calendar-id <id>` | 否 | 日历 ID(省略则使用主日历) |
36
- | `--format` | 否 | 输出格式:json(默认) \| pretty |
37
- | `--dry-run` | 否 | 预览 API 调用,不执行 |
38
-
39
- ## 时间格式
40
-
41
- `--start` 和 `--end` 支持以下格式:
42
-
43
- | 格式 | 示例 | 说明 |
44
- |------|------|------|
45
- | ISO 8601 | `2026-03-10T14:00:00+08:00` | 完整格式 |
46
- | 日期+时间 | `2026-03-10 14:00:00` | 自动补全时区 |
47
- | 仅日期 | `2026-03-10` | start 取 00:00:00,end 取 23:59:59 |
48
- | Unix 时间戳 | `1741564800` | 秒级时间戳 |
49
-
50
- ## 输出格式
51
-
52
- **将结果整理为易读的日程表:**
53
-
54
- ```
55
- ## 2026-03-10 周一
56
-
57
- 09:00 - 09:30 站会
58
- 10:00 - 11:00 产品评审
59
- 14:00 - 15:00 与 Alice 1:1
60
-
61
- ## 2026-03-11 周二
62
-
63
- (无日程)
64
- ```
65
-
66
- **注意:按日期分组,并严格按照开始时间升序(从早到晚的时间线)排序输出。** 显示标题、时长
67
-
68
- ## 提示
69
-
70
- - 已取消的日程会自动过滤,无需额外处理。
71
- - 如无日程,告知用户"日程清空"。
72
- - 大于 40 天的时间范围会自动拆分查询并合并结果。
73
- - 查看多个日历:先用 `lark-cli calendar calendars list --page-all` 列出日历列表,再逐个查询。
74
-
75
- ## 参考
76
-
77
- - [lark-calendar](../SKILL.md) -- 日历全部命令
78
- - [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
@@ -1,124 +0,0 @@
1
-
2
- # calendar +freebusy
3
-
4
- > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
5
-
6
- 查询用户主日历的忙闲信息,返回指定时间范围内的忙碌时段列表和rsvp的状态。
7
-
8
- 需要的scopes: ["calendar:calendar.free_busy:read"]
9
-
10
- ## 命令
11
-
12
- ```bash
13
- # 查询当前用户今天的忙闲(默认)
14
- lark-cli calendar +freebusy
15
-
16
- # 自定义时间范围(仅日期)
17
- lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-12
18
-
19
- # 自定义时间范围(完整 ISO 8601)
20
- lark-cli calendar +freebusy --start "2026-03-11T08:00:00+08:00" --end "2026-03-11T18:00:00+08:00"
21
-
22
- # 查询指定用户的忙闲信息
23
- lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-12 --user-id ou_xxx
24
-
25
- # 人类可读格式输出
26
- lark-cli calendar +freebusy --format pretty
27
- ```
28
-
29
- ## 参数
30
-
31
- | 参数 | 必填 | 说明 |
32
- |------|------|------|
33
- | `--start <time>` | 否 | 查询开始时间(ISO 8601 或仅日期,默认当天) |
34
- | `--end <time>` | 否 | 查询结束时间(默认与 `--start` 属于同一天,自动取当天结束时间) |
35
- | `--user-id <open_id>` | 否 | 目标查询用户 ID(`ou_` 前缀)。省略时默认查询当前登录用户,bot 身份调用时必须明确指定 |
36
- | `--format` | 否 | 输出格式:json(默认) \| pretty |
37
- | `--dry-run` | 否 | 预览 API 调用,不执行 |
38
-
39
- ## 时间格式
40
-
41
- `--start` 和 `--end` 支持以下格式:
42
-
43
- | 格式 | 示例 | 说明 |
44
- |------|------|------|
45
- | ISO 8601 | `2026-03-11T09:00:00+08:00` | 完整格式 |
46
- | 日期+时间 | `2026-03-11 09:00:00` | 自动补全时区 |
47
- | 仅日期 | `2026-03-11` | start 取 00:00:00,end 取 23:59:59 |
48
- | Unix 时间戳 | `1741564800` | 秒级时间戳 |
49
-
50
- ## 输出示例
51
-
52
- ### 表格格式
53
-
54
- ```
55
- start end rsvp_status
56
- ---------------- ---------------- -----------
57
- 2026-03-11 10:00 2026-03-11 10:30 接受
58
- 2026-03-11 14:00 2026-03-11 15:00 待定
59
-
60
- 共 2 个忙碌时段
61
- ```
62
-
63
- ### JSON 格式
64
-
65
- ```json
66
- [
67
- {
68
- "start_time": "2026-03-11T10:00:00+08:00",
69
- "end_time": "2026-03-11T10:30:00+08:00",
70
- "rsvp_status": "accept"
71
- },
72
- {
73
- "start_time": "2026-03-11T14:00:00+08:00",
74
- "end_time": "2026-03-11T15:00:00+08:00",
75
- "rsvp_status": "tentative"
76
- }
77
- ]
78
- ```
79
-
80
- ## 典型场景
81
-
82
- ### 1. 查找日程会议空闲时段
83
-
84
- ```bash
85
- # 查询今天的忙碌时段
86
- lark-cli calendar +freebusy
87
-
88
- # 查询工作时间段
89
- lark-cli calendar +freebusy \
90
- --start "2026-03-11T08:00:00+08:00" \
91
- --end "2026-03-11T18:00:00+08:00"
92
- ```
93
-
94
- ### 2. 检查团队成员可用性
95
-
96
- ```bash
97
- # 查询多个成员,对比找出共同空闲时间
98
- lark-cli calendar +freebusy --start 2026-03-12 --user-id ou_member_a
99
- lark-cli calendar +freebusy --start 2026-03-12 --user-id ou_member_b
100
- ```
101
-
102
- ## 注意事项
103
-
104
- 1. **只查询主日历** — 此命令只返回用户主日历的忙闲信息,不包括其他订阅日历
105
- 2. **隐私保护** — 只返回忙碌时段的起止时间,不包含日程标题、描述等详细信息
106
- 3. **bot 身份** — bot 必须通过 `--user-id` 指定要查询的用户
107
-
108
- ## 与其他命令对比
109
-
110
- | 命令 | 用途 | 输出内容 |
111
- |------|------|----------|
112
- | `calendar +freebusy` | 查询忙闲时段 | 只返回忙碌时段列表(无日程详情) |
113
- | `calendar +agenda` | 查看日程安排 | 返回完整日程列表(含标题、描述等) |
114
-
115
- **选择建议**:
116
- - **仅需了解是否有空** → 使用 `+freebusy`(更快,隐私保护)
117
- - **需要查看日程详情** → 使用 `+agenda`
118
-
119
- ## 参考
120
-
121
- - [lark-calendar-agenda](lark-calendar-agenda.md) — 查看日程安排
122
- - [lark-calendar-create](lark-calendar-create.md) — 创建日程
123
- - [lark-calendar-suggestion](lark-calendar-suggestion.md) — 根据非明确时间或一段时间范围,推荐多个可用时间块方案
124
- - [lark-calendar](../SKILL.md) — 日历完整 API
@@ -1,29 +0,0 @@
1
-
2
- # calendar +search-event
3
-
4
- 按关键词、时间范围和参会人搜索日历日程。只读。
5
-
6
- ## 命令
7
-
8
- ```bash
9
- # 按关键词
10
- lark-cli calendar +search-event --query "周会"
11
-
12
- # 按时间范围(ISO 8601 或 YYYY-MM-DD)
13
- lark-cli calendar +search-event --start "2026-04-20T00:00:00+08:00" --end "2026-04-27T23:59:59+08:00"
14
-
15
- # 按参会人(自动识别 ou_ 用户 / oc_ 群聊 / omm_ 会议室前缀)
16
- lark-cli calendar +search-event --attendee-ids "ou_user1,oc_chat1,omm_room1"
17
-
18
- # 组合
19
- lark-cli calendar +search-event --query "周会" --start 2026-04-20 --end 2026-04-27 --attendee-ids "ou_user1"
20
- ```
21
-
22
- ## 输出字段
23
-
24
- `items` 列表每条返回 `event_id` / `summary` / `start` / `end` / `is_all_day` / `app_link`;外层有 `has_more`、`page_token`。**仅返回基础字段,要拿日程详情用 `calendar events get`。**
25
-
26
- ## 注意事项
27
-
28
- - 分页:`has_more=true` 时持续用 `page_token` 翻页直到 false,不要遗漏;`page-size` 最大 30。
29
- - 已结束的会议优先用 `vc +search`——日历不收录"即时会议",只查日程会漏。