我的两个 AI 任务一直在争夺同一个鼠标

并行智能体演示看起来很棒,直到两个任务试图使用同一个鼠标。

一个任务登录网站。另一个打开浏览器。第三个任务试图回答一个简单的问题。突然,系统点击了错误的位置或报告失败。这不是智能问题,而是资源问题。

在构建 CliGate 时,我从桌面自动化中吸取了一个惨痛的教训。

代码任务可以并行运行。你可以在运行时会话工作时查询天气。后台摘要不需要阻塞任何内容。

桌面环境则不同。你只有一个键盘、一个鼠标和一个屏幕。如果两个智能体都认为自己拥有该界面,它们就会互相干扰。

我的第一直觉是在新任务到达时取消旧任务。这是错误的。

用户询问“进行到哪一步了?”时不应该终止登录流程。用户询问天气时不应该停止桌面任务。最糟糕的 Bug 发生在智能体看到另一个正在运行的任务,并意外地取消了自己。

我必须停止将并发视为提示词问题,而必须将其视为资源问题。

我制定了三条新规则:

  • 独立任务并行运行。
  • 需要使用桌面的任务必须排队。
  • 只有在用户要求时才进行取消。

在 CliGate 中,桌面输入的工作方式类似于一种“租约”机制。如果一个任务使用了鼠标,它就持有该租约。其他任务必须等待。

新逻辑遵循以下流程:

  • 新任务到达。
  • 它需要桌面吗?
  • 如果不需要,则并行运行。
  • 如果需要且桌面空闲,则占用它。
  • 如果需要且桌面忙碌,则将其排队。
  • 只有当用户说停止时才取消。

这一改变将令人困惑的失败转变为可预测的行为。助手不再通过重试点击来造成更多干扰,而是如实告知:“桌面正忙。我已进入队列,将在空闲时开始。”

我还添加了一条规则来防止自我取消。智能体绝不能将其自身正在运行的任务列为取消目标。

在构建 AI 工具时,如果你试图表现得过于聪明,往往会失败。用户不需要魔法,他们需要简单的逻辑:

  • 如果任务不冲突,就让它们运行。
  • 如果它们在物理资源上发生冲突,就让它们排队。
  • 如果用户询问状态,就提供状态。
  • 如果用户说停止,就停止。

如果你的 AI 需要操作桌面,请记住这一点:并行任务没问题,但物理资源需要所有权。

来源:https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij