@amaster.ai/pi-lark 0.1.2-beta.40 → 0.1.2-beta.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +15 -3
- package/skills/lark-apps/references/lark-apps-automation.md +164 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +1 -1
- package/skills/lark-apps/references/lark-apps-db.md +2 -2
- 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-base/SKILL.md +1 -1
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
- 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 +17 -7
- 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 +12 -0
- 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-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-workflow-knowledge-organize.md +26 -20
- package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
- 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 +1 -1
- 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 +50 -1
- package/skills/lark-slides/references/xml-schema-quick-ref.md +7 -3
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +647 -52
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +529 -0
- package/skills/lark-task/SKILL.md +1 -0
- package/skills/lark-task/references/lark-task-create.md +14 -1
- package/skills/lark-vc/references/lark-vc-recording.md +0 -2
- package/skills/lark-vc-agent/SKILL.md +24 -14
- 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 +4 -2
- 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
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
# calendar +create
|
|
3
3
|
|
|
4
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
5
4
|
|
|
6
5
|
创建日程并按需邀请参会人。
|
|
7
6
|
|
|
8
|
-
需要的scopes: ["calendar:calendar.event:create","calendar:calendar.event:update"]
|
|
9
|
-
|
|
10
7
|
## 推荐命令
|
|
11
8
|
|
|
12
9
|
```bash
|
|
@@ -38,10 +35,10 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
38
35
|
| `--description <text>` | 否 | 日程详细描述。提供会议议程、活动内容、注意事项或链接等。与 summary 配合使用,仅关注当前日程信息 |
|
|
39
36
|
| `--attendee-ids <id_list>` | 否 | 参与人 ID 列表(逗号分隔)。支持用户(`ou_`)、群组(`oc_`)和会议室(`omm_`)。AI 提取时请务必保留对应前缀 |
|
|
40
37
|
| `--calendar-id <id>` | 否 | 日历 ID(省略则使用主日历) |
|
|
41
|
-
| `--rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545
|
|
38
|
+
| `--rrule <rrule>` | 否 | 重复日程的重复性规则,规则设置方式参考rfc5545。示例值:"FREQ=DAILY;INTERVAL=1;UNTIL=<具体日期>" |
|
|
42
39
|
| `--dry-run` | 否 | 预览 API 调用,不执行 |
|
|
43
40
|
|
|
44
|
-
>
|
|
41
|
+
> 当用户表达'每周 X'、'每周重复'、'连续 N 周'时,必须使用 rrule 创建重复性日程,而非创建多个独立日程
|
|
45
42
|
> 自动设置 `attendee_ability: "can_modify_event"`,参会人可查看彼此并编辑日程。
|
|
46
43
|
> 自动设置 `free_busy_status: "busy"`,默认日程忙闲状态为忙碌。
|
|
47
44
|
> 自动设置 `reminders: [{"minutes": 5}]`,默认日程开始前 5 分钟提醒。
|
|
@@ -56,44 +53,17 @@ lark-cli calendar +create --summary "..." --start "..." --end "..." \
|
|
|
56
53
|
- 全天日程的开始日期和结束日期必须分别是日程开始的第一天和结束的最后一天。如果只有一天的话,开始日期和结束日期是相同。
|
|
57
54
|
|
|
58
55
|
```bash
|
|
59
|
-
# 第一步:创建日程(含高级参数)
|
|
60
|
-
## 查看完整参数定义
|
|
61
|
-
lark-cli schema calendar.events.create
|
|
62
|
-
## 创建日程
|
|
63
|
-
lark-cli calendar events create \
|
|
64
|
-
--params '{"calendar_id":"<CALENDAR_ID>"}' \
|
|
65
|
-
--data '{
|
|
66
|
-
"summary": "技术分享:CLI 架构设计",
|
|
67
|
-
"start_time": { "timestamp": "1741586400" },
|
|
68
|
-
"end_time": { "timestamp": "1741593600" }
|
|
69
|
-
}'
|
|
70
|
-
|
|
71
|
-
# 第二步:添加参会人(使用第一步返回的 calendar_id 和 event_id)
|
|
72
|
-
## 查看完整参数定义
|
|
73
|
-
lark-cli schema calendar.event.attendees.create
|
|
74
|
-
## 添加参会人
|
|
75
|
-
lark-cli calendar event.attendees create \
|
|
76
|
-
--as user \
|
|
77
|
-
--params '{"calendar_id":"<CALENDAR_ID>","event_id":"<EVENT_ID>"}' \
|
|
78
|
-
--data '{"attendees": [{"type": "user", "user_id": "ou_xxx"}]}'
|
|
79
|
-
|
|
80
56
|
## 添加需要审批的会议室(approval_reason 最大 200 字符)
|
|
81
57
|
lark-cli calendar event.attendees create \
|
|
82
58
|
--as user \
|
|
83
59
|
--params '{"calendar_id":"<CALENDAR_ID>","event_id":"<EVENT_ID>"}' \
|
|
84
60
|
--data '{"attendees": [{"type": "resource", "room_id": "omm_xxx", "approval_reason": "申请原因"}]}'
|
|
85
61
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
--params '{"calendar_id":"<CALENDAR_ID>","event_id":"<EVENT_ID>","need_notification":false}'
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
> 完整 API 命令的时间参数是 **Unix 秒字符串**(非 ISO 8601)。
|
|
96
|
-
> 当你手动拆成两步执行时,建议保留“失败后回滚删除”的第三步,避免遗留空日程。
|
|
62
|
+
完整 API 命令的关键差异:
|
|
63
|
+
- 时间参数是 **Unix 秒字符串**(非 ISO 8601)。
|
|
64
|
+
- 全天日程的开始日期和结束日期必须分别是日程开始的第一天和结束的最后一天;单日全天日程两者相同。
|
|
65
|
+
- 手动拆成“创建日程 + 添加参会人”两步时,若第二步失败,建议删除刚创建的空日程,避免遗留无参会人的日程。
|
|
66
|
+
- 设置会议 owner:`+create` 不支持,需用完整 API 命令在 `vchat.meeting_settings.owner_id` 中设置,且必须同时设置 `vchat.vc_type` 为 `vc`(代表该日程为 VC 视频会议)。仅当以应用(bot)身份在应用日历上操作时生效;owner 必须为用户身份(`ou_` open_id),不能为非用户或外部租户用户。
|
|
97
67
|
|
|
98
68
|
## 参会人类型
|
|
99
69
|
|
|
@@ -109,6 +79,5 @@ lark-cli calendar events delete \
|
|
|
109
79
|
|
|
110
80
|
## 参考
|
|
111
81
|
|
|
112
|
-
- [lark-calendar](../SKILL.md) --
|
|
113
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
82
|
+
- [lark-calendar](../SKILL.md) -- skill 入口与路由
|
|
114
83
|
- [lark-calendar-suggestion](lark-calendar-suggestion.md) -- 根据非明确时间或一段时间范围,推荐多个可用时间块方案
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
# calendar +room-find
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
|
|
4
3
|
|
|
5
4
|
针对一个或多个时间块查找/搜索可用会议室。会议室是日程的一种资源型参与人,不能脱离日程单独预定。
|
|
6
5
|
|
|
7
|
-
需要的 scopes: ["calendar:calendar.free_busy:read"]
|
|
8
|
-
|
|
9
6
|
## 适用场景
|
|
10
7
|
|
|
11
8
|
- 已知一个或多个待选时间块,需要查找可用会议室
|
|
@@ -50,7 +47,7 @@ lark-cli calendar +room-find \
|
|
|
50
47
|
| `--city <text>` | 否 | 会议室所在城市强约束。**仅当**用户明确说出具体城市(如北京、上海)时才提取,**严禁**根据园区或楼宇名称自行联想或补全。 |
|
|
51
48
|
| `--building <text>` | 否 | 会议室所在楼宇强约束,承载城市以下、楼层以上的办公区/园区/楼栋描述。|
|
|
52
49
|
| `--floor <text>` | 否 | 仅用于筛选会议室所在楼层。应先做归一化,再传递规范值;例如 `2楼` / `二楼` / `2F` 统一为 `F2`。注意:此参数只筛选楼层,不可混入区域定位(如“A区”)或具体会议室号。 |
|
|
53
|
-
| `--room-name <text>` | 否 |
|
|
50
|
+
| `--room-name <text>` | 否 | 会议室名称约束,支持以**英文逗号**分隔传入多个名称。仅当用户明确提到会议室专名、会议室号或编号区间时使用。 |
|
|
54
51
|
| `--min-capacity <n>` | 否 | 会议室最小容纳人数。当用户明确参会人数或提出“至少容纳N人”等要求时,提取数字放入此参数,必须为正整数。 |
|
|
55
52
|
| `--max-capacity <n>` | 否 | 会议室最大容纳人数。用于过滤过大空间,必须为正整数。 |
|
|
56
53
|
| `--attendee-ids <id_list>` | 否 | 参会对象 ID 列表。支持用户 ID(`ou_` 前缀)和群组 ID(`oc_` 前缀),多个 ID 以逗号分隔。 |
|
|
@@ -67,7 +64,7 @@ lark-cli calendar +room-find \
|
|
|
67
64
|
- 同一语义槽位只保留一个规范值。例如用户说“2楼”,应转换为 `--floor "F2"`;**禁止**同时传 `2楼 F2` 这类重复楼层信息。
|
|
68
65
|
- 参数归类顺序应为:`city/building/floor` > `floor + room-name` 复合表达 > `room-name`。若短词更像楼层/区域定位(如 `2L`、`2F`),优先落到 `--floor`,不要默认落到 `--room-name`。像 `学清2层` 这种表达,通常拆为 `--building "学清"` 与 `--floor "F2"`。
|
|
69
66
|
- 对会议室名要做轻量归一化:`木星会议室` 应提取为 `--room-name "木星"`;`会议室 02` / `02会议室` 应提取为 `--room-name "02"`。
|
|
70
|
-
-
|
|
67
|
+
- 当用户表达"帮我约 XX 到 YY 号之间的会议室"或一次提及多个会议室名称时,应将所有目标名称用英文逗号拼接传入 `--room-name`。例如:
|
|
71
68
|
- "帮我约 16~20 号的会议室" → `--room-name "16,17,18,19,20"`
|
|
72
69
|
- "查下木星和火星是否有空" → `--room-name "木星,火星"`
|
|
73
70
|
- "看看 01、02、03 会议室" → `--room-name "01,02,03"`
|
|
@@ -90,9 +87,8 @@ lark-cli calendar +room-find \
|
|
|
90
87
|
```
|
|
91
88
|
|
|
92
89
|
> **AI 行为指导:**
|
|
93
|
-
> - **结构化展示时间块与会议室**:默认按“时间块 ->
|
|
90
|
+
> - **结构化展示时间块与会议室**:默认按“时间块 -> 会议室候选”的层级结构展示,并直接询问用户意向。
|
|
94
91
|
> - **`room_name` 必须逐字透传**:展示给用户的会议室名称,必须直接使用 CLI/API 返回的 `room_name` 原值。禁止提取楼层、会议室号、容量、视频能力后重组成新的名称,禁止意译、缩写、去前缀、去后缀,或仅保留"便于阅读"的摘要名。
|
|
95
|
-
> - **主动识别区间/多名称意图**:当用户提到"帮我约 XX 到 YY 号的会议室""XX~YY 之间的会议室"或一次列出多个会议室名称时,将所有目标名称展开为英文逗号分隔列表,传入 `--room-name`。例如"帮我约 16 到 20 号的会议室"应生成 `--room-name "16,17,18,19,20"`。
|
|
96
92
|
> - **重复日程要明确阻断原因与自动缩短**:若某候选会议室的 `reserve_until_time` 无法覆盖重复性日程,**必须**向用户明确说明该会议室最长可约至何时。若用户确认继续选用该会议室,你必须**自动将日程的重复规则结束时间缩短**至该 `reserve_until_time`,以防止会议室预约失败。不能直接按原规则继续。
|
|
97
93
|
> - **正确解释推荐结果**:如果返回结果与用户输入条件不完全字面一致,先说明底层可能返回邻近位置或相近条件的推荐候选,不要直接将其判定为异常。
|
|
98
94
|
> - **默认减少用户输入成本**:应主动引导用户不必一开始就提供很详细的会议室搜索条件。只要时间块已明确,用户直接表达“想约会议室”即可,先基于当前信息查询候选;只有在用户对结果不满意时,再引导其补充更具体的楼宇、楼层、会议室名或容量条件。
|
|
@@ -102,7 +98,7 @@ lark-cli calendar +room-find \
|
|
|
102
98
|
| 字段名 | 说明 |
|
|
103
99
|
| :--- | :--- |
|
|
104
100
|
| `room_id` | 会议室唯一标识,用于后续创建日程时添加为会议室参与人使用。 |
|
|
105
|
-
| `room_name` |
|
|
101
|
+
| `room_name` | 会议室名称,展示给用户时必须使用原值。 |
|
|
106
102
|
| `capacity` | 会议室最大容纳人数。 |
|
|
107
103
|
| `reserve_until_time` | 该会议室当前允许被预约到的最晚时间点,用于校验重复性日程是否超期。 |
|
|
108
104
|
|
|
@@ -110,4 +106,4 @@ lark-cli calendar +room-find \
|
|
|
110
106
|
|
|
111
107
|
- [lark-calendar-create](lark-calendar-create.md)
|
|
112
108
|
- [lark-calendar-suggestion](lark-calendar-suggestion.md)
|
|
113
|
-
- [lark-calendar](../SKILL.md) —
|
|
109
|
+
- [lark-calendar](../SKILL.md) — skill 入口与路由
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
# calendar +rsvp
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
回复指定的日程,更新当前用户的 RSVP 状态(接受、拒绝或待定)。
|
|
6
5
|
|
|
7
|
-
需要的scopes: ["calendar:calendar.event:reply"]
|
|
8
|
-
|
|
9
6
|
## 命令
|
|
10
7
|
|
|
11
8
|
```bash
|
|
@@ -38,5 +35,4 @@ lark-cli calendar +rsvp --calendar-id cal_xxx --event-id evt_xxx --rsvp-status a
|
|
|
38
35
|
|
|
39
36
|
## 参考
|
|
40
37
|
|
|
41
|
-
- [lark-calendar](../SKILL.md) --
|
|
42
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
38
|
+
- [lark-calendar](../SKILL.md) -- skill 入口与路由
|
|
@@ -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)
|