well I didn't look at that yet, but what I would usually do is something like this:
look around for some NPC related code .. stare at it for a while .. analyse/digest it .. etc.
the npc entity is surely a class (most liekly) so look at NPC classes, which are probably derived from CBasePlayer or something like that .. and see how they ar implemented.
for starters, I'd pick one npc class and derive my new class from it, and try changing stuff and see how it works.
The current class for the type of NPC I'm looking at is the CBaseActor, it's what characters like Kleiner and Alyx inherit from.
Oh well then.
On thing I'm noticing is that classes that use A.I. tend to select the specific files they link to.
I.E. A flying thing gets flying A.I., Vehicle A.I., A.I. yo seek you, A.I. to kill you, etc. I guess the next step is to go through every A.I. .cpp, which there are a lot of.