An alternative to running dune in watch mode is to use entr to create an ad hoc builder/watcher.
Something like this:
find ./lib/ -name "*.ml" | entr -c bash -c 'dune build && echo OK'
This won’t lock any files, so you can reload your dune utop process more easily that way.