给 AI 助手装一个失活自毁开关
2026-10-15
为什么需要这个
个人 AI 助手是个矛盾体:它越有用,知道的就越多——账号凭证、聊天记录、个人文档、记忆档案。正常用的时候没问题,但如果我长期失联(出差、换设备、忘了),这些数据就躺在服务器上无人看管。
大厂有现成答案: - Google 闲置账号管理器:设定 3/6/12/18 个月失活期限,到期前 1 个月提醒,可指定信任联系人接管或直接删号 - Telegram 账号自毁:1~12 个月可选,到期连人带聊天记录全删 - 开源 deadmansw:Linux 工具,监控登录,超时无活动自动粉碎指定目录
我取 deadmansw 的思路(本地、可配目录、有总开关),加上 Google/Telegram 的"到期前多轮提醒"做法,做了一个本地版。
三阶段流程
| 阶段 | 失联天数 | 动作 |
|---|---|---|
| 预警一 | ≥ 23 天 | 站内详细提醒 + 微信精简版(走队列,非紧急) |
| 预警二 | ≥ 27 天 | 站内详细提醒 + 微信立刻推送(算紧急事项) |
| 执行 | ≥ 30 天 | 先发"即将执行"通知 → 演习核对 → 分批删除 → 逐项核验 → 写报告 |
计时规则:每天 09:00 检查一次;用户在任何对话发任意一条消息,计时清零重新布防。
核心设计:fail-safe 优先
这是整个机制最重要的原则:检测失败时,一律不删。
失活检测走三路取最大: 1. 数据库查用户最新发言时间 2. 主对话记录交叉核对 3. 枚举全部侧对话(含已归档)逐一取最新发言
任何一路查不到、结果矛盾、状态文件损坏、时间格式无效——全部视为检测失败,本次不做任何动作。方向保证:计时只可能比真实更旧(来自真实观测到的消息),不可能更新。跳过检查只会漏提醒,不会误删除。
防误伤的五道锁
- 两轮提醒:23 天、27 天各一次,任意回复即取消
- 演习先行:
dry-run只列清单不删东西,改配置后必跑 - 显式确认:执行必须带
--confirm参数,否则拒绝 - 自保护:拒绝删除机制自身目录;所有目标必须位于用户目录内
- 总开关:配置文件里
enabled=false即停用
分批执行:被审批逼出来的设计
原本想一次删完,但发现审批粒度是单次工具调用——一批被卡住,整个清理就停了。改成按敏感度分三批独立执行:
- 第 1 批·凭证类:各类 API Key、SSH 密钥、token、加密库
- 第 2 批·身份记忆类:个人文档、记忆档案、身份信息、对话记录
- 第 3 批·衍生日志类:备份、日志、下载文件、规则命中文档
一批被卡住不影响其他批,每批执行前重新查数据库重跑判定——覆盖"上一批执行期间用户回来"的竞态。
沙盒实测
上线前做了完整沙盒测试:复制脚本到独立目录,测试配置只指向 3 个空测试文件(分属三批),动态规则置空。三批各一次独立调用,模拟真实流程。
测试中发现一个真问题:脚本里的基础路径是硬编码的,复制到别处跑会读到真实配置——已改为相对路径。这个 bug 要是没发现,测试就白做了。
给想做类似东西的人的建议
- 先定 fail-safe 原则:删数据的系统,默认动作必须是"不删",而不是"删"
- 提醒要多轮:一次提醒不够,人可能就是没看到
- 演习模式是刚需:任何删数据的操作,先 dry-run 看清单
- 配置变更要同步文档:目标清单变了,文档不更新就是定时炸弹