提醒调度技能
核心流程
-
确定可用的 Python 命令。
-
检查服务是否运行(健康检查)。
-
将用户请求转换为提醒命令。
-
执行提醒命令并反馈结果(提醒通过邮件发送)。
- 确定 Python 命令
优先顺序(第一个可用的为准):
-
<skill_root>/.venv/Scripts/python.exe (if exists)
-
py
-
python
-
python3
若都不可用,请用户安装 Python。
- 确保服务运行
读取配置文件:
- <skill_root>/config/app_config.json
优先使用 web_api_base ,否则拼接 http://{host}:{port} 。 说明:先读取配置,以确定健康检查所用的端口与地址。
健康检查:
- GET {api_base}/health
若健康检查失败:
-
使用选定的 Python 命令运行 <skill_root>/scripts/start_server.py 。
-
再次请求 GET {api_base}/health 。
-
若仍失败,报告错误并停止。
后台运行:
-
可用 --daemon 参数启动后台服务(会写入 <skill_root>/server.pid )。
-
若用户未明确说明,先询问是否需要后台常驻;用户同意则使用 --daemon ,否则默认前台。
- 解析用户请求(两类意图)
A) 相对时间(无需追问)
示例:
-
“提醒我 2小时后吃饭”
-
“3天后提醒我提交报告”
转换为:
python remind.py <offset> <content>
其中 <offset> 为 1d2h30m10s 这类组合,<content> 为提醒内容。
内容增强(统一改写语气):
-
提取原始意图文本(去掉“提醒我/提醒我在/…后”等引导词)
-
改写为更友好的提示语
-
示例:
-
原始意图:吃饭
-
改写内容:主人~该吃饭啦!别饿着~
B) 相对日期 / 指定时间(可能需要追问)
示例:
-
“明天早上8点提醒我开会”
-
“后天 9点提醒我交作业”
-
“2026-02-07 09:00 提醒我开会”
转换为:
python remind.py --at "<time>" <content>
规则:
-
用户说“明天/后天/下周…”但没有具体时间时,必须追问:“几点提醒?”
-
若用户提供了具体时间,原样传给 --at 。
-
最大允许未来时间:30 天(脚本会校验)。 直接把提醒内容作为唯一内容参数传入。
内容增强(带时间语气):
-
在内容里加入时间提示
-
示例:
-
原始意图:开会
-
用户时间:明天 08:00
-
改写内容:主人~现在是 08:00,到了开会时间啦!
- 执行提醒命令
在此工作目录运行:
- <skill_root>/scripts
示例:
python remind.py 2h30m 提交报告 python remind.py --at "明天 08:00" 开会
输出给用户
-
成功:确认提醒内容与时间(邮件已发送/将按时发送)。
-
失败:展示脚本错误信息,并提示检查服务或配置。