关于 remi
remi 是面向 macOS 的 Apple 提醒事项命令行工具与 MCP 服务,支持分区(section)及 iCloud 同步。它输出结构化 JSON,便于 AI Agent 调用,适合偏好在终端中管理提醒事项的用户。
主要功能
- 01提醒事项分区与 iCloud 同步
- 02自然语言日期与重复规则
- 03模糊匹配列表名称
- 04结构化 JSON 输出
- 05提供 MCP 服务模式
适用场景
- 01在终端中查看今日、逾期或即将到期的提醒
- 02通过命令行将购物项目放入指定分区
- 03让 AI Agent 读取并更新 Apple 提醒事项
MCP 相关
通过 remi --mcp 启动后,该工具以 MCP 服务形式暴露 16 个工具,如 remi_lists、remi_add、remi_complete 和 remi_move,并支持模糊匹配与结构化响应。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
remi
Apple 本该为“提醒事项”打造的命令行工具。
在终端中创建列表、添加提醒、将提醒整理到分区中,并让所有内容在你的 Apple 设备间同步。
为什么选择 remi?
- 支持 iCloud 同步的分区 — 唯一支持 Apple“提醒事项”分区的命令行工具。创建分区、分配提醒、在分区间移动提醒,所有内容都会同步。
- 自然语言 —
--due "next tuesday"、--repeat "every 2 weeks on monday,friday" - 模糊匹配 — 输入
remi list shopping,而不是remi list "Groceries / Shopping List" - 面向 Agent — 结构化 JSON 输出、Claude Code 插件、skills.sh 技能,兼容 OpenClaw
- 快速 — 使用已编译的 Swift 助手,无需 Electron 或图形界面
与其他工具对比
| remi | remindctl | reminders-cli | |
|---|---|---|---|
| 分区 | 支持 | 不支持 | 不支持 |
| 分区同步(iCloud) | 支持 | 不适用 | 不适用 |
| 循环提醒 | 支持 | 支持 | 不支持 |
| 自然语言日期 | 支持 | 支持 | 不支持 |
| JSON 输出 | 支持 | 支持 | 不支持 |
| AI Agent 集成 | 支持 | 部分支持 | 不支持 |
安装
brew tap mattheworiordan/tap && brew install remi
也可以通过 npm 安装:
npm install -g @mattheworiordan/remi
# or run without installing
npx @mattheworiordan/remi lists
快速开始
remi lists # See all lists
remi list "Groceries" # View a list (fuzzy: remi list groceries)
remi add "Groceries" "Buy milk" --section "Dairy" # Add to a section
remi today # What's due today?
remi complete "Groceries" "milk" # Fuzzy complete
使用方法
查看待办事项
remi today # Due today
remi overdue # Past due
remi upcoming --days 7 # Coming up
remi search "dentist" # Search across all lists
管理提醒
remi add "Work" "Review PR" --due "next friday" --priority high
remi add "Work" "Standup" --due tomorrow --repeat daily
remi complete "Work" "standup"
remi update "Work" "Review PR" --due "in 3 days"
remi delete "Work" "Review PR" --confirm
日期:tomorrow、next tuesday、in 3 days 或 YYYY-MM-DD
重复周期:daily、weekly、monthly、every 2 weeks、every 3 months on monday,friday
使用分区整理
remi sections "Groceries" # List sections
remi create-section "Groceries" "Produce" # Create a section
remi add "Groceries" "Bananas" --section "Produce" # Add to a section
remi move "Groceries" "Bananas" --to-section "Dairy" # Move between sections
分区通过 CRDT 向量时钟与 iCloud 同步。请参阅工作原理。
JSON 输出
每条命令都支持 --json,可输出机器可读的数据:
remi today --json
# {"success": true, "data": [...]}
AI Agent 集成
remi 专为 AI Agent 设计。可将其用作 MCP 服务、Claude Code 插件或技能:
MCP 服务
{
"mcpServers": {
"remi": {
"command": "remi",
"args": ["--mcp"]
}
}
}
提供 16 个工具:remi_lists、remi_add、remi_complete、remi_move、remi_today、remi_search 等,均支持模糊匹配并返回结构化响应。
其他集成
# Claude Code plugin
claude plugin marketplace add mattheworiordan/remi
# skills.sh
npx skills add mattheworiordan/remi
# OpenClaw
clawhub install remi
权限
首次运行时,macOS 会要求你授予“提醒事项”访问权限(点击“允许”)。分区功能还需要为你的终端应用授予“完全磁盘访问权限”。
remi authorize # Guides you through both
remi doctor # Shows what's granted
系统要求
- macOS 13+(Ventura 或更高版本)
- Node.js 18+
- Xcode Command Line Tools(
xcode-select --install)
工作原理
由于 Apple 从未在公开 API 中提供分区功能,remi 使用了以下三个层:
| 层 | 内容 | 原因 |
|---|---|---|
| EventKit | 提醒事项的增删改查、查询、重复周期 | 稳定的公开 API |
| ReminderKit | 分区的增删改查 | 私有框架 — 唯一能创建可同步分区的方式 |
| SQLite + Token Maps | 分区成员关系 | 直接写入数据库,并使用 CRDT 向量时钟实现 iCloud 同步 |
完整的逆向工程过程介绍了我们对 Apple 未公开同步架构的发现。
参与贡献
git clone https://github.com/mattheworiordan/remi.git && cd remi
npm install && npm run build:swift && npm run build
npm test # Unit tests
npm run test:integration # Integration tests (needs Reminders access)
许可证
MIT — Matthew O'Riordan
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。