CalDAV 日历(vdirsyncer + khal)

SkillProductivity

Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. For Linux systems.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the CalDAV 日历(vdirsyncer + khal) skill

What this skill tells your AI

The instructions your AI receives, as published by l-lesteryu/openclaw-hot-skills-zh in skills/caldav-calendar-zh/SKILL.md and read by ahel’s review.

vdirsyncer 将 CalDAV 日历同步到本地 .ics 文件。khal 负责读取和写入这些文件。

首先同步

查询前或修改后务必先同步:

vdirsyncer sync

查看事件

khal list                        # 今天
khal list today 7d               # 未来7天
khal list tomorrow               # 明天
khal list 2026-01-15 2026-01-20  # 日期范围
khal list -a Work today          # 特定日历

搜索

khal search "会议"
khal search "牙医" --format "{start-date} {title}"

创建事件

khal new 2026-01-15 10:00 11:00 "会议标题"
khal new 2026-01-15 "全天事件"
khal new tomorrow 14:00 15:30 "电话" -a Work
khal new 2026-01-15 10:00 11:00 "带备注" :: 这里写描述

创建后,同步以推送更改:

vdirsyncer sync

编辑事件(交互式)

khal edit 是交互式的 — 需要 TTY。自动化时请使用 tmux:

khal edit "搜索词"
khal edit -a CalendarName "搜索词"
khal edit --show-past "旧事件"

菜单选项:

  • s → 编辑摘要
  • d → 编辑描述
  • t → 编辑日期时间范围
  • l → 编辑位置
  • D → 删除事件
  • n → 跳过(保存更改,下一个匹配项)
  • q → 退出

编辑后,同步:

vdirsyncer sync

删除事件

使用 khal edit,然后按 D 删除。

输出格式

用于脚本化:

khal list --format "{start-date} {start-time}-{end-time} {title}" today 7d
khal list --format "{uid} | {title} | {calendar}" today

占位符:{title}{description}{start}{end}{start-date}{start-time}{end-date}{end-time}{location}{calendar}{uid}

缓存

khal 在 ~/.local/share/khal/khal.db 中缓存事件。如果同步后数据看起来过时:

rm ~/.local/share/khal/khal.db

初始设置

1. 配置 vdirsyncer(~/.config/vdirsyncer/config

iCloud 示例:

[general]
status_path = "~/.local/share/vdirsyncer/status/"

[pair icloud_calendar]
a = "icloud_remote"
b = "icloud_local"
collections = ["from a", "from b"]
conflict_resolution = "a wins"

[storage icloud_remote]
type = "caldav"
url = "https://caldav.icloud.com/"
username = "your@icloud.com"
password.fetch = ["command", "cat", "~/.config/vdirsyncer/icloud_password"]

[storage icloud_local]
type = "filesystem"
path = "~/.local/share/vdirsyncer/calendars/"
fileext = ".ics"

服务提供商 URL:

  • iCloud:https://caldav.icloud.com/
  • Google:使用 google_calendar 存储类型
  • Fastmail:https://caldav.fastmail.com/dav/calendars/user/EMAIL/
  • Nextcloud:https://YOUR.CLOUD/remote.php/dav/calendars/USERNAME/

2. 配置 khal(~/.config/khal/config

[calendars]
[[my_calendars]]
path = ~/.local/share/vdirsyncer/calendars/*
type = discover

[default]
default_calendar = Home
highlight_event_days = True

[locale]
timeformat = %H:%M
dateformat = %Y-%m-%d

3. 发现并同步

vdirsyncer discover   # 仅首次运行
vdirsyncer sync

Signals

GitHub stars
54
Forks
8
Last commit
Apr 2026
Advanced
Catalog kind
skill
Gateway key
caldav-calendar-zh
Source
github.com/l-lesteryu/openclaw-hot-skills-zh