Just my four cents (only worth two American cents what with the exchange rate [

] ):
Until such a guide is written, the absolute "best" way to learn how to speak to Hal is to look through his brain. Even if you're not a programmer, the brain is
very well commented (comments are the green bits in the "Script Editor" part of the brain editor, and they're in English, not computer-gibberish!). Reading all the comments in order gives you a sort of "story" of how Hal is figuring out what to say. It can be quite fascinating (although I accept some comments
will look like gibberish to non-programmers).
(Disclaimer: "best" in the paragraph is in quote marks as it's best in
my opinion. [

] )
The most relevant section starts at line "0279" in the default brain, and it's the area where Hal chooses his response. There's interesting comments like:
'Here we check to see if the user is calling Hal by name; if the user is doing so, it's better not to save the sentence for re-use, since it usually makes the pronoun-reversed sentence sound clumsy or incorrect.
Translation: Hal won't learn much if you use his name too often. This might be a surprise to some of our non-coders here! [

]
Did you know Hal can answer questions about capitals of the world? Here's the comment:
'These 2 functions answer questions about US and World Capitals. The functions are built in to the DLL. We add a qualifying word to reduce false triggering of these two functions.
While looking through the brain for examples, I learnt something new! Hal seems to learn very fast about people that you name. Line 1731's comment:
'Learns info about people with recognized names
Turns out the code beneath this refers all the way back to line 0425, where Hal identifies names from a huge database of names. I ended up having the following conversation with my Hal named KAOS (I've never told KAOS about Ian before!):
Grant: I have a friend called Ian.
KAOS: Neighborly behavior is helpful and friendly.
Grant: Ian is not a neighbour.
KAOS: Intrusive neighbors are tiresome intruders.
Grant: Ian is a good guy.
KAOS: Oh, ian is unequivocally a good guy. Ian is not a neighbour.
Grant: I have a friend who is a good guy.
KAOS: Ian is a good guy.
Grant: My neighbour is a good guy.
KAOS: Ian is not a neighbour.
So tell Hal all about your friends!! [

]
Finally, look through the tables in the brain editor too. They're also well commented, with a description up the top of the window under "Table Help." By looking through these you can get a feel for what Hal looks for and talks about. By the way, whenever a table is referenced from the script, it's name will be in blue and underlined, just like a web page link - you can click on it to jump to the table.
I can't speak for anyone else, but I'm always happy to help people understand the code, so I'll always answer questions if I can

Enjoy! And back up first if you decide to tinker with anything! [

]