我用OpenClaw替换了自研的Agent调度,代码量从2000行变成20行配置

0 阅读4分钟

我用OpenClaw替换了自研的Agent调度,代码量从2000行变成20行配置

先说结论:这不是标题党。我们团队花了三个月写的多Agent调度器,被一个开源项目用20行YAML干掉了。

背景:为什么我们要自己写调度器

半年前,我们在做一个智能客服系统,需要多个Agent协作:意图识别Agent、知识检索Agent、话术生成Agent、情感安抚Agent。

最开始的想法很简单——写个调度器串起来就行。

结果越写越复杂:Agent之间要传递上下文、要处理超时重试、要动态调整执行顺序、要支持并行和串行混合……三个月后,调度器代码膨胀到2000多行,还经常出bug。

OpenClaw是什么

GitHub上搜Multi-Agent Orchestration,你会找到这个项目。

核心思路很简单:把Agent调度抽象成有向无环图(DAG) 。每个Agent是一个节点,节点之间的依赖关系用配置文件描述,框架负责调度执行。

这不是什么新概念,但OpenClaw做了几件关键的事:

1. 声明式配置

你不需要写代码告诉它"先执行A,等A完成后执行B和C,B和C都完成后执行D"。直接在YAML里声明依赖关系,框架自动推断执行顺序和并行策略。

2. 内置状态机

Agent执行失败怎么办?重试几次?降级到备用Agent?这些逻辑不用你写,配置里指定就行。

3. 上下文自动传递

Agent A的输出怎么传给Agent B?以前我们要手动序列化、反序列化、处理格式兼容。现在框架统一管理上下文,自动完成传递。

2000行变20行,具体怎么变的

之前我们的调度代码大概长这样(伪代码):

## 初始化各种Agent
## 定义执行顺序
## 处理并行逻辑
## 处理错误重试
## 处理超时
## 处理上下文传递
## 处理结果聚合
## ... 省略1500行

换成OpenClaw后:

agents:
  - name: intent_recognition
    type: llm
    next: [knowledge_retrieval, emotion_detection]
  
  - name: knowledge_retrieval
    type: rag
    depends_on: [intent_recognition]
    
  - name: emotion_detection
    type: llm
    depends_on: [intent_recognition]
    
  - name: response_generation
    type: llm
    depends_on: [knowledge_retrieval, emotion_detection]
    retry: 3
    timeout: 30s

就这么多。调度、并行、重试、超时,框架全包了。

它的调度算法原理

拆开看其实不复杂:

拓扑排序:根据依赖关系生成执行顺序,这是DAG调度的基础。

并行检测:没有依赖关系的节点自动并行执行。上面例子里,knowledge_retrieval和emotion_detection就是并行的。

动态规划:运行时根据实际完成情况调整后续节点的执行时机,避免空等。

背压控制:下游Agent处理不过来时,自动限制上游的输出速度。

这些算法单独拿出来都不难,难的是工程实现——状态一致性、异常处理、资源隔离。OpenClaw把这些脏活累活都做了。

在Sealos上一键部署

我们生产环境跑在Sealos上,部署过程极简:

第一步:进入应用市场

Sealos桌面→应用商店→搜索"Clawdbot - AI 智能体网关 ****"

第二步:点击部署

选择规格(我们用的2核4G,够跑20个并发Agent了),点部署。

第三步:配置Agent定义

部署完成后,进入应用详情,在配置管理里上传你的YAML文件。

第四步:调用API

应用会自动分配一个内网域名,直接调用就行。

整个过程不超过5分钟。不需要装K8s,不需要配ingress,不需要管证书——Sealos全给你处理了。

适用场景和局限

适合的场景

  • Agent数量多(5个以上)

  • 依赖关系复杂

  • 需要动态调整执行流程

  • 对可观测性要求高

不太适合的场景

  • 只有2-3个Agent,手写反而更简单

  • 需要深度定制调度策略

  • 对延迟极端敏感(框架本身有几毫秒开销)

写在最后

我不是说自研调度器没价值。如果你们的场景足够特殊,自研可能是唯一选择。

但对于80%的多Agent场景,用成熟的编排框架是更理性的选择。省下来的时间,用来优化Agent本身的能力,收益更高。


如果你也在做多Agent系统,可以去GitHub上看看这个项目。觉得有用的话,给个star。