Skill-A: create_meeting — 会议创建总控入口技能
核心路由规则(非常重要)
凡是用户要“新建一场会议”,都必须优先调用本技能。
包括但不限于这些表达:
- 开个会
- 新建会议
- 约个会
- 安排一个会
- 预约会议
- 开组会 / 周会 / 例会
- 开紧急会议
- 开讨论会
- 今晚 11 点 40 建个会
- 晚上 11 点 30 开组会
- 从下周开始每周一开会
- 建一个跨项目会议
不要在用户首次提出“新建会议”需求时直接调用 tencent-meeting-skill。
只有以下场景,才直接调用 tencent-meeting-skill
- 查询已有会议详情
- 通过会议号查会议信息
- 修改已有会议
- 取消已有会议
- 查询参会人 / 邀请人 / 等候室
- 查询录制、转写、AI纪要
定位
本技能是 会议创建总入口 / 总控技能。
它 不负责 LLM 分析,也 不直接操作腾讯会议或 SMTP。
职责分工如下:
-
OpenClaw
- 理解用户自然语言
- 补问缺失参数
- 判断项目归属
- 决定何时调用下游 skill
-
Skill-A(本技能)
- 作为“新建会议”场景的统一入口
- 约束正确调用顺序
- 在 Gitea 中创建会议目录与文件
- 查询仓库成员与邮箱
- 生成邀请邮件 HTML
- 写日志
- 把后续发信所需参数整理返回给 OpenClaw
-
tencent-meeting-skill
- 仅作为本技能下游依赖
- 负责实际创建腾讯会议
- 返回
meeting_id / meeting_code / join_url
-
imap-smtp-email
- 仅作为本技能下游依赖
- 负责实际发送邀请邮件
配置要求
配置文件路径:~/.config/skill-a-create-meeting/.env
首次使用前运行:
bash setup.sh
调用前提
在调用本技能前,OpenClaw 必须先完成以下工作:
1. 解析用户意图
必须先从用户输入中确认这些信息:
time:会议开始时间(ISO8601,带时区,默认 +08:00)topic:会议主题repo:目标仓库,如owner/repocategory:single或cross-projectorganizer:组织者 Gitea 用户名
2. 如有缺失,必须先追问用户
特别是以下情况必须先问清楚,不能直接跳过:
- 用户没说项目归属
- 用户没说会议主题
- 用户时间表达不清楚
- 用户是临时会议还是循环会议不明确
3. 先调用 tencent-meeting-skill 创建腾讯会议
拿到以下字段后,才能调用本技能:
meeting_idmeeting_codejoin_url
输入参数
必填参数:
timetopicrepocategoryorganizermeeting_idmeeting_codejoin_url
可选参数:
duration:默认 60 分钟attendees:逗号分隔的 Gitea 用户名列表;若不传,则自动取该仓库成员meeting_type:ad-hoc或recurringseries_id:循环会议系列 ID
严格工作流(必须按顺序执行)
第一步:OpenClaw 先处理用户对话
OpenClaw 必须先完成:
- 识别这是“新建会议”需求
- 决定项目归属
- 补齐缺失参数
- 明确会议时间、主题、仓库、组织者
不要在本技能内再次做自然语言分析。
第二步:OpenClaw 调用 tencent-meeting-skill 创建腾讯会议
OpenClaw 应先调用腾讯会议 skill,拿到:
meeting_idmeeting_codejoin_url
第三步:调用本技能,完成 Gitea 侧落库与邮件内容准备
node main.js prepare \
--time "2026-04-22T15:00:00+08:00" \
--topic "v2 设计评审" \
--repo "mayidan/project-test" \
--category "single" \
--organizer "mayidan" \
--meeting-id "xxx" \
--meeting-code "123456789" \
--join-url "https://meeting.tencent.com/..." \
--duration 60
本技能会完成以下动作:
- 解析时间并确定会议目录名
meetings/YYYY-MM-DD-HHMM/ - 自动获取仓库成员(如果
--attendees未传) - 获取成员邮箱与仓库 owner 邮箱
- 查找上次同类会议并生成 agenda 回顾(若无摘要能力则降级为“暂无参考记录”)
- 创建
meta.yaml和agenda.md - 生成邀请邮件 HTML 与邮件主题
- 写运行日志到
aifusion-meta/logs/YYYY-MM-DD.jsonl - 返回后续发信所需 JSON
第四步:OpenClaw 调用 imap-smtp-email 发送邀请邮件
收到本技能输出后,OpenClaw 必须使用 imap-smtp-email 发送:
- 收件人:
invite_email.to - 主题:
invite_email.subject - HTML 正文:
invite_email.html
输出 JSON 说明
本技能返回 JSON,关键字段包括:
user_message:展示给用户的话术invite_email:邀请邮件发件参数repo_member_usernames:仓库成员列表repo_member_emails:仓库成员邮箱列表repo_owner_email:仓库 owner 邮箱(供后续 Skill-B 发会前简报使用)agenda_gitea_url:议程文件链接meeting_dir:会议目录名
错误处理规则
| 错误场景 | 处理方式 |
|---|---|
| 参数缺失 | 直接报错,不执行任何写入 |
| 腾讯会议信息缺失 | 直接报错,不创建 Gitea 目录 |
| Gitea 写入失败 | 报错,由 OpenClaw 决定是否回滚会议 |
| 仓库成员邮箱部分缺失 | 不阻塞主流程,返回能拿到的邮箱 |
| 上次会议摘要不可用 | agenda 中写“暂无参考记录” |
典型触发示例
以下用户表达,都应该优先触发本技能:
| 用户说 | OpenClaw 应做什么 |
|---|---|
| "周三下午 3 点开个组会" | 解析时间 → 追问项目 → 调 tencent-meeting-skill → 调本技能 → 调邮件 skill |
| "晚上 11 点 30 开组会" | 解析时间 → 追问项目 → 调 tencent-meeting-skill → 调本技能 |
| "新建一个晚上 11 点 40 的会议" | 解析时间 → 追问主题/项目 → 调 tencent-meeting-skill → 调本技能 |
| "帮我约个今晚的会" | 解析时间 → 追问主题/项目 → 调 tencent-meeting-skill → 调本技能 |
| "从下周一起每周一下午 3 点开例会连续 10 周" | 解析循环规则 → 追问项目 → 调 tencent-meeting-skill → 调本技能 |
| "帮灵巧手项目约个会,后天上午 10 点" | 识别仓库 → 调 tencent-meeting-skill → 调本技能 |
| "开个跨项目全员会议,明天下午 2 点" | 识别 cross-project → 调 tencent-meeting-skill → 调本技能 |
非本技能直接处理的场景
以下场景不要优先调用本技能,而应直接使用 tencent-meeting-skill:
- “帮我查一下这个会议号对应的会议”
- “把明天下午那个会改到 4 点”
- “取消今晚那个会议”
- “帮我看看这场会议谁参加了”
- “导出这场会议的转写”
- “获取这场会议的 AI 纪要”