← 返回观点

追问之前先回忆:什么时候该读记忆,什么时候才该向用户补问题

当 AI 助理看起来“信息不够”时,最稳的默认动作并不是立刻追问用户,而是先检查记忆、历史记录和已知线索。本文解释什么时候该先 recall,什么时候才该 clarification。

当 AI 助理看起来“还缺信息”时,最容易做错的一步,往往不是答错,而是问得太快。先说结论:如果答案有相当概率已经存在于记忆、历史任务、运行档案或当前上下文线索里,默认应该先回忆,再决定是否追问;只有当系统已经检查过这些来源,仍然缺少继续执行所需的信息时,clarification 才是正确下一步。

这也是 OmniGoAI 的 GoWork 为什么把记忆召回、运行回溯、近期通知定位和结构化 clarification 分成不同能力层。GoWork 不是一个“信息一缺就立刻反问”的聊天机器人,而是一个执行型助理:它应该先用自己已经拥有的上下文去补足用户刚才没有重复说出的部分,再把真正缺失、且只有用户能提供的信息收回来。追问的目标不是把系统懒得查的事重新丢给用户,而是只补系统确实拿不到的那一块。

如果你已经看过 Web 对话里什么时候该用表单追问用户问上次做了什么时,为什么先查运行档案用户只问“现在到哪了”时,为什么不该重跑任务,这篇文章继续回答另一个更基础的问题:什么时候该先读记忆,什么时候才该向用户补问题?

先给结论:缺信息不等于立刻追问

可以先记住这个顺序:

  1. 先判断答案是否可能已经存在;
  2. 存在就先读记忆、历史或上下文;
  3. 确认真的没有之后,再向用户追问。

这个顺序之所以重要,是因为“系统现在没想起来”不等于“系统从来不知道”。

很多协作里的信息缺口,其实属于下面几类:

  • 用户以前已经说过;
  • 系统以前已经做过;
  • 某次 run 留下了记录、文件、截图或日志;
  • 当前上下文里已经有明确线索,只是还没被读取。

如果这些信息本来就在系统可达范围内,直接向用户追问,本质上就是让用户替系统做一次本该由系统完成的检索工作。

为什么“先回忆”对执行型 AI 特别重要?

因为执行型 AI 的成本,不只是多问一句话。

当一个普通聊天机器人问错问题,代价常常只是对话多绕两轮;但执行型 AI 如果在没先回忆的情况下就追问,通常会同时带来三类问题:

  1. 打断流程:原本可以继续执行的任务,被不必要地挂起;
  2. 增加用户负担:用户被迫重复自己已经说过的事实;
  3. 暴露系统边界感差:系统明明应该先查,却把检索责任甩给用户。

这也是为什么在 GoWork 里,记忆召回不是“锦上添花”,而是 clarification 之前的默认检查项。好的追问,发生在系统已经尽力回忆之后;坏的追问,发生在系统什么都还没查之前。

哪些信息最应该先从记忆里找,而不是立刻问用户?

一个实用判断法是:如果你怀疑答案以前出现过、而且现在问用户只会让他重复一遍,那就先 recall。

1. 用户长期偏好、规则和约定

例如:

  • 默认用中文还是英文;
  • 默认工作目录;
  • 常用平台、账号、目标渠道;
  • 之前约定好的输出格式;
  • 用户曾明确要求“以后都这样”。

这类信息一旦被记住,就不该在每次任务里重新问。否则用户会立刻感到系统“没有持续记忆”。

2. 用户以前给过的事实性信息

例如:

  • 某个项目仓库在哪;
  • 某个平台要发到哪个账号;
  • 某篇文章、某个文件、某个任务曾经对应什么对象;
  • 用户之前说过的偏好范围、禁区或例外规则。

这些内容的共同点是:答案应该是稳定的事实,而不是当前临时决策。 对这种信息,默认先查记忆或历史,比再问一次更自然。

3. 上一次执行已经产出的结果

例如:

  • 刚才发布生成了哪个链接;
  • 上次失败发生在哪一步;
  • 那个截图保存在哪里;
  • 某个 run 到底改了哪些文件。

这类问题常常不只是“记忆”,还可能属于运行档案或任务历史。和 用户问上次做了什么时,为什么先查运行档案 讲的一样,只要答案理论上应该在历史证据里,优先查历史,而不是优先问人。

什么时候即使有记忆,也不能直接拿来当答案?

先回忆,不等于盲信记忆。

记忆适合当起点,但不总能直接当终点。尤其遇到下面几种情况时,正确动作通常是“先 recall,再核对”。

1. 这条信息可能已经变化

例如:

  • 登录态是否还有效;
  • 某个任务现在是不是已经完成;
  • 某个平台配置是否仍然存在;
  • 某篇文章的审核状态有没有变化。

这些答案会随时间变动。此时记忆最多告诉你“上次是什么”,不能直接替代“现在是什么”。

2. 记忆只是线索,不是完整正文

有时系统先召回的是标题、topic 或一条 memory index 线索。它说明“这里可能有答案”,但不等于你已经读到了答案正文。

这时最容易犯的错是:

  1. 看见标题像相关;
  2. 就直接说“我不知道”或者立刻追问;
  3. 却没有先把这条记忆真正读出来。

更稳的流程应该是:只要索引里还有相关线索没读,先 recall 正文,再决定是否足够回答。

3. 这条记忆会直接影响高风险动作

例如正式发布、删除数据、改时间、改目标对象这类动作,即使记忆里有旧偏好,也要确认它是否仍然适用于这次任务范围。记忆能帮你减少无意义追问,但不能替代对当前任务边界的判断。

什么时候才应该进入 clarification?

clarification 真正适合的是另一类信息:系统已经尽力检查过已有来源,但继续执行仍然缺一块只有用户本人能提供的内容。

常见情况包括三类。

1. 缺少新的决策,而不是旧事实

例如:

  • 这次是要发正式版还是草稿;
  • 两个平台只能选一个时用户更看重哪个;
  • 这份报告要按 7 天还是 30 天统计;
  • 这次到底优先速度、准确性还是成本。

这些答案不是旧记忆里“应该已经有”的固定事实,而是当前任务的新选择。

2. 缺少只有用户掌握的外部信息

例如:

  • 登录验证码;
  • 新的凭据或密钥;
  • 某个只有用户知道的日期、人数、预算;
  • 用户刚刚才决定的目标对象。

这种情况下,系统再怎么 recall 也拿不到,因为答案本来就不在系统可访问范围里。

3. 缺少会导致实质不同结果的关键字段

例如:

  • 时间和日期;
  • 发布平台和发布模式;
  • 要改哪一个任务;
  • 是重试旧任务还是另开一个新任务。

这类字段如果填错,结果就会显著不同。此时 clarification 的作用不是“补一点背景”,而是把执行分叉点问准。

一个关键边界:缺的是“答案”,还是“定位答案的钥匙”?

这可以帮助你快速判断该 recall 还是该 clarification。

如果缺的是答案本身,而且答案很可能已经存在

优先 recall。

例如:

  • 用户以前默认用什么语言;
  • 上次 run 改了什么文件;
  • 某个项目的默认路径;
  • 之前存过的操作流程。

如果缺的是定位钥匙,系统无法自己补齐

优先 clarification。

例如:

  • “那个任务”具体指哪个;
  • “下周”到底从哪一天算;
  • “这个平台”到底是知乎还是掘金;
  • “帮我继续”是继续当前 run,还是重开一个。

这类问题的难点,不是系统没记忆,而是当前指代本身还没被解开。没有这个钥匙,系统甚至不知道该去哪一份记忆里找。

为什么很多无效追问,本质上是把“检索问题”错当成“信息缺失问题”?

这是执行型 AI 最常见的坏习惯之一。

用户说一句“上次那个”“刚才那个平台”“按之前那个规则来”,系统表面上会觉得“信息不完整”。但真正的问题常常不是用户没给信息,而是系统还没做检索。

比如:

  • “上次那个”可能可以通过最近通知定位到具体任务;
  • “按之前那个规则”可能是记忆里已经存好的 standing directive;
  • “那个平台”可能从最近任务上下文里已经唯一可判定;
  • “继续刚才那个”可能可以通过 recent run 或 run archive 找到明确对象。

如果一个问题本质上可以通过检索解决,却被系统直接升级成 clarification,用户就会觉得自己在替系统当数据库。

一个简单流程:先查四层,再决定要不要问

在 GoWork 这种执行系统里,遇到“信息似乎不够”时,通常可以按下面顺序检查:

  1. 当前上下文:这轮对话、触发文本、最近工具结果里有没有直接答案;
  2. standing memory / memory index:用户长期规则、已召回线索里有没有命中;
  3. 任务历史 / 运行档案:上次任务、最近通知、历史 run 里有没有证据;
  4. 仍然缺失的关键字段:确认哪些部分真的只能由用户补充。

走完这四层之后,再决定是否 clarification,追问质量会高很多。因为此时你问的是“真正还缺的那一个点”,而不是把整块检索工作外包给用户。

结构化 clarification 最适合解决什么问题?

当系统已经确认必须问用户时,下一步才是决定怎么问。

如果缺的是两个及以上明确字段,例如:

  • 日期 + 时间;
  • 平台 + 发布模式;
  • 起止时间 + 导出格式;
  • 任务对象 + 是否继续原任务。

那就很适合走结构化 clarification。这里可以直接参考 Web 对话里什么时候该用表单追问

但请注意:“适合表单”这个判断,发生在“已经确认必须问用户”之后,而不是发生在“还没查记忆”之前。 先 recall,再决定问法,顺序不能反。

为什么这条边界会直接影响用户信任?

因为用户很容易区分两种体验:

  1. 系统先自己查了一遍,只来问我真正缺的那一项;
  2. 系统什么都没查,上来就让我再说一遍。

前一种体验会让人感觉系统真的在协作;后一种体验会让人感觉系统只是把聊天窗口当作参数输入框。

尤其在长期使用里,用户对“记忆感”的感受并不来自模型会不会背知识,而来自这种很具体的细节:

  • 你有没有记住我之前说过的规则;
  • 你有没有先看上次做过什么;
  • 你会不会在能自己查的时候还反复问我。

所以对执行型 AI 来说,clarification 的质量,不只体现在表单设计或问句措辞上,更体现在它是不是最后手段,而不是第一反应。

常见问题

FAQ 1:只要有记忆,就一定不能追问吗?

不是。记忆只说明“可能有答案”,不保证答案仍然有效,也不保证已经足够当前任务继续执行。先 recall 是默认动作,但 recall 之后仍然缺关键字段时,当然应该继续 clarification。

FAQ 2:如果 memory index 里只有相关标题,没有正文,算已经查过了吗?

不算。标题只是一条线索,不是答案本身。只要还有明显相关的线索没读,就不该直接说“不知道”或立刻让用户重填一遍。

FAQ 3:什么样的问题最不该直接追问用户?

最不该直接追问的,通常是用户以前已经明确给过、而且系统自己可以通过记忆、运行档案或近期上下文检索到的内容。让用户重复这类信息,最容易破坏协作体验。

FAQ 4:什么时候 clarification 是更好的第一步?

当缺的是新的决策、当前任务的关键分叉字段,或只有用户本人知道的外部信息时,clarification 就是正确的第一步,因为 recall 根本拿不到答案。

最后,如果你想让一个 AI 助理真正像“会协作的人”,而不只是“会追问的界面”,关键不在于它能不能一直提问题,而在于它能不能先自己做完该做的回忆与检索。先 recall,再 clarification,才是执行型助理更稳的默认顺序。

想进一步了解 GoWork 如何把记忆、回溯和执行放进同一个聊天工作流,可以直接访问下载页:<https://omnigoai.com/zh/download/gowork/>。

#GoWork#记忆召回#clarification#AI 助理

更多文章

11 分钟

用户问上次做了什么时,为什么先查运行档案

用户追问上次到底做了什么时,最稳的做法不是重探线上系统,而是先查运行档案。本文解释为什么执行档案比即时重试更可靠,以及 GoWork 如何把这件事做成可复用的协作链。

阅读