小蜜陪护机器人 - 定时任务功能说明
一、定时任务能做什么
你只需要用自然语言告诉小蜜你想定时做什么,它就能帮你自动执行。比如:
- "每天早上8点播放音乐"
- "30分钟后提醒我喝水"
- "晚上10点停止所有播放"
- "每天早上7点语音播报该起床了"
小蜜会自动理解你的意思,创建定时任务。时间一到,它就帮你执行,还会语音告诉你结果。
二、怎么用
你不需要记任何命令,直接跟小蜜说就行。举几个例子:
| 你说的话 | 小蜜做的事 |
|---|---|
| "每天8点播放音乐" | 创建一个每天8点触发的任务,到点自动随机播放音乐 |
| "10分钟后提醒我吃药" | 创建一个10分钟后触发的任务,到点语音播报"定时提醒:吃药" |
| "晚上10点停止播放" | 创建一个每晚10点触发的任务,到点停止音乐和广播 |
| "把音量调到50" | 直接调整音量(不需要定时) |
时间表达
你可以说绝对时间,也可以说相对时间:
- 绝对时间:"每天8点"、"每周一9点"、"每月1号7点"
- 相对时间:"10分钟后"、"半小时后"、"1小时后"
三、内置功能一览
小蜜目前支持这些定时动作:
播放控制:
- 停止所有播放(音乐+广播+电视一起停)
- 暂停所有播放
- 继续所有播放
音乐:
- 随机播放音乐
- 搜索播放指定歌手/歌曲
广播/电视:
- 随机播放广播
- 随机播放电视
- 播放指定电台/电视台(如CCTV1、中国之声)
语音/音量:
- 语音播报自定义文字
- 设置音量大小(0-100)
四、语音播报规则
定时任务触发后,小蜜会根据任务类型自动决定是否语音播报:
- 提醒类(吃药、喝水、开会…):会语音播报"定时提醒:xxx"
- 停止类(停止播放、关闭…):会语音播报"定时任务:xxx 已执行"
- 播放类(播放音乐、播放广播…):不播报,你直接就能听到音乐
- 其他:会语音播报"定时任务:xxx 已触发"
- 任务失败:会语音播报"定时任务执行失败:xxx"
五、如何扩展自定义功能
如果你想定时做一些小蜜目前不支持的事情(比如控制家电、发消息等),只需要改 2 个文件,不需要懂 C++,也不需要重新编译程序。
第一步:在 task_scheduler_handler.js 中添加处理函数
打开文件 bin/agentconfigs/scripts/task_scheduler_handler.js,找到 ACTION_HANDLERS 对象,在里面加一个新的处理函数。
比如你想加一个"打开家电"的功能:
"turn_on_appliance": function(name) {
if (typeof applianceController !== "undefined" && applianceController) {
applianceController.turnOn(name);
printlog(log.INFO, "[ActionDispatch] turn_on_appliance: " + name);
return "已开启 " + name;
}
printlog(log.WARN, "[ActionDispatch] applianceController unavailable");
return "applianceController unavailable";
}
写处理函数的要点:
- 用
typeof xxx !== "undefined" && xxx检查设备对象是否存在,防止程序崩溃 - 用
printlog(log.INFO, ...)记录日志,方便排查问题 - 成功时返回描述文字,失败时返回
xxx unavailable
第二步:在 action_templates.json 中添加别名定义
打开文件 bin/agentconfigs/capabilities/action_templates.json,在 templates 数组中加一条:
{
"alias": "turn_on_appliance",
"description": "开启指定家电,{{name}}替换为家电名",
"script": "executeScheduledAction(\"turn_on_appliance\", '{{name}}')",
"category": "家电"
}
各字段含义:
alias:别名,和第一步的处理函数名保持一致description:功能描述,告诉 Agent 这个动作是干什么的,{{name}}是参数占位符script:Agent 生成脚本时使用的模板,{{name}}会被实际值替换category:分类名,方便管理
完成后的效果
改完这两个文件后,保存即可生效(支持热重载,无需重启程序)。用户说"每天早上7点打开客厅灯",小蜜就会自动创建定时任务,到点执行打开客厅灯的操作。
更多扩展示例
关闭家电:
// task_scheduler_handler.js 中添加
"turn_off_appliance": function(name) {
if (typeof applianceController !== "undefined" && applianceController) {
applianceController.turnOff(name);
printlog(log.INFO, "[ActionDispatch] turn_off_appliance: " + name);
return "已关闭 " + name;
}
printlog(log.WARN, "[ActionDispatch] applianceController unavailable");
return "applianceController unavailable";
}
// action_templates.json 中添加
{
"alias": "turn_off_appliance",
"description": "关闭指定家电,{{name}}替换为家电名",
"script": "executeScheduledAction(\"turn_off_appliance\", '{{name}}')",
"category": "家电"
}
发送通知:
// task_scheduler_handler.js 中添加
"send_notification": function(title, content) {
if (typeof notifier !== "undefined" && notifier) {
notifier.send(title, content);
printlog(log.INFO, "[ActionDispatch] send_notification: " + title);
return "通知已发送: " + title;
}
printlog(log.WARN, "[ActionDispatch] notifier unavailable");
return "notifier unavailable";
}
// action_templates.json 中添加
{
"alias": "send_notification",
"description": "发送通知,{{title}}替换为标题,{{content}}替换为内容",
"script": "executeScheduledAction(\"send_notification\", '{{title}}', '{{content}}')",
"category": "通知"
}
六、完整示例
场景:用户说"每天早上8点播放音乐,晚上10点停止播放"
小蜜会创建两个定时任务:
任务1 — 每天8点播放音乐:
- 任务名:播放音乐
- 触发时间:每天 8:00
- 执行动作:随机播放音乐
任务2 — 每天22点停止播放:
- 任务名:停止播放
- 触发时间:每天 22:00
- 执行动作:停止所有播放
8:00 到了: 小蜜自动随机播放音乐,你直接就能听到,不会有语音干扰。
22:00 到了: 小蜜停止所有播放,并语音播报"定时任务:停止播放 已执行"。
七、相关文件
| 文件 | 作用 |
|---|---|
bin/agentconfigs/scripts/task_scheduler_handler.js |
动作调度中心,所有执行逻辑在这里 |
bin/agentconfigs/capabilities/action_templates.json |
动作别名定义,扩展功能时改这个 |
bin/agentconfigs/tools/定时任务.tool |
定时任务工具,一般不需要改 |
bin/agentconfigs/agents/定时任务专家.agent |
定时任务专家,一般不需要改 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)