Smart filters are regular filters with a few requirements. See Dissolve.
1) You need to add a pipl property. FilterLayerSupport
{doesSupportFilterLayers},
2) You need to obey scripting parameters and run without a dialog.
2a) If you use random numbers for your algorithim you will need to handle
that otherwise your smart filter will change on rerendering.