So, I'm currently in the process of creating a simulation and 'state of the art' technique is to provide also scripting-support to override unit behavior. I'd also see scripting as a possibility for prototyping AI behavior.
Since I plan to have different AI layers (at least strategic and tactical AI): is there any pattern for separating the core of the AI, which would be part of the framework and the scripting (e.g. Python) support? I've thought about it and it is not so easy IMO since I'm not so sure about the interaction model between the core and the scripting engine. My current very first implementation of the AI is that the actual units are agents (also crew members of units), which communicate via messages; thus they are decoupled from each other.
In a couple of simulations, the scripting support is weird: Sometimes the core takes over (regardless what you are doing in your script) since it gives certain actions a very high priority to ensure the consistency etc. but on the other hand this is completely in-transparent and error prone when you are developing scripts. Also, often you can only control the current unit (each unit is an instance of a script) but you cannot influence other units...this is usually done in the core AI, which limit considerably what you can do in the AI script.
So, maybe somebody has already some general experience on this topic, which he might wanna share. Or a good example of a game, which does do it well?