Checklist 1:是否暴露不确定性?
核心原则:坦诚无知,胜过自作聪明
在传统软件设计中,“不确定性”往往被视为一个需要被隐藏的缺陷。程序要么给出一个确定的答案,要么报错。然而,对于智能整理助手而言,暴露不确定性不是失败,而是一种成熟的设计选择。
为什么必须暴露不确定性?
当Agent面对一个无法100%确定归类的文件时,它面临两个选择:
| 行为 | 后果 |
|---|---|
| 擅自移动 | 可能将重要文件归类错误,导致用户找不到,甚至误删除。用户会逐渐失去对Agent的信任。 |
| 主动询问 | 虽然打断了用户的工作流,但确保了结果的准确性,并让用户感受到Agent的“谨慎”与“尊重”。 |
案例场景:桌面上有一个名为 final_report_v2_final_真的最终版.pdf 的文件。Agent的规则库中同时存在“工作文档”和“临时文件”两个分类,且该文件名包含“最终版”暗示其重要性,但又包含“v2”和“真的”等模糊词。Agent无法判断这是需要保留的正式文档,还是可以清理的冗余副本。
设计实现:如何优雅地暴露不确定性?
1. 置信度阈值机制
Agent在处理每个文件时,应计算一个“归类置信度”(0-100%)。当置信度低于某个阈值(例如85%)时,触发询问流程。
# 伪代码示例
def classify_file(file):
confidence, category = model.predict(file)
if confidence < CONFIDENCE_THRESHOLD: # 例如 85%
ask_user_for_clarification(file, candidates=[category, "其他"])
else:
execute_move(file, category)
2. 提供上下文而非简单提问
直接问“这个文件放哪里?”会让用户感到困惑。更好的方式是提供Agent的推理过程:
Agent提示:“我注意到桌面上有一个名为
final_report_v2_final_真的最终版.pdf的文件。根据命名规则,它可能是‘工作文档’或‘临时文件’。我无法确定它是否是需要长期保留的正式报告。请问您希望将它归入哪个分类?”
这种设计:
- 展示了Agent的思考过程(透明性)
- 给出了有限的选择(减少用户决策负担)
- 承认了自己的局限(谦逊性)
3. 批量处理时的“不确定队列”
当Agent一次性扫描大量文件时,不应逐个打断用户。更好的做法是:
- 先处理所有置信度高的文件
- 将不确定的文件放入一个“待确认队列”
- 在用户空闲时(例如锁屏后解锁时),以摘要形式呈现:
整理摘要:已整理23个文件,还有3个文件无法确定归类:
final_report_v2_final_真的最终版.pdf→ 建议:工作文档 或 临时文件?IMG_2023_备份_副本(2).jpg→ 建议:照片 或 缓存图片?未知来源_奇怪命名.exe→ 建议:应用程序 或 删除?
哲学基础:谦逊的智能
暴露不确定性背后,是对“人类始终是意义的最终裁决者”这一原则的坚守。Agent的智能体现在:
- 知道自己不知道什么(元认知能力)
- 知道如何请求帮助(求助机制)
- 不因追求效率而牺牲准确性(价值优先)
反模式:何时不应暴露不确定性?
- 高度确定的任务:例如将
.mp3文件放入“音乐”文件夹,置信度接近100%,无需询问。 - 可逆操作:如果移动操作可以轻松撤销(例如放入“待分类”临时文件夹),可以先行移动并告知用户。
- 用户明确授权:如果用户已选择“全自动模式”,Agent应减少询问频率。
总结:Checklist 1 评估标准
| 评估维度 | 通过标准 |
|---|---|
| 透明度 | Agent能清晰展示其推理过程和不确定性来源 |
| 时机 | 在合适的时机(非关键打扰)提出询问 |
| 效率 | 提供有限选项,减少用户决策成本 |
| 可配置 | 用户可调整Agent的“谨慎程度”(询问频率) |
最终检验:当用户发现Agent因为不确定而主动询问时,他的第一反应应该是“这个Agent很靠谱”,而不是“这个Agent真笨”。
