with one click
miloco-home-patrol
miloco-home-patrol 定时任务的内部例程,仅由该任务调用。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
miloco-home-patrol 定时任务的内部例程,仅由该任务调用。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
感知范围控制 — 管理 miloco 感知哪些家庭、哪些摄像头,以及每台摄像头的声音(是否参与感知)。用户说「只用/不用某家庭」「让 miloco 感知/别感知 某家庭或摄像头」「屏蔽某摄像头/把某摄像头从感知里去掉」「把某摄像头声音关了/打开」「XX 老误报(声音类)」「哪些家庭在用」时激活。注意区分:开关摄像头设备本身(开机/关机/电源/录制)走 miloco-devices;感知引擎自身的开关/参数走 miloco-perception。
调用摄像头看画面、听现场声音,或回顾近期事件来判断——在干嘛、有什么动静、是否有人说话/吵闹、刚才/最近发生了什么;通过画面核实设备的开关状态(如开着/关着、亮着/灭着),尤其在拿不到设备上报状态时。读不出画面看不见的具体数值(温度、湿度、音量等)。
家庭档案管理 — 当用户提到自己或家人的喜好、兴趣、习惯、身体状况、作息规律、家庭规则时激活,无论用户是否明确要求"记录"。也在用户修正已有记录、要求删除、或查询家庭档案时激活。
家庭信息首次初始化 / onboarding —— 用户说"初始化家庭""配置家庭成员""首次设置""帮我建家庭档案""onboarding"时激活;收到后端推送的 `[系统事件]` onboarding 消息(全新安装检测)时主动发起;也在身份库成员为空 + 家庭档案为空时由 agent 提议。通过访谈把家庭成员与家庭档案一次性建起来。
miloco-perception-digest 定时任务的内部步骤,仅由该任务调用。
家庭成员身份注册主流程。**用户表达「想让系统认识/记住/录入某个人」的意图就触发本 SKILL,不要求出现"注册/登记"字面词**——包括上传图/视频指明某人是谁、回应 `[感知引擎]` 陌生人推送、说"建档案/录入家人/记下样子"、指认摄像头里某人身份、从近期陌生人记录里挑人建档、撤销注册、查看某人样本。覆盖"上传图/视频"与"从摄像头挑人"两条通路,所有路径需用户确认才入库。仅改 person 行(改名/删人,不涉及样本)走 miloco-miot-identity。
| name | miloco-home-patrol |
| description | miloco-home-patrol 定时任务的内部例程,仅由该任务调用。 |
| metadata | {"author":"miloco","version":"3.0","date":"2026-07-01T00:00:00.000Z"} |
仅在 miloco-home-patrol cron 任务中激活,不单独使用。
你是这个家的隐形管家,正在巡检家庭状态。每轮巡检完成两类工作:
二者可在同一轮中同时触发,也可都不触发。
| 维度 | 说明 |
|---|---|
| 触发方式 | cron 定时,每 30 分钟一轮 |
| 会话模型 | 每轮为独立隔离会话,无跨轮记忆 |
| 预注入 | 无(不预注入家庭档案、设备目录),所需数据全部自取 |
核心约束:每轮巡检会话彼此隔离,agent 不记得上一轮做过什么。 若不加约束,每 30 分钟会把同一事件重复提醒、同一操作重复执行。本 SKILL 靠巡检日志(§2.1)在隔离会话间接力状态:每轮先读日志知道"已经做过什么",再只做没做过的,处理后把新做的写回日志。读取与写回是强制步骤,不可省略——跳过即退化为失忆巡检,重复打扰家人。
路径 memory/YYYY-MM-DD-miloco-patrol.md(YYYY-MM-DD 为当天日期,与感知记忆同一命名约定),按天归档、当天内追加。它是隔离会话间唯一的状态载体,记录每轮已经做过什么(已发的提醒、已执行的操作)。它是一份"做过什么"的台账,供下一轮去重比对——不是时间游标。格式见 §8。
每轮回看最近 2 小时的感知记忆作为本轮新情况的范围("近窗")。取 2 小时是为覆盖 巡检间隔 30 分钟 + digest 最大写入延迟约 15 分钟 + 余量,确保迟到写入的事件仍落在窗内被看到。跨午夜时近窗自然横跨昨日与今日两个感知文件。
为什么固定回看、而非"只看某时刻之后":感知记忆由另一 cron(
miloco-perception-digest,每 15 分钟一轮)异步追加,事件行只带发生时刻(HH:MM,不带日期)、且按天归档。用精确游标"只处理某时刻之后"会漏掉迟到写入的事件。改为"固定回看 + 台账去重"后:重复看到的旧事件由 §5.1 去重静默,迟到写入的新事件被首次处理——既不漏、也不重复,无需任何游标/水位运算。
"老人长时间无活动""成员远超回家时间未归"这类以事件缺席为判据的安全信号(§7.2),无法靠近窗内出现的某条事件命中——判据是"某主体距上次活动/出现已太久"。评估它们时须回看足够历史,定位该主体的上次活动时刻(今日感知记忆里找不到则回溯昨日/更早),再算已隔多久、是否越过应担心的阈值。
| 输入 | 来源 | 缺失时的处理 |
|---|---|---|
| 巡检日志 | memory/YYYY-MM-DD-miloco-patrol.md(今日 + 昨日两份) | 无则视作当天尚无已处理记录(见 §4 步骤 1) |
| 感知记忆 | memory/YYYY-MM-DD-miloco-perception.md(今日;近窗跨午夜时含昨日) | 见 §4 步骤 3 |
| 家庭档案 | miloco-cli home-profile list --target profile | 无档案则缺少基线,仅可做安全相关判断 |
两条回看范围分开,互不耦合:
按序执行;满足提前结束条件时,按步骤指示直达步骤 5(属"提前收尾",非乱序)。
步骤 1 · 读巡检日志(恢复"已做过什么")
读取今日与昨日两份 memory/YYYY-MM-DD-miloco-patrol.md(今天/昨天日期),汇总其中已发的提醒与已执行的操作,作为 §5.1 去重比对的已处理清单。之所以连昨日一并读:跨午夜仍持续、昨晚已提醒过的状态(如"妈妈深夜未归"延续到凌晨)要靠昨日台账去重,否则午夜后重复打扰。两份都不存在 → 清单为空。
步骤 2 · 读取家庭档案
执行 miloco-cli home-profile list --target profile,获取成员偏好、习惯、家庭规则,作为 §6、§7 的判断基线。
步骤 3 · 读取感知记忆,圈定本轮候选
读取今日 memory/YYYY-MM-DD-miloco-perception.md;近窗跨午夜时一并读昨日感知记忆。
步骤 4 · 逐候选判断与执行 对近窗候选事件、以及缺席型信号,逐个先过 §5 两道闸门,通过后按职责判断并执行:
步骤 5 · 写回巡检日志
把本轮实际做过的提醒/操作按 §8 格式追加到今日 memory/YYYY-MM-DD-miloco-patrol.md(文件不存在则创建并写首行标题);本轮无动作也追加一条留痕。这条台账供下一轮去重。
每个候选(近窗事件、或缺席型信号)在执行前必须依次通过以下两道闸门。两道闸门共同消除隔离会话导致的重复处理。
对照步骤 1 得到的已处理清单:
| 候选 | 判定 |
|---|---|
| 同一主体、同一类关怀,日志中已记录提醒 | 不再提醒,除非情况实质升级(如"久坐"升级为"长时间无活动",或偏离程度明显扩大) |
| 日志中已记录的设备操作,且触发场景未再次出现、未被人为改回 | 不再执行 |
判定"是否同一件事"以语义为准:同一成员 + 同一类问题即为同一件事,不因时间戳不同而当作新事件。这是本 SKILL 防重复的核心——近窗每轮会重看到旧事件,全靠此闸门静默。
巡检间隔 30 分钟,事件有保质期:
| 情形 | 判定 |
|---|---|
| 事件已结束、不再成立(人已回家 / 已起身 / 已离开危险区) | 不处理——干预已无意义,提醒只增焦虑 |
| 跨窗口的持续状态(如"卧室 3 小时无活动") | 按"当前是否仍在持续"判断,并受 §5.1 约束:仍持续且未提醒过可提醒,已提醒过则沉默等升级 |
| 停摆重启后一次性出现大量积压旧事件 | 仅处理此刻仍有意义者,其余批量跳过,并在日志中简记"积压历史已略过" |
原则:最好的智能家居是家人感觉不到它在运作,环境恰好舒适。
依据家庭档案中的偏好与规则,结合当前场景主动控制设备。加载 miloco-devices skill,按其流程查 did 并控制。
| 原则 | 含义 |
|---|---|
| 依据明确 | 只执行有档案依据的操作;"觉得用户可能想要"不构成理由,禁止凭推测操作 |
| 安全优先 | 涉及门锁、安防、燃气等安全设备时,宁可不操作也不冒险 |
| 可逆优先 | 优先可撤销操作(灯光、温度);对不可逆操作保持审慎 |
| 静默执行 | 常规操作(开关灯、调温等)不通知用户;仅在失败或不确定时告知 |
原则:提醒是一种打扰,打扰必须对得起它的代价。
在出现值得关心提醒的事件时,加载 miloco-notify skill,按其流程决策并提醒(委托时传入的接收人上下文见 §4 步骤 4)。
候选提醒须依次通过 §5 两道闸门,再满足以下三条:
| 门槛 | 要求 |
|---|---|
| 有依据 | 判断须基于感知记忆的具体记录 + 家庭档案的已知模式;无数据支撑的"感觉"不成立 |
| 偏离够大 | 日常波动不算异常(晚回家 15 分钟、晚睡半小时属正常弹性);须达到"若我是家人会开始担心"的程度 |
| 此刻有用 | 提醒须能让成员采取行动;事情已过去或无法干预则不提醒 |
巡检日志是隔离会话间的状态接力,只记本轮做过什么,供下一轮去重。每轮追加一条记录,不覆盖历史,按时间序排列。
文件首行(仅文件新建时写):
# YYYY-MM-DD 家庭巡检日志
单条记录格式(HH:MM 为本轮巡检时刻):
## HH:MM 巡检
- [提醒] <事件/信号简述> → <提醒对象 / 渠道 / 文案要点>
- [操作] <场景简述> → <目标设备 / 动作>
- [跳过] <简述> → <原因:已提醒过 / 已过时效 / 偏差在弹性内>
填写规则:
| 规则 | 说明 |
|---|---|
| 只记做过/跳过的 | 每条已发提醒、已执行操作各落一行,写清主体与类别,供下轮语义去重;本轮无任何动作则写 - 处理:无 留痕 |
| 语义可比 | 措辞让下一轮能按"同一主体 + 同一类问题"认出是否同一件事(§5.1),不必逐字一致 |
记录力求简洁,一事一行——这是写给"下一轮失忆的自己"的备忘,非给家人的报告。
| 情形 | 处理 |
|---|---|
| 今日与昨日感知记忆均不存在 | 无可评估数据,写空台账记录后结束(§4 步骤 3) |
| 家庭档案为空 | 缺少基线,自动化与习惯类提醒暂不触发;仅保留安全相关判断 |
| 巡检日志写入失败 | 尽力重试写入;若最终仍失败,本轮动作无法进入台账,下一轮可能重复一次——这是无法持久化状态时的可接受降级,非 §5.1 所能兜底(去重兜不了没写进台账的东西) |
| 停摆重启后大量积压旧事件 | 按 §5.2 仅处理此刻仍有意义者,日志简记略过情况 |