我的两个 AI 任务一直在争夺同一个鼠标
并行智能体演示看起来很美好,直到两个任务开始争夺同一个鼠标。
一个任务在登录网站,另一个任务在打开浏览器,第三个任务试图回答一个简单的问题。突然间,系统点击了错误的位置,或者取消了错误的运行。这不是提示词(prompt)的问题,而是资源问题。
我在构建 CliGate 时意识到了这一点。我发现,虽然代码任务可以并行运行,但桌面环境却不同。你只有一个键盘、一个鼠标和一个屏幕。如果两个智能体试图同时占用这个界面,它们就会互相干扰。
我最初的想法是在新任务到达时取消旧任务。这是一个错误。用户请求状态更新时不应该终止登录进程。
我不得不改变规则。
智能体可靠性的新规则:
- 独立任务并行运行。
- 需要使用桌面的任务必须排队。
- 只有在用户要求时才进行取消。
在 CliGate 中,桌面输入采用“租约”机制。一个任务占用桌面,其他任务则等待轮到自己。
新逻辑如下:
- 新任务到达。
- 它需要使用桌面吗?
- 如果不需要,则并行运行。
- 如果需要且桌面空闲,则占用它。
- 如果需要且桌面正忙,则加入队列。
- 只有在用户说停止时才停止。
重试可能会让情况变得更糟。如果一个任务在另一个任务正在输入时不断尝试夺取鼠标,就会产生干扰。解决办法不是加大重试力度,而是保持诚实。助手应该说:“桌面正忙。我正在排队。空闲时我会开始。”
这将失败转化为了可预测的行为。
我还增加了一条硬性规则:智能体不能取消自身。这可以防止智能体因为恐慌而点击了自己的“关闭开关”。
构建 AI 工具通常在于朴实而非巧妙。
- 如果任务不冲突,就让它们运行。
- 如果它们在物理资源上发生冲突,就让它们排队。
- 如果用户询问状态,就提供状态。
- 如果用户说停止,就停止。
这让助手感觉更像人类。它不再争夺控制权,而是开始像一个懂得区分“问题”与“指令”的操作员一样行事。
如果你的 AI 需要操作桌面,请记住这一点:并行任务没问题,但物理资源需要所有权。
来源:https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij
可选学习社区:https://t.me/GyaanSetuAi