Skip to content

日历集成

连接你的日历,在对话中统一查看日程和任务。询问会议安排、查找空闲时间、规划每一天——一切通过自然对话完成。

你能做什么

  • 查看日程:"今天有什么安排?"显示可视化时间线
  • 检查空闲:"明天下午2点有空吗?"即时回答
  • 寻找专注时间:"这周找2小时深度工作时间"定位空闲时段
  • 发现冲突:GDT 会在任务与会议重叠时发出警告
  • 整合来源:在一个界面查看 Google 日历、iCloud 和系统日历

前置准备

连接前,你需要准备:

日历所需材料
Google 日历Google Cloud Console 获取的 OAuth 凭证(Client ID + Secret)
iCloudApple ID + 应用专用密码
系统日历macOS 或 Windows 并授予日历访问权限

第一次使用 Google OAuth?

在 Google Cloud Console 创建项目,启用 Calendar API,然后创建 OAuth 2.0 凭证。GDT 会引导你完成授权流程。

连接日历

Google 日历

  1. 运行 /calendar connect 或说"连接我的 Google 日历"
  2. 选择 Google Calendar
  3. 输入你的 OAuth Client ID 和 Secret
  4. 在浏览器中完成授权
  5. GDT 将凭证安全存储在系统密钥链中

iCloud 日历

  1. 运行 /calendar connect
  2. 选择 iCloud Calendar
  3. 输入你的 Apple ID 和应用专用密码
  4. GDT 通过 CalDAV 协议连接

系统日历

  1. 运行 /calendar connect
  2. 选择 System Calendar
  3. 在 macOS/Windows 提示时授予日历访问权限

查看日程

自然地询问:

今天有什么安排?
明天有什么会议?
这周有什么?

时间线视图

GDT 根据时间范围以可视化方式呈现日程:

单日视图 — 详细的 30 分钟时段:

今天: 2026-01-25 周六
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
09:00 ██████  团队站会 (1h)
10:00 ▓▓▓▓▓▓  项目同步 (30m)
10:30 ░░░░░░  (空闲)
14:00 ░░░░░░  (空闲)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
已安排: 1.5h | 空闲: 6.5h

2-4 天视图 — 并排对比:

       1/25 (周六)                   1/26 (周日)                   1/27 (周一)
       ────────────────────────────  ────────────────────────────  ────────────────────────────
09:00  ░░░░░░                        ░░░░░░                        ██████ 团队站会
10:00  ██████ 项目评审               ░░░░░░                        ▓▓▓▓▓▓ 设计同步
       已安排: 2h                     已安排: 0h                    已安排: 4h

5-7 天视图 — 周概览,显示占用率百分比。

视觉图例

图案含义
██████忙碌(会议、固定事件)
▓▓▓▓▓▓忙碌(交替显示便于区分)
░░░░░░空闲
······休息、午餐、过渡时间
⚠️冲突或跨日事件

检查空闲时间

明天下午2点有空吗?
下一个空闲时段是什么时候?
这周找2小时专注工作时间

GDT 会综合所有已连接日历来回答。

命令参考

命令描述
/calendar connect启动连接向导
/calendar list显示已连接的日历
/calendar sync强制立即同步
/calendar disconnect断开日历连接
/calendar today显示今日日程
/calendar week显示本周日程
/cal/calendar 的简写

事件与任务如何协作

GDT 将日历事件和任务分开管理——这是有意为之的。

事件是已安排的时间块:会议、约会、通话。它们有固定的开始和结束时间。

任务是你需要完成的工作:待办事项、交付物、行动项。它们对完成时间是灵活的。

这种分离帮助 GDT 给出更好的回答:

你: 今天会议之间我应该做什么?

GDT: 下午 2-4 点有 2 小时空闲。根据你的任务:
     - "审阅季度报告"(明天截止,约 1 小时)
     - "回复 Sarah 的邮件"(快速任务,约 10 分钟)

     要我为报告安排专注时间吗?

GDT 将事件存储在日历缓存中,任务存储在 TaskWarrior 中。这意味着:

  • 你的日历应用保持日程安排的权威性
  • TaskWarrior 处理你的 GTD 工作流
  • 两个系统都不会被对方的数据干扰
技术细节:iCalendar RFC 5545

事件(VEVENT)和任务(VTODO)在 RFC 5545 中被定义为不同的组件。事件有 DTSTART/DTEND 来占用时间;任务有 STATUSPERCENT-COMPLETE 来跟踪进度。GDT 尊重这种语义区别。

安全与隐私

你的凭证保留在本地设备:

  1. 系统密钥链(首选):macOS 钥匙串、Windows 凭据管理器或 Linux libsecret
  2. 加密文件(备用):使用机器特定密钥的 AES-256-GCM 加密

OAuth 令牌会自动刷新。如果完全过期,GDT 会要求你重新授权,而不是存储长期密码。

GDT 访问的内容:

  • 事件标题、时间和状态(忙碌/空闲)
  • 日历名称用于组织

GDT 不访问的内容:

  • 事件描述或备注
  • 参与者邮箱地址
  • 会议链接或附件

同步行为

设置默认值说明
自动同步间隔5 分钟后台运行
自适应范围30秒 - 10分钟根据 API 响应时间调整
手动同步/calendar sync立即刷新

同步在后台静默进行,不会打断你的工作流程。角落的状态指示器显示同步状态。

故障排除

连接 Google 日历时出现"认证失败"

你的 OAuth 凭证可能无效或已过期。

  1. Google Cloud Console 验证你的 Client ID 和 Secret
  2. 检查是否为项目启用了 Calendar API
  3. 运行 /calendar disconnect 然后 /calendar connect 重新连接

日历显示没有事件,但实际存在

同步可能尚未完成。

  1. 运行 /calendar sync 强制立即同步
  2. 等待几秒钟后再次询问
  3. 如果仍为空,检查是否授予了日历访问权限

iCloud 连接失败,提示"凭证无效"

应用专用密码可能已过期或被撤销。

  1. 前往 appleid.apple.com → 安全性 → 应用专用密码
  2. 为 GDT 生成新密码
  3. 运行 /calendar disconnect 然后用新密码重新连接

某个日历的事件没有显示

同一账户可能有多个日历,但只有部分被同步。

  1. 运行 /calendar list 查看已连接的日历
  2. 某些日历服务商默认只同步主日历

常见问题

我可以从 GDT 创建日历事件吗?

目前还不行。GDT 当前提供只读访问。这是有意为之的:

  • 防止意外创建或删除事件
  • 保持日历应用作为权威来源
  • 避免同步冲突

未来版本可能会在适当保护下添加写入功能。

为什么 Google 日历需要我提供 OAuth 凭证?

Google 要求通过 OAuth 访问日历。GDT 没有中心化服务器来代为处理——一切都在你的本地机器上运行。你创建自己的 OAuth 应用,这样凭证完全在你的掌控之下。

GDT 如何处理全天事件?

全天事件显示在日视图顶部,不占用特定时间段。GDT 在建议日程安排时会考虑它们,但不会将整天标记为"忙碌"。

重复事件怎么处理?

GDT 将重复事件展开为查询日期范围内的单独实例。每个实例会显示其重复规则(例如,"每日站会 - 工作日重复")。

下一步