← 返回观点

用户只问“现在到哪了”时,为什么不该重跑任务

用户只是在问任务进度时,最稳的处理方式通常是读取当前 run 的状态摘要与 recent events,而不是重新操作桌面、重开网页或重跑整条任务。本文解释这种边界为什么决定执行型 AI 助理的稳定性。

当用户只是在问“现在到哪了”时,最容易把事情做坏的动作,不是回答得慢一点,而是为了回答进度,顺手又把任务重跑了一遍。对执行型 AI 助理来说,状态查询本质上是只读请求:先看当前活动 run 的状态摘要、最近事件和已知结果,再决定是否真的需要继续动作。把“问进度”误判成“继续执行”,会直接制造重复点击、重复发布、重复构建和额外副作用。

这也是 OmniGoAI 的 GoWork 为什么把状态问答和执行动作明确分层。GoWork 不是简单地把聊天和工具硬绑在一起,而是要求 assistant 先判断:用户现在是在要一个观测值,还是在给一个新指令。 如果问题只是“现在到哪了”“还要多久”“刚才那个任务跑得怎么样”,正确的第一步通常是读活动 run 的 recentEvents、任务摘要和当前等待原因,而不是重新去碰桌面、重开页面或再触发一次工具链。

如果你已经看过 桌面任务排队不等于串行系统:GoWork 如何同时并行多任务又避免抢鼠标用户问上次做了什么时,为什么先查运行档案失败后别重来:让 AI 助理从上次进度继续,这篇文章继续回答一个更高频、也更容易被做错的问题:为什么用户只问进度时,系统不该为了“看一眼”而把任务重新触发。

先说结论:状态问题默认只读,默认不重触发执行

可以先记住这条判断:

  1. 用户问的是“现在到哪了”“还要多久”“上面那个跑完没有”;
  2. 问题目标是获得当前进度,而不是要求新动作;
  3. 那就先读取已有状态,而不是重新操作环境。

这条原则看起来保守,实际上更高效。因为状态查询回答的是“系统已经知道什么”,重跑任务回答的是“如果我现在再做一次会发生什么”。两者并不是一个问题。

一旦把两者混在一起,最常见的后果有三种:

  1. 用户只是问进度,你却又触发了一次副作用;
  2. 正在运行的任务被自己的“状态查询”打断;
  3. 你最后给出的答案,混进了新一轮动作的结果,不再是“刚才那条任务”的真实状态。

为什么“现在到哪了”通常是只读请求?

因为它想要的是系统当前已经持有的执行事实。

用户问进度时,通常真正关心的是:

  • 当前任务卡在哪一步;
  • 已经完成了哪些子步骤;
  • 现在是在运行、排队、等待用户还是已经结束;
  • 还有没有错误、超时或等待原因;
  • 大概离完成还有多远。

这些信息在一个设计正常的执行系统里,本来就应该来自:

  1. 当前活动 run 的状态;
  2. 最近几条用户可见事件;
  3. 已记录的阶段性摘要;
  4. 当前资源占用与等待原因。

换句话说,状态问题最应该命中的,是“已经产生的执行元数据”,而不是新的执行动作。

为什么“为了回答状态而重跑一次”会出事?

因为执行型 AI 的风险不只是答错一句话,而是会真的再动一次手。

1. 它会把只读问题变成有副作用的问题

假设一个任务正在桌面上发布文章,用户此时只问一句“现在到哪了”。

如果 assistant 正确处理,它只需要读取当前 run 的进度,回答例如:

  1. 官网部署已完成;
  2. 现在在等 OmniPost 发布结果;
  3. 还没进入记录和 Git 提交步骤。

但如果 assistant 为了“确认一下”,又去重新点桌面、刷新发布页、重开应用,状态查询就被错误升级成了一次真实操作。对外部系统来说,这不是“看一眼”,而是新的交互。

2. 它会污染原任务的现场

很多任务之所以能继续推进,靠的是当前现场保持不变:

  • 某个窗口还停在上一步;
  • 某个会话还保持登录态;
  • 某个后台命令还在跑;
  • 某个网页还停留在待确认页面。

如果你为了回答“现在到哪了”又重新点击、切窗或刷新,就可能把原本稳定的现场改掉。最后用户问的是状态,你给出的却是自己新制造出来的状态。

3. 它会让“当前状态”和“新一轮尝试”混在一起

用户问进度时,理想答案应该能清楚地区分:

  • 已完成什么;
  • 正在做什么;
  • 还没做什么。

如果 assistant 在回答前又触发了一次动作,就会出现这种混乱:

  1. 你本来在描述 run A;
  2. 但中间又做了 run A 的一次局部重试;
  3. 最终回答既不是纯粹的 run A 状态,也不是一个明确的新任务结果。

对用户来说,这种混合答案最难理解,也最难信任。

一个关键区别:用户是在问进度,还是在让你继续做?

这两类话表面相似,执行含义却完全不同。

只读状态问题通常长这样

例如:

  • “现在到哪了?”
  • “还要多久?”
  • “刚才那个任务跑得怎么样?”
  • “上面那个做完没有?”
  • “你现在卡在哪一步?”

这些表达的核心都是:告诉我当前状态。

继续执行指令通常长这样

例如:

  • “继续。”
  • “你现在就去检查一次。”
  • “按上次失败点接着跑。”
  • “重试刚才那步。”
  • “把剩下的做完。”

这些表达的核心才是:请开始新的动作。

真正麻烦的是那些边界模糊的话,比如“刚才那个你再看一下”。这时最重要的不是立刻动手,而是先判断:用户到底是在要最新观测,还是只是在问已有进度。如果不用动手就能回答,就不该为了保险起见先动手。

在 GoWork 里,状态查询为什么应该优先读 recent events?

因为 recent events 通常就是离“当前进度”最近的一层事实。

一个正在运行的任务,往往已经留下这些可读线索:

  • 最近完成的步骤;
  • 当前步骤的标题或摘要;
  • 最新一条用户可见进展;
  • 是否在等待审批、澄清、资源或外部系统;
  • 最近一次失败或重试发生在哪。

对“现在到哪了”这种问题来说,这些信息已经足够生成一个准确答案。它的优势在于:

  1. 只读,不会改变现场;
  2. 贴近当前,比看老档案更适合回答“现在”;
  3. 成本低,不需要重新触发桌面、网页或 shell;
  4. 可解释,能直接把系统当前看到的阶段讲给用户听。

也正因为如此,状态查询类请求如果反而重新去操作桌面,本质上是在绕过系统已经有的最佳证据层。

为什么这条原则在桌面任务里尤其重要?

因为桌面资源是独占的,状态查询不该去抢它。

在 GoWork 的调度模型里,真正需要串联的是鼠标、键盘、前台焦点和屏幕状态。如果另一个 run 正在做桌面发布、登录或下载流程,而你只是来回答“现在到哪了”,最合理的做法是:

  1. 继续让桌面任务占着独占资源;
  2. 通过只读状态并行回答用户的问题;
  3. 不为了一句进度追问,再去触发任何桌面动作。

这也是为什么 桌面任务排队不等于串行系统:GoWork 如何同时并行多任务又避免抢鼠标 一文里强调:查状态和重新操作桌面不是同一种请求。 前者应该尽量并行回答,后者才需要排队拿资源。

什么时候状态问题不该只读,而应该继续动作?

先读状态,不等于永远不动作。关键在于用户到底有没有明确把问题升级成行动请求。

下面三类情况,通常应该在读完状态后继续做:

1. 用户明确要求“继续”或“重试”

如果用户说的是:

  • “继续做”;
  • “重试刚才失败的那一步”;
  • “你现在去重新看一遍页面”;

那就不再是纯状态问题,而是新的执行指令。此时状态信息只是续跑的锚点,不是最终答案。

2. 现有状态本身不足以回答问题

有时系统里只有“运行中”这种粗粒度状态,但用户问的是更具体的事,比如:

  • “现在是不是已经到发布页了?”
  • “日志里刚才到底报了什么错?”

如果已有摘要不够细,就应该先读更贴近证据的层:运行历史、命令输出、错误记录或截图,而不是立刻重跑。只有这些证据都不够时,才考虑重新观测现场。

3. 当前状态天然会过期

例如某条任务显示:

  • 正在等待第三方审核;
  • 后台命令仍在运行;
  • 发布结果可能几分钟后改变。

这类场景下,可以先回答“目前系统记录到这里”,再补一句“如果你要,我现在可以继续检查最新状态”。这样既不混淆时间点,也不会假装系统已经重新看过。

一个常见误区:把“看状态”理解成“再跑一遍探针”

这是执行型系统最容易滑进去的坏习惯。

很多人会想:为了保证答案新鲜,我先再点一下、再查一下、再刷新一下,总不会错吧?问题在于,新的探针不是免费的

它可能带来:

  1. 再次触发接口;
  2. 再次占用桌面;
  3. 打断正在进行的步骤;
  4. 让“状态回答”夹带新的副作用。

对于聊天机器人,这种代价也许只是多花一点时间;对于执行型 AI,这常常意味着真的多做了一次事。所以默认顺序应该是:

  1. 先看已有状态;
  2. 再看更细的历史证据;
  3. 只有当用户明确要最新观测,或已有信息确实不够时,才重新探测。

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

因为用户很容易分辨一件事:你是在回答我的问题,还是在把我的问题变成新的动作。

如果用户只问“现在到哪了”,而系统每次都要重新点、重新跑、重新刷新,用户很快就会失去两层信任:

  1. 对结果的信任:这到底是旧任务的状态,还是你刚刚又做出来的新结果?
  2. 对边界的信任:我只是问一句进度,你为什么又动了我的任务?

反过来,一个更稳的执行系统会表现得像一个成熟同事:

  • 先复述当前已知状态;
  • 说清楚卡在哪;
  • 只有在确实需要时,才继续动作。

这会让用户感觉自己在和一个会区分“汇报”和“动手”的助手合作,而不是和一个一被追问就条件反射重跑流程的自动机合作。

一个简单判断:现在该回答状态,还是该继续执行?

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

  1. 用户这句话是在问进度,还是在下继续执行的指令?
  2. 当前答案是否已经存在于 run 状态、recent events 或历史记录里?
  3. 如果我现在重跑一次,会不会产生副作用或打断现场?
  4. 用户要的是“当前已知状态”,还是“最新重新观测值”?
  5. 不动手的情况下,我能不能已经给出一个真实、具体、可解释的回答?

如果其中 3 个以上都指向“已有状态足够回答”,那默认就不该重触发任务。

常见问题

FAQ 1:用户问“现在到哪了”,是不是说明他在催我继续做?

不一定。很多时候他只是想知道当前进度,而不是要你重新执行。先回答状态,再看是否需要继续动作,通常比直接重跑更稳。

FAQ 2:为了保证答案最新,先再检查一次不是更保险吗?

不一定。对执行型 AI 来说,新的检查可能真的会触发新的动作、占用桌面或打断现场。能用已有状态回答时,先只读更安全。

FAQ 3:什么时候状态问题应该升级成执行动作?

当用户明确说“继续”“重试”“现在就去看”“按上次失败点接着做”时,问题已经从状态查询变成执行指令,此时才应该继续动作。

FAQ 4:如果当前状态太粗,不足以回答怎么办?

先读更细的证据层,比如 recent events、错误记录、命令输出、任务历史或运行档案,而不是立刻重跑。只有现有证据都不够时,才考虑重新观测。

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

不是单纯“把任务跑起来”,而是把状态、历史和动作分层,让 assistant 先回答当前已知事实,再决定是否继续执行。这会显著减少无意义重跑和意外副作用。

如果你的团队已经遇到过这种情况:用户只是问“现在到哪了”,系统却重新点了一遍页面、重开了一轮任务,最后既打断了原流程,也没把状态说清楚,那你缺的通常不是更激进的自动化,而是一条更清晰的执行边界:状态问题默认只读,继续动作必须另有依据。 想继续看 GoWork 如何把状态问答、运行历史和续跑衔接成一条稳定链路,可以接着阅读 用户问上次做了什么时,为什么先查运行档案失败后别重来:让 AI 助理从上次进度继续,以及 GoWork 下载页

#GoWork#任务状态#AI 助理#执行调度

更多文章

11 分钟

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

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

阅读