@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
|
@@ -12,6 +12,18 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
|
|
14
14
|
|
|
15
|
+
## 命令选择与渐进式发现(必读)
|
|
16
|
+
|
|
17
|
+
执行任何 Task 命令前,必须先确认能力真实存在,禁止根据用户意图自行拼接或猜测 `+<verb>`:
|
|
18
|
+
|
|
19
|
+
1. 先将用户意图与下方 Shortcut 表精确匹配。只有表中明确列出的 shortcut 才可直接选择;参数不确定时读取对应 reference 或运行该 shortcut 的 `--help`。
|
|
20
|
+
2. 没有精确匹配、或无法确认当前版本是否支持时,先运行 `lark-cli task --help`,以当前 CLI 输出的命令列表为准。
|
|
21
|
+
3. help 中存在匹配 shortcut 时,使用 help 列出的完整 shortcut token(例如 `+create`)运行 `lark-cli task <shortcut> --help`,再按真实 flag 执行。
|
|
22
|
+
4. help 中没有匹配 shortcut 时,不得尝试相似的 `+<verb>`;从 help 中选择原生 resource,运行 `lark-cli task <resource> --help` 确认 method,再运行 `lark-cli schema task.<resource>.<method>` 获取参数结构,最后调用 `lark-cli task <resource> <method> ...`。
|
|
23
|
+
5. 遇到 `unknown_subcommand` 时必须停止猜测或尝试变体,回到第 2 步重新发现能力。
|
|
24
|
+
|
|
25
|
+
shortcut 名称只能来自本 Skill 的 Shortcut 表或 `lark-cli task --help`;原生 resource/method 以逐级 help 为准,参数名、类型和嵌套结构以 method schema 为准。
|
|
26
|
+
|
|
15
27
|
> **任务搜索技巧**:先区分用户是否**特地指定使用搜索 skill**,以及是否真的提供了**查询关键字**(例如任务名称、关键词、片段描述)。如果用户特地指定使用搜索 skill,或明确给出了任务查询关键字,则目标是**任务**时优先使用 `+search`。如果用户没有特地指定使用搜索 skill,且意图里没有查询关键字,只有范围条件(例如“今年以来”“已完成”“由我创建”“我关注的”),并且使用 `+search` 与 `+get-related-tasks` / `+get-my-tasks` 都能达到目的时,应优先使用列表型能力,而不是搜索型能力。其中,“与我相关 / 我关注的 / 由我创建”等优先考虑 `+get-related-tasks`;“我负责的 / 分配给我”的列表优先考虑 `+get-my-tasks`。不要把时间范围词(例如“今年以来”)本身误当成 `query` 去走搜索。
|
|
16
28
|
> **任务搜索相关性提示**:`+search` 当前不会自动判断搜索结果与搜索发起人的相关性。如果用户明确要求搜索“与我相关”的任务,必须先识别具体关系,获取当前用户的 `open_id`,并显式传入对应的 `--assignee`(负责人)、`--creator`(创建人)或 `--follower`(关注人)过滤条件;不能只依赖 `query` 期待自动返回与当前用户相关的任务。
|
|
17
29
|
> **任务清单搜索技巧**:任务清单也遵循同样的判断逻辑。先区分用户是否**特地指定使用搜索 skill**,以及是否真的提供了**清单查询关键字**(例如清单名称、关键词、片段描述)。如果用户特地指定使用搜索 skill,或明确给出了清单查询关键字,则优先使用 `+tasklist-search`。如果用户没有特地指定使用搜索 skill,且意图里没有查询关键字,只有范围条件(例如“由我创建的任务清单”“今年以来创建的清单”),并且使用搜索或原生列取清单都能达到目的时,应优先使用原生 `tasklists.list` 接口列取清单(先 `schema task.tasklists.list`,再 `lark-cli task tasklists list --as user ...`),再按 `creator`、`created_at` 等字段做本地筛选和分页控制。
|
|
@@ -19,7 +31,7 @@ metadata:
|
|
|
19
31
|
> **用户身份识别**:在用户身份(user identity)场景下,如果用户提到了“我”(例如“分配给我”、“由我创建”),请默认获取当前登录用户的 `open_id` 作为对应的参数值。
|
|
20
32
|
> **术语理解 — 待办 disambiguation(必读)**:
|
|
21
33
|
> - 用户提到「待办 / todo / 任务」时,**先判断归属**,不要默认走本 skill。
|
|
22
|
-
> - **走 [lark-
|
|
34
|
+
> - **走 [lark-meeting](../lark-meeting/SKILL.md) 的 `minutes +todo`**(禁止本 skill):上下文含 **妙记 / 会议纪要 / minute_token / 妙记 URL**(`/minutes/`);或「在某某妙记里新建/修改待办」「妙记 AI 待办」「会议录制里的待办」。
|
|
23
35
|
> - **走本 skill(lark-task)**:任务清单、分配给我、项目待办、截止日期/提醒、子任务、任务清单成员;或 applink 含 `client/todo/task?guid=`;或明确说「飞书任务」「任务中心」「我的任务清单」。
|
|
24
36
|
> - **禁止**:用户要在妙记里加待办时,**不要**调用 `task tasklists list`、`task +create` 或任何 task 命令去「找清单再放任务」。
|
|
25
37
|
> **友好输出**:在输出任务(或清单)的执行结果给用户时,建议同时提取并输出命令返回结果中的 `url` 字段(任务链接),以便用户可以直接点击跳转查看详情。
|
|
@@ -48,7 +48,9 @@ lark-cli task +create --summary "Test Task" --dry-run
|
|
|
48
48
|
| `--data <json>` | No | JSON object merged into the task create request for API fields without dedicated flags, such as `{"is_milestone":true}`. Explicit named flags override same-named fields in this object. |
|
|
49
49
|
| `--dry-run` | No | Preview the API call (JSON payload) without actually creating the task. |
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
> **Required:** If `task +create` has no dedicated flag for a field requested by the user, first inspect `lark-cli schema task.tasks.create`, then add that field to `--data` using the exact field name, type, and nesting from the Meta API request-body schema. Do not omit requested fields or guess their JSON shape. Keep fields already supplied through dedicated flags out of `--data`.
|
|
52
|
+
|
|
53
|
+
Prefer this shortcut over the raw `tasks create` command when `--data` can express the request. Do not assume that other shortcuts support `--data`; check each shortcut's `--help` output first.
|
|
52
54
|
|
|
53
55
|
## Workflow
|
|
54
56
|
|
package/skills/lark-vc/SKILL.md
CHANGED
|
@@ -1,205 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-vc
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "
|
|
4
|
+
description: "仅当用户或上游配置显式指定 lark-vc 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
8
|
-
|
|
8
|
+
skills: ["lark-meeting"]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# Compatibility entry
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
本技能只用于兼容旧名称,不直接处理业务。
|
|
14
14
|
|
|
15
|
-
**
|
|
16
|
-
> 1. 了解日历 & VC、会议产物 & 文档的关联关系和职责划分
|
|
17
|
-
> 2. 了解会议产物(妙记和纪要)之间的关联关系,例如:**妙记和纪要产生条件相互独立**
|
|
18
|
-
> 3. 了解不同会议产物的组成部分,以便根据需求决策使用哪种产物的数据
|
|
19
|
-
> 4. 了解会议总结、分析和信息提取的标准流程
|
|
20
|
-
|
|
21
|
-
## 身份
|
|
22
|
-
|
|
23
|
-
所有 vc 命令默认使用 `--as user`。`+search` 和 `meeting get` 也支持 `--as bot`。
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
# BAD — 查昨天的会议用 calendar,会漏掉即时会议
|
|
27
|
-
lark-cli calendar +search-event --query "站会" --start <start_time> --end <end_time>
|
|
28
|
-
|
|
29
|
-
# GOOD — 查已结束的会议用 vc +search
|
|
30
|
-
lark-cli vc +search --query "站会" --start <start_time> --end <end_time>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Shortcuts (推荐优先使用)
|
|
34
|
-
|
|
35
|
-
| Shortcut | 说明 |
|
|
36
|
-
|----------|------|
|
|
37
|
-
| [`+search`](references/lark-vc-search.md) | 搜索历史会议记录(需至关键词、时间范围、组织者、参与者、会议室少一个筛选条件) |
|
|
38
|
-
| [`+detail`](references/lark-vc-detail.md) | 通过 meeting-ids 获取会议详情,包括 note_id 和 minute_token |
|
|
39
|
-
| [`+recording`](references/lark-vc-recording.md) | 通过 meeting-ids 或 calendar-event-ids 查询 minute_token |
|
|
40
|
-
|
|
41
|
-
- 使用任何 Shortcut 前,必须先读其对应 reference 文档。
|
|
42
|
-
|
|
43
|
-
## 意图路由
|
|
44
|
-
|
|
45
|
-
| 用户意图 | 路由到 |
|
|
46
|
-
|----------|--------|
|
|
47
|
-
| 查"昨天的会议""上周的会""已结束的会议" | 本 skill(`+search`,含即时会议) |
|
|
48
|
-
| 查日历/日程或未来时间的会议 | [lark-calendar](../lark-calendar/SKILL.md) |
|
|
49
|
-
| 查"今天有哪些会议" | `vc +search`(已结束)+ lark-calendar(未开始),合并展示 |
|
|
50
|
-
| 只按自然语言标题查"xx 纪要的逐字稿 / 原始记录 / 谁说了什么" | 先到 [lark-drive](../lark-drive/SKILL.md) / [lark-doc](../lark-doc/SKILL.md);仅在已拿到 `note_id` / `vc-node-id` 后再到 [lark-note](../lark-note/SKILL.md) |
|
|
51
|
-
| Agent 真实入会/离会、会中实时事件 | [lark-vc-agent](../lark-vc-agent/SKILL.md) |
|
|
52
|
-
| 妙记信息/时长/封面/链接 | 先走 `vc +detail` 或 `vc +recording` 获取 `minute_token`,再用 [lark-minutes](../lark-minutes/SKILL.md) 的 `minutes get` |
|
|
53
|
-
| 本地音视频文件转纪要/逐字稿 | 先走 [lark-minutes](../lark-minutes/SKILL.md) 上传,再用 `minutes +detail --minute-tokens` |
|
|
54
|
-
|
|
55
|
-
## 核心概念
|
|
56
|
-
|
|
57
|
-
- **视频会议(Meeting)**:飞书视频会议实例,通过 meeting_id 标识。已结束的会议支持通过关键词、时间段、参会人、组织者、会议室等条件搜索(见 `+search`)。
|
|
58
|
-
- **会议纪要(Note)**:视频会议结束后生成的结构化文档,通过 `note_id` 标识,包含纪要文档(总结、待办)和逐字稿文档。`note_display_type` 区分**普通纪要(`normal`)**和 **unified 纪要**;已知 `note_id` 的直查与 unified 原始记录请用 [lark-note](../lark-note/SKILL.md)。
|
|
59
|
-
- **妙记(Minutes)**:来源于飞书视频会议的录制产物或用户上传的音视频文件,支持视频/音频的转写,包含总结、待办、章节和文字记录,通过 minute_token 标识。妙记带有**原始会议录制视频**,会后**不会自动授权给参会人**,需管理员授权或参会人主动申请;而智能纪要及其逐字稿会后自动授权给参会人。
|
|
60
|
-
- **纪要文档(MainDoc)**:AI 智能纪要的主文档,包含 AI 生成的总结和待办,对应 `note_doc_token`。
|
|
61
|
-
- **用户会议纪要(MeetingNotes)**:用户主动绑定到日程的纪要文档,对应 `meeting_note`。需先通过 [`calendar +meeting`](../lark-calendar/references/lark-calendar-meeting.md) 由 `event_id` 获取。
|
|
62
|
-
- **逐字稿(VerbatimDoc)**:会议的逐句文字记录,包含说话人和时间戳。
|
|
63
|
-
|
|
64
|
-
## 产物选择决策
|
|
65
|
-
|
|
66
|
-
| 用户意图 | 必须读取的产物 | 禁止 |
|
|
67
|
-
|---------|-------------|------|
|
|
68
|
-
| 提炼/总结/重新总结/整理会议内容/回顾会议 | 为降低 token 消耗,非必须不得获取 AI 纪要。必须使用原始对话记录(按下方逐字稿路由取得),基于原始对话独立分析。两类产物都存在且用户未指定时,默认用智能纪要的逐字稿;用户明确要妙记时才用妙记文字记录(Transcript) | 禁止直接搬运 AI 纪要(`note_doc_token`)的总结作为最终输出 |
|
|
69
|
-
| 查看待办/章节 | 默认 AI 纪要(`note_doc_token`);仅存在妙记或用户明确要妙记时用妙记产物 — AI 待办更友好(含提出人和负责人),章节按话题划分更结构化 | — |
|
|
70
|
-
| 查看纪要链接/文档地址 | 仅返回文档链接,无需读取内容 | — |
|
|
71
|
-
| 直接看 AI 总结结果 | AI 纪要(`note_doc_token`) | — |
|
|
72
|
-
| 谁说了什么/完整发言记录 | 原始对话记录(按下方逐字稿路由取得) | — |
|
|
73
|
-
|
|
74
|
-
> **智能纪要 vs 妙记的选择规则**(总结/待办/逐字稿等重复产物通用):只存在一类 → 用存在的那类;两类都存在且用户明确指定(如"看妙记逐字稿")→ **语义指向哪个走哪个,不要改道**;两类都存在但用户未指定 → **默认智能纪要及其逐字稿**(会后自动授权给参会人,访问门槛低于含原始录制视频、需申请授权的妙记)。完整说明见 [`references/vc-domain-boundaries.md`](references/vc-domain-boundaries.md) 的「产物选择决策」。
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
> **逐字稿路由**:先用 `vc +detail` 拿到 `note_id`,再 [`note +detail`](../lark-note/SKILL.md) 看 `note_display_type`,**不要只看 `verbatim_doc_token` 是否为空**。具体路由以 [lark-note](../lark-note/SKILL.md) 的 `note_display_type` 规则为准。
|
|
78
|
-
>
|
|
79
|
-
> **为什么"提炼/总结"必须从原始对话记录出发?** AI 纪要是模型对会议的二次压缩,可能遗漏讨论细节、争论过程和隐含决策。用户要求"提炼"或"重新总结"时,期望的是基于原始对话的独立分析,而非对 AI 产物的重新排版。
|
|
80
|
-
|
|
81
|
-
## 核心场景
|
|
82
|
-
|
|
83
|
-
### 1. 搜索会议记录
|
|
84
|
-
1. 仅支持搜索已结束的会议,对于还未开始的未来会议,需要使用 lark-calendar 技能。
|
|
85
|
-
2. 仅支持使用关键词、时间段、参会人、组织者、会议室等筛选条件搜索会议记录,对于不支持的筛选条件,需要提示用户。
|
|
86
|
-
3. 搜索结果存在多条数据时,务必注意分页数据获取,不要遗漏任何会议记录。
|
|
87
|
-
4. 只有自然语言纪要标题、没有会议线索时,不要把标题当会议关键词;按上方意图路由切到文档搜索。
|
|
88
|
-
|
|
89
|
-
### 2. 整理会议纪要
|
|
90
|
-
|
|
91
|
-
> 在选择读取哪个产物前,先确认你理解 AI 总结链路 vs 录制链路的区别。如不确定,先读 [`references/vc-domain-boundaries.md`](references/vc-domain-boundaries.md)。
|
|
92
|
-
|
|
93
|
-
1. 整理纪要文档时默认给出纪要文档、逐字稿、妙记链接即可,无需读取纪要文档或逐字稿内容。
|
|
94
|
-
2. 用户明确需要获取总结、待办、章节产物时,再读取文档获取具体内容。
|
|
95
|
-
3. 读取智能纪要(`note_doc_token`)内容时,纪要文档的**第一个 `<whiteboard>`** 标签是封面图(AI 生成的总结可视化),应同时下载展示给用户:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
# 1. 读取纪要内容
|
|
99
|
-
lark-cli docs +fetch --doc <note_doc_token> --doc-format markdown
|
|
100
|
-
# 2. 从返回的 markdown 中提取第一个 <whiteboard token="xxx"/> 的 token
|
|
101
|
-
# 3. 下载封面图到聚合目录(和逐字稿、录像同目录,保持产物归拢)
|
|
102
|
-
# 并非所有纪要都有封面画板,没有 <whiteboard> 标签时跳过即可
|
|
103
|
-
lark-cli docs +media-download --type whiteboard --token <whiteboard_token> --output ./minutes/<minute_token>/cover
|
|
104
|
-
```
|
|
105
|
-
> **产物目录规范**:同一会议的所有下载产物(录像、逐字稿、封面图等)统一放到 `./minutes/{minute_token}/` 目录下。这与 `minutes +download` 和 `minutes +detail --minute-tokens` 的默认落点保持一致,便于 Agent 聚合。显式路径(如封面图)需手动对齐到同一目录。
|
|
106
|
-
|
|
107
|
-
> **纪要相关文档 — 根据用户意图选择:**
|
|
108
|
-
> - `note_doc_token` → **AI 智能纪要**(AI 总结 + 待办),由 `note +detail --note-id <note_id>` 返回
|
|
109
|
-
> - `meeting_note` → **用户绑定到日程的会议纪要**,由 [`calendar +meeting --event-ids <event_id>`](../lark-calendar/references/lark-calendar-meeting.md) 返回
|
|
110
|
-
> - 用户说"逐字稿""完整记录""谁说了什么"时 → 按 `note_display_type` 路由,详见 [lark-note](../lark-note/SKILL.md)
|
|
111
|
-
> - 用户说"纪要""总结""纪要内容"时,应同时返回 `note_doc_token` 和 `meeting_note`(如有)
|
|
112
|
-
> - 用户意图不明确时,应展示所有文档链接让用户选择,而不是替用户决定
|
|
113
|
-
> - 如果用户提供的是**本地音视频文件**并说"转纪要""转逐字稿",不要直接从 `vc +detail` 开始;应先用 [minutes +upload](../lark-minutes/references/lark-minutes-upload.md) 生成 `minute_url`,再提取 `minute_token` 调用 `minutes +detail --minute-tokens`
|
|
114
|
-
|
|
115
|
-
### 3. 纪要文档与逐字稿链接
|
|
116
|
-
1. 纪要文档、逐字稿文档与关联的共享文档默认使用文档 Token 返回。
|
|
117
|
-
2. 仅需要获取文档名称和 URL 等基本信息时,使用 `lark-cli drive metas batch_query` 查询
|
|
118
|
-
```bash
|
|
119
|
-
# 学习命令使用方式
|
|
120
|
-
lark-cli schema drive.metas.batch_query
|
|
121
|
-
|
|
122
|
-
# 批量获取文档基本信息: 一次最多查询 10 个文档
|
|
123
|
-
lark-cli drive metas batch_query --data '{"request_docs": [{"doc_type": "docx", "doc_token": "<doc_token>"}], "with_url": true}'
|
|
124
|
-
```
|
|
125
|
-
3. 需要获取文档内容时,使用 `lark-cli docs +fetch`。
|
|
126
|
-
```bash
|
|
127
|
-
# 获取文档内容
|
|
128
|
-
lark-cli docs +fetch --doc <doc_token> --doc-format markdown
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 4. 查询参会人快照(读操作)
|
|
132
|
-
|
|
133
|
-
用户问"谁参加过这场会议""这个会议有哪些参会人""某某参会了吗"等**参会人快照**类问题时,使用 **`vc meeting get --with-participants`**:这是参会人服务端快照 API,不依赖 bot 身份参会,**已结束会议也可查**:
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
lark-cli vc meeting get --params '{"meeting_id":"<meeting_id>","with_participants":true}'
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
选型判断表:
|
|
140
|
-
|
|
141
|
-
| 用户意图 | 推荐命令 | 所在 skill |
|
|
142
|
-
|---------|---------|--------|
|
|
143
|
-
| 参会人快照(谁参加过、何时入/离会,任意时点)| `vc meeting get --with-participants` | 本 skill |
|
|
144
|
-
| 已结束会议的发言内容 | 优先:`vc +detail` 取 `note_id` 再 `note +detail` 取 `verbatim_doc_token` 后 `docs +fetch`;备选:`vc +detail` 取 `minute_token` 再 `minutes +detail --transcript` | [lark-note](../lark-note/SKILL.md) / [lark-minutes](../lark-minutes/SKILL.md) |
|
|
145
|
-
| **进行中会议**的实时事件流(转写、聊天、共享、会中加入/离开)| `vc +meeting-events` | [`lark-vc-agent`](../lark-vc-agent/SKILL.md) |
|
|
146
|
-
| **Agent 真实入会 / 离会** | `vc +meeting-join` / `vc +meeting-leave` | [`lark-vc-agent`](../lark-vc-agent/SKILL.md) |
|
|
147
|
-
|
|
148
|
-
## 资源关系
|
|
149
|
-
|
|
150
|
-
```text
|
|
151
|
-
Meeting (视频会议)
|
|
152
|
-
├── Note (会议纪要) ← note_id 标识,note_display_type: normal / unified
|
|
153
|
-
│ ├── MainDoc (AI 智能纪要文档, note_doc_token)
|
|
154
|
-
│ ├── MeetingNotes (用户绑定的会议纪要文档, meeting_notes)
|
|
155
|
-
│ ├── VerbatimDoc (逐字稿, verbatim_doc_token) ← normal 路径
|
|
156
|
-
│ ├── UnifiedTranscript (unified 原始记录) ← unified 路径,note +transcript(lark-note)
|
|
157
|
-
│ └── SharedDoc (会中共享文档)
|
|
158
|
-
└── Minutes (妙记) ← minute_token 标识,由 `vc +detail` 或 `vc +recording` 桥接获取,产物详情走 [lark-minutes](../lark-minutes/SKILL.md)
|
|
159
|
-
├── Transcript (文字记录)
|
|
160
|
-
├── Summary (总结)
|
|
161
|
-
├── Todos (待办)
|
|
162
|
-
├── Chapters (章节)
|
|
163
|
-
└── Keywords (推荐关键词)
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
> **MeetingNotes 边界**:用户绑定到日程的会议纪要文档(`meeting_note`)属于日程域,不在 VC 资源关系内;从 `event_id` 用 [`calendar +meeting`](../lark-calendar/references/lark-calendar-meeting.md) 获取。
|
|
167
|
-
>
|
|
168
|
-
> **妙记边界**:`+recording` 仅负责把 `meeting_id` / `calendar_event_id` 桥接到 `minute_token`;妙记的总结/待办/章节/逐字稿等产物归 [lark-minutes](../lark-minutes/SKILL.md)(`minutes +detail`)。
|
|
169
|
-
>
|
|
170
|
-
> **Note 域边界**:VC 域只负责把 `meeting_id` 转成 `note_id` / `minute_token`,纪要详情归 [lark-note](../lark-note/SKILL.md)。
|
|
171
|
-
> - 入口选择:从 `meeting_id` 出发用 `vc +detail` 拿 `note_id` 和 `minute_token`;从 `minute_token` 出发用 [`minutes +detail`](../lark-minutes/references/lark-minutes-detail.md) 也会返回关联的 `note_id`,可继续走 `note +detail` 拿纪要文档 token。
|
|
172
|
-
> - 已有 `note_id` → 直接走 [`note +detail`](../lark-note/SKILL.md) / [`note +transcript`](../lark-note/SKILL.md),不要绕回 VC。
|
|
173
|
-
> - 已有 `doc_token` 且目标是读正文 → [lark-doc](../lark-doc/SKILL.md)。
|
|
174
|
-
> - 只有自然语言纪要标题 → 文档搜索 / Docx 正文读取;有显式 `vc-node-id` 才进入 [lark-note](../lark-note/SKILL.md)。
|
|
175
|
-
> - 从日程出发(只有 `event_id`)→ 先走 [`calendar +meeting`](../lark-calendar/references/lark-calendar-meeting.md) 拿到 `meeting_id` 或 `meeting_note`,再按上述路径继续。
|
|
176
|
-
|
|
177
|
-
## API Resources
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
lark-cli vc <resource> <method> [flags]
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### meeting
|
|
184
|
-
|
|
185
|
-
- `get` — 获取会议详情(主题、时间、参会人、note_id)
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
# 获取会议基础信息(不含参会人)
|
|
189
|
-
lark-cli vc meeting get --params '{"meeting_id": "<meeting_id>"}'
|
|
190
|
-
|
|
191
|
-
# 获取会议基础信息(含参会人)
|
|
192
|
-
lark-cli vc meeting get --params '{"meeting_id": "<meeting_id>", "with_participants": true}'
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### minutes(跨域,详见 [lark-minutes](../lark-minutes/SKILL.md))
|
|
196
|
-
|
|
197
|
-
- `get` — 获取妙记基础信息(标题、时长、封面);查询妙记**内容**(总结/待办/章节/逐字稿)请用 [`minutes +detail`](../lark-minutes/references/lark-minutes-detail.md)
|
|
198
|
-
|
|
199
|
-
## 不在本 skill 范围
|
|
200
|
-
|
|
201
|
-
- 查询未来的会议日程 → [lark-calendar](../lark-calendar/SKILL.md)
|
|
202
|
-
- Agent 真实入会/离会、会中实时事件 → [lark-vc-agent](../lark-vc-agent/SKILL.md)
|
|
203
|
-
- 只有纪要文档标题的逐字稿查询 → 文档搜索 / Docx 正文读取;有显式 `vc-node-id` 才进入 [lark-note](../lark-note/SKILL.md)
|
|
204
|
-
- 本地音视频文件转纪要/逐字稿、妙记搜索/下载/上传/重命名/替换说话人 → [lark-minutes](../lark-minutes/SKILL.md)
|
|
205
|
-
- 通过 `note_id` 取纪要文档 Token → [lark-note](../lark-note/SKILL.md)
|
|
15
|
+
**MUST 完整读取 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md),并按照其中的路由和行动指南执行。**
|
|
@@ -1,201 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-vc-agent
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "
|
|
4
|
+
description: "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
8
|
-
|
|
8
|
+
skills: ["lark-meeting"]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# Compatibility entry
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
本技能只用于兼容旧名称,不直接处理业务。
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- [`../lark-vc/SKILL.md`](../lark-vc/SKILL.md) — 视频会议的核心概念(Meeting / Note / Minutes 等),本 skill 直接复用,不再重复定义
|
|
17
|
-
|
|
18
|
-
## 内测提示
|
|
19
|
-
|
|
20
|
-
- 当前功能正在内测中,仅少数用户可用。忽略 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 中的权限申请流程,以下方的指引为准。
|
|
21
|
-
- 如果 `lark-cli` 提示 `missing required scope(s)` / `missing_scopes`,不要走普通权限申请流程;先提示用户加入早鸟群确认内测权限已开通,再按“应用身份权限配置检查”处理应用权限、安装和数据范围。
|
|
22
|
-
- 如果 `lark-cli` 返回 `error.code=20017` / `ErrNotInGray`,提示用户加入早鸟群:`https://go.larkoffice.com/join-chat/2f4nb0e1-fe00-4f67-bed7-25beaf533fbd`。
|
|
23
|
-
|
|
24
|
-
## 会议查询权限
|
|
25
|
-
|
|
26
|
-
`+meeting-list-active` 和 `+meeting-events` 缺少权限时,先按上面的内测提示确认功能已开通,再读取 CLI 错误中的 `hint`,并根据当前调用身份处理:
|
|
27
|
-
|
|
28
|
-
- 用户身份 `--as user`:按 CLI 提示为当前用户授权 `vc:meeting.meetingevent:read`。
|
|
29
|
-
- 应用身份 `--as bot`:请应用开发者开通 `vc:meeting.bot.join:write`,不要执行 `auth login`;随后按“应用身份权限配置检查”确认应用发布、安装和数据范围。
|
|
30
|
-
|
|
31
|
-
## 定位
|
|
32
|
-
|
|
33
|
-
本 skill 与 [`lark-vc`](../lark-vc/SKILL.md) 并列:
|
|
34
|
-
|
|
35
|
-
- **`lark-vc`** **负责"会后查询"**:搜索历史会议、参会人快照、纪要/逐字稿/录制
|
|
36
|
-
- **`lark-vc-agent`** **负责"会中动作"**:机器人入会 / 读取进行中会议的实时事件 / 发送会中文本或会中表情 / 机器人离会
|
|
37
|
-
|
|
38
|
-
按此分工路由,避免两个 skill 语义混淆。
|
|
39
|
-
|
|
40
|
-
| 用户意图示例 | 应路由到 |
|
|
41
|
-
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
42
|
-
| "帮我入会 123456789"、"代我参会"、"让机器人进会旁听" | **本 skill** `+meeting-join` |
|
|
43
|
-
| "会议现在还开着,谁刚加入了"、"会议里谁在发言"、"有人共享屏幕吗"(**进行中会议**) | **本 skill** `+meeting-events` |
|
|
44
|
-
| "我/某个用户现在在哪个会里"、"给我找当前可拉事件的 meeting_id" | **本 skill** `+meeting-list-active` |
|
|
45
|
-
| "在会里发一句 xx"、"提示大家 xx"、"反馈听不到/看不到/声音清楚/效果不错"(**进行中会议**) | **本 skill** `+meeting-message-send` |
|
|
46
|
-
| "退出会议"、"让机器人离开" | **本 skill** `+meeting-leave` |
|
|
47
|
-
| "昨天那场会有谁参加过"、"搜昨天的会"、"查纪要/逐字稿/录制" | [`lark-vc`](../lark-vc/SKILL.md) |
|
|
48
|
-
| "帮我参会,结束后把纪要发到群" 等跨阶段场景 | 按序编排:本 skill(入会 → 读事件)→ 会议结束后用 [`lark-vc`](../lark-vc/SKILL.md) / [`lark-minutes`](../lark-minutes/SKILL.md) 拉纪要 → [`lark-im`](../lark-im/SKILL.md) 发群 |
|
|
49
|
-
|
|
50
|
-
## 身份路由
|
|
51
|
-
|
|
52
|
-
不要向用户暴露内部身份缩写;对用户只说“用户身份”或“应用身份”。
|
|
53
|
-
|
|
54
|
-
| 场景 | 使用身份 | 关键规则 |
|
|
55
|
-
| ---- | -------- | -------- |
|
|
56
|
-
| 查询当前登录用户正在参加的会议 | `--as user` | 不传 `--user-id`;拿到的 `meeting_id` 后续继续用 `--as user` 读事件 |
|
|
57
|
-
| 查询目标用户且应用机器人也在会中的会议 | `--as bot --user-id <user_open_id>` | `--user-id` 必须是 `ou_...`;拿到的 `meeting_id` 后续继续用 `--as bot` 读事件 |
|
|
58
|
-
| 用户明确要求应用机器人入会/旁听/代参会 | `--as bot` | 这是写操作,会真实产生入会记录;返回的 `meeting.id` 后续继续用 `--as bot` |
|
|
59
|
-
|
|
60
|
-
硬规则:`meeting_id` 从哪种身份路径拿到,后续 `+meeting-events` / `+meeting-message-send` 就沿用哪种身份,除非用户明确要求切换场景(例如从“仅查询我当前会”改成“让应用机器人入会旁听”)。
|
|
61
|
-
|
|
62
|
-
## 核心场景
|
|
63
|
-
|
|
64
|
-
### 1. 加入正在进行的会议(写操作)
|
|
65
|
-
|
|
66
|
-
1. 只有用户明确表达"让 Agent **真实入会**"(参会机器人、会中助手、代为旁听、代参会)时才用 `+meeting-join`。只是查数据不要入会。
|
|
67
|
-
2. `+meeting-join --meeting-number` 只接受 **9 位纯数字**会议号,不是会议链接整串、也不是 `meeting_id`。如果用户只是给了 9 位会议号并询问会中内容,先按 `+meeting-list-active` 的会议号匹配流程找 `meeting_id`,不要直接入会。
|
|
68
|
-
3. 返回体中的 `meeting.id` **必须立刻记录**——后续 `+meeting-events` / `+meeting-leave` 都靠它,**不能用 9 位会议号替代**。
|
|
69
|
-
4. 入会对所有参会人可见,执行前核实 9 位会议号来源,避免误入错会。
|
|
70
|
-
5. 使用应用身份 `--as bot` 执行真实入会;不要用当前登录用户身份尝试让应用机器人入会。
|
|
71
|
-
6. 若入会失败,优先查看 `+meeting-join` reference 的错误排查段落,重点确认会议号、密码、会议状态、等候室 / 审批以及会议是否禁止当前身份加入。
|
|
72
|
-
|
|
73
|
-
### 2. 感知会中事件(读操作)
|
|
74
|
-
|
|
75
|
-
1. 用户要看"会议里正在发生什么"(参会人加入/离开、聊天、转写、屏幕共享)时,用 `+meeting-events`。
|
|
76
|
-
2. 输入是 **`meeting_id`**(长数字 ID),不是 9 位会议号。
|
|
77
|
-
3. 不依赖默认身份。`meeting_id` 来自用户身份发现时,继续用 `--as user`;来自应用身份发现或 `+meeting-join` 时,继续用 `--as bot`。身份不一致会导致空结果或权限错误。
|
|
78
|
-
4. **不能做会后复盘**,**不能替代参会人快照查询**。如果会议已结束:
|
|
79
|
-
- 先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息。
|
|
80
|
-
- 再根据 `note_id`、`minute_token` 和用户意图,按 [`lark-vc`](../lark-vc/SKILL.md) 的产物决策读取正文、逐字稿或妙记。
|
|
81
|
-
- 想看参会人快照:用 `vc meeting get --with-participants`(见 [`lark-vc`](../lark-vc/SKILL.md))
|
|
82
|
-
5. **默认必须使用** **`--page-all`**,除非用户明确要求“只查一页”,或确实需要控制返回体大小。
|
|
83
|
-
6. 命令默认输出结构化事件契约:`meeting`、`identity`、`events`、`warnings`、`has_more`、`page_token`;`identity` 表示当前读取身份,事件 actor 含 `participant_type`、`role` 和可读 `label`,事件细节保留在 `payload`。
|
|
84
|
-
7. 输出格式默认优先 `--format pretty`(时间线更易读,并带当前身份标签);需要稳定字段做结构化处理时用 `--format json`;需要流式消费事件时用 `--format ndjson`。
|
|
85
|
-
8. **必须识别分页信号**:只要响应里出现 `has_more=true`、pretty 里的 `more available`,或返回了非空 `page_token`,就不能把当前结果当作完整事件流;默认应继续分页,或明确告诉用户当前只是部分结果。
|
|
86
|
-
9. 保留响应里的 `page_token`,下次增量拉取直接续,不要从头再拉。
|
|
87
|
-
10. **只要你是基于** **`+meeting-events`** **来回答一场正在进行中的会议内容,就不能直接复用旧结果。** 无论用户是在问“现在/刚刚/最新”的状态,还是让你“总结一下这个会议讲什么”,都必须先重新拉一次当前事件流,确认拿到的是最新信息,再基于最新结果回答。只有在用户明确要求基于某次历史快照继续分析时,才可以复用旧结果。
|
|
88
|
-
11. **会中聊天 / 互动转发到 IM 时基于 JSON 事件构造 IM post。** `chat_received_items[].message_type == 3` 表示会中 reaction;构造 IM post 时,先用 [`lark-im` reaction emoji 白名单](../lark-im/references/lark-im-reactions.md) 判断同一 item 的 `content`:白名单内才写成 Feishu post `emotion` 节点,不在白名单内则保留原始 key 并写成文本节点,例如 `[CanNotSee]`。普通聊天按文本发送。不要从 pretty/Markdown 重新拼消息,也不要把整条消息退化成纯文本;只降级非法 reaction key。用户已说“发给我 / 推送给我 / 发到我的单聊”时,默认用 bot 身份直接发当前用户;收件人不明确时只补问收件人。
|
|
89
|
-
12. 用户直接问“这个会议讲了什么 / 现在讲到哪了”且上下文没有明确 `meeting_id` 时,先用用户身份发现当前会议;如果用户明确要求应用机器人视角,或上下文已经是应用机器人参会流程,再用应用身份发现。若返回多个会议,展示候选并让用户选择。
|
|
90
|
-
13. 用户直接提供 **9 位会议号** 并询问会中事件/会议内容时,默认把它当作 active meeting 的筛选条件:先按当前身份查 active meetings,并在返回里匹配 `meeting_no == <9位会议号>`;匹配到唯一会议后取长数字 `meeting_id`,再用同一身份查事件。只有用户明确要求“入会 / 让应用机器人旁听 / 代我参会”时才改用 `+meeting-join`。
|
|
91
|
-
|
|
92
|
-
### 3. 发送会中文本或会中表情(写操作)
|
|
93
|
-
|
|
94
|
-
1. 用户明确要求在当前进行中的会议里发送提示、说明、会中表情,或反馈“听不到 / 看不到 / 声音清楚 / 效果不错”时,用 `+meeting-message-send`。
|
|
95
|
-
2. 输入是长数字 `meeting_id`,不是 9 位会议号。若用户只给 9 位会议号,先按当前身份执行 `+meeting-list-active` 并按 `meeting_no` 匹配,匹配到唯一会议后再发送;不要为了发消息自动入会。发消息只需 `meeting_id`,不要先查 `+detail`。
|
|
96
|
-
3. 身份必须延续:`meeting_id` 来自用户身份发现,就继续 `--as user`;来自应用身份发现或应用机器人入会,就继续 `--as bot`。
|
|
97
|
-
4. 文本消息使用 `--text`;会中表情 / 反馈使用 `--emoji-type`。`--emoji-type` 必须从 reference 里的完整列表中选择,大小写敏感。
|
|
98
|
-
5. 支持普通 Feishu reaction emoji(如 `LOVE`、`SMILE`、`THUMBSUP`)和 4 个 VC 反馈 key(`VC_CanNotSee`、`VC_NoSound`、`VC_LooksGood`、`VC_SoundsClear`)。
|
|
99
|
-
6. 不要编造列表外的 `emoji_type`,也不要把 natural language 硬编码成不存在的 key;如果用户只给语义,可在完整列表中选择最接近的 key,无法判断时先确认。
|
|
100
|
-
7. 该命令只暴露会中文本和会中表情,不作为“发送绑定群消息”的默认能力;如果用户明确要发群聊,请路由到 [`lark-im`](../lark-im/SKILL.md)。
|
|
101
|
-
8. 若使用应用身份发送,应用机器人必须在会中;若使用用户身份发送,当前用户必须正在该会议中。权限错误时按“应用身份权限配置检查”或“用户身份被拒绝时”处理。
|
|
102
|
-
|
|
103
|
-
示例:
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
lark-cli vc +meeting-message-send --as user --meeting-id <meeting_id> --text "稍等,我在看文档"
|
|
107
|
-
lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type LOVE
|
|
108
|
-
lark-cli vc +meeting-message-send --as bot --meeting-id <meeting_id> --msg-type reaction --emoji-type VC_NoSound
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### 4. 离开会议(写操作)
|
|
112
|
-
|
|
113
|
-
1. 只有用户明确要求机器人退出 / 离开 / 结束参会时,才用应用身份执行 `+meeting-leave --as bot --meeting-id <长数字 meeting_id>`;不应因任务完成而执行离会。
|
|
114
|
-
2. `--meeting-id` **必须**是长数字会议 ID,通常来自 `+meeting-join` 返回的 `meeting.id`,也可以来自应用身份 `+meeting-list-active` 返回的 `meeting_id`。如果来自 list-active,必须确认应用机器人当前就在该会中。**不接受 9 位会议号**。
|
|
115
|
-
3. 离会**立即生效**,机器人从会议的参会人列表中消失,对其他参会人可见;若需要重新入会,再跑一次 `+meeting-join` 即可(非真正"不可逆")。
|
|
116
|
-
4. 使用与入会或 active meeting 发现相同的应用身份离会。
|
|
117
|
-
|
|
118
|
-
### 5. 获取当前可用的进行中会议 ID(读操作)
|
|
119
|
-
|
|
120
|
-
1. `+meeting-list-active` 用来发现当前进行中的会议,并拿到后续 `+meeting-events` 需要的长数字 `meeting_id`。
|
|
121
|
-
2. 用户身份:`lark-cli vc +meeting-list-active --as user --format json`,用于发现当前登录用户正在参加的会议;后续 `+meeting-events` 继续 `--as user`。
|
|
122
|
-
3. 应用身份:`lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json`,`--user-id` 必须是目标用户 open_id,即 `ou_...`;返回该用户当前正在参加且应用机器人也在会中的会议。它不是全量会议搜索接口。后续 `+meeting-events` 继续 `--as bot`。
|
|
123
|
-
4. 如果返回空,先按当前身份解释:用户身份下表示当前用户没有可见的进行中会议;应用身份下表示没有找到“目标用户在会中且应用机器人也在会中”的当前会。
|
|
124
|
-
5. 如果返回多个会议,不要自动任选一个;按 `meeting_title` / `meeting_no` / `meeting_id` 展示候选,等待用户明确选择后再调用 `+meeting-events`。
|
|
125
|
-
6. 如果用户给了 9 位会议号,先在 active meeting 结果中按 `meeting_no` 匹配。匹配失败时,不要自动入会;只有用户明确要求应用机器人真实入会时,才询问或执行 `+meeting-join`。
|
|
126
|
-
|
|
127
|
-
### 6. Agent 参会示范
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# 1. 入会,捕获 meeting.id
|
|
131
|
-
AS=bot
|
|
132
|
-
JOIN=$(lark-cli vc +meeting-join --as "$AS" --meeting-number 123456789 --format json)
|
|
133
|
-
MID=$(echo "$JOIN" | jq -r '.data.meeting.id')
|
|
134
|
-
|
|
135
|
-
# 2. 会中轮询事件
|
|
136
|
-
# 沿用入会身份;默认用 --page-all 拉全当前可见事件;下次增量优先复用 page_token
|
|
137
|
-
# 典型间隔 10-30 秒
|
|
138
|
-
lark-cli vc +meeting-events --as "$AS" --meeting-id "$MID" --page-all --format pretty
|
|
139
|
-
|
|
140
|
-
# 3. 会后可选:进入 lark-vc 获取会议产物信息,再按 note_id / minute_token 决策读取
|
|
141
|
-
lark-cli vc +detail --meeting-ids "$MID"
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
如果用户随后明确要求退出 / 离开 / 结束参会,再单独调用 `lark-cli vc +meeting-leave --as bot --meeting-id "$MID"`。
|
|
145
|
-
|
|
146
|
-
如果已经知道目标用户 `open_id`,且 bot 已在会中,也可以先发现当前会:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
lark-cli vc +meeting-list-active --as bot --user-id <user_open_id> --format json
|
|
150
|
-
lark-cli vc +meeting-events --as bot --meeting-id <id> --page-all --format pretty
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
如果只是回答当前登录用户所在会议发生了什么,使用用户身份一路查:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
lark-cli vc +meeting-list-active --as user --format json
|
|
157
|
-
lark-cli vc +meeting-events --as user --meeting-id <meeting_id> --page-all --format pretty
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Shortcuts
|
|
161
|
-
|
|
162
|
-
Shortcut 是对常用操作的高级封装(`lark-cli vc +<verb> [flags]`)。
|
|
163
|
-
|
|
164
|
-
| Shortcut | 类型 | 说明 |
|
|
165
|
-
| --------------------------------------------------------------- | -- | -------------------------------------------------------------------------- |
|
|
166
|
-
| [`+meeting-join`](references/lark-vc-agent-meeting-join.md) | 写 | Join an in-progress meeting by 9-digit meeting number |
|
|
167
|
-
| [`+meeting-list-active`](references/lark-vc-agent-meeting-list-active.md) | 读 | List active meetings and discover meeting_id for event reads |
|
|
168
|
-
| [`+meeting-events`](references/lark-vc-agent-meeting-events.md) | 读 | List meeting events visible to the app agent (participant joined/left, transcript, chat, share) |
|
|
169
|
-
| [`+meeting-message-send`](references/lark-vc-agent-meeting-message-send.md) | 写 | Send an in-meeting text message or reaction emoji |
|
|
170
|
-
| [`+meeting-leave`](references/lark-vc-agent-meeting-leave.md) | 写 | Leave a meeting by meeting\_id |
|
|
171
|
-
|
|
172
|
-
- [`+meeting-join`](references/lark-vc-agent-meeting-join.md):入参格式、写操作可见性风险、入会失败排查。
|
|
173
|
-
- [`+meeting-list-active`](references/lark-vc-agent-meeting-list-active.md):用户身份和应用身份的不同返回范围。
|
|
174
|
-
- [`+meeting-events`](references/lark-vc-agent-meeting-events.md):`meeting_id` 来源、身份延续、分页和错误码(10005 / 20001 / 20002)。
|
|
175
|
-
- [`+meeting-message-send`](references/lark-vc-agent-meeting-message-send.md):会中文本、完整 `emoji_type` 列表、身份延续和写操作风险。
|
|
176
|
-
- [`+meeting-leave`](references/lark-vc-agent-meeting-leave.md):`meeting_id` 的来源与写操作可见性。
|
|
177
|
-
|
|
178
|
-
## 应用身份权限配置检查
|
|
179
|
-
|
|
180
|
-
应用身份 `--as bot` 报 `no permission`、`missing required scope(s)`、`missing_scopes`、`ErrNotInGray` 或 `20017` 时,不要引导用户执行 `auth login`。按顺序检查:
|
|
181
|
-
|
|
182
|
-
1. 确认内测权限后,按 CLI 错误中的 `hint` 处理;返回 `console_url` 时将其原样提供给用户。
|
|
183
|
-
2. 应用已发布并安装到当前租户。
|
|
184
|
-
3. 开放平台“权限可访问的数据范围”已开通并保存。
|
|
185
|
-
4. 数据范围选择“按条件筛选”,条件配置为:**会议的归属者 包含 与应用的可用范围一致**。
|
|
186
|
-
5. 如果 scope、安装和数据范围都正确,仍返回 `ErrNotInGray` / `20017`,再按 VC Agent 内测 privilege / 灰度白名单处理,提示加入早鸟群或联系平台同学开通。
|
|
187
|
-
|
|
188
|
-
## 用户身份被拒绝时
|
|
189
|
-
|
|
190
|
-
用户身份 `--as user` 调用 `+meeting-list-active` 或 `+meeting-events` 报普通 scope 缺失时,按“会议查询权限”处理;其他 shortcut 的 scope 缺失按各自 CLI `hint` 处理。普通 scope 缺失不表示接口不支持用户身份,只有 CLI 明确表明当前接口不支持用户身份访问时,才按用户意图切换处理:
|
|
191
|
-
|
|
192
|
-
1. 如果用户只是查询当前登录用户所在的进行中会议,说明当前接口链路不支持用户身份访问,改用应用身份流程;需要目标用户 open_id,并要求应用机器人已在会中或先按用户确认执行入会。
|
|
193
|
-
2. 如果用户明确要求应用机器人入会、旁听、代参会或读取应用机器人可见事件,直接切到 `--as bot`,并按上面的应用身份权限配置检查处理。
|
|
194
|
-
|
|
195
|
-
## 延伸
|
|
196
|
-
|
|
197
|
-
- 查已结束会议、参会人快照、搜索历史会议 → [`lark-vc`](../lark-vc/SKILL.md)
|
|
198
|
-
- 会议纪要、逐字稿 → [`lark-vc`](../lark-vc/SKILL.md) 的 `+detail`
|
|
199
|
-
- 妙记产物(AI 总结 / 转写 / 章节)→ [`lark-minutes`](../lark-minutes/SKILL.md)
|
|
200
|
-
- 会后把产物发到群 / 私聊 → [`lark-im`](../lark-im/SKILL.md)
|
|
201
|
-
- 认证、身份切换、scope 管理 → [`lark-shared`](../lark-shared/SKILL.md)
|
|
15
|
+
**MUST 完整读取 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md),并按照其中的路由和行动指南执行。**
|
|
@@ -36,6 +36,7 @@ metadata:
|
|
|
36
36
|
- 用户明确选定后再执行 `lark-cli wiki +delete-space --space-id <ID> --yes`(高风险写操作,必须显式 `--yes`)。
|
|
37
37
|
- 反例:不要把 wiki URL / 名称直接当 `--space-id`(如 `--space-id "https://.../wiki/<wiki_token>"`);务必先用 `wiki +node-get` 解析出 `data.space_id` 再传。
|
|
38
38
|
- 用户要在知识库中创建新节点,优先使用 `lark-cli wiki +node-create`。
|
|
39
|
+
- 用户要**原地重命名 Wiki 节点 / 修改节点标题**:使用 `lark-cli drive +update-title --url '<wiki_url>' --title '<new_title>'`。该命令保留同一个 `node_token`,并会根据 API 返回给出准确的缺失 scope 和授权提示;不要探索 raw `wiki.nodes` 的 `update_title` 端点,也不要通过复制或新建第二个节点实现改名。
|
|
39
40
|
- 用户要列出 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`。
|
|
40
41
|
- `wiki +node-list` 命中 `invalid_parameters`、`not_found`、`permission_denied` 时,不要重复调用同一参数;按 hint 修 `space_id` / `parent_node_token` / 权限。只有 `rate_limit` 才做退避重试。
|
|
41
42
|
- 用户说“给知识库添加成员/管理员”:先把目标解析成“用户 / 群 / 部门 / 应用”四类之一,再决定 `--member-type`,不要先调 `wiki +member-add` 再根据报错反推类型。
|
|
@@ -111,7 +112,8 @@ lark-cli wiki <resource> <method> [flags] # 调用 API
|
|
|
111
112
|
|
|
112
113
|
## 不在本 skill 范围
|
|
113
114
|
|
|
114
|
-
-
|
|
115
|
+
- 上传文件到知识库节点下 → [`lark-drive`](../lark-drive/SKILL.md)(`drive +upload --wiki-token`)
|
|
116
|
+
- 下载 Wiki 节点对应的文件(底层 `obj_type` 为 `file`)→ [`lark-drive`](../lark-drive/SKILL.md):`drive +download --wiki-token <node_token>` 或 `drive +download --url <wiki_url>`(CLI 会先把 Wiki 节点解析到底层文件再下载);底层是 `docx`/`sheet`/`bitable`/`slides` 等在线文档时改用 `drive +export`
|
|
115
117
|
- 编辑文档正文内容 → [`lark-doc`](../lark-doc/SKILL.md)
|
|
116
118
|
- 表格 / 多维表格数据操作 → [`lark-sheets`](../lark-sheets/SKILL.md) / [`lark-base`](../lark-base/SKILL.md)
|
|
117
119
|
- 按名称搜索文档 / Wiki / 表格文件、评论与权限管理 → [`lark-drive`](../lark-drive/SKILL.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# lark-wiki +node-copy
|
|
2
2
|
|
|
3
|
-
Copy
|
|
3
|
+
Copy one Wiki node, including that node's content, to a target space or under a target parent node. Descendant nodes are not copied.
|
|
4
4
|
|
|
5
5
|
> ⚠️ **High-risk write** — the upstream API is flagged `danger: true`, so this shortcut requires explicit `--yes` confirmation before issuing the request. Forgetting `--yes` returns a `confirmation_required` error and the copy is **not** performed.
|
|
6
6
|
|
|
@@ -46,26 +46,12 @@ lark-cli wiki +node-copy \
|
|
|
46
46
|
}
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
## Migration workflow
|
|
50
|
-
|
|
51
|
-
To migrate a subtree from one space to another:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# 1. List nodes in the source space
|
|
55
|
-
lark-cli wiki +node-list --space-id source_space_id
|
|
56
|
-
|
|
57
|
-
# 2. Copy each node to the target space
|
|
58
|
-
lark-cli wiki +node-copy \
|
|
59
|
-
--space-id <source_space_id> \
|
|
60
|
-
--node-token wikcn_EXAMPLE_TOKEN \
|
|
61
|
-
--target-space-id <target_space_id> \
|
|
62
|
-
--yes
|
|
63
|
-
```
|
|
64
|
-
|
|
65
49
|
## Notes
|
|
66
50
|
|
|
67
|
-
- Copying is recursive
|
|
68
|
-
-
|
|
51
|
+
- Copying is non-recursive: only the requested node and its content are copied.
|
|
52
|
+
- Descendant nodes must be copied separately.
|
|
53
|
+
- When the Wiki service returns `131009` lock contention, the CLI retries twice with bounded exponential backoff. If contention remains, wait before retrying again and avoid concurrent writes under the same target parent.
|
|
54
|
+
- To move an existing Wiki node without keeping the source, use [`wiki +move`](lark-wiki-move.md) instead of copy-then-delete.
|
|
69
55
|
|
|
70
56
|
## Required Scope
|
|
71
57
|
|
|
@@ -78,7 +78,7 @@ lark-cli wiki +node-create \
|
|
|
78
78
|
| `--parent-node-token` | 否 | 父知识库节点 token;传入后会在该节点下创建新节点 |
|
|
79
79
|
| `--title` | 否 | 节点标题 |
|
|
80
80
|
| `--node-type` | 否 | 节点类型,默认 `origin`;可选值:`origin`、`shortcut` |
|
|
81
|
-
| `--obj-type` | 否 | 节点对应对象类型,默认 `docx`;可选值:`sheet`、`mindnote`、`bitable`、`docx`、`slides` |
|
|
81
|
+
| `--obj-type` | 否 | 节点对应对象类型,默认 `docx`;可选值:`sheet`、`mindnote`、`bitable`、`file`、`docx`、`slides`。`file` 仅支持 `shortcut` 节点 |
|
|
82
82
|
| `--origin-node-token` | 否 | 当 `--node-type=shortcut` 时必填,表示快捷方式指向的源节点 token |
|
|
83
83
|
|
|
84
84
|
## 空间解析规则
|
|
@@ -89,11 +89,27 @@ lark-cli wiki +node-create \
|
|
|
89
89
|
- **个人知识库回退**:`user` 身份下,如果 `--space-id` 和 `--parent-node-token` 都没传,会自动解析 `my_library`
|
|
90
90
|
- **bot 身份限制**:`bot` 身份既没有“个人知识库”回退语义,也不支持显式传 `--space-id my_library`;请改用真实 `space_id` 或 `--parent-node-token`
|
|
91
91
|
|
|
92
|
-
##
|
|
92
|
+
## 节点类型与对象类型
|
|
93
|
+
|
|
94
|
+
| `node_type` | 支持的 `obj_type` |
|
|
95
|
+
|-------------|-------------------|
|
|
96
|
+
| `origin` | `sheet`、`mindnote`、`bitable`、`docx`、`slides` |
|
|
97
|
+
| `shortcut` | `sheet`、`mindnote`、`bitable`、`file`、`docx`、`slides` |
|
|
93
98
|
|
|
94
99
|
- `--node-type=shortcut` 时,必须同时提供 `--origin-node-token`
|
|
95
100
|
- `--node-type=origin` 时,不能传 `--origin-node-token`
|
|
101
|
+
- `--obj-type=file` 仅支持 `--node-type=shortcut`;实体节点不支持创建 `file` 类型
|
|
96
102
|
- `shortcut` 节点只是知识库中的快捷方式入口;真正被引用的节点由 `--origin-node-token` 指定
|
|
103
|
+
- 如果 `+node-create` 因上述组合返回参数校验错误,禁止改用 raw `wiki nodes create` 或直接调用 OpenAPI 绕过校验;应修正 `node_type`、`obj_type` 或 `origin_node_token`
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 创建一个指向文件的快捷方式节点
|
|
107
|
+
lark-cli wiki +node-create \
|
|
108
|
+
--space-id <SPACE_ID> \
|
|
109
|
+
--node-type shortcut \
|
|
110
|
+
--obj-type file \
|
|
111
|
+
--origin-node-token <ORIGIN_NODE_TOKEN>
|
|
112
|
+
```
|
|
97
113
|
|
|
98
114
|
## 一致性校验
|
|
99
115
|
|
|
@@ -111,6 +127,7 @@ lark-cli wiki +node-create \
|
|
|
111
127
|
- 同时需要 `my_library` 和父节点时:会展示三步调用链
|
|
112
128
|
- **bot 自动授权**:若使用 `--as bot`,结果还会额外带上 `permission_grant`,用于说明是否已自动为当前 CLI 用户授予新建节点的可管理权限
|
|
113
129
|
- **输出结果**:成功后会返回 `resolved_space_id`、`resolved_by`、`node_token`、`obj_token`、`obj_type`、`node_type`、`title` 等字段,便于后续继续操作
|
|
130
|
+
- **结构限制**:返回 `131003` 表示触发了知识空间总节点数、目录深度或单个父节点直属子节点数等结构限制。这不是瞬时错误,禁止使用相同参数重试。根据上游错误信息选择更浅或其他父节点、重新组织现有节点,或清理/改用其他知识空间;不要在无法确认具体限制时盲目增加中间层级。
|
|
114
131
|
|
|
115
132
|
## 推荐场景
|
|
116
133
|
|
|
@@ -52,6 +52,21 @@ lark-cli wiki +node-get \
|
|
|
52
52
|
- `creator` falls back to `creator` when `node_creator` is absent. `updated_at` is `obj_edit_time` formatted as RFC3339.
|
|
53
53
|
- No `url` is returned: `get_node` does not provide one and a synthesized `www.feishu.cn/wiki/<node_token>` link is non-canonical/misleading for a read command. Use `node_token` / `obj_token` as the identifiers.
|
|
54
54
|
|
|
55
|
+
## Terminal business errors
|
|
56
|
+
|
|
57
|
+
These HTTP 200 responses carry a non-zero business code and are not retryable with the same input:
|
|
58
|
+
|
|
59
|
+
| Code | Meaning | Required action |
|
|
60
|
+
|------|---------|-----------------|
|
|
61
|
+
| `131006` | The current user or app/bot identity lacks access to the Wiki node or space | This is resource access, not app scope authorization. Do not retry the same request, reauthorize, or switch identity as trial and error; ask the node owner or wiki administrator to grant read access, or use an accessible resource |
|
|
62
|
+
| `131012` | The Wiki node has been deleted | Do not retry the same node token; rediscover the node or ask for a current Wiki link |
|
|
63
|
+
| `131013` | The resource token is invalid | Do not switch identity or reauthorize; correct the URL/token |
|
|
64
|
+
| `131014` | The document is not mounted in Wiki | Stop Wiki resolution; use the corresponding docs/sheets/base/drive command, or provide a Wiki URL/node_token |
|
|
65
|
+
|
|
66
|
+
## Rate limiting
|
|
67
|
+
|
|
68
|
+
For `99991400` / `rate_limit`: Do not retry immediately. Wait `retry_after_seconds`, or use exponential backoff with jitter. Stop after 3 total attempts (1 initial + 2 retries).
|
|
69
|
+
|
|
55
70
|
## Required Scope
|
|
56
71
|
|
|
57
72
|
`wiki:node:retrieve`
|
|
@@ -87,7 +87,7 @@ lark-cli wiki +node-list --space-id 6946843325487912356 --parent-node-token wikc
|
|
|
87
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
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
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.
|
|
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. For `131006 permission_denied`, the user or app/bot identity lacks access to the target space or parent node; this is resource access, not app scope authorization. Do not retry the same request, reauthorize, or switch identity as trial and error. Ask the resource owner or wiki administrator to grant read access, or use an accessible resource.
|
|
91
91
|
- For `rate_limit`, stop immediate retries and retry later with exponential backoff or a smaller `--page-limit`.
|
|
92
92
|
|
|
93
93
|
## Required Scope
|