在 macOS 上通过命令行管理 Apple Calendar 事件——创建、更新、删除、搜索、导出及检查空闲时间,并提供完整的 JSON 输出供代理使用。
accli — Apple Calendar CLI. accli通过 EventKit 在macOS 上管理 Apple Calendar. 所有命令支持-j是一项面向实际任务的技能,主要用于Exit代码:0=成功,1=运行时间错误,2=验证错误,10=。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
accli 通过 EventKit 在 macOS 上管理 Apple 日历。所有命令均支持 --json 参数以输出结构化数据。退出码含义如下:0=成功,1=运行时错误,2=校验错误,10=授权错误。
首次运行:执行 accli setup 以授予日历访问权限(需在“系统设置”>“隐私与安全性”>“日历”中启用“完全访问”)。
accli calendars [--json]
返回日历列表,包含字段:id、name、source、index、writable。始终优先使用 --calendar-id 而非日历名称——ID 是稳定的,而名称可能被重命名。
accli events [] [--calendar-id ] --from --to [--json]
列出指定日期范围内的事件。必须指定日历(可使用日历名称、--calendar-id,或通过 accli config set-default 设置默认日历)。
accli event [] [--calendar-id ] [--json]
获取完整事件信息,包括 alerts 数组(单位为事件开始前的分钟数)。
accli create --summary --start --end
[--location ] [--description ] [--all-day]
[--alert ] [--alert ]
[--recur daily|weekly|monthly|yearly] [--recur-count ] [--recur-end ]
[--json]
--alert 可重复使用——每出现一次即添加一个提醒(单位为事件开始前的分钟数)--recur-end 与 --recur-count 互斥,不可同时指定--start 和 --end 使用 YYYY-MM-DD 格式--start 和 --end 使用 YYYY-MM-DDTHH:mm 格式accli update
[--summary ] [--start ] [--end ]
[--location ] [--description ]
[--alert ] [--alert ]
[--dry-run] [--json]
--alert 在更新时将**替换全部已有提醒**;若省略该参数,则保持原有提醒不变。
--dry-run 不执行任何修改,仅返回 { dryRun: true, wouldUpdate: { eventId, changes } }。
accli delete [--dry-run] [--json]
--dry-run 不执行删除操作,仅返回 { dryRun: true, wouldDelete: { id, summary, calendar, start, end } }。
accli search --query [--from ] [--to ] [--calendar-id ] [--json]
不区分大小写地在事件标题(summary)、地点(location)和描述(description)中进行全文搜索。若未指定 --calendar-id,则搜索所有日历。返回结果中每个事件均包含 calendarId 字段,便于精准定位。
accli export --from --to [--calendar-id ] [--json]
按日历分组导出全部事件。响应格式为:{ calendars: [{ id, name, source, events, truncated }], totalEvents, truncated }。每个日历最多导出 500 个事件;若达到上限,则对应日历的 truncated 字段设为 true。
accli freebusy --from --to [--calendar-name ] [--json]
返回所有日历中的忙碌时间段。
accli config set-default --calendar-id [--json]
accli config show [--json]
accli config clear [--json]
默认日历配置持久化至 ~/.acclirc(可通过环境变量 ACCLI_CONFIG_PATH 覆盖路径)。当命令需要指定日历时,若未显式提供日历参数,则自动使用默认日历。
YYYY-MM-DDTHH:mm 或 YYYY-MM-DDTHH:mm:ss--from/--to 参数):YYYY-MM-DD--json--calendar-id 而非日历名称(确保跨重命名操作稳定性)--dry-run 确认目标事件accli search 查找对应 eventIdok: false 字段以判断是否出错accli export 适用于完整日历备份;请检查响应中的 truncated 字段确认是否截断--alert 参数,例如:--alert 5 --alert 15| 错误码 | 含义 |
|---|---|
NOT_AUTHORIZED |
未授予日历访问权限,或权限设置为“仅添加” |
CALENDAR_NOT_FOUND |
未找到指定的日历 ID 或名称 |
AMBIGUOUS_CALENDAR |
存在多个同名日历——请改用 --calendar-id |
EVENT_NOT_FOUND |
指定的事件 ID 在目标日历中不存在 |
MISSING_REQUIRED |
缺少必需参数 |
INVALID_ARGUMENT |
参数值无效 |
INVALID_RANGE |
起始时间晚于结束时间 |