Somehow I never managed to get anything real done with the whole eval phrase in subshell in caml-mode.
The problem is that the infrastructure is totally inapt at handling redefinitions in your code. Namely when you make changes to your definitions you want to revaluate all dependents to be sure they are actually using your redefinition and not the previous version previously sent to the toplevel.
I think if one ever wants to be serious about this style of development (which would be great !) the road is to provide a proof general like experience where you interactively replay definitions of your project as you tweak them.