In short you'll always have to edit it from within the opened M4L device. You can't edit it outside that scope and reload. If you edit it "externally" and then re-open your device in Max the new version will be overwritten with the stored version inside the *.amxd.
The workflow is at the moment the following:
- Open device in Max, (will create the Project if it does not exist)
- edit/save poly subpatch -> will update the file inside the project
- SAVE the device top level patch (even if the window is not flagged dirty) -> This will create a new *.amxd (frozen) and you'll be asked for the location.
now always the version included in the *.amxd will be loaded. To edit the poly patch one needs to open the device again in Max.
The limitation that a device is always frozen an save in Max is on the one and understandable from the point of view of dependency integrity in the combination with Live but is quite argued here already ...
I agree that this process could be probably streamlined better, i.e with an option for "don't freeze on save" to be used during dev-time.