Character Controller can pass through Collider

I made an AI with Character Controller inside. But sometimes, this character controller can pass through Walls (Box Collider) and House (Mesh Collider).

this the script for AI.JS

function FollowPlayer(){
	status = AIStatus.Running;
	transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(ply.position - transform.position), rotateSpeed * Time.deltaTime);
	transform.rotation.eulerAngles.x = awakeRot.eulerAngles.x;
	transform.rotation.eulerAngles.z = awakeRot.eulerAngles.z;
	//transform.position.y = awakePosY;
	
	if(Vector3.Distance(transform.position,ply.position) >= attackRange ){
		transform.position += transform.forward * runSpeed * Time.deltaTime;
		animation.CrossFade(animations[1].name);
	}else AttackPlayer();
}

Oh Yea, sometimes, the character controller can fly (not grounded).
Can anybody help me ? Do i need to use Raycast mode ?

For the flying issue you would need to add a constant gravity system.

var gravity : float = 20.0;

private var moveDirection : Vector3 = Vector3.zero;
function Update() {
    var controller : CharacterController = GetComponent(CharacterController);
    //other movements
    moveDirection.y -= gravity * Time.deltaTime;

    controller.Move(moveDirection * Time.deltaTime);
}

For the passing through, I would think if your NPC has a CC, use it. Move the guy from it.

At the very last line of this page http://unitygems.com/memorymanagement/ you can download a project that uses a script that would be pretty much do what you need. That is target a position and move the object towards it with CC.