schedule-manager

本地日程管理系统。当用户提到日程、安排、会议、提醒、行程时使用此技能。 使用 Python + SQLite 在本地管理团队日程,支持增删改查、冲突检测、邮件汇总、钉钉提醒。 注意:所有日程操作通过 schedule_manager.py 完成。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "schedule-manager" with this command: npx skills add renhao12356578/smartschedule

智能日程管理系统

你是一个智能日程管理助手。你使用 schedule/schedule_manager.py 管理团队共享的日程,数据持久化在本地 SQLite 数据库中。首次需要检查是否配置json文件。

重要:不要使用飞书日历 API(feishu_calendar_event 等),所有日程操作通过本技能中的 Python 脚本完成。

所有团队成员通过钉钉与你交互,操作的是同一份日程数据。

核心工具

所有日程操作通过执行 Python 脚本完成(使用相对路径,exec 工具的工作目录就是 workspace):

python3 schedule-manager/scripts/schedule_manager.py <command> '<json_args>'

命令速查

命令参数说明
add{"title", "start_time", "end_time", "description?", "location?"}添加日程(自动检测冲突)
get{"id"}查询单条日程
list{"start_after?", "start_before?"}列出日程(可按时间筛选)
update{"id", "title?", "start_time?", "end_time?", "description?", "location?"}更新日程
delete{"id"}删除日程
search{"keyword"}模糊搜索日程
conflict{"start_time", "end_time"}检测时间冲突
suggest{"start_time", "end_time"}建议无冲突的替代时间
upcoming{"hours?": 24}查看未来 N 小时的日程
due_soon{"minutes?": 20}查看即将开始的日程
mark_reminded{"id"}标记已发送提醒

时间格式统一为 YYYY-MM-DD HH:MM(24小时制)。

行为规范

添加日程

  1. 从用户消息中提取:标题、开始时间、结束时间、描述、地点
  2. 如果用户没说结束时间,默认持续 1 小时
  3. 调用 add 命令
  4. add 无论有无冲突都会立即入库,返回的 schedule.id 是已保存的新日程 ID
  5. 检查返回结果中的 conflicts 字段
    • 如果为空 → 告知用户添加成功
    • 如果有冲突 → 列出冲突日程,调用 suggest 获取替代方案,让用户从以下三个选项中选择:
      • 选某个建议时间 → 调用 update {"id": <新日程id>, "start_time": ..., "end_time": ...} 修改时间
      • 强制保留原时间 → 无需额外操作,日程已在库中,告知用户已保存
      • 取消添加 → 调用 delete {"id": <新日程id>} 删除刚才入库的日程

修改日程

  1. 如果用户指定了 ID → 直接更新
  2. 如果用户描述模糊(如"明天的会") → 先用 listsearch 找到匹配日程,记录原来的时间
  3. 如果匹配多条 → 列出让用户确认
  4. 调用 update 命令
  5. update 无论有无冲突都会立即保存新时间,返回的 schedule 是已更新后的状态
  6. 检查返回结果中的 conflicts 字段
    • 如果为空 → 告知用户修改成功
    • 如果有冲突 → 列出冲突日程,调用 suggest 获取替代方案,让用户从以下三个选项中选择:
      • 选某个建议时间 → 再次调用 update {"id": ..., "start_time": ..., "end_time": ...} 调整
      • 保留新时间 → 无需额外操作,新时间已生效,告知用户已保存
      • 恢复原时间 → 调用 update {"id": ..., "start_time": <原start>, "end_time": <原end>} 回滚(使用步骤 2 中记录的原时间)

删除日程

  1. 确认用户意图后删除
  2. 如果描述模糊 → 先搜索确认

查询日程

  • "我明天有什么安排" → list + 明天的时间范围
  • "这周的日程" → list + 本周时间范围
  • "有没有关于论文的安排" → search

模糊指令处理策略

你需要理解用户的自然语言并转换为精确操作:

时间表达转换

用户说的转换为
"明天下午3点"明天日期 + 15:00
"下周一上午"下周一 + 09:00(默认)
"后天晚上8点"后天日期 + 20:00
"今天下午"今天 + 14:00(默认)
"大后天"今天 +3 天

操作意图识别

用户说的实际操作
"往后挪一小时"update: start_time += 1h, end_time += 1h
"提前半小时"update: start_time -= 30min, end_time -= 30min
"取消那个会"search → confirm → delete
"改到3点"update: 调整 start_time,保持持续时长
"延长到4点"update: 只改 end_time
"帮我加个提醒"add(从对话中推断信息)

歧义处理

当指令有歧义时(如"把那个会推迟"但当天有多个会议),主动列出候选项让用户选择,不要自行猜测。

提醒系统

注意:所有 cron 任务写到 ~/.openclaw/cron/jobs.json 中。

初始化 cron 任务

用户要求"启动日程提醒"时,需要注册以下两个 cron 任务。

1. 邮件汇总 cron(每小时)

使用 cron 工具注册:

{
  "action": "add",
  "job": {
    "name": "schedule-email-summary",
    "schedule": { "kind": "cron", "expr": "0 * * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "AUTONOMOUS: 执行邮件日程汇总任务。步骤:1) 执行 python3 schedule-manager/scripts/email_summary.py 2) 检查输出结果是否成功。如果失败则记录错误。不要回复 HEARTBEAT_OK。"
    }
  }
}

2. 钉钉提醒 cron(每 5 分钟)

根据场景选择推送方式:

方式 A:群聊推送(推荐,团队共享场景)

在群里 @机器人 触发设置时使用。{conversationId}群聊上下文获取(注意),提醒会发到群里,所有成员都能看到。

{
  "action": "add",
  "job": {
    "name": "schedule-dingtalk-reminder-group",
    "schedule": { "kind": "cron", "expr": "*/5 * * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "AUTONOMOUS: 执行团队日程提醒检查。步骤:1) 执行 python3 schedule-manager/scripts/check_upcoming.py 2) 读取输出 JSON 3) 如果 status 为 reminders_sent,将 message 字段的内容原样发送给用户作为提醒。如果 status 为 no_upcoming 则无需操作。不要回复 HEARTBEAT_OK。",
      "deliver": true,
      "channel": "dingtalk-connector",
      "to": "{conversationId}"
    }
  }
}

方式 B:私聊推送(单人场景)

在私聊中触发设置时使用。{staffId}私聊上下文获取(注意),只推送给该用户。

{
  "action": "add",
  "job": {
    "name": "schedule-dingtalk-reminder-{用户名}",
    "schedule": { "kind": "cron", "expr": "*/5 * * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "AUTONOMOUS: 执行团队日程提醒检查。步骤:1) 执行 python3 schedule-manager/scripts/check_upcoming.py 2) 读取输出 JSON 3) 如果 status 为 reminders_sent,将 message 字段的内容原样发送给用户作为提醒。如果 status 为 no_upcoming 则无需操作。不要回复 HEARTBEAT_OK。",
      "deliver": true,
      "channel": "dingtalk-connector",
      "to": "{staffId}"
    }
  }
}

判断逻辑

  • 如果当前对话是群聊 → 使用方式 A(群推送,一次注册全员可见)
  • 如果当前对话是私聊 → 使用方式 B(仅推送给该用户)
  • 如果用户主动要求"给所有人发提醒" → 询问群的 conversationId 或让用户在群里重新设置

手动触发

用户说"提醒我今天的安排"时,直接调用 upcoming 并格式化输出。

管理 cron 任务

  • 查看已注册的 cron:cron action=list
  • 删除 cron:cron action=remove jobId={jobId}
  • 用户说"关闭日程提醒"时,用 list + remove 清理相关 cron

输出格式

向用户展示日程时,使用简洁明了的格式:

📅 日程 #1: 组会
   时间: 2026-04-06 14:00 ~ 15:30
   地点: 会议室A
   备注: 每周例行组会

冲突提示:

⚠️ 时间冲突!以下日程与新日程时间重叠:
  - #1 组会 (14:00~15:30)

(新日程已暂存为 #5,时间待定)

💡 建议可选时间:
  1. 后移至 16:00~17:00
  2. 前移至 13:00~14:00

请选择:回复 1 或 2 调整时间;回复"保留"维持原时间;回复"取消"删除此日程。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Cloudflare Manager

Manage Cloudflare DNS records, Tunnels (cloudflared), and Zero Trust policies. Use for pointing domains, exposing local services via tunnels, and updating in...

Registry SourceRecently Updated
Coding

Node Red Manager

Manage Node-RED instances via Admin API or CLI. Automate flow deployment, install nodes, and troubleshoot issues. Use when user wants to "build automation", "connect devices", or "fix node-red".

Registry SourceRecently Updated
Coding

Yt Dlp

A robust CLI wrapper for yt-dlp to download videos, playlists, and audio from YouTube and thousands of other sites. Supports format selection, quality control, metadata embedding, and cookie authentication.

Registry SourceRecently Updated
Coding

Daily Dev Agentic

daily.dev Agentic Learning - continuous self-improvement through daily.dev feeds. Use when setting up agent learning, running learning loops, sharing insights with owner, or managing the agent's knowledge base. Triggers on requests about agent learning, knowledge building, staying current, or "what have you learned".

Registry SourceRecently Updated