should have done 表示“本来应该做某事而实际上未做。”could have done 表示“本来有可能......而实际上没做到。”must have done 表示“一定做了......"I should have thought it is faulty .(perhaps)I thought ... 也OK的!