我的两个 AI 任务一直在争夺同一个鼠标
并行智能体演示看起来很棒,直到两个任务试图使用同一个鼠标。
一个任务登录网站。另一个打开浏览器。第三个任务试图回答一个简单的问题。突然,系统点击了错误的位置或报告失败。这不是智能问题,而是资源问题。
在构建 CliGate 时,我从桌面自动化中吸取了一个惨痛的教训。
代码任务可以并行运行。你可以在运行时会话工作时查询天气。后台摘要不需要阻塞任何内容。
桌面环境则不同。你只有一个键盘、一个鼠标和一个屏幕。如果两个智能体都认为自己拥有该界面,它们就会互相干扰。
我的第一直觉是在新任务到达时取消旧任务。这是错误的。
用户询问“进行到哪一步了?”时不应该终止登录流程。用户询问天气时不应该停止桌面任务。最糟糕的 Bug 发生在智能体看到另一个正在运行的任务,并意外地取消了自己。
我必须停止将并发视为提示词问题,而必须将其视为资源问题。
我制定了三条新规则:
- 独立任务并行运行。
- 需要使用桌面的任务必须排队。
- 只有在用户要求时才进行取消。
在 CliGate 中,桌面输入的工作方式类似于一种“租约”机制。如果一个任务使用了鼠标,它就持有该租约。其他任务必须等待。
新逻辑遵循以下流程:
- 新任务到达。
- 它需要桌面吗?
- 如果不需要,则并行运行。
- 如果需要且桌面空闲,则占用它。
- 如果需要且桌面忙碌,则将其排队。
- 只有当用户说停止时才取消。
这一改变将令人困惑的失败转变为可预测的行为。助手不再通过重试点击来造成更多干扰,而是如实告知:“桌面正忙。我已进入队列,将在空闲时开始。”
我还添加了一条规则来防止自我取消。智能体绝不能将其自身正在运行的任务列为取消目标。
在构建 AI 工具时,如果你试图表现得过于聪明,往往会失败。用户不需要魔法,他们需要简单的逻辑:
- 如果任务不冲突,就让它们运行。
- 如果它们在物理资源上发生冲突,就让它们排队。
- 如果用户询问状态,就提供状态。
- 如果用户说停止,就停止。
如果你的 AI 需要操作桌面,请记住这一点:并行任务没问题,但物理资源需要所有权。
来源:https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij