@amaster.ai/pi-lark 0.1.5 → 0.1.6
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/package.json +3 -3
- package/skills/lark-approval/references/lark-approval-initiate.md +2 -5
- package/skills/lark-approval/references/lark-approval-instances-initiated.md +6 -0
- package/skills/lark-approval/references/lark-approval-tasks-query.md +9 -0
- package/skills/lark-approval/references/lark-approval-tasks-rollback.md +8 -2
- package/skills/lark-apps/SKILL.md +25 -7
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
- package/skills/lark-apps/references/lark-apps-automation.md +164 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +186 -2
- package/skills/lark-apps/references/lark-apps-db.md +3 -3
- package/skills/lark-apps/references/lark-apps-get.md +43 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +7 -2
- package/skills/lark-apps/references/lark-apps-init.md +1 -2
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +3 -1
- package/skills/lark-apps/references/lark-apps-role.md +133 -0
- package/skills/lark-base/SKILL.md +7 -3
- package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
- package/skills/lark-base/references/lark-base-cell-value.md +9 -4
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
- package/skills/lark-base/references/lark-base-dashboard.md +11 -2
- package/skills/lark-base/references/lark-base-data-query.md +9 -7
- package/skills/lark-base/references/lark-base-field-create.md +4 -2
- package/skills/lark-base/references/lark-base-field-json.md +52 -15
- package/skills/lark-base/references/lark-base-field-update.md +4 -2
- package/skills/lark-base/references/lark-base-view-set-filter.md +3 -1
- package/skills/lark-calendar/SKILL.md +89 -31
- package/skills/lark-calendar/references/lark-calendar-create.md +8 -39
- package/skills/lark-calendar/references/lark-calendar-room-find.md +5 -9
- package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -5
- package/skills/lark-calendar/references/lark-calendar-update.md +2 -7
- package/skills/lark-doc/SKILL.md +1 -1
- package/skills/lark-doc/references/lark-doc-fetch.md +4 -2
- package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +4 -0
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +35 -0
- package/skills/lark-doc/references/lark-doc-xml.md +3 -2
- package/skills/lark-drive/SKILL.md +20 -8
- package/skills/lark-drive/references/lark-drive-comment-location.md +16 -4
- package/skills/lark-drive/references/lark-drive-comments-guide.md +16 -8
- package/skills/lark-drive/references/lark-drive-delete.md +35 -11
- package/skills/lark-drive/references/lark-drive-export.md +39 -10
- package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
- package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
- package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +1 -1
- package/skills/lark-drive/references/lark-drive-move.md +5 -3
- package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
- package/skills/lark-drive/references/lark-drive-pull.md +3 -3
- package/skills/lark-drive/references/lark-drive-push.md +33 -6
- package/skills/lark-drive/references/lark-drive-status.md +12 -14
- package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
- package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
- package/skills/lark-event/SKILL.md +2 -1
- package/skills/lark-event/references/lark-event-approval.md +170 -0
- package/skills/lark-im/SKILL.md +5 -4
- package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
- package/skills/lark-im/references/lark-im-messages-send.md +1 -1
- package/skills/lark-mail/SKILL.md +12 -9
- package/skills/lark-mail/references/lark-mail-forward.md +1 -1
- package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
- package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
- package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
- package/skills/lark-mail/references/lark-mail-reply.md +1 -1
- package/skills/lark-mail/references/lark-mail-watch.md +1 -1
- package/skills/lark-markdown/SKILL.md +3 -2
- package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
- package/skills/lark-minutes/SKILL.md +19 -4
- package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
- package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
- package/skills/lark-shared/SKILL.md +26 -8
- package/skills/lark-sheets/SKILL.md +98 -29
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
- package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
- package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
- package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
- package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
- package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
- package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
- package/skills/lark-slides/SKILL.md +29 -18
- package/skills/lark-slides/references/asset-planning.md +16 -5
- package/skills/lark-slides/references/examples.md +57 -227
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +21 -2
- package/skills/lark-slides/references/lark-slides-media-upload.md +0 -1
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
- package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
- package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -1
- package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
- package/skills/lark-slides/references/lark-slides-whiteboard.md +31 -30
- package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +9 -7
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +12 -10
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +14 -13
- package/skills/lark-slides/references/planning-layer.md +32 -2
- package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +8 -3
- package/skills/lark-slides/references/troubleshooting.md +7 -25
- package/skills/lark-slides/references/validation-checklist.md +18 -9
- package/skills/lark-slides/references/visual-planning.md +4 -3
- package/skills/lark-slides/references/xml-format-guide.md +65 -1
- package/skills/lark-slides/references/xml-schema-quick-ref.md +7 -3
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +907 -54
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +876 -5
- package/skills/lark-task/SKILL.md +1 -0
- package/skills/lark-task/references/lark-task-create.md +14 -1
- package/skills/lark-vc/SKILL.md +6 -3
- package/skills/lark-vc/references/lark-vc-recording.md +0 -2
- package/skills/lark-vc/references/vc-domain-boundaries.md +9 -1
- package/skills/lark-vc-agent/SKILL.md +25 -15
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +5 -2
- package/skills/lark-wiki/SKILL.md +7 -3
- package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
- package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
- package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
- package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
- package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
- package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
- package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -220
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 明确时间分支:room-find + freebusy + 冲突处理
|
|
2
|
+
|
|
3
|
+
> 本文档处理**时间已明确**的场景。"明确时间"来源:用户直接表达(如"明天下午3点")、编辑流中已定位日程的原始 start/end、或经用户确认的 suggestion 时间块。
|
|
4
|
+
|
|
5
|
+
## 前置条件
|
|
6
|
+
|
|
7
|
+
进入此分支前,调度器([schedule-meeting.md](./lark-calendar-schedule-meeting.md))已完成:
|
|
8
|
+
- 任务类型判定(新建 / 编辑)
|
|
9
|
+
- 编辑流:目标 event_id 已定位
|
|
10
|
+
- 新建流:默认值已补全
|
|
11
|
+
- 时间已判定为**明确**
|
|
12
|
+
|
|
13
|
+
## 流程
|
|
14
|
+
|
|
15
|
+
### 1. 查询会议室(如需)
|
|
16
|
+
|
|
17
|
+
若用户需要会议室,先调用 `+room-find`。详见 [`lark-calendar-room-find.md`](./lark-calendar-room-find.md)。
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
lark-cli calendar +room-find \
|
|
21
|
+
--slot "<start>~<end>" \
|
|
22
|
+
--attendee-ids "<ids>" \
|
|
23
|
+
--city "<city>" \
|
|
24
|
+
--building "<building>" \
|
|
25
|
+
--floor "<F2>" \
|
|
26
|
+
--room-name "<room_name>"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
时间块确定规则:
|
|
30
|
+
- **编辑流且不改时间,只新增会议室**:`--slot` 必须来自已定位日程的当前 `start/end`
|
|
31
|
+
- **编辑流且既改时间又加会议室**:`--slot` 必须来自候选新时间,而不是旧时间
|
|
32
|
+
|
|
33
|
+
详见 [`lark-calendar-room-find.md`](./lark-calendar-room-find.md)。
|
|
34
|
+
|
|
35
|
+
### 2. 查询忙闲
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
lark-cli calendar +freebusy --start "<start>" --end "<end>"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
规则:
|
|
42
|
+
- 参与人过多(超过 5 人):仅查询**当前用户**及少数核心人员忙闲即可
|
|
43
|
+
- 参与人含**群组**:无需展开群组成员查询忙闲
|
|
44
|
+
- 如果用户是从 `+suggestion` 确认了时间块后进入本分支的,**无需再调用 `+freebusy`**
|
|
45
|
+
|
|
46
|
+
### 3. 冲突处理
|
|
47
|
+
|
|
48
|
+
- **无冲突**:直接让用户选择会议室(如需),进入落地操作
|
|
49
|
+
- **有冲突**:必须先说明冲突情况,询问用户:
|
|
50
|
+
- **继续当前时间** → 让用户选择会议室(如需),进入落地操作
|
|
51
|
+
- **换时间** → 转入 [模糊时间分支](./lark-calendar-schedule-fuzzy-time.md)
|
|
52
|
+
|
|
53
|
+
## 落地
|
|
54
|
+
|
|
55
|
+
根据任务类型:
|
|
56
|
+
- 新建 → [`+create`](./lark-calendar-create.md)
|
|
57
|
+
- 编辑 → [`+update`](./lark-calendar-update.md)
|
|
58
|
+
|
|
59
|
+
落地规则详见 [schedule-meeting.md § 落地日程变更](./lark-calendar-schedule-meeting.md#落地日程变更)。
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 模糊时间 / 无时间信息分支:suggestion + 批量查询
|
|
2
|
+
|
|
3
|
+
> 本文档处理**时间模糊**(如"明天下午""下周找个时间")或**完全无时间信息**的场景。核心动作是调用 `+suggestion` 产出候选时间块,再根据是否需要会议室决定后续步骤。
|
|
4
|
+
|
|
5
|
+
## 前置条件
|
|
6
|
+
|
|
7
|
+
进入此分支前,调度器([schedule-meeting.md](./lark-calendar-schedule-meeting.md))已完成:
|
|
8
|
+
- 任务类型判定(新建 / 编辑)
|
|
9
|
+
- 编辑流:目标 event_id 已定位
|
|
10
|
+
- 新建流:默认值已补全
|
|
11
|
+
- 时间已判定为**模糊**或**无时间信息**
|
|
12
|
+
|
|
13
|
+
## 流程
|
|
14
|
+
|
|
15
|
+
### 1. 调用 suggestion
|
|
16
|
+
|
|
17
|
+
详见 [`lark-calendar-suggestion.md`](./lark-calendar-suggestion.md)。
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
lark-cli calendar +suggestion \
|
|
21
|
+
--start "<range_start>" \
|
|
22
|
+
--end "<range_end>" \
|
|
23
|
+
--attendee-ids "<ids>" \
|
|
24
|
+
--duration-minutes <n> \
|
|
25
|
+
--event-rrule "<rrule>"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
规则:
|
|
29
|
+
- 用户完全没有提供时间信息时,先默认一个合理区间(如"今天剩余时间"或"近两天")再调用
|
|
30
|
+
- 编辑流中,若用户说"改到明天下午""下周找个时间再约",基于用户期望的**新时间范围**调用,不要沿用旧时间
|
|
31
|
+
- **不要在用户完全没给时间时反问"你想约什么时候"** — 先补合理区间再进入 suggestion
|
|
32
|
+
|
|
33
|
+
### 2. 分支处理
|
|
34
|
+
|
|
35
|
+
#### 不需要会议室
|
|
36
|
+
|
|
37
|
+
获取多个推荐时间块后,直接向用户展示候选时间,用户确认后进入落地操作。
|
|
38
|
+
|
|
39
|
+
#### 需要会议室
|
|
40
|
+
|
|
41
|
+
获取候选时间块后,**不要急于让用户只选时间**。先将这些时间块一次性交给 `+room-find` 批量查询可用会议室,然后将【候选时间】与【对应的可用会议室列表】结构化展示,让用户一次性完成选择。
|
|
42
|
+
|
|
43
|
+
> **注意**:即使用户最初只说"查会议室"且未带时间,也必须强制走 suggestion → room-find 路径。
|
|
44
|
+
|
|
45
|
+
详见 [`lark-calendar-room-find.md`](./lark-calendar-room-find.md)。
|
|
46
|
+
|
|
47
|
+
### 3. 用户确认后
|
|
48
|
+
|
|
49
|
+
- 用户选中 `+suggestion` 返回的时间块后,**无需再次调用 `+freebusy`**,直接进入落地操作
|
|
50
|
+
- **BLOCKING REQUIREMENT**:必须先向用户展示选项并等待确认,禁止在未获用户确认时直接创建/更新日程
|
|
51
|
+
|
|
52
|
+
## 模糊语义消解与长期记忆
|
|
53
|
+
|
|
54
|
+
针对存在歧义的时间场景,严禁主观臆断。典型例子:
|
|
55
|
+
- "上班后" / "下班前"
|
|
56
|
+
- 未明确上下午的 12 小时制时间
|
|
57
|
+
|
|
58
|
+
处理规则:
|
|
59
|
+
- 主动澄清真实意图,不自行猜测
|
|
60
|
+
- 用户澄清后,将个性化定义沉淀为长期偏好
|
|
61
|
+
|
|
62
|
+
## 用户展示格式
|
|
63
|
+
|
|
64
|
+
向用户展示多个时间块及对应会议室时,**必须结构化分行排版**,严禁将时间与会议室放在同一行:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
## 2026-03-27 周五
|
|
68
|
+
|
|
69
|
+
[选项 1] 14:00 - 15:00(参会人均空闲)
|
|
70
|
+
可用会议室:
|
|
71
|
+
1. 学清嘉创大厦B座-F2-02🎦(7人)
|
|
72
|
+
2. 学清嘉创大厦B座-F2-05🎦(10人)
|
|
73
|
+
|
|
74
|
+
[选项 2] 16:00 - 17:00(参会人均空闲)
|
|
75
|
+
可用会议室:
|
|
76
|
+
1. 学清嘉创大厦B座-F3-01🎦(6人)
|
|
77
|
+
2. 学清嘉创大厦B座-F3-06🎦(8人)
|
|
78
|
+
|
|
79
|
+
💡 请回复您倾向的选项编号以及对应的会议室序号,我来为您完成预定。
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 落地
|
|
83
|
+
|
|
84
|
+
根据任务类型:
|
|
85
|
+
- 新建 → [`+create`](./lark-calendar-create.md)
|
|
86
|
+
- 编辑 → [`+update`](./lark-calendar-update.md)
|
|
87
|
+
|
|
88
|
+
落地规则详见 [schedule-meeting.md § 落地日程变更](./lark-calendar-schedule-meeting.md#落地日程变更)。
|
|
@@ -1,206 +1,95 @@
|
|
|
1
1
|
# 预约/改约日程或会议、查询/搜索可用会议室的工作流
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 执行摘要
|
|
4
4
|
|
|
5
|
-
- **第一步永远是判断任务类型:新建日程,还是编辑已有日程。**
|
|
6
|
-
- **编辑已有日程时,必须先定位目标日程或实例的 `event_id`。**
|
|
7
|
-
- **默认做智能助理,不做表单填写机。**
|
|
8
|
-
- **新建流先补默认值,编辑流先继承已定位日程信息。**
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- **模糊时间或无时间信息**:先 `+suggestion` 产出候选时间块;若需要会议室,再把这些时间块批量交给 `+room-find`,将“候选时间 + 对应可用会议室”一次性展示给用户选择。
|
|
14
|
-
- **BLOCKING REQUIREMENT: 只要面临时间方案(模糊时间/无时间)或会议室方案(需要会议室)的选择,必须先向用户展示选项并等待用户明确确认,绝对禁止在未获用户确认的情况下直接执行创建新日程或更新既有日程。**
|
|
15
|
-
- **用户选中了 `+suggestion` 返回的候选时间块后,不要再次调用 `+freebusy`。** 用户确认后直接进入最终落地操作:创建新日程,或更新既有日程。
|
|
16
|
-
- **当用户说“查会议室”“找会议室”“搜可用会议室”时,默认意图是查会议室可用性,不是检索会议室资源名录。**
|
|
17
|
-
- **必须按顺序执行。** 不要跳过“任务类型判定”“目标日程定位(编辑流)”“补默认值/继承基线信息”“判断时间明确性”这些前置步骤。
|
|
18
|
-
|
|
19
|
-
> **💡 核心原则:做智能助理,充分利用默认值规则(如默认标题、时长、参与人等)自动补全信息。极力避免像“表单填写机”一样频繁打断并反问用户,仅在必须决策的冲突或无法唯一确定的场景下才发起询问。**
|
|
5
|
+
- **第一步永远是判断任务类型:新建日程,还是编辑已有日程。**
|
|
6
|
+
- **编辑已有日程时,必须先定位目标日程或实例的 `event_id`。**
|
|
7
|
+
- **默认做智能助理,不做表单填写机。** 能根据上下文补全的默认值就直接补全,仅在必须决策的冲突或无法唯一确定的场景下才发起询问。
|
|
8
|
+
- **新建流先补默认值,编辑流先继承已定位日程信息。**
|
|
9
|
+
- **明确时间** → 进入 [明确时间分支](./lark-calendar-schedule-clear-time.md)
|
|
10
|
+
- **模糊时间或无时间信息** → 进入 [模糊时间分支](./lark-calendar-schedule-fuzzy-time.md)
|
|
11
|
+
- **BLOCKING REQUIREMENT**: 面临时间方案或会议室方案的选择时,必须先向用户展示选项并等待确认,禁止未经确认直接创建/更新日程。
|
|
12
|
+
- **必须按顺序执行。** 不要跳过"任务类型判定""目标日程定位(编辑流)""补默认值/继承基线信息""判断时间明确性"这些前置步骤。
|
|
20
13
|
|
|
21
14
|
## 严禁行为
|
|
22
15
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- **严禁在编辑已有日程时跳过目标定位步骤。**
|
|
27
|
-
-
|
|
28
|
-
- **不要在用户完全没给时间时,直接反问“你想约什么时候”。** 先补一个合理时间范围,再进入 `+suggestion`。
|
|
29
|
-
- **不要在“需要会议室 + 时间模糊”的场景下,先让用户只选时间。** 应先批量查出每个候选时间对应的可用会议室,再让用户一次性完成选择。
|
|
30
|
-
- **不要在用户已经选中 `+suggestion` 候选时间后,再重复调用 `+freebusy`。**
|
|
31
|
-
- **不要在用户未明确说出城市时,仅凭园区/办公室名自动补城市。**
|
|
32
|
-
- **严禁在面临时间方案或会议室方案的选择时(模糊时间、无时间或需要会议室),未经用户确认就擅自创建新日程或更新既有日程。**
|
|
16
|
+
- **严禁在未读取对应子命令文档前直接调用命令。**
|
|
17
|
+
- **严禁在尚未判断"新建"还是"编辑"之前,就直接进入创建日程或查会议室动作。**
|
|
18
|
+
- **严禁把带有既有日程锚点 + 修改动词的请求当成新建日程。**
|
|
19
|
+
- **严禁在编辑已有日程时跳过目标定位步骤。** 未拿到唯一 `event_id` 前,不得调用 `+update`。
|
|
20
|
+
- **严禁在面临时间/会议室方案选择时,未经用户确认就擅自创建/更新日程。**
|
|
33
21
|
|
|
34
22
|
## 适用场景
|
|
35
23
|
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- “明天下午3点约个日程/日历”
|
|
43
|
-
- “把明天上午的日程‘产品发布会’加上 小明
|
|
44
|
-
- “给下周一的周会换个会议室”
|
|
45
|
-
- “把这个日程改到明天下午,并加上学清 F201”
|
|
24
|
+
- "帮我约个会" / "下周找时间和 XX 开会"
|
|
25
|
+
- "帮我订/找/搜索一个可用会议室"
|
|
26
|
+
- "明天下午3点约个日程"
|
|
27
|
+
- "把明天上午的日程加上 小明"
|
|
28
|
+
- "给下周一的周会换个会议室"
|
|
29
|
+
- "把这个日程改到明天下午,并加上学清 F201"
|
|
46
30
|
|
|
47
31
|
## 核心概念
|
|
48
32
|
|
|
49
|
-
- **会议室是日程的一种参与人(attendee / resource),不能脱离日程单独预定。**
|
|
50
|
-
- **预定或查找会议室,均需先确定时间块。**
|
|
51
|
-
|
|
52
|
-
## CRITICAL 约束
|
|
53
|
-
|
|
54
|
-
- **在调用任何具体的 CLI 子命令(如 `+room-find`、`+suggestion`、`+freebusy`、`+create`)前,必须先读取其对应的 Markdown 文档。** 禁止仅凭记忆组装命令参数,以确保符合各命令最新的业务约束和格式规范。
|
|
55
|
-
- **当用户说“查会议室”“找会议室”“搜可用会议室”等,默认意图是查询会议室可用性,而不是检索会议室资源名录。**
|
|
56
|
-
- **必须严格按照下方【工作流】的步骤顺序完成任务。特别是单独查会议室时,若无明确时间,强制先走“模糊时间/无时间信息”分支调用 `+suggestion`。**
|
|
33
|
+
- **会议室是日程的一种参与人(attendee / resource),不能脱离日程单独预定。**
|
|
34
|
+
- **预定或查找会议室,均需先确定时间块。**
|
|
35
|
+
- **当用户说"查会议室""找会议室",默认意图是查会议室可用性,不是检索会议室资源名录。**
|
|
57
36
|
|
|
58
37
|
## 任务类型判定
|
|
59
38
|
|
|
60
39
|
| 类型 | 典型语言信号 | 第一动作 |
|
|
61
40
|
|------|--------------|----------|
|
|
62
|
-
| 新建日程 |
|
|
63
|
-
| 编辑已有日程 |
|
|
64
|
-
|
|
65
|
-
进一步规则:
|
|
41
|
+
| 新建日程 | "约个会""安排会议""新建日程""订个会议室开会" | 补默认值,再进入时间判断 |
|
|
42
|
+
| 编辑已有日程 | "给某日程加人/删人/加会议室""把某日程改到…""换会议室" | 先定位目标 `event_id` |
|
|
66
43
|
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
## 工作流
|
|
71
|
-
|
|
72
|
-
### 1. 编辑已有日程:先定位目标日程
|
|
44
|
+
规则:
|
|
45
|
+
- 只要同时出现**既有日程锚点**(标题、时间段、`这个日程`、`这场会`)和**修改动词**(添加、移除、改到、换),默认判定为编辑。
|
|
46
|
+
- 对重复性日程的编辑,必须先定位到对应实例的 `event_id`。
|
|
73
47
|
|
|
74
|
-
|
|
48
|
+
## 编辑流:先定位目标日程
|
|
75
49
|
|
|
76
50
|
定位规则:
|
|
51
|
+
- 优先利用用户给出的标题、日期、时间范围等锚点,通过 `+agenda`、`+search-event` 或实例视图缩小范围
|
|
52
|
+
- 命中多个候选日程时,必须向用户展示候选项并要求确认
|
|
53
|
+
- 重复性日程必须继续定位到该次实例的 `event_id`
|
|
77
54
|
|
|
78
|
-
|
|
79
|
-
- 如果命中多个候选日程,必须向用户展示候选项并要求确认,禁止自行猜测。
|
|
80
|
-
- 如果是重复性日程的某一次实例,必须继续定位到该次实例的 `event_id`。
|
|
55
|
+
编辑流分支路由:
|
|
81
56
|
|
|
82
|
-
|
|
57
|
+
| 编辑子场景 | 下一步 |
|
|
58
|
+
|-----------|--------|
|
|
59
|
+
| 仅增删普通参会人/群组,不改时间,不涉及会议室 | 直接 `+update`(详见 [lark-calendar-update.md](./lark-calendar-update.md)) |
|
|
60
|
+
| 新增会议室,不改时间 | 基于已定位日程 start/end → [明确时间分支](./lark-calendar-schedule-clear-time.md) |
|
|
61
|
+
| 只改时间,不涉及会议室 | 判断时间明确性 → 对应分支 |
|
|
62
|
+
| 既改时间,又新增/更换会议室 | 先确定最终时间 → 再查会议室 → 落地 |
|
|
83
63
|
|
|
84
|
-
|
|
85
|
-
- **新增会议室,但不改时间**:必须基于已定位日程的当前 `start/end` 作为时间块执行 `+room-find`,不能因为用户没重复说时间就退回“无时间信息”。
|
|
86
|
-
- **既改时间,又新增会议室**:必须先处理时间,拿到最终候选时间块后,再基于该时间执行 `+room-find`;最终只增量添加新会议室,不自动删除已有会议室。
|
|
87
|
-
- **既改时间,又更换会议室**:必须先处理时间,拿到最终候选时间块后,再基于该时间执行 `+room-find`;只有在用户明确表达“更换”时,最终才执行“移除旧会议室 + 添加新会议室”。
|
|
88
|
-
- **只改时间,不涉及会议室**:沿用下方时间工作流,但最终落地必须是 `+update`,不是 `+create`。
|
|
64
|
+
## 新建日程:智能推断默认值
|
|
89
65
|
|
|
90
|
-
|
|
91
|
-
|
|
66
|
+
- **标题**:根据上下文自动生成;如无法推断,默认"会议"
|
|
67
|
+
- **参会人**:如未指定,默认仅用户自己
|
|
68
|
+
- **时长**:基于上下文推断;默认 30 分钟
|
|
69
|
+
- **无时间信息**:默认推断合理区间(如"今天"或"近两天"),进入时间推荐流程,禁止询问用户
|
|
92
70
|
|
|
93
|
-
|
|
94
|
-
- **参会人**:如未明确指定其他人,默认参会人仅为**用户自己**
|
|
95
|
-
- **时长**:基于会议类型和上下文动态推断;如无法推断,默认为 30 分钟
|
|
96
|
-
- **无任何时间信息**:默认推断一个合理区间(如“今天”或“近两天”),并进入时间推荐流程,禁止询问用户
|
|
71
|
+
搜索参与人出现多个结果无法唯一确定时,必须询问用户并记录长期记忆。
|
|
97
72
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
### 3. 判断时间是否明确
|
|
101
|
-
|
|
102
|
-
这一步判断的是**最终要落地的目标时间**,不是只看用户原句里有没有重复说时间。
|
|
73
|
+
## 判断时间是否明确
|
|
103
74
|
|
|
104
75
|
时间基准规则:
|
|
76
|
+
- **新建流**:使用用户给出的时间,或默认补全出的时间范围
|
|
77
|
+
- **编辑流且不改时间**:已定位日程的当前 `start/end` 就是明确时间
|
|
78
|
+
- **编辑流且改时间**:用户想改到的新时间;若表达模糊,进入模糊时间分支
|
|
79
|
+
**注意**: 在执行修改日程/会议时间的任务时,必须先获取原日程的持续时长。如果用户只提供了新的开始时间,你必须根据原时长自动计算出新的结束时间,严格保持原时长不变,禁止擅自改变原日程的时长。
|
|
105
80
|
|
|
106
|
-
|
|
107
|
-
- **编辑流且不改时间**:已定位日程的当前 `start/end` 就是时间基准。后续如需查会议室,直接使用这个明确时间块。
|
|
108
|
-
- **编辑流且改时间**:用户想改到的新时间才是时间基准;若表达模糊,则进入 `+suggestion`。
|
|
109
|
-
|
|
110
|
-
分两类处理:
|
|
111
|
-
|
|
112
|
-
- **明确时间**:如“明天下午3点”
|
|
113
|
-
- **模糊时间**:如“明天下午”“下周找个时间”
|
|
114
|
-
|
|
115
|
-
### 4. 明确时间
|
|
116
|
-
|
|
117
|
-
明确时间时,需先判断是否需要会议室,如果需要,提前查询会议室;然后判断是否有时间冲突。这里的“明确时间”既可以来自用户直接表达,也可以来自已定位日程的原始时间。
|
|
118
|
-
详见 [`+room-find`](./lark-calendar-room-find.md) 与 [`+freebusy`](./lark-calendar-freebusy.md)。
|
|
81
|
+
## 分支路由
|
|
119
82
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
lark-
|
|
123
|
-
|
|
124
|
-
--attendee-ids "<ids>" \
|
|
125
|
-
--city "<city>" \
|
|
126
|
-
--building "<building>" \
|
|
127
|
-
--floor "<F2>" \
|
|
128
|
-
--room-name "<room_name>"
|
|
129
|
-
|
|
130
|
-
# 2. 查询当前用户及其他参会人忙闲
|
|
131
|
-
# (如果有多名参会人,需分别调用查询:--user-id "<ou_xxx>")
|
|
132
|
-
lark-cli calendar +freebusy --start "<start>" --end "<end>"
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
规则:
|
|
136
|
-
|
|
137
|
-
- **参会人过多或包含群组时的处理**:
|
|
138
|
-
- 如果参与人过多(例如超过 5 人),为避免高耗时,仅需查询**当前用户(自己)**及少数核心人员的忙闲状态即可。
|
|
139
|
-
- 如果参与人中包含**群组**,无需展开群组成员查询其忙闲状态。
|
|
140
|
-
- **编辑已有日程且不改时间,只新增会议室时**:这里的 `--slot` 必须来自已定位日程的当前 `start/end`。
|
|
141
|
-
- **编辑已有日程且既改时间又加会议室时**:这里的 `--slot` 必须来自候选新时间,而不是旧时间;如果用户是“新增会议室”,后续落地只做添加,不删除旧会议室。
|
|
142
|
-
- **如果没有冲突**:直接让用户选择会议室(如需),然后进入最终落地操作:创建新日程,或更新既有日程
|
|
143
|
-
- **如果有冲突**:必须先说明冲突情况,询问用户继续选择这个时间还是换个时间
|
|
144
|
-
- **如果说换个时间**:放弃当前时间,转入【模糊时间】流程,调用 `+suggestion` 推荐多个可用时间块
|
|
145
|
-
- **如果继续选择这个时间**:直接让用户选择会议室(如需),然后进入最终落地操作:创建新日程,或更新既有日程
|
|
146
|
-
- 位置信息要优先拆到结构化字段:用户明确说了城市才提取 `--city`;`--building` 不要再重复携带城市前缀。
|
|
147
|
-
- 参数归类顺序应为:`city/building/floor` > `floor + room-name` 复合表达 > `room-name`。像 `2L`、`2F` 这类更像楼层或区域定位的短词,优先视为 `--floor`,不要默认当作 `--room-name`。像 `学清2层` 这种表达,通常拆为 `--building "学清"` 与 `--floor "F2"`。
|
|
148
|
-
- 会议室名要做轻量归一化:`木星会议室` -> `--room-name "木星"`;`会议室 02` / `02会议室` -> `--room-name "02"`。
|
|
149
|
-
- 对 `F3-05` / `F5-07` / `3楼-08` 这类复合表达,若能稳定识别楼层与会议室号,应优先提取为 `--floor + --room-name`,不要把整段直接退化成 `--room-name`。
|
|
150
|
-
|
|
151
|
-
### 5. 模糊时间或无时间信息
|
|
152
|
-
|
|
153
|
-
先调用:
|
|
154
|
-
详见 [`+suggestion`](./lark-calendar-suggestion.md);若需要会议室,再结合 [`+room-find`](./lark-calendar-room-find.md)。
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
lark-cli calendar +suggestion \
|
|
158
|
-
--start "<range_start>" \
|
|
159
|
-
--end "<range_end>" \
|
|
160
|
-
--attendee-ids "<ids>" \
|
|
161
|
-
--duration-minutes <n> \
|
|
162
|
-
--event-rrule "<rrule>"
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
规则:
|
|
83
|
+
| 判定结果 | 下一步读取 |
|
|
84
|
+
|----------|-----------|
|
|
85
|
+
| 明确时间 | [schedule-clear-time.md](./lark-calendar-schedule-clear-time.md) |
|
|
86
|
+
| 模糊时间 / 无时间信息 | [schedule-fuzzy-time.md](./lark-calendar-schedule-fuzzy-time.md) |
|
|
166
87
|
|
|
167
|
-
|
|
168
|
-
- 编辑流中,若用户表达的是“改到明天下午”“下周找个时间再约”这类模糊新时间,则基于用户期望的新时间范围调用 `+suggestion`;不要继续沿用旧时间。
|
|
169
|
-
- **不需要会议室**:获取多个推荐时间块后,直接向用户展示候选时间,用户确认后进入最终落地操作:创建新日程,或更新既有日程。
|
|
170
|
-
- **需要会议室**:获取多个候选时间块后,**不要急于让用户选时间**。先将这些时间块一次性交给 `calendar +room-find` 批量查询可用会议室,然后将【候选时间】与【对应的可用会议室列表】结构化分行展示,让用户一次性完成选择。(**注意:即使用户最初只说“查会议室”,且未带时间,也必须强制走到这一步,先 suggestion 再 room-find**)。
|
|
171
|
-
- 用户一旦选择了 `+suggestion` 返回的时间块,**无需再次调用 `+freebusy`**
|
|
172
|
-
|
|
173
|
-
### 6. 模糊语义消解与长期记忆构建
|
|
174
|
-
|
|
175
|
-
针对用户专属的时间表达习惯或存在歧义的时间场景,严禁主观臆断。典型例子包括:
|
|
176
|
-
|
|
177
|
-
- “上班后”
|
|
178
|
-
- “下班前”
|
|
179
|
-
- 未明确上下午的 12 小时制时间表达
|
|
180
|
-
|
|
181
|
-
处理规则:
|
|
182
|
-
|
|
183
|
-
- 应主动澄清真实意图,而不是自行猜测
|
|
184
|
-
- 当用户给出澄清后,应将这类个性化定义沉淀为长期偏好,推动后续直接理解类似表达
|
|
185
|
-
|
|
186
|
-
### 7. 重复性日程
|
|
187
|
-
|
|
188
|
-
若当前会议为重复性日程,调用 `+room-find` 时需携带 `--event-rrule`。
|
|
189
|
-
|
|
190
|
-
必须检查返回中的:
|
|
191
|
-
|
|
192
|
-
- `reserve_until_time`
|
|
193
|
-
|
|
194
|
-
若候选会议室的可预约上限早于重复规则覆盖范围,**不要直接按原规则落地日程**。应:
|
|
195
|
-
|
|
196
|
-
- 向用户明确说明该会议室最长可约至何时。
|
|
197
|
-
- 若用户确认继续选用该会议室,你必须**自动将日程的重复规则结束时间缩短**至该 `reserve_until_time`,以防止会议室预约失败。
|
|
198
|
-
|
|
199
|
-
### 8. 落地日程变更
|
|
88
|
+
## 落地日程变更
|
|
200
89
|
|
|
201
90
|
用户确认后调用:
|
|
202
|
-
|
|
203
|
-
|
|
91
|
+
- 新建 → [`+create`](./lark-calendar-create.md)
|
|
92
|
+
- 编辑 → [`+update`](./lark-calendar-update.md)
|
|
204
93
|
|
|
205
94
|
```bash
|
|
206
95
|
lark-cli calendar +create \
|
|
@@ -214,52 +103,20 @@ lark-cli calendar +update \
|
|
|
214
103
|
--start "<start>" \
|
|
215
104
|
--end "<end>" \
|
|
216
105
|
--add-attendee-ids "omm_new_room"
|
|
217
|
-
|
|
218
|
-
# 仅当用户明确要求“更换会议室”时,才同时移除旧会议室并添加新会议室
|
|
219
|
-
lark-cli calendar +update \
|
|
220
|
-
--event-id "<event_id>" \
|
|
221
|
-
--remove-attendee-ids "omm_old_room" \
|
|
222
|
-
--add-attendee-ids "omm_new_room"
|
|
223
106
|
```
|
|
224
107
|
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
- 编辑流中如果是“新增会议室但不改时间”,必须先基于目标日程原始时间查到可用会议室,再 `+update --add-attendee-ids "<room_id>"`;默认保留已有会议室。
|
|
231
|
-
- 编辑流中如果是“既改时间又新增会议室”,顺序必须是:先确定最终时间,再查会议室,最后一次性 `+update` 时间与新增会议室;默认保留已有会议室。
|
|
232
|
-
- 编辑流中如果是“既改时间又更换会议室”,顺序必须是:先确定最终时间,再查会议室,最后一次性 `+update` 时间、移除旧会议室并添加新会议室。
|
|
233
|
-
- 需要会议室时,将选中的 `room_id` 写入最终落地请求的参与人列表
|
|
234
|
-
- 展示会议室候选时,必须保留 CLI/API 返回的完整 `room_name` 原值;允许附加“推断说明”,但禁止用摘要名、楼层及会议室号、容量/视频标签重组后的名称替换原值
|
|
235
|
-
|
|
236
|
-
## 用户展示建议
|
|
237
|
-
|
|
238
|
-
当向用户展示多个时间块及对应的多个会议室时,**必须使用结构化清晰的格式排版**。**严禁将时间与会议室名称放在同一行展示**,必须分行并使用编号列表呈现可用会议室,严禁将所有信息揉成一团纯文本堆叠。
|
|
239
|
-
|
|
240
|
-
**推荐展示格式参考:**
|
|
241
|
-
|
|
242
|
-
```text
|
|
243
|
-
## 2026-03-27 周五
|
|
244
|
-
|
|
245
|
-
[选项 1] 14:00 - 15:00(参会人均空闲)
|
|
246
|
-
可用会议室:
|
|
247
|
-
1. 学清嘉创大厦B座-F2-02🎦(7人)
|
|
248
|
-
2. 学清嘉创大厦B座-F2-05🎦(10人)
|
|
249
|
-
|
|
250
|
-
[选项 2] 16:00 - 17:00(参会人均空闲)
|
|
251
|
-
可用会议室:
|
|
252
|
-
1. 学清嘉创大厦B座-F3-01🎦(6人)
|
|
253
|
-
2. 学清嘉创大厦B座-F3-06🎦(8人)
|
|
254
|
-
|
|
255
|
-
💡 请回复您倾向的选项编号以及对应的会议室序号,我来为您完成预定。
|
|
256
|
-
```
|
|
108
|
+
落地规则:
|
|
109
|
+
- 编辑流必须始终沿用前面定位得到的目标 `event_id`;禁止在最后一步重新猜测目标日程
|
|
110
|
+
- 编辑流中"新增会议室"默认仅追加 `room_id`,不移除已有会议室
|
|
111
|
+
- 仅当用户明确说"更换会议室"时,才同时 `--remove-attendee-ids` 旧 + `--add-attendee-ids` 新
|
|
112
|
+
- 需要会议室时,将选中的 `room_id` 写入参与人列表
|
|
257
113
|
|
|
258
114
|
## 参考
|
|
259
115
|
|
|
116
|
+
- [lark-calendar-schedule-clear-time.md](./lark-calendar-schedule-clear-time.md)
|
|
117
|
+
- [lark-calendar-schedule-fuzzy-time.md](./lark-calendar-schedule-fuzzy-time.md)
|
|
260
118
|
- [lark-calendar-room-find.md](./lark-calendar-room-find.md)
|
|
261
|
-
- [lark-calendar-freebusy.md](./lark-calendar-freebusy.md)
|
|
262
119
|
- [lark-calendar-suggestion.md](./lark-calendar-suggestion.md)
|
|
263
120
|
- [lark-calendar-create.md](./lark-calendar-create.md)
|
|
264
|
-
- [lark-
|
|
265
|
-
- [
|
|
121
|
+
- [lark-calendar-update.md](./lark-calendar-update.md)
|
|
122
|
+
- [SKILL.md](../SKILL.md)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# calendar +suggestion
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
|
|
4
3
|
|
|
5
4
|
根据非明确时间或一段时间范围,推荐多个可用时间块方案。帮助用户解决协调时间的难题。
|
|
6
5
|
|
|
@@ -8,8 +7,6 @@
|
|
|
8
7
|
- ✅ **当用户需求涉及寻找时间块,且时间未完全确定**(如`今天`、`近三天`、`本周`、`下午`, `无时间描述`)时,调用此工具来获取推荐时间块给用户选择(包括但不限于预约日程)。
|
|
9
8
|
- ❌ **当用户已经明确了具体的时间点**(如`今天下午3点`),则**不需要**调用此工具
|
|
10
9
|
|
|
11
|
-
需要的scopes: ["calendar:calendar.free_busy:read"]
|
|
12
|
-
|
|
13
10
|
## 命令
|
|
14
11
|
|
|
15
12
|
```bash
|
|
@@ -121,5 +118,4 @@ lark-cli calendar +suggestion \
|
|
|
121
118
|
## 参考
|
|
122
119
|
|
|
123
120
|
- [lark-calendar-create](lark-calendar-create.md) — 创建日程
|
|
124
|
-
- [lark-calendar
|
|
125
|
-
- [lark-calendar](../SKILL.md) — 日历完整 API
|
|
121
|
+
- [lark-calendar](../SKILL.md) — skill 入口与路由
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# calendar +update
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
更新既有日程字段,或独立增量添加/移除参会人和会议室。
|
|
6
5
|
|
|
7
6
|
`+update` 支持三类互相独立的动作:更新日程字段、添加参会人/会议室、移除参会人/会议室。它们可以单独执行,也可以在同一次命令中组合执行。
|
|
8
7
|
|
|
9
|
-
需要的 scopes: ["calendar:calendar.event:update"]
|
|
10
|
-
|
|
11
8
|
## 推荐命令
|
|
12
9
|
|
|
13
10
|
```bash
|
|
@@ -66,8 +63,8 @@ lark-cli calendar +update \
|
|
|
66
63
|
- 如需替换某个参与人、群组或会议室,使用 `--remove-attendee-ids <旧ID>` + `--add-attendee-ids <新ID>`。
|
|
67
64
|
- 会议室是 resource attendee,必须使用 `omm_` ID 添加到参会人列表,不能脱离日程单独预定。
|
|
68
65
|
- 更新重复性日程时,必须先确定操作范围(仅此次/全部/此次及后续),然后按 [重复性日程操作规范](lark-calendar-recurring.md) 执行。
|
|
69
|
-
- 如果需要验证更新结果,等待至少 2 秒后再查询,避免同步延迟导致读到旧数据。
|
|
70
66
|
- 当同一次命令组合多个动作时,执行顺序为“日程字段 -> 移除参会人 -> 添加参会人”。若中途失败,不会自动回滚已成功步骤;错误信息会说明已完成的步骤。
|
|
67
|
+
**⚠️ 高风险操作**: 修改时间时必须先读取原日程时长并计算新 end。如果 end 计算错误,会导致日程时长变化,用户会直接感知,禁止擅自改变原日程的时长。
|
|
71
68
|
|
|
72
69
|
## 高级用法(完整 API 命令)
|
|
73
70
|
|
|
@@ -98,8 +95,6 @@ lark-cli calendar +update \
|
|
|
98
95
|
|
|
99
96
|
## 参考
|
|
100
97
|
|
|
101
|
-
- [lark-calendar](../SKILL.md) --
|
|
102
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
98
|
+
- [lark-calendar](../SKILL.md) -- skill 入口与路由
|
|
103
99
|
- [lark-calendar-schedule-meeting](lark-calendar-schedule-meeting.md) -- 预约/改约会议与会议室工作流
|
|
104
100
|
- [lark-calendar-room-find](lark-calendar-room-find.md) -- 查找可用会议室
|
|
105
|
-
- [lark-calendar-freebusy](lark-calendar-freebusy.md) -- 查询忙闲
|
package/skills/lark-doc/SKILL.md
CHANGED
|
@@ -14,7 +14,7 @@ metadata:
|
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
16
|
# 常用示例
|
|
17
|
-
lark-cli docs +fetch --doc "文档URL或token"
|
|
17
|
+
lark-cli docs +fetch --doc "文档URL或token;若 URL 存在 #share-... 锚点,优先使用锚点方式读取,不要全文拉取"
|
|
18
18
|
lark-cli docs +create --content '<title>标题</title><p>内容</p>'
|
|
19
19
|
lark-cli docs +update --doc "文档URL或token" --command append --content '<p>内容</p>'
|
|
20
20
|
```
|
|
@@ -17,8 +17,10 @@ lark-cli docs +fetch --doc Z1Fj...tnAc --detail with-ids
|
|
|
17
17
|
lark-cli docs +fetch --doc Z1Fj...tnAc --scope outline --max-depth 3
|
|
18
18
|
|
|
19
19
|
# 按 block id 区间精读
|
|
20
|
-
lark-cli docs +fetch --doc Z1Fj...tnAc
|
|
21
|
-
|
|
20
|
+
lark-cli docs +fetch --doc Z1Fj...tnAc --scope range --start-block-id blkA --end-block-id blkB --detail with-ids
|
|
21
|
+
|
|
22
|
+
# URL 带 #share 选区锚点时自动局部读取
|
|
23
|
+
lark-cli docs +fetch --doc 'docURL#share-anchor'
|
|
22
24
|
|
|
23
25
|
# 读整个章节(以标题 id 为锚点,自动展开到下一个同级/更高级标题前)
|
|
24
26
|
lark-cli docs +fetch --doc Z1Fj...tnAc \
|
|
@@ -9,6 +9,20 @@
|
|
|
9
9
|
> `mindnotes nodes create` 是新增/更新节点命令,**不是**新建一个新的思维笔记。
|
|
10
10
|
> 如果用户要**新建思维笔记**,不要走本链路,改走 [lark-doc-whiteboard](lark-doc-whiteboard.md)。
|
|
11
11
|
|
|
12
|
+
## 获取 `mindnote_id`
|
|
13
|
+
|
|
14
|
+
`--mindnote-id` 传 **Mindnote 文档 token**,不是节点 ID。`lark-cli mindnotes` 只负责读取和写入思维笔记内部节点。
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 用户给了 Mindnote URL,或给了可能包着 Mindnote 的 Wiki URL
|
|
18
|
+
lark-cli drive +inspect --url "<mindnote_or_wiki_url>"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
处理规则:
|
|
22
|
+
|
|
23
|
+
- 普通 Mindnote URL:`drive +inspect` 返回的 Mindnote token 可作为 `--mindnote-id`。
|
|
24
|
+
- Wiki URL:不要把 `/wiki/` 路径里的 wiki token 当作 `--mindnote-id`;必须先 `drive +inspect` 解包,确认底层类型是 `mindnote` 后再使用返回的真实 token。直接把 wiki token 传给 `mindnotes nodes list` 通常会返回 `3410003 resource not found`。
|
|
25
|
+
|
|
12
26
|
## 命令
|
|
13
27
|
|
|
14
28
|
```bash
|
|
@@ -96,8 +110,8 @@ lark-cli mindnotes nodes create \
|
|
|
96
110
|
|
|
97
111
|
1. 先判断用户目标是不是“新建一个思维笔记”。
|
|
98
112
|
2. 如果是新建思维笔记,切到 [lark-doc-whiteboard](lark-doc-whiteboard.md)。
|
|
99
|
-
3.
|
|
100
|
-
4.
|
|
113
|
+
3. 如果是操作已有思维笔记,先按上方「获取 `mindnote_id`」确认已拿到 Mindnote 文档 token。
|
|
114
|
+
4. 确认目标类型是 **Mindnote** 后,把真实 Mindnote token 作为 `--mindnote-id`。
|
|
101
115
|
5. 先执行 `mindnotes nodes list`,确认目标 `parent_id`。
|
|
102
116
|
6. 新增子节点时,在 `nodes[]` 里传 `parent_id`;更新已有节点时,在 `nodes[]` 里传已有 `node_id`。
|
|
103
117
|
7. 再执行 `mindnotes nodes create`。
|
|
@@ -110,4 +124,5 @@ lark-cli mindnotes nodes create \
|
|
|
110
124
|
|
|
111
125
|
- [lark-doc-fetch](lark-doc-fetch.md) — 获取文档内容
|
|
112
126
|
- [lark-doc-whiteboard](lark-doc-whiteboard.md) — 新建思维笔记走画板链路
|
|
127
|
+
- [lark-drive](../../lark-drive/SKILL.md) — 解析 Mindnote / Wiki 等云空间资源
|
|
113
128
|
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
@@ -44,6 +44,8 @@ SubAgent 插入 SVG。
|
|
|
44
44
|
</whiteboard>
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
如果 Mermaid 已在本地文件中,可写成 `<whiteboard type="mermaid" path="@diagram.mmd"></whiteboard>`;CLI 会在写入前读取文件并展开为内联内容。
|
|
48
|
+
|
|
47
49
|
### 步骤 2B: SubAgent 使用 SVG 插入图表
|
|
48
50
|
|
|
49
51
|
主 Agent 启动 SubAgent,让它用 `docs +create` / `docs +update` 插入:
|
|
@@ -56,6 +58,8 @@ SubAgent 插入 SVG。
|
|
|
56
58
|
</whiteboard>
|
|
57
59
|
```
|
|
58
60
|
|
|
61
|
+
如果 SVG 已在本地文件中,可写成 `<whiteboard type="svg" path="@diagram.svg"></whiteboard>`;PlantUML 文件同理使用 `<whiteboard type="plantuml" path="@sequence.puml"></whiteboard>`。
|
|
62
|
+
|
|
59
63
|
Sub Agent 需要携带以下的最小上下文,以及后续的 [SVG 设计 Workflow] 章节指南:
|
|
60
64
|
|
|
61
65
|
- doc token、插入位置(标题 / block_id / command)
|