名称: 日历设置 描述: 授予Python日历访问权限以实现30倍更快的日历查询(30秒 → <1秒)
日历设置 - 启用快速查询
目的: 授予Python日历访问权限以实现30倍更快的日历查询(30秒 → <1秒)
何时运行:
- 在初始Dex安装后
- 如果日历查询感觉缓慢
- 如果看到“日历访问被拒绝”错误
过程
-
检查当前权限状态:
- 运行权限检查器:
python3 core/mcp/scripts/check_calendar_permission.py - 向用户显示返回的状态
- 运行权限检查器:
-
如果已授权:
- 很好!日历查询已经优化。
- 无需操作。
-
如果未确定(权限尚未请求):
- 脚本将显示一个macOS权限对话框
- 指导用户:“当对话框出现时,点击‘确定’以授予Python访问日历的权限”
- 再次运行脚本以验证
-
如果被拒绝(之前已拒绝):
- 显示清晰的说明:
要启用快速日历查询: 1. 打开系统设置(Command+Space,输入“System Settings”) 2. 点击侧边栏中的“隐私与安全” 3. 点击“日历” 4. 在列表中找到“Python”或“python3” 5. 启用复选框 6. 再次运行`/calendar-setup`以验证
- 显示清晰的说明:
-
如果受限:
- 解释:“日历访问被系统策略阻止(家长控制或企业MDM)”
- 日历查询将使用AppleScript(较慢但功能正常)
- 用户无法操作
-
成功后:
- 确认:“✅ 日历访问已授予!查询现在快30倍。”
- 解释:“日历查询现在使用原生EventKit而不是AppleScript”
- 无需再次运行此操作 - 权限是持久的
技术说明
- EventKit vs AppleScript: EventKit使用数据库查询(快速),AppleScript加载所有事件然后过滤(缓慢)
- 权限是持久的: 一旦授予,Python保持访问权限直到明确撤销
- 隐私: 所有日历数据保持本地 - Dex从不发送日历数据到任何地方
- 后备方案: 如果EventKit不可用,Dex回退到AppleScript(工作但较慢)
故障排除
“模块EventKit未找到”:
- 运行:
pip3 install pyobjc-framework-EventKit - 这应该在Dex设置期间已安装
权限对话框未出现:
- 系统设置可能已经显示“被拒绝”从之前的尝试
- 按照上述手动步骤切换权限
授予访问权限后仍看到慢查询:
- 重启您的编码工具(Cursor/Claude Code/Pi)以重新加载MCP服务器
- 验证权限:
python3 core/mcp/scripts/check_calendar_permission.py