返回
AI AgentOPEN CLAW

800 行代码实现 Open Claw 的 Tool、消息总线、子 Agent 管理架构

大淘宝技术介绍了用约800行TypeScript实现Open Claw轻量级单进程Agent框架的Tool、消息总线、子Agent管理和REPL主循环设计。

BestBlogs · Agent 关键词45 分钟阅读中文
阅读原文
800 行代码实现 Open Claw 的 Tool、消息总线、子 Agent 管理架构
TL;DR: 大淘宝技术介绍了用约800行TypeScript实现Open Claw轻量级单进程Agent框架的Tool、消息总线、子Agent管理和REPL主循环设计。
以下为 BestBlogs · Agent 关键词 原文(中文

📌 一句话摘要

        本文详细介绍了基于 Anthropic Claude API、用 TypeScript 编写的轻量级单进程 Agent 框架 Open Claw 的核心架构,重点阐述了 Tool 系统、消息总线、子 Agent 管理和 REPL 主循环四个模块的设计与实现。

    

        
            📝 详细摘要
        

        本文来自大淘宝技术团队,记录了对开源 Agent 框架 Open Claw 的研究与最小可运行实现。文章核心观点是:对于 Tool 调用、消息分发、子 Agent 管理这三类 Agent 系统的核心组件,优先采用薄抽象、显式控制流和贴近模型 API 的实现方式,比引入多层中间件更容易获得工程上的确定性。文章详细介绍了四个核心模块:Tool 抽象与 ToolRegistry(统一的工具注册和调用接口,通过 exclude() 实现能力隔离)、MessageBus 入站消息总线(支持 subscribe 实时回调和 drain 轮询两种消费模式)、SubagentManager 子 Agent 管理(基于 Promise 的并发模型,独立 ReAct 循环,通过 MessageBus 回传结果)、以及 REPL 主循环(互斥锁 + 暂存队列保证 history 一致性)。文章还坦诚讨论了设计中的有意取舍与局限,如零框架依赖、schema 定义方式、子 Agent 无持久记忆、CronService 精度妥协、ExecTool 安全边界等。

    

        
            💡 主要观点
        

        
            
                    Agent 系统核心组件应采用薄抽象和显式控制流,而非多层中间件。
                     对于 Tool 调用、消息分发、子 Agent 管理,贴近模型 API 的实现方式能获得更好的工程确定性,系统边界更清晰,运行路径更容易追踪,问题更容易定位。
                

                    Tool 系统通过抽象类 + Registry 模式实现统一注册和调用,exclude() 方法实现能力隔离。
                     Tool 由 name、description、input_schema、execute 四要素组成,ToolRegistry 管理所有工具。exclude() 方法为子 Agent 生成受限工具集,防止递归创建子 Agent 或直接向用户发消息。
                

                    MessageBus 作为入站消息总线,支持 subscribe 实时回调和 drain 轮询两种消费模式。
                     消息路由规则简单:有订阅者走回调,无订阅者入队列。MessageTool 负责出站(Agent → 外部),MessageBus 负责入站(外部/子系统 → Agent),方向明确,互不耦合。
                

                    子 Agent 采用 Promise 并发模型,共享事件循环,无持久记忆,适合一次性并行任务。
                     每个子 Agent 拥有独立的 AgentLoop 实例,每次 spawn 从零开始,处理完一个任务就结束。通过 MessageBus 的 system channel 回传结果,由主 Agent 总结后输出给用户。
                

                    REPL 主循环通过布尔互斥锁 + 暂存队列解决并发写入 history 的问题。
                     processing 标志充当互斥锁,同一时刻只有一个 agent.run() 在执行。子 Agent 结果先入暂存队列,在用户交互完成后统一处理,保证 history 的一致性。
                

        
    

        
            💬 文章金句
        

        
            中间层越薄,调试越容易,对 API 行为的控制越精确。

对于 Tool 调用、消息分发、子 Agent 管理这三类 Agent 系统里的核心组件,优先采用薄抽象、显式控制流和贴近模型 API 的实现方式,往往比引入多层中间件更容易获得工程上的确定性。 正则黑名单是最低限度的防线,不能替代沙箱隔离。 保留首尾而非只取前 N 字符,是因为命令输出的末尾通常包含最有价值的信息(错误信息、统计摘要等)。 强制唯一匹配:出现 0 次报错,超过 1 次拒绝写入并要求提供更精确的文本片段。

            📊 文章信息
        

        
            AI 初评:91

来源:大淘宝技术

作者:大淘宝技术

分类:人工智能

语言:中文

阅读时间:20 分钟

字数:4936

                标签:
                
                    Agent 框架, Tool 系统, 消息总线, 子 Agent, Anthropic Claude
                
            

        
    

    
        阅读完整文章