CLOS objects acquire KnowledgeWorks functionality from the
standard-kb-object
mixin. Object creation and modification hooks defined on this mixin enable the RETE network to track the objects. Objects are indexed into the RETE network by class and modifications propagated only where any changes to the slots of the object are relevant.
One potential problem is that as KnowledgeWorks CLOS objects are designed for use in ordinary code, performance could deteriorate seriously as every time an object is changed the RETE network must be amended. For this reason changes to CLOS objects are merely remembered as they are made. The stored set of changes is flushed at the start of every forward chaining cycle, so the penalty for using KnowledgeWorks objects is really only paid when the forward chainer is running.