Install
openclaw skills install @thcjp/reminder-engineopenclaw skills install @thcjp/reminder-engine| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 提醒引擎(专业版)一次性提醒创建 | 不支持 | 支持 |
| 提醒引擎(专业版)批量创建 | 不支持 | 支持 |
| 提醒引擎(专业版)性提醒与完整安全校验 | 不支持 | 支持 |
| 深度漏洞扫描与CVE关联 | 不支持 | 支持 |
| 安全基线合规审计 | 不支持 | 支持 |
支持三类时间格式:
| 类型 | 格式 | 示例 | 转换方式 |
|---|---|---|---|
| 相对时间 | <数字><单位> | 30s/5m/2h/1d | date -u -d "+30 seconds" |
| 绝对时间 | 自然语言/ISO | 3pm/today 15:00/tomorrow 9am | date -u -d "today 15:00" |
| 自然语言日期 | 中文日期表达 | 后天/下周一/下个月2号 | 语义解析后转换 |
自然语言日期解析:
详细代码示例已移至
references/detail.md
完整版新增:上下文感知检测、白名单模式、编码验证.
| 渠道 | 参数 | 适用场景 |
|---|---|---|
| Discord | --channel discord --to "channel:<id>" | 团队协作通知 |
| Telegram | --channel telegram --to "+<phone>" | 个人移动通知 |
--channel whatsapp --to "+<phone>" | 国际用户通知 | |
| Webhook | --webhook "<url>" --webhook-signing-secret "<key>" | 系统集成 |
多渠道投递策略:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 同时投递 | 所有渠道同时触发 | 重要提醒,确保触达 |
| 优先级降级 | 主渠道失败时尝试备用渠道 | 容错场景 |
| 分级投递 | 不同紧急程度投递到不同渠道 | 紧急程度分级 |
同时投递示例:
间隔逐渐缩短的提醒模式,适用于紧急程度递增的场景:
| 类型 | cron表达式 | 适用场景 |
|---|---|---|
| 每日 | 30 9 * * * | 每日9:30站会 |
| 工作日 | 30 9 * * 1-5 | 工作日9:30站会 |
| 每周 | 0 17 * * 5 | 每周五17:00周报 |
| 每月 | 0 10 1 * * | 每月1号10:00总结 |
| 每季度 | 0 10 1 1,4,7,10 * | 季度首日10:00复盘 |
详细的输入输出格式请参考下方章节说明。
场景描述:项目临近截止,需要通过Discord和Telegram同时发送递增提醒.
场景描述:一天内有多个会议,批量创建提醒.
MEETINGS_JSON='[
{"time": "today 10:00", "content": "产品评审会议", "channels": ["discord"]},
{"time": "today 14:00", "content": "技术方案讨论", "channels": ["discord", "telegram"]},
{"time": "today 16:30", "content": "客户对接会议", "channels": ["telegram"]},
{"time": "tomorrow 09:30", "content": "晨会", "channels": ["discord"]}
]'
# ...
场景描述:系统部署完成后,创建提醒通过Webhook触发监控系统的检查任务.
REMIND_AT=$(date -u -d "+5 minutes" +"%Y-%m-%dT%H:%M:%SZ")
# ...
skill-platform cron add \
--name "reminder-deploy-verify" \
--at "$REMIND_AT" \
--session isolated \
--message "验证最新部署的功能" \
--webhook "https://monitoring.example.com/hooks/verify" \
--webhook-signing-secret "monitor-secret" \
--delete-after-run
场景描述:配置每日站会、每周周报、每月总结的周期性提醒.
场景描述:生产事故处理,根据紧急程度投递到不同渠道.
用户说"1小时后提醒我参加项目评审,发到Discord和Telegram":
使用批量创建脚本一次创建多个提醒:
详细内容已移至
references/detail.md-
以下是提醒引擎(专业版)的快速搭建流程,从初始化到完整配置的步骤说明.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 问题 | 可能原因 | 解决方案 | 优先级 |
|---|---|---|---|
| 提醒未触发 | 时间已过 | 检查时间是否在未来;使用绝对时间 | 高 |
| 提醒未触发 | Gateway未运行 | 确保Gateway进程常驻 | 高 |
| 投递失败 | 频道凭证错误 | 检查Bot Token;验证渠道配置 | 高 |
| 投递失败 | TO格式错误 | Discord用channel:ID;Telegram用+phone | 高 |
| 多渠道部分失败 | 单渠道凭证错误 | 检查失败渠道的配置;启用bestEffort | 中 |
| 安全校验误拒 | 白名单过严 | 切换为strict模式;调整白名单字符集 | 中 |
| 安全校验漏放 | 危险模式未覆盖 | 升级校验脚本;添加新的危险模式 | 高 |
| 批量创建失败 | JSON格式错误 | 验证JSON语法;使用jq解析 | 中 |
| 批量创建部分失败 | 单条数据问题 | 检查失败条目;错误隔离继续执行 | 中 |
| 递增提醒时间错乱 | 时区不一致 | 统一使用UTC;显式指定时区 | 高 |
| 周期性提醒不触发 | cron表达式错误 | 验证5字段格式;使用crontab.guru测试 | 高 |
| Webhook投递失败 | URL不可达 | 检查URL;验证网络连通性 | 高 |
| Webhook签名失败 | 密钥不匹配 | 核对客户端与服务端密钥 | 高 |
| session_status无返回 | 工具不可用 | 检查Agent平台配置;手动指定agent和to | 中 |
| 提醒内容显示异常 | 特殊字符未转义 | 检查内容是否包含Markdown特殊字符 | 低 |
| 作业列表膨胀 | 未及时清理 | 使用cleanup清理已完成作业 | 低 |
-d 参数(GNU date,Linux/macOS自带)| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Agent Gateway | 运行时 | 必需 | Agent平台内置 |
| skill-platform CLI | 工具 | 必需 | Agent平台内置 |
| session_status工具 | 工具 | 必需 | Agent平台内置 |
| jq | 工具 | 必需 | 系统包管理器安装 |
| Discord Bot | 投递通道 | 否 | 注册Discord Bot获取 |
| Telegram Bot | 投递通道 | 否 | 注册Telegram Bot获取 |
| WhatsApp Business | 投递通道 | 否 | 注册WhatsApp Business API |
| Webhook端点 | 投递通道 | 否 | 自建或第三方服务 |
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
skill-platform cron add \
--name "reminder-deploy-verify" \
--at "$(date -u -d '+5 minutes' +"%Y-%m-%dT%H:%M:%SZ")" \
--session isolated \
--message "验证最新部署的功能" \
--webhook "https://ci.example.com/hooks/verify" \
--webhook-signing-secret "ci-secret" \
--delete-after-run
skill-platform cron add \
--name "reminder-incident-alert" \
--at "$(date -u -d '+1 minute' +"%Y-%m-%dT%H:%M:%SZ")" \
--session isolated \
--message "触发告警:生产事故" \
--webhook "https://alerts.example.com/hooks/incident" \
--webhook-signing-secret "alert-secret" \
--delete-after-run
skill-platform cron add \
--name "reminder-meeting" \
--at "$REMIND_AT" \
--session main \
--system-event "产品评审会议开始" \
--agent "$AGENT" \
--announce \
--channel discord \
--to "-1001234567890:topic:meetings" \
--delete-after-run
calender_events=$(get_calendar_events --today)
echo "$calender_events" | jq -c '.[]' | while read -r event; do
TIME=$(echo "$event" | jq -r '.start')
CONTENT=$(echo "$event" | jq -r '.title')
done
免费版提供单频道投递、基础时间解析(相对+绝对)、基础安全校验、单次提醒创建。专业版解锁多渠道同时投递、批量创建、递增提醒、周期性提醒、Webhook投递、完整安全校验脚本(含上下文感知检测)、自然语言时间解析增强(支持"后天"/"下周一"等)。此外提供多角色场景指南、性能优化策略、多平台集成示例、完整FAQ(15问)与故障排查表(16项).
为每个渠道创建独立的cron作业,使用相同的--at时间。例如同时投递到Discord和Telegram,创建两个作业,时间相同但--channel和--to不同。这确保即使一个渠道失败,另一个仍能正常投递.
使用循环脚本,根据截止时间计算多个提前量(如2小时前、1小时前、30分钟前等),为每个时间点创建独立的提醒作业。通过URGENCY数组为每个提醒添加紧急程度标签,实现视觉上的紧急感递增.
转义(escape)是将危险字符转换为安全形式,但容易遗漏边界情况,导致绕过攻击。拒绝(reject)是直接拒绝包含任何危险模式的输入,强制用户重新表述,从根本上消除风险。专业版还提供白名单模式,仅允许已知安全字符通过,安全性更高.
专业版支持:后天、大后天、下周一至下周日、下个月X号、X天后、X小时后、X分钟后。这些格式通过语义解析后转换为ISO 8601时间戳。无法识别的格式会提示用户用明确格式表达.
一次性提醒使用--at参数,指定具体时间,执行后自动删除(配合--delete-after-run)。周期性提醒使用--cron参数,指定cron表达式(如30 9 * * 1-5表示工作日9:30),按规则重复执行,不自动删除,需手动管理.
使用批量创建脚本,将多个提醒定义为JSON数组,循环解析并为每个提醒执行安全校验、时间解析、作业创建。支持错误隔离,单条失败不影响其他。详见"120秒标准搭建"示例.
任务执行完成后,调度器将结果以JSON格式POST到指定的HTTP端点。请求包含X-Signature头(HMAC-SHA256签名),服务端可验证请求来源。Webhook模式仅适用于isolated会话任务.
调用session_status工具获取当前会话的投递上下文。返回的deliveryContext.accountId用于--agent参数,deliveryContext.to用于--to参数。这确保提醒结果投递到用户当前所在的频道。也可手动指定--to参数.
--session main而非isolated?一次性提醒通常需要继承主会话上下文(如引用之前的对话),使用main模式可确保提醒在正确上下文中触发。同时使用--system-event payload类型。--delete-after-run确保执行后自动清理。Webhook投递的任务必须使用isolated模式.
建议用户使用日历应用。提醒引擎设计为短期提醒(分钟级到小时级),长时间跨度的提醒更适合日历系统。若用户坚持创建,引擎仍会执行,但建议提示用户:"此提醒距离现在超过48小时,建议同时添加到日历以免遗漏".
使用skill-platform cron pause <job-id>暂停,暂停后不再被调度执行。使用skill-platform cron resume <job-id>恢复。暂停状态不影响作业配置。一次性提醒(已设置--delete-after-run)无需暂停,执行后自动删除.
使用skill-platform cron cleanup --status done --older-than 7d清理7天前已完成的提醒。可根据需要调整--status和--older-than参数。建议定期清理,避免作业列表膨胀.
专业版提供sanitize-message-pro.sh,新增上下文感知检测(URL编码、Unicode转义、HTML实体)、扩展危险命令列表、白名单模式、长度限制。直接替换免费版的sanitize-message.sh即可.
启用bestEffort模式,单个渠道失败不阻塞其他渠道。对于关键提醒,建议同时投递多个渠道确保触达。检查失败渠道的凭证配置,必要时手动重试。专业版支持优先级降级策略,主渠道失败时尝试备用渠道.
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 创建单个提醒 | 5分钟 | 30秒 | 4.5分钟 | 10% |
| 批量创建提醒 | 1小时 | 10分钟 | 50分钟 | 20% |
| 递增提醒设置 | 20分钟 | 3分钟 | 17分钟 | 15% |
| 周期性提醒设置 | 30分钟 | 5分钟 | 25分钟 | 16.7% |
| 多渠道投递测试 | 2小时 | 30分钟 | 1.5小时 | 25% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 功能全面性 | 高 | 低 | 中 | 高 |
| 操作便捷性 | 高 | 低 | 中 | 高 |
| 自动化程度 | 高 | 低 | 中 | 高 |
| 安全性 | 高 | 低 | 中 | 高 |
| 成本效益 | 高 | 低 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 忘记提醒 | 容易忘记重要事件,导致错过关键时间点 | 工作效率降低,影响决策 | 提醒引擎自动创建提醒,确保不遗漏 | 时间节约20% |
| 多渠道通知效率低 | 手动操作不同渠道通知,效率低下 | 资源浪费,沟通效率低 | 多渠道同时投递功能,提高沟通效率 | 效率提升30% |
| 提醒设置复杂 | 设置复杂提醒需要专业知识 | 使用门槛高,难以普及 | 提供可视化界面,简化设置流程 | 使用门槛降低50% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 提醒未按时发送 | 服务器故障 | 检查服务器状态,重试发送 | 修复服务器故障,重试发送 |
| 提醒内容错误 | 输入参数错误 | 检查输入参数,修正错误 | 修正输入参数,重新发送 |
| 提醒未到达指定渠道 | 渠道配置错误 | 检查渠道配置,确认正确 | 修正渠道配置,重新发送 |
| 提醒发送失败 | 安全校验失败 | 检查安全校验脚本,确认正确 | 修正安全校验脚本,重新发送 |
| 提醒格式不正确 | 输出格式错误 | 检查输出格式,修正错误 | 修正输出格式,重新发送 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对提醒引擎(专业版)使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
针对提醒引擎(专业版)使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |