← 返回
沟通协作 中文

macOS Calendar Assistant

Manage macOS Calendar with OpenClaw in IM-first workflows (Telegram/Discord/Feishu/iMessage/Slack), including screenshot-to-schedule extraction, idempotent c...
在即时通讯优先的工作流(Telegram/Discord/飞书/iMessage/Slack)中使用OpenClaw管理macOS日历,包括截图提取日程、幂等同步等功能
bryant24hao
沟通协作 clawhub v1.0.0 1 版本 99892.2 Key: 无需
★ 2
Stars
📥 887
下载
💾 21
安装
1
版本
#calendar#idempotent#im#latest#macos#openclaw#productivity#schedule

概述

macos-calendar-assistant

Use bundled scripts for reliable Calendar.app operations.

Workflow

  1. Extract title, start/end, timezone, calendar, location, notes, alarm.
  2. Check conflicts before writing:
    • scripts/list_events.swift
  3. Prefer idempotent writes:
    • scripts/upsert_event.py (create/update/skip)
  4. Apply alarm if requested:
    • scripts/set_alarm.py --uid --alarm-minutes
  5. For hygiene, run duplicate scan:
    • scripts/calendar_clean.py --start --end

Calendar routing defaults

  • Workout / Run / Training → Training
  • Work / Meeting / Client → Work
  • Product / Development / Building → Product
  • Personal / Social / Travel → Life
  • If unspecified: prefer writable iCloud/CalDAV calendars over local calendars.

> Note: Calendar names vary by user setup. Map the intent to the closest local calendar name before writing.

Commands

List calendars

swift scripts/list_calendars.swift

List events in range

swift scripts/list_events.swift "2026-03-06T00:00:00+08:00" "2026-03-06T23:59:59+08:00"

Output includes uid for follow-up alarm/edit operations.

Idempotent create/update (recommended)

python3 scripts/upsert_event.py \
  --title "Team sync" \
  --start "2026-03-06T19:00:00+08:00" \
  --end "2026-03-06T20:00:00+08:00" \
  --calendar "Work" \
  --notes "Agenda" \
  --location "Online" \
  --alarm-minutes 15

Result is one of: CREATED, UPDATED, SKIPPED.

Use --dry-run for preview.

Legacy direct add (always creates)

python3 scripts/add_event.py --title "..." --start "..." --end "..."

Set alarm by UID

python3 scripts/set_alarm.py --uid "EVENT_UID" --alarm-minutes 15

Move event (legacy utility)

swift scripts/move_event.swift "Team sync" "Work" "2026-03-07T10:00:00+08:00" 60 --search-days 7
# optional precise match:
# --original-start "2026-03-06T10:00:00+08:00"

Prefer upsert_event.py for most rescheduling flows; use move_event.swift for direct title-based move when needed.

Duplicate scan / cleanup

python3 scripts/calendar_clean.py --start "2026-03-01T00:00:00+08:00" --end "2026-03-08T23:59:59+08:00"
python3 scripts/calendar_clean.py --start "..." --end "..." --apply --confirm yes --snapshot-out ./delete-plan.json

Upcoming events (within 2 hours)

python3 scripts/within_2h.py

Environment + tests

python3 scripts/env_check.py
python3 scripts/regression_test.py
scripts/smoke_test.sh

Daily auto-check notifier

scripts/install.sh     # run env check + install cron from config.json
scripts/uninstall.sh   # remove cron

Extraction & scheduling heuristics (from real usage)

  1. Speaker ownership from chat screenshots
    • Treat the user's message bubble as primary intent.
    • Treat counterpart bubbles as constraints (availability/travel window), not direct auto-create tasks.
  1. Conflict policy
    • If user explicitly says "override" (for example, "replace this slot"), allow replacing an existing slot and reschedule the displaced event.
    • If not explicit, warn and ask for a choice before overwriting.
  1. Time-window intent parsing
    • Phrases like "4–6 PM for the other person" should first be interpreted as an availability window.
    • Convert to a formal event only after user confirmation.
  1. Reschedule priority
    • Prefer moving flexible events (workouts/optional blocks) before strategic P0 work blocks.
    • Do not auto-move P0 items unless user explicitly requests.
  1. Confirmation prompt template
    • Use: "I identified X as your intent and Y as counterpart constraints. I will apply Z. Confirm?"
    • Keep it short; avoid over-confirming when intent is explicit.

Constraints

  • macOS only (EventKit + Calendar permission required)
  • Default timezone comes from config.json.timezone (fallback Asia/Shanghai) when user does not specify
  • Use --apply only after reviewing dry-run output

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-30 10:37 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

communication-collaboration

Himalaya

lamelas
{"answer":"通过IMAP/SMTP管理邮件的CLI。可在终端使用 `himalaya` 收发、回复、转发、搜索及整理邮件。支持多账户与MML(MIME元语言)编写邮件。"}
★ 68 📥 45,630
productivity

oc-doctor

bryant24hao
对本地 OpenClaw 安装运行全面的 11 项健康检查,诊断配置错误、会话膨胀、模型漂移、定时任务问题、安全……
★ 1 📥 816
communication-collaboration

imap-smtp-email

gzlicanyi
使用IMAP/SMTP读取和发送邮件;检查新/未读邮件、获取内容、搜索邮箱、标记已读/未读、发送带附件的邮件。支持...
★ 114 📥 52,473