这个要弄明白情态动词后面接do 与have done的区别了,情态动词和动词不定式to后面接do表示现在或者将来要发生的事,而情态动词和to后面接have done表示过去时态或者事情已经发生(因为我们都知道情态动词后面要接动词原形,所以不可能用一般过去式的形式did放在后面的)
所以原句的意思是“如果我今天晚上回家早点的话它很可能已经被修好了”,表示在某一时刻动作已经完成要用have done的形式
再如,He must have finished the task.他一定已经完成任务了(表示动作已经过去)
He must finish the task on time.他一定要按时完成任务(表示一种对现在或将来的要求)