DeepSeek Harness 源码解析:Agent Runtime 中的依赖注入与插件生命周期设计
写惯 Node.js 服务端的朋友看这个会很有共鸣:DeepSeek Harness 把 Tegg 那套 IoC 和生命周期搬进了 Agent Runtime,插件能动态加载卸载。做 Agent 框架或基础设施的工程师值得把源码翻一遍,很多设计可以直接借鉴到自己的架构里。
DeepSeek Harness 的源码架构本质上是一个面向 Agent Runtime、支持动态插件生命周期的 IoC 模块系统。作者将其与企业级 Node.js 框架 Tegg 对比:Tegg 通过 SingletonProto()、ContextProto()、Inject() 管理作用域与依赖,DeepSeek Harness 则通过 Service 注册和 inject 建立能力提供者与消费者的依赖关系。
在生命周期管理上,Tegg 提供了 postConstruct、preInject、postInject、init、preDestroy、destroy 六个阶段,DeepSeek Harness 则通过 Fiber 管理插件状态,依次经历 PENDING、LOADING、ACTIVE、UNLOADING、DISPOSED 五个阶段,并用 Effect 管理插件注册的资源与副作用。两者都处理模块间依赖解析、访问级别与循环依赖约束,只是 DeepSeek Harness 的核心装配对象换成了 Plugin 和 Service,并支持依赖驱动的动态加载、卸载和重新装配。
依赖注入、模块边界、生命周期、AOP、事件驱动这些思想在成熟服务端框架中已实践多年,随着 Agent 系统复杂度提升,这些经典软件工程思想正被系统性地应用到 Agent Runtime 中。对正在构建 Agent 基础设施的团队来说,DeepSeek Harness 的设计具有参考价值。
最近看 DeepSeek Harness 的源码,越看越觉得熟悉。它本质上是一个面向 Agent Runtime、支持动态插件生命周期的 IoC 模块系统。之前在公司也参与过企业级 Node.js 框架 Tegg 的设计,两者在很多架构思路上有着非常相似的地方。
Tegg 通过 SingletonProto()、ContextProto() 声明对象的作用域和访问级别,通过 Inject() 管理对象依赖;DeepSeek Harness 则通过 Service 注册和 inject,建立能力提供者与消费者之间的依赖关系。
Tegg 为对象提供了一套细致的生命周期:postConstruct → preInject → postInject → init → preDestroy → destroy;DeepSeek Harness 则通过 Fiber 管理插件的生命周期,正常情况下经历 PENDING → LOADING → ACTIVE → UNLOADING → DISPOSED,并通过 Effect 管理插件注册的资源和副作用。
Tegg 会解析模块间的依赖关系,管理访问级别、对象作用域和循环依赖约束;DeepSeek Harness 同样通过依赖关系组织运行系统,只是核心装配对象变成了 Plugin 和 Service,并进一步支持依赖驱动的动态加载、卸载和重新装配。
依赖注入、模块边界、生命周期、作用域、AOP、事件驱动、动态组合,这些思想在成熟的服务端框架中已经实践多年。如今,随着 Agent 系统的复杂度不断提升,这些经典的软件工程思想又开始在 Agent Runtime 中得到系统性的应用。
DSH 的设计,还是蛮有参考价值的,👍
本条情报归属 AITOP「论文」核心栏目,重点聚焦中国 AI 产业与国产大模型生态。在跨区域产业观察坐标中,该动态直接关联「AI 开发者工具链、Coding Agent 与工程化实践」研究主线,反映出当前技术演进与商业落地的最新风向。涉及核心实体与技术议题包括:DeepSeek、Agent、依赖注入、Agent Runtime,读者可通过下方标签进入对应专题页查阅历史脉络与关联对比。
信源核验说明:本文原始线索采编自「小胡子哥」(@Barret_China),经 AITOP 多维评分管线结构化提炼。