日常提醒 Agent:自动执行之前,先学会等待确认
生活化 Agent 最诱人的地方,是它能帮用户自动做事:加日历、列购物清单、提醒休息、整理待办。但越接近日常,越不能一听到意图就立刻执行。提醒错了只是打扰,购物错了是浪费,日程错了可能影响真实生活。
我做日常提醒 Agent 时,会坚持一条原则:自动执行之前,先学会等待确认。Agent 可以理解、草拟、补全,但真正写入外部系统前,要给用户一个清楚的确认点。
一、把 Agent 拆成四层
不要让模型直接调用工具。更安全的结构是:识别意图、生成草稿、等待确认、执行动作。每一层都有明确输入输出。
flowchart TD A[用户自然语言] --> B[意图识别] B --> C[提醒草稿] C --> D{用户确认} D -->|确认| E[调用日历/提醒] D -->|修改| C D -->|取消| F[结束]这个流程多了一步,但换来的是安全感。生活化产品不应该追求“看,我一句话就帮你做完”,而应该追求“我知道它不会乱做”。
二、草稿要结构化
提醒草稿不能只是自然语言。它要有时间、重复规则、提醒方式、内容和置信度。模型不确定的字段要标出来。
type ReminderDraft = { title: string; datetime?: string; repeat?: "none" | "daily" | "weekly"; channel: "push" | "email" | "calendar"; confidence: { time: number; intent: number; }; missingFields: string[]; };如果用户说“晚上提醒我一下”,时间不明确,Agent 应该追问“今晚几点比较合适”,而不是默认 20:00。默认值可以有,但必须可见。
三、工具调用要有权限边界
日历、通知、邮件都属于外部动作。每个工具应声明权限范围,Agent 只能在授权范围内调用。
tool_permissions: calendar: allowed_actions: ["create_event", "update_own_event"] require_confirmation: true notification: allowed_actions: ["schedule_push"] quiet_hours: "22:00-08:00" email: allowed_actions: []这份配置比“让模型自己判断”可靠得多。模型适合理解语言,不适合成为权限系统。权限应该由确定性代码控制。
四、失败反馈要像人话
提醒创建失败时,不要只显示500或calendar_api_error。用户需要知道是否已经创建成功、是否需要重试、会不会重复提醒。
可以把失败分成三类:信息不足、权限不足、外部服务失败。每类给出不同文案和动作。生活化 AI 的温柔,也体现在出错时不让用户猜。
还要给用户提供修改入口。确认页不要只有“确定”和“取消”,最好能直接改时间、重复频率和提醒内容。否则用户发现草稿差一点,就只能重新输入一遍。生活化产品的顺手,往往来自这些小小的可编辑状态。
draft: 明晚提醒我整理发票 missing: 具体时间 ui_actions: 选择时间 / 改成每周 / 取消 safe_default: 不创建提醒,等待用户确认五、总结
日常提醒 Agent 的关键,不是自动化得多快,而是执行得多可靠。意图、草稿、确认、执行四层分开,结构化草稿、权限边界和清楚失败反馈,能让 Agent 更适合真实生活。
真正贴心的自动化,不是替用户抢方向盘,而是在需要时轻轻扶一下。