Home - Solifugus/bsagent GitHub Wiki
Overview
BSAgent is short for "BotScript Agent". BSAgent is an engine for driving a bot's conversational interactions based on a script. The script (BotScript, file extension ".bs") itself is designed to be quick and easy to learn and code or modify. Also, the BSAgent engine may overlay multiple scripts to formulate customized combinations. For example, you might have a base script for small talk and then merge in additional scripts, such as one for humor, mathematics, scheduling, etc.
The script is extensible and manages timed responses, too. Although the extensibility features might not be well polished in the current iteration, you can add action commands. And action commands may be given timing specifications, such as to do something after so many minutes or at such and such a time.
Introductory Tutorial to BSAgent BotScript
Unfinished Work
The extensibility features need a lot of polishing and the timing features do also. However, the engine was designed with these capabilities in mind, as well as others. The following are in the works:
Contemplation
The BsAgent object may instantiate an instance of itself and thereby a contemplation mode is possible. That is, the script could talk with itself or go over future scenarios to determine what might happen under various conditions.
Goals, Objectives, and Obstacles.
Goals are things to achieve as many times or as much as possible. Objectives are things to accomplish once then be done. Obstacles are things to avoid having happen. When choices must be made, the BSAgent engine will look ahead to judge which decisions are more likely to result in the highest priority goals and objectives while avoiding obstacles.
Enhancement of BotScript
Although this will break backward compatibility, I think it makes to modify the "Condition" directive to two forms:
If:condition
and
Consider If:condition
This would enable specification of definitely doing under given conditions and optionally doing (meaning a decision must be made). The difference could be useful.