Here's a goal.
I type "Make me breakfast"
It replies: "I am not able to because I cannot manipulate physical objects"
It would look at the word make first to figure out if I meant the noun or verb form.
The verb "make" has 49 senses in WordNet. It is going to have to figure out which meaning is correct based on the structure and other words in the sentence.
Let's say that works and it picks definition 15.
15. make -- (make by shaping or bringing together constituents; "make a dress"; "make a cake"; "make a wall of stones")
I asked it for breakfast and it's already made a link from my perl code between food and breakfast and also between cake and food. That's how it knows to pick 15. Maybe even a relationship between ingredients and constituents. Some knowledge of latin would be good for making those links. In other words, it links breakfast with ingredients then links ingredients and constituents and cake with ingredients and can be fairly certain that 15 is the correct version of the word make. It should cache these links it makes so it doesn't have to go online to deduce them in the future.
It understands me because I'll give it some sense of self. A shallow sense of self. Maybe a couple of lines of code in the loop, but I hear the best Psychotherapists can have trouble managing their own emotions even though they can rationally deconstruct those of their patients.
It should do a runthrough of its peripherals every once in a while so it will be aware of the fact that it can't go into the kitchen and make food. It'll could make me a webpage about breakfast but not cook it.
It'd have two options at that point, look on the Internet for information about how to acquire locomotion or ask me to move it to the kitchen at which point it would request peripherals that would allow it to manipulate food.
My current code runs very very fast. I'll have to crank up the depth of links it tries untill I hit a bottleneck.