gcalcli + CalDAV 日程提醒规划器
核心用法
本技能提供两层功能:日历数据同步与智能提醒规划。首先通过 scripts/calendar 封装 gcalcli(Google Calendar CLI)获取 Google 日程,可选通过 vdirsyncer+khal 接入 CalDAV/iCloud 等源。其次由 scripts/calendar_reminder_plan.py 分析日程数据,输出标准化 JSON 计划,供下游系统(如 OpenClaw cron 任务)创建精准的一次性提醒。
配置位于 ~/.config/openclaw/calendar.json,支持环境变量覆盖路径。用户需完成 OAuth 授权(headless 环境建议 SSH 端口转发),并可自定义提醒规则:忽略生日、为定时事件设置高优先级、按关键词过滤全天事件。
显著优点
- 多源兼容:原生支持 Google Calendar,通过成熟工具链扩展至 Apple/iCloud、Nextcloud 等 CalDAV 服务
- 安全执行:子进程调用使用
shell=False+ 参数列表形式,有效防御事件标题中的 Shell 注入 - 解耦架构:规划器仅输出 JSON 计划,不直接操作提醒系统,便于集成到现有自动化工作流(cron/systemd/agent)
- 可配置过滤:灵活的规则引擎减少提醒噪音,避免生日/节假日轰炸
- 状态去重:建议配合状态文件记录,防止重复创建提醒
潜在缺点与局限性
- 外部依赖重:必须安装
gcalcli(Python 生态),CalDAV 支持还需vdirsyncer和khal,版本兼容性需自行维护 - OAuth 门槛:Google OAuth 流程对非技术用户不够友好,headless 服务器需额外网络配置
- 非实时同步:依赖定时任务拉取数据,非推送式提醒,延迟取决于 cron 频率
- 无内置调度:技能本身不执行提醒投递,需用户自行编写 cron 或 agent 逻辑完成"JSON 计划 → OpenClaw reminder"的转换
- 配置敏感:二进制路径指向受信程序是安全前提,误配置可能导致执行未授权代码
适合人群
- 技术型用户(熟悉 Python/Shell/cron)
- 需要将 Google/iCloud 日程深度整合到 OpenClaw 自动化工作流的进阶玩家
- 对提醒粒度有定制需求、不满于原生日历推送的开发者
- 多日历源聚合需求者(工作 Google + 个人 iCloud)
常规风险
- OAuth 令牌泄露:
gcalcli存储的凭证文件需妥善保管,避免仓库提交或权限过宽 - 子进程注入:虽采用
shell=False防御,但若配置指向恶意二进制(如被篡改的gcalcli替身),仍可执行任意代码 - 隐私数据外泄:日程内容(会议标题、地点)会进入 JSON 计划和日志,需确保下游提醒系统的存储安全
- 定时任务故障沉默:cron 失败无自动告警,可能漏掉关键日程提醒