一个代理系统的核心循环,代码量只有239行。这不是某个玩具项目,而是一个真实仓库的架构事实。作者在剖析SOIT代码库时发现,真正复杂的部分根本不在代理的“大脑”里,而在它执行任务时经过的那道门。
这个发现指向一个被普遍混淆的概念:代理框架和代理运行时,根本不是同一层的东西。框架负责定义代理怎么思考,运行时负责管理它能做什么、留下什么记录。把两者混为一谈,是很多代理平台设计混乱的根源。
![]()
循环很轻,门很重
SOIT仓库里的核心代理循环——规划、执行、验证——是一个刻意保持精简的组件。规划器、执行器、验证器本身包含的逻辑极少,它们更像是一组接口,把具体工作委托给底层的运行时层。这种设计让“代理怎么操作”和“系统允许什么”彻底分开。
关键检查全部发生在端口级别。出口策略、速率限制、幂等性这些治理规则,由ToolPolicyGateway在端口上强制执行。这意味着任何使用这个端口的执行模型,无论是代理还是工作流,都受到完全相同的治理约束。执行规则不是写在循环里的,而是写在端口上的——这句话是理解整个架构的钥匙。
依赖列表暴露了设计哲学
这个项目的依赖项值得注意:MCP、AG-UI、LiteLLM。它们都是标准的通信协议,而不是某个专有框架。作者认为,这体现了利用现有标准实现互操作性的策略,而不是构建一个封闭的单体解决方案。用协议说话,而不是用框架圈地。
作者在文中提出了一个尖锐的观察:如果九成的代码都在回答运行时的治理问题,那么把整个项目称为“又一个代理框架”,就是在描述其中最不重要的一成。这个判断直指当前代理平台叙事的核心误区——把执行环境的复杂性,误认为是代理逻辑本身的复杂性。
一条必须守住的架构底线
文章最后强调了一个硬性约束:内核不能导入任何高于它的东西。一旦治理内核反向依赖于产品模块,“交换执行模型,每个门都幸存”就不再是事实。这条依赖规则是架构健康的分水岭,守住它,治理才能独立于应用逻辑存在。
这种分离带来的实际收益很直接:当你想换一种执行模型,或者调整某个安全策略时,不需要动代理的核心逻辑。治理规则独立演进,代理逻辑保持轻量,两者通过端口协议对接。对于正在设计代理系统的团队来说,这个案例提供了一个值得参考的架构样本——把治理放在端口上,而不是循环里。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.