Chesperito 2


Objectives

Having 3 years to work on Chesperito, I think I've learned a lot. I hope to use what I've learned to make the second edition worthy of the positive comments 1.0 has recieved over the last few years. Primary Goals which I hope to achieve with Chesperito2 are listed here.

From IRC Infobot to Entity

Distributable

  • 1.0 is extremely embedded, preventing me from making it available for others to use. With 2.0, I intend to make it available, not as Open Source, or Freeware, but at a very reasonable cost given the amount of time and effort put into it. If I only had a nickel for everytime somebody asked "Where can I download Chesperito?"

Competitive

Removal of Legacy Code

  • Chesperito was designed to use whatever was needed to accomplish the task. This had positive effects in abilities, but resulted in being dependant on some programs written by others which do not work together as well as desired. From Alicebots to JoeyQ's Winbot, they all provided Chesperito with functionality, and me with food for thought. I've learned quite a lot about AI from Alice, and tons about IRC bots from Winbot. In 2.0, I hope to take this to another level.

Unified

  • Chesperito has a bad habit where pieces of it talk to other pieces of it behind it's own back. This results in the bot quite often contradicting itself, or not knowing something that it just asserted it knew. Just getting this maze to work requires a lot of jumping through hoops, and constant maintenance.

Modifiable

  • Chesperito is pretty hard coded. Chesperito2 aims to be configurable and extensible, allowing one to modify and override virtually any and all of it's behavior. Fully scriptable, one can override what the bot thinks, does, or says in virtually every instance.

Expandable and Reusable

  • With each new ability coded or scripted, Chesperito2 can make these abilities usable by other code, allowing one to create more complex tasks and abilities from already existing ones. Every new piece of code should not have to reinvent the wheel.

Thoughtful

  • Chesperito2 thinks in basic units called appropriately "Thoughts". These thoughts are pretty much a computer simulation of things that you and I think all the time, "Time to check my mail", "I need to Download a file", "Somebody joined the channel", "Somebody said something to me", "I need to connect to IRC", etc. Every component of the bot has access to, and can act upon these thoughts. Components can trigger new thoughts, modify current ones, and perform actions that they feel they should when particular thoughts occur including overriding or redefining behavior. Thoughts can be created to execute asynchronously, in a specific order, or at a future point in time. More complex actions can be created by stringing together groups of thoughts, allowing improvement in each individual thought to affect more complex operations. Some pretty complex tasks can be created by simply executing a number of thoughts in succession.

Object Based

  • Chesperito uses tons of relatively flat databases. While allowing one to respond to "What is Chesperito?" it certainly can't tell you much about Chesperito, or have much of a working knowledge of what a Chesperito is. To Chesperito2, almost everything is an "Object" which stores information in a much more useful and logical manner. Chesperito2 can store these objects locally, or on a central server. Through object oriented data, Chesperito2 can store virtually anything it needs to know about an object, and be able to use the code and data provided to make logical decisons.

Excessive use of XML

  • 2.0 uses XML to store it's objects, much of it's working data, and even some of it's own code.

Trusting

  • Chesperito has a very limited way of determining trust. Chesperito2 uses a more granular trust system, allowing it to know who can teach it about specific things, what information it can share and who it can share it with. Trusts help the code determine what it can do depending on who is asking. Currently there is no plan for code execution prevention, but I can't rule such a thing out.
    Current Status

    Chesperito2 will be tested in #Chesperito until it develops into a working replacement for Chesperito. Progress will be slow. Check there for news on release expectations, comments and suggestions, or general questions. If you can figure out who to send mail to, I'll probably read it. If you can't, that saves me some spam filtering.

    Component Status
    Personal Edition GUI Host Application Working
    Programmers Edition GUI Host Application Minimal functionality / Usable
    Distributed Enterprise Edition Planning Complete / Design Almost Complete / Not Yet Implemented
    Instant Messenger Not yet Implemented
    Web site Applet Not yet Implemented
    IRC Client Functional
    Customizable IRC script Settings Almost Complete
    IRC Channel Protections 50% Complete
    Main Configuration Files Partially Implemented
    Brain (main) Functional
    Thought Processor Complete
    Scripting Interface Complete / Being Debugged
    Language Parser Design complete, Code 50% Complete
    ObjectServer Design almost complete , Not yet Functional
    Legacy Database Functions Being Redesigned
    Other Legacy Functions Being Redesigned
    Legacy AIML Editor On Hold/Low Priority

Adaptavist Theme Builder Powered by Atlassian Confluence