OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  accli:在 macOS 上交互 Apple 日历的工具

accli:在 macOS 上交互 Apple 日历的工具

 
  mai ·  2026-02-06 17:05:29 · 3 次点击  · 0 条评论  

名称: accli
描述: 此技能用于在 macOS 上与 Apple 日历进行交互。可用于列出日历、查看事件、创建/更新/删除日历事件,以及检查空闲/忙碌时间。触发条件包括“查看我的日历”、“安排会议”、“我今天的日程是什么”、“我明天有空吗”等任何与日历相关的操作请求。


Apple 日历命令行工具 (accli)

安装

npm install -g @joargp/accli

系统要求: 仅限 macOS(使用 JavaScript for Automation)

概述

accli 工具提供了对 macOS Apple 日历的命令行访问。它支持列出日历、查询事件、创建/更新/删除事件,以及跨日历检查可用性。

快速参考

日期时间格式

  • 定时事件:YYYY-MM-DDTHH:mm 或 YYYY-MM-DDTHH:mm:ss
  • 全天事件:YYYY-MM-DD

全局选项

  • --json - 以 JSON 格式输出(推荐用于程序解析)
  • --help - 显示任何命令的帮助信息

命令

列出日历

accli calendars [--json]

列出所有可用的日历及其名称和持久 ID。建议首先运行此命令以了解可用的日历及其 ID。

列出事件

accli events <calendarName> [options]

选项:
- --calendar-id <id> - 日历的持久 ID(推荐使用,比名称更可靠)
- --from <datetime> - 查询范围的开始时间(默认:当前时间)
- --to <datetime> - 查询范围的结束时间(默认:开始时间 + 7 天)
- --max <n> - 返回事件的最大数量(默认:50)
- --query <q> - 对摘要/地点/描述进行不区分大小写的过滤
- --json - 输出 JSON

示例:

# 获取“工作”日历本周的事件
accli events Work --json

# 获取一月份的事件
accli events Work --from 2025-01-01 --to 2025-01-31 --json

# 搜索特定事件
accli events Work --query "standup" --max 10 --json

获取单个事件

accli event <calendarName> <eventId> [--json]

根据事件 ID 检索特定事件的详细信息。

创建事件

accli create <calendarName> --summary <s> --start <datetime> --end <datetime> [options]

必需选项:
- --summary <s> - 事件标题
- --start <datetime> - 开始时间
- --end <datetime> - 结束时间

可选选项:
- --location <l> - 事件地点
- --description <d> - 事件描述
- --all-day - 创建全天事件
- --json - 输出 JSON

示例:

# 创建一个定时会议
accli create Work --summary "团队站会" --start 2025-01-15T09:00 --end 2025-01-15T09:30 --json

# 创建一个全天事件
accli create Personal --summary "休假" --start 2025-07-01 --end 2025-07-05 --all-day --json

# 创建包含地点和描述的事件
accli create Work --summary "客户会议" --start 2025-01-15T14:00 --end 2025-01-15T15:00 \
  --location "会议室 A" --description "第一季度规划讨论" --json

更新事件

accli update <calendarName> <eventId> [options]

选项(均为可选,仅提供需要修改的字段):
- --summary <s> - 新标题
- --start <datetime> - 新开始时间
- --end <datetime> - 新结束时间
- --location <l> - 新地点
- --description <d> - 新描述
- --all-day - 转换为全天事件
- --no-all-day - 转换为定时事件
- --json - 输出 JSON

示例:

accli update Work event-id-123 --summary "更新后的会议标题" --start 2025-01-15T15:00 --end 2025-01-15T16:00 --json

删除事件

accli delete <calendarName> <eventId> [--json]

永久删除一个事件。执行前请与用户确认。

检查空闲/忙碌状态

accli freebusy --calendar <name> --from <datetime> --to <datetime> [options]

选项:
- --calendar <name> - 日历名称(可重复指定多个日历)
- --calendar-id <id> - 日历的持久 ID(可重复指定)
- --from <datetime> - 查询范围的开始时间(必需)
- --to <datetime> - 查询范围的结束时间(必需)
- --json - 输出 JSON

显示忙碌时间段,排除已取消、已拒绝和透明事件。

示例:

# 跨日历检查可用性
accli freebusy --calendar Work --calendar Personal --from 2025-01-15 --to 2025-01-16 --json

# 检查特定时段
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json

配置

# 设置默认日历(交互式)
accli config set-default

# 按名称设置默认日历
accli config set-default --calendar Work

# 显示当前配置
accli config show

# 清除默认设置
accli config clear

设置默认日历后,如果命令未指定日历,将自动使用默认日历。

工作流指南

创建事件前

  1. 列出日历以获取可用的日历名称/ID
  2. 检查空闲/忙碌状态以找到可用时间段
  3. 创建前与用户确认事件详情

最佳实践

  • 程序化解析时始终使用 --json 标志
  • 优先使用 --calendar-id 而非日历名称,以提高可靠性
  • 查询事件时,从合理的日期范围开始
  • 执行删除操作前与用户确认
  • 始终使用 ISO 8601 日期时间格式

常用模式

查找空闲时段并安排会议:

# 1. 检查可用性
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json

# 2. 在空闲时段创建事件
accli create Work --summary "会议" --start 2025-01-15T14:00 --end 2025-01-15T15:00 --json

查看今日日程:

accli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor