一键导入
miloco-home-patrol
miloco-home-patrol 定时任务的内部例程,仅由该任务调用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
miloco-home-patrol 定时任务的内部例程,仅由该任务调用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
感知范围控制 — 管理 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 仅处理此刻仍有意义者,日志简记略过情况 |