← 返回观点

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

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

当用户问“上次到底做了什么”时,最容易出错的做法不是答不上来,而是立刻重探线上系统。如果助理没有先看运行档案,就很可能把“现在看到的状态”误说成“上次实际做过的事”,甚至为一个档案里本来就有答案的问题,重复触发桌面操作、网页检查或外部调用。

这也是 OmniGoAI 的 GoWork 为什么把 recall_run_details 这类运行档案能力放成一等工具。GoWork 不只是保存聊天记录,而是把命令、文件、错误、时间线和产物证据保留下来,让助理在用户追问“刚才那个任务”“上周那个 run”“上次你到底改了什么”时,先基于历史执行事实回答,再决定是否需要碰当前环境。

如果你已经看过 为什么 AI 助理需要记忆、任务历史和回溯能力失败后别重来:让 AI 助理从上次进度继续聊天渠道上下文和运行上下文有什么区别,这篇文章继续回答一个更具体、但在真实协作里特别高频的问题:用户问的是“上次发生了什么”,为什么系统应该优先查运行档案,而不是先去重探线上系统?

先说结论:关于过去执行细节的问题,默认先查档,不默认重探

可以把这个原则记成一句话:

  1. 用户问的是过去那次执行“做过什么、改过什么、失败在哪”;
  2. 如果这些信息理论上属于历史 run;
  3. 那就先查运行档案,而不是先碰现在的系统。

原因很直接:运行档案回答的是历史事实,线上重探回答的是当前状态。 两者都重要,但不是同一个问题。

如果把顺序反过来,通常会带来三类偏差:

  1. 你把“现在看到的样子”错当成“上次做过的动作”;
  2. 你为了一句状态追问,又重复触发了一轮本来不该重跑的操作;
  3. 你明明已经有证据链,却因为没先读档案,反而把答案越答越不准。

为什么“线上重探”不能替代“档案回看”?

因为它们回答的问题根本不同。

运行档案回答的是历史执行事实

运行档案通常关心这些内容:

  • 上次 run 的 trigger 是什么;
  • 当时调用了哪些工具、命令和文件;
  • 具体在哪一步失败或完成;
  • 输出、报错、产物和时间线长什么样;
  • 最后有没有留下截图、路径、artifact 或公开链接。

这些内容一旦丢掉,后面就只能靠猜。

线上重探回答的是当前现场状态

重探线上系统更适合回答这些问题:

  • 现在这个服务是否还在线;
  • 当前页面长什么样;
  • 现在这份文件是否还存在;
  • 当前平台是否已经登录;
  • 刚才那篇内容现在是不是审核中。

这类信息当然有价值,但它只能说明“现在怎么样”,不能自动推回“上次到底发生了什么”。

一个典型误区:把“上次做了什么”和“现在是什么状态”混成一个问题

真人协作里,这两句话看起来很像,但实际上是两类请求:

  • “你上次到底跑了哪些命令?”
  • “你现在再去看看那个系统是什么状态。”

第一句明显是回溯,第二句明显是重探。真正麻烦的是下面这种混合表达:

  • “刚才那个任务怎么弄的?”
  • “上次为什么失败?”
  • “你去看一下你之前发给我的那张图。”
  • “那个任务当时做到哪一步了?”

这些问题表面上像是在继续对话,本质上却在要历史执行证据。如果系统没先识别这一层,就会很容易直接开新工具、看新页面、截新图,最后给出一个关于“现在”的回答,却没有回答“上次”。

为什么运行档案通常比聊天记录更适合回答这类问题?

因为聊天记录主要保存“说过什么”,不一定保存“做过什么”。

聊天文本也许能告诉你:

  • 用户当时提了什么需求;
  • 助手最后回了什么总结;
  • 中途有没有让用户补充东西。

但如果你要回答这些问题:

  • 究竟改过哪几个文件?
  • 那次 shell 命令的 stderr 是什么?
  • 桌面上看到的截图路径或 artifact ID 是多少?
  • 是第 3 步失败,还是第 5 步失败?

单靠聊天记录往往不够。真正能支撑复盘的,还是运行档案里的工具结果、时间线、错误和产物。

这也是为什么 为什么 AI 助理需要记忆、任务历史和回溯能力 一文里强调:聊天记录、任务历史和运行回溯必须分层。你现在问“上次到底做了什么”,优先命中的本来就该是回溯层。

真实协作里,先查档案能避免哪些错误?

1. 避免把历史截图问题答成当前截图问题

在桌面自动化场景里,这个坑特别常见。

用户说“去看原来那张截图”,真正要的是历史证据。如果系统直接重截一张,就可能拿到一个已经变化过的界面,然后误以为自己已经完成了“回看”。

更稳的顺序应该是:

  1. 先查那次 run 有没有保存截图路径或 artifact;
  2. 有的话先 view_image 看原图;
  3. 只有历史图不存在、且用户目标明确要求看当前状态时,才重新截新图。

这里的关键不是“旧图一定更好”,而是用户问的是哪一层事实

2. 避免为一句追问重复触发外部动作

如果用户只是问“上次那个发布任务怎么了”,最合理的第一步通常不是再点一次发布按钮、再重跑一遍构建,甚至也不是再去刷新平台后台,而是先查:

  • 上次 run 的结论是什么;
  • 发布命令是否真正执行过;
  • 当时留下了哪些链接、记录 ID 或失败原因;
  • 系统是否已经在报告里写过答案。

否则一条状态追问,很容易被误执行成一次新的发布动作。这不仅浪费,还可能触发重复内容、平台限频或二次副作用。

3. 避免让用户重复补已经存在的信息

很多追问之所以让人烦,不是因为系统不知道,而是因为系统本来能知道却没先看档案

用户问“上次改了哪个仓库”“你前天那个 run 到底失败在哪”,如果档案里已经有:

  • run ID;
  • 改过的文件;
  • 命令;
  • 错误信息;
  • 关键截图或产物路径;

那再回头让用户重新描述一遍,本质上就是把系统该做的回溯工作又甩回给用户。

为什么这个原则对执行型 AI 特别重要?

因为执行型 AI 的风险不在“答错一段话”,而在“答错后又动手做错一遍”。

普通聊天机器人先猜再答,代价通常只是文本偏差;执行型 AI 如果在没查档案前就重新操作桌面、重新调用工具、重新碰线上环境,代价可能会变成:

  • 重复发布;
  • 覆盖新状态;
  • 用当前结果污染历史判断;
  • 让用户误以为系统已经核对过历史事实。

所以对执行型系统来说,“先查档案”不是保守,而是避免误动作的默认安全路径。

GoWork 为什么适合把这个原则做成系统能力?

因为 GoWork 的目标本来就不是单纯生成回答,而是维护一条可继续、可解释、可回溯的任务链。

这意味着它会把几层信息拆开:

  1. 聊天上下文:用户现在在问哪件事;
  2. 任务历史:最近有哪些相关任务、状态分别是什么;
  3. 运行档案:具体命令、文件、错误、截图和时间线;
  4. 当前执行权限:这轮到底是在查状态,还是应该继续动作。

有了这几层分工,系统才能先回答“历史上发生了什么”,再决定“当前要不要重探现场”。

这和 聊天渠道上下文和运行上下文有什么区别 里讲的是同一个底层原则:聊天上下文帮你理解用户在指什么,运行档案帮你确认那次执行到底做了什么。

什么时候才应该在查档之后再去重探线上系统?

先查档,不等于永远不重探。

真正稳的顺序通常是两段式:

  1. 先查历史档案,确定上次到底发生了什么;
  2. 如果用户还想知道现在状态,再在历史事实基础上重探当前现场。

下面几类情况尤其适合档案 + 重探连用:

1. 用户同时问“上次怎么了”和“现在怎么样”

例如:

  • “上次那个发布任务最后失败在哪?现在恢复了吗?”
  • “你之前说截图里有两个仓库名,现在那个页面还是这样吗?”

这种时候先查档案确定过去,再重探确认现在,才不会把两个时间点混掉。

2. 档案说明结果可能已经过期

比如档案里显示:

  • 某条任务当时是 reviewing
  • 某平台当时登录失效;
  • 某任务 24 小时后再重试。

这类信息天然会变,所以回答时可以先说清档案里的历史结论,再补一句“如果你要,我现在可以继续查当前状态”。

3. 用户明确要求继续动作

如果用户不是在问“上次”,而是在说:

  • “按上次那个失败点继续做”;
  • “你现在就去重新检查”;
  • “把上次停住的那一步接着跑完”;

那查档案就是为了给续跑找锚点,而不是为了停留在只读层。

一个简单判断:该先查档,还是先重探?

可以直接问自己 5 个问题:

  1. 用户问的是过去执行细节,还是当前现场状态?
  2. 这个答案理论上是否已经存在于某次 run 的档案里?
  3. 如果我现在重探,会不会改变现场或制造重复动作?
  4. 我当前拿到的是历史问题,还是需要最新观测值的问题?
  5. 如果不先读档,我会不会把“现在”误说成“上次”?

如果其中 3 个以上答案都指向历史执行,那默认应该先查运行档案。

常见问题

FAQ 1:查运行档案会不会比直接重探更慢?

不一定。对于“上次到底做了什么”这类问题,档案通常反而更快,因为答案已经在那里。重探更慢,而且可能答偏问题。

FAQ 2:聊天记录里不是也有摘要吗,为什么还要专门查运行档案?

因为摘要通常不够细。聊天记录更适合看结论和交流过程;运行档案更适合看命令、文件、错误、产物和时间线。

FAQ 3:什么时候不该停在查档,而该继续重探?

当用户明确要当前状态、当前环境已经可能变化,或者下一步就是基于上次失败点继续执行时,查档之后应该继续重探或续跑。

FAQ 4:GoWork 在这里最大的价值是什么?

不是“把更多日志塞给模型”,而是把聊天、任务、运行档案和后续动作分层,让助理先回答历史事实,再决定当前动作。这会让它更像一个会复盘的同事,而不是一个边猜边重试的输入框。

如果你已经遇到过:用户明明在问“上次到底发生了什么”,系统却直接又去碰线上环境、重跑桌面动作,最后还没答到点子上,那你缺的通常不是更会说话的模型,而是一条“先查档、再行动”的执行原则。想继续看 GoWork 怎样把这条链做完整,可以接着读 为什么 AI 助理应该在聊天里回答“任务到哪了”失败后别重来:让 AI 助理从上次进度继续,以及 GoWork 下载页

#GoWork#运行档案#任务回溯#AI 助理

更多文章

11 分钟

任务委派和本地执行怎么选?GoWork 的边界

任务委派和本地执行不是同一件事。本文解释 GoWork 里什么情况该让 runtime 接手,什么情况应由本地 assistant 直接完成,以及这条边界为什么决定执行效率与结果可信度。

阅读