飞书会议室偏好初始化与预定。适用于:初始化/刷新个人会议室列表、创建会议并预定会议室、 给已有会议补订会议室。使用本地状态文件保存首选会议室列表;第一版只维护一个 base 地(默认城市,内部字段为 default_city) 的会议室列表,跨城市时只创建会议不自动订房。
Feishu会议室书是一项面向实际任务的技能,主要用于基于飞书日历事件学习个人常用会议室,并按本地偏好列表预定会议室;Paths.;
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
基于飞书日历事件学习用户常用会议室,并依据本地偏好顺序自动预订会议室。
state/feishu-meeting-room-book.jsonskills/feishu-meeting-room-book/scripts/meeting_room_booker.pytmp/meeting-room-refresh-plan.jsonopenclaw-lark,或任何提供以下能力的等效飞书/Lark 插件:feishu_calendar_eventfeishu_calendar_event_attendeefeishu_calendar_freebusypython3state/feishu-meeting-room-book.jsontmp/meeting-room-events-*.json 和 tmp/meeting-room-candidates-*.jsoncalendar:calendar.event:read:用于初始化/刷新阶段读取近期日历事件calendar:calendar.event:create:用于创建新的日历事件calendar:calendar.event:update:用于附加会议室并更新事件参会人calendar:calendar.free_busy:read:用于检查会议室可用性resource attendee 附加来实现feishu_calendar_eventfeishu_calendar_event_attendeefeishu_calendar_freebusy若任一飞书工具返回鉴权或权限范围错误,请先完成 OAuth 流程,再重试。本技能所需的正常权限范围为:
calendar:calendar.event:readcalendar:calendar.event:createcalendar:calendar.event:updatecalendar:calendar.free_busy:readdefault_city。state/feishu-meeting-room-book.json 不存在,且用户请求创建/预订会议室或为已有事件预订会议室,**不得**要求用户单独执行初始化。应主动告知用户即将启动首次初始化,立即运行 init 流程,并在默认会议室顺序保存后继续处理原始请求。会议default_city 中保存的基础位置(默认城市)。create_and_book:仍创建事件,但不附加会议室book_existing:保持事件不变,并提示用户手动添加更多会议室后刷新当用户询问如何更新候选会议室列表时,遵循以下规则:
resource attendee 附加到该事件上。刷新会议室列表、更新会议室列表、重新学习会议室 或 更新会议室候选表。--room-id 参数列表覆写状态。now - 1 day 至 now + 7 daysnow - 7 days 至 now + 7 daysnow - 20 days 至 now + 20 days - 1 minute当用户说出以下任一指令时,触发该流程:
当因状态文件不存在而隐式触发初始化时,需明确告知用户:
步骤:
default_refresh:适用于状态已存在,且用户发出“刷新会议室列表”、“更新会议室列表”、“重新学习会议室”或“更新会议室候选表”等指令时now - 1 day 至 now + 7 daysdisplay_name、score、last_seen_at、location_hints)init:适用于状态文件不存在,或用户明确发出“初始化会议室偏好”或“初始化会议室预定技能”指令时now - 7 days 至 now + 7 daysfull_rebuild:仅当用户明确发出“全量刷新会议室列表”或“重建会议室列表”指令时使用now - 20 days 至 now + 20 days - 1 minutepython3 skills/feishu-meeting-room-book/scripts/meeting_room_booker.py plan-refresh --mode--output tmp/meeting-room-refresh-plan.json
tmp/meeting-room-refresh-plan.json。
严格使用该计划中 slices[].start_time、slices[].end_time、slices[].event_file 和 slices[].candidate_file 的值。
不得自行构造临时文件名或时间窗口。feishu_calendar_event 并设置 action=listevent_filepython3 skills/feishu-meeting-room-book/scripts/meeting_room_booker.py extract --input--output
extract 因 invalid JSON in 或其他解析错误失败,则视该切片文件已损坏或截断。finalize-refresh。state/feishu-meeting-room-book.json 写入的**唯一允许方式**:python3 skills/feishu-meeting-room-book/scripts/meeting_room_booker.py finalize-refresh --input--input --mode --state state/feishu-meeting-room-book.json --output tmp/meeting-room-candidates.json
tmp/meeting-room-candidates.json。
若辅助命令失败,或返回 saved != true,则中止流程,告知用户刷新失败,并保持先前状态不变。default_refresh,需解释原有列表已被保留,新发现的会议室已追加至末尾python3 skills/feishu-meeting-room-book/scripts/meeting_room_booker.py save --input tmp/meeting-room-candidates.json --state state/feishu-meeting-room-book.json --default-city "" --output tmp/meeting-room-candidates-confirmed.json --room-id omm_first --room-id omm_second
规则:
resource attendee 学习。rsvp_status=accept 的资源参会人。rsvp_status 字段,则仍保留该会议室候选。default_refresh 为增量式:display_name、score、last_seen_at、location_hints)full_rebuild 后确认更小子集。feishu_calendar_event 工具未暴露可靠的分页控制(针对 list),因此须确保每个时间切片足够小,使单次切片结果易于管理。now - 20 days 至 now + 20 days - 1 minute 范围之外。state/feishu-meeting-room-book.json 使用 write、edit 或任何其他直接文件写入工具。tmp/meeting-room-events-*.json 下的原始每切片临时文件执行 write 操作。meeting_room_booker.py 的 JSON 命令使用 shell 重定向(如 >)。请始终使用辅助脚本的 --output 参数以确保原子写入。event_file 被截断或格式异常,extract 将失败。应将此视为真实失败原因;不得继续使用空文件或部分写入的候选文件。feishu_calendar_event 的 JSON 到其他文件。state/feishu-meeting-room-book.json。state/meeting-room-preferences.json 或任何其他替代状态文件名。extract / plan-refresh / finalize-refresh / save 任一命令失败,须立即中止,告知用户刷新失败,并保持先前状态不变。当用户希望创建新事件并同时预订会议室时,使用此流程。
步骤:
state/feishu-meeting-room-book.json 缺失,则先执行初始化。python3 skills/feishu-meeting-room-book/scripts/meeting_room_booker.py show --state state/feishu-meeting-room-book.json --json
会议。user_open_id 始终传入)。start_time + 1 hour。default_city 中保存的基础位置(默认城市)。feishu_calendar_freebusy 并设置 action=list 和 room_id=。freebusy_items 为空的会议室。feishu_calendar_event 并设置 action=create 创建事件。user_open_idattendeesfeishu_calendar_event_attendee 并设置 action=create 将其附加。feishu_calendar_event_attendee 并设置 action=list,以检查会议室参会人状态。无需告知用户主题、参会人和持续时间为必填项。用户只需提供开始时间,其余字段均由上述默认值填充。
状态解读:
accept:会议室预订成功needs_action:事件已创建,会议室预订已提交;告知用户该操作处于待处理状态decline 或参会人创建失败:保留事件,并告知用户未成功预订会议室当用户希望为已有事件添加会议室时,使用此流程。
步骤:
state/feishu-meeting-room-book.json 缺失,则先执行初始化。event_idfeishu_calendar_event 并设置 action=search 或 action=list,按标题/时间搜索feishu_calendar_event_attendee 并设置 action=list 读取参会人列表。accept 或 needs_action 的资源参会人,则中止并报告当前会议室状态。feishu_calendar_freebusy 遍历缓存会议室,并使用 feishu_calendar_event_attendee 附加首个空闲会议室。辅助脚本写入如下结构:
{
"version": 1,
"default_city": "Shanghai",
"updated_at": "2026-03-17T20:00:00+08:00",
"rooms": [
{
"room_id": "omm_xxx",
"display_name": "A5-01",
"rank": 1,
"score": 18,
"last_seen_at": "2026-03-16T10:00:00+08:00",
"location_hints": ["Shanghai HQ"]
}
]
}
该文件为可再生的运行时状态,请始终存放于 state/ 目录下。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习