OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  mac-reminders-agent:集成 macOS 提醒事项应用的智能管理代理

mac-reminders-agent:集成 macOS 提醒事项应用的智能管理代理

 
  pipeline ·  2026-02-22 21:33:52 · 3 次点击  · 0 条评论  

名称: mac-reminders-agent
版本: 1.2.0
作者: swancho
许可证: MIT
描述: |
与 macOS 提醒事项应用集成,实现查看、添加、编辑、删除和完成提醒的功能。
通过 Swift EventKit 支持原生重复规则(每周/每日/每月/每年)——创建单个带重复规则的提醒。
支持通过 ID(来自 EventKit 的 calendarItemIdentifier)编辑和删除提醒。
支持多种语言(英语、韩语、日语、中文)用于触发词检测和响应格式化。
当用户请求重复提醒时,必须使用 --repeat 选项(daily|weekly|monthly|yearly)。
requirements:
runtime:
- node >= 18.0.0
- npm
- macOS with Xcode Command Line Tools (包含 Swift 编译器)
permissions:
- macOS 提醒事项访问权限(首次使用时系统会提示)
install: |
cd $SKILL_DIR && npm install


Mac 提醒事项助手

概述

此技能与本地 macOS 提醒事项 应用集成,可执行以下操作:

  • 查看并整理今天/本周的提醒事项(附带唯一 ID)
  • 根据自然语言请求添加新提醒
  • 编辑提醒:通过 ID 修改标题、截止日期、备注
  • 删除提醒:通过 ID 移除提醒
  • 完成提醒:通过 ID 将提醒标记为已完成
  • 原生重复规则:支持每周、每日、每月、每年重复的提醒
  • 多语言支持:英语、韩语、日语、中文

技能使用其目录下的以下文件:

  • cli.js(统一入口点)
  • reminders/apple-bridge.js(后端:AppleScript + applescript npm 模块)
  • reminders/eventkit-bridge.swift(通过 Swift EventKit 实现原生重复规则)
  • locales.json(特定语言的触发词和响应模板)

语言支持

技能可自动检测用户语言,或通过 --locale 参数显式设置。

支持的语言

代码 语言 触发词示例
en 英语 "What do I have to do today?"
ko 韩语 "오늘 할 일 뭐 있어?"
ja 日语 "今日のタスクは?"
zh 中文 "今天有什么任务?"

语言检测机制

  1. 显式指定:使用 --locale 参数
  2. 自动检测:根据用户消息的语言检测
  3. 默认回退:回退到 en(英语)

工作原理

用户的自然语言请求分为两种情况处理:

  1. 列出提醒事项 (list)
  2. 添加提醒事项 (add)

针对每种情况,调用 Node.js CLI,接收 JSON 结果,并使用特定于语言环境的模板进行格式化。


1) 列出提醒事项

触发词示例(按语言)

英语:
- "What do I have to do today?"
- "Show me today's reminders"
- "What's on my schedule this week?"

韩语:
- "오늘 할 일 뭐 있어?"
- "오늘 미리알림 정리해줘"
- "이번 주 일정 뭐 있어?"

日语:
- "今日のタスクは?"
- "今日のリマインダーを見せて"

中文:
- "今天有什么任务?"
- "显示今天的提醒"

命令调用

# 使用默认语言环境 (en) 列出
node skills/mac-reminders-agent/cli.js list --scope today

# 使用特定语言环境列出
node skills/mac-reminders-agent/cli.js list --scope week --locale ko

范围选项

  • today - 仅限今天
  • week - 本周(今天 ~ 未来 7 天)
  • all - 所有提醒

输出格式

返回 JSON 数组:

[
  {
    "title": "任务标题",
    "due": "2026-02-05T16:30:00" | null
  }
]

响应格式化

使用 locales.json 中的模板,以用户语言格式化响应:

英语:

[Incomplete Reminders]
- 2/2 (Mon) 09:00 [Work] Meeting
- 2/3 (Tue) 14:00 [Personal] Visit bank

[Completed]
- 2/1 (Sun) [Work] Submit report ✅

韩语:

[미완료 미리알림]
- 2/2 (월) 09:00 [업무] 회의
- 2/3 (화) 14:00 [개인] 은행 방문

[완료됨]
- 2/1 (일) [업무] 보고서 제출 ✅

2) 添加提醒

触发词示例(按语言)

英语:
- "Add a meeting reminder for 9am tomorrow"
- "Set a reminder to submit report by Friday"

韩语:
- "내일 아침 9시에 회의 미리알림 추가해줘"
- "이번 주 금요일까지 보고서 제출 미리알림 넣어줘"

日语:
- "明日の朝9時に会議のリマインダーを追加して"

中文:
- "添加明天早上9点的会议提醒"

命令调用

# 使用语言环境添加
node skills/mac-reminders-agent/cli.js add --title "Meeting" --due "2026-02-05T09:00:00+09:00" --locale ko

参数

  • --title (必需):提醒标题
  • --due (可选):ISO 8601 格式 (YYYY-MM-DDTHH:mm:ss+09:00)
  • --note (可选):附加备注
  • --locale (可选):响应语言 (en, ko, ja, zh)

响应示例

英语:
- "Added 'Meeting' reminder for 9am tomorrow."
- "Added 'Submit report' reminder without a due date."

韩语:
- "'회의' 미리알림을 추가했어요 (내일 오전 9시)."
- "'보고서 제출' 미리알림을 추가했어요 (마감일 없음)."


3) 编辑提醒

触发词示例(按语言)

英语:
- "Change the meeting reminder to 10am"
- "Update the report deadline to next Monday"

韩语:
- "회의 미리알림 10시로 바꿔줘"
- "보고서 마감일 다음 주 월요일로 수정해줘"

命令调用

# 编辑标题
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --title "New Meeting Title" --locale ko

# 编辑截止日期
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --due "2026-03-01T10:00:00+09:00"

# 编辑备注
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --note "Updated notes"

参数

  • --id (必需):提醒 ID(来自列表输出的 calendarItemIdentifier)
  • --title (可选):新标题
  • --due (可选):新的截止日期,ISO 8601 格式
  • --note (可选):新的备注文本
  • --locale (可选):响应语言 (en, ko, ja, zh)

重要提示:先使用 list 命令获取提醒 ID

编辑前,请务必先运行 list 命令以获取提醒的 id 字段。id 是 EventKit 的 calendarItemIdentifier(类似 UUID 的字符串)。


4) 删除提醒

触发词示例(按语言)

英语:
- "Delete the meeting reminder"

韩语:
- "회의 미리알림 삭제해줘"

命令调用

node skills/mac-reminders-agent/cli.js delete --id "ABC123" --locale ko

参数

  • --id (必需):提醒 ID(来自列表输出)
  • --locale (可选):响应语言

5) 完成提醒

触发词示例(按语言)

英语:
- "Mark the meeting reminder as done"

韩语:
- "회의 미리알림 완료 처리해줘"

命令调用

node skills/mac-reminders-agent/cli.js complete --id "ABC123" --locale ko

参数

  • --id (必需):提醒 ID(来自列表输出)
  • --locale (可选):响应语言

6) 重复提醒(原生重复规则)

使用 --repeat 创建具有原生重复规则的提醒(创建单个带重复规则的提醒,而非多个副本)。

命令调用

# 每周重复提醒
node skills/mac-reminders-agent/cli.js add --title "Weekly standup" --due "2026-02-10T09:00:00+09:00" --repeat weekly

# 隔周提醒
node skills/mac-reminders-agent/cli.js add --title "Sprint review" --due "2026-02-10T14:00:00+09:00" --repeat weekly --interval 2

# 每月重复提醒,直到年底
node skills/mac-reminders-agent/cli.js add --title "Monthly report" --due "2026-02-28T17:00:00+09:00" --repeat monthly --repeat-end 2026-12-31

参数

  • --repeat (可选):daily, weekly, monthly, yearly
  • --interval (可选):重复间隔(默认:1)。例如:--interval 2 = 每 2 周
  • --repeat-end (可选):结束日期,格式为 YYYY-MM-DD

重要提示:对于重复计划,务必使用 --repeat 选项

当用户请求重复提醒(每周、隔周、每月等)时,必须使用 --repeat 选项
请勿手动创建多个单独的提醒。

正确做法:

node cli.js add --title "주간 회의" --due "2026-02-10T09:00:00+09:00" --repeat weekly

错误做法(请勿这样做):

# 创建 12 个独立的提醒是错误的做法
node cli.js add --title "주간 회의 - 2/10" --due "2026-02-10T09:00:00+09:00"
node cli.js add --title "주간 회의 - 2/17" --due "2026-02-17T09:00:00+09:00"
...

错误处理

支持语言环境的错误消息

英语:
- "There was a problem accessing the Reminders app."

韩语:
- "미리알림 앱에 접근하는 데 문제가 생겼어요."

日语:
- "リマインダーアプリへのアクセスに問題が発生しました。"

备用建议

当自动集成失败时,以用户语言提供替代方案。


要求与安装

系统要求

要求 详情
操作系统 仅限 macOS(已在 macOS 13+ 上测试)
Node.js v18.0.0 或更高版本
npm 随 Node.js 附带
Swift 包含在 Xcode 命令行工具中

安装步骤

# 1. 安装 Xcode 命令行工具(如果尚未安装)
xcode-select --install

# 2. 安装 npm 依赖项
cd $SKILL_DIR
npm install

macOS 权限

此技能需要访问 提醒事项 应用。首次使用时:

  1. macOS 将显示权限对话框,询问是否允许访问提醒事项
  2. 点击 "好""允许" 以授予访问权限
  3. 如果被拒绝,请前往 系统设置 > 隐私与安全性 > 提醒事项,并为终端/你的 IDE 启用访问权限

注意:Swift EventKit 桥接文件 (eventkit-bridge.swift) 在需要时会即时编译。无需手动编译。


总结

  • 通过 locales.json 支持多语言(en, ko, ja, zh)
  • 核心命令:
  • list --scope today|week|all [--locale XX] — 返回包含 id 字段的项目
  • add --title ... [--due ...] [--repeat daily|weekly|monthly|yearly] [--interval N] [--repeat-end YYYY-MM-DD] [--locale XX]
  • edit --id ID [--title ...] [--due ...] [--note ...] [--locale XX]
  • delete --id ID [--locale XX]
  • complete --id ID [--locale XX]
  • 原生重复规则:使用 --repeat 创建重复提醒(创建单个带重复规则的提醒)
  • 自动检测用户语言或使用显式 --locale 参数
  • 使用特定于语言环境的模板格式化响应
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor