One of the best known approaches to the development of cognitive agents is the BDI (Beliefs-Desires-Intentions) architecture. In the area of agent-oriented programming languages in particular, AgentSpeak has been one of the most influential abstract languages based on the BDI architecture. The type of agents programmed with AgentSpeak are sometimes referred to as reactive planning systems. To the best of our knowledge, Jason is the first fully-fledged interpreter for a much improved version of AgentSpeak, including also speech-act based inter-agent communication. Using Saci (for example), a Jason multi-agent system can be distributed over a network effortlessly. Various ad hoc implementations of BDI systems exist, but one important characteristic of AgentSpeak is its theoretical foundation: it is an implementation of the operational semantics, formally given to the AgentSpeak language and most of the extensions available in Jason. Work on formal verification of AgentSpeak systems is also underway (see the manual in the Documentation page for further references). The language interpreted by Jason is an extension of the abstract programming language called AgentSpeak(L), originally created by Anand Rao. Another important characteristic of Jason in comparison with other BDI agent systems is that it is implemented in Java (thus multi-platform) and is available Open Source, distributed under GNU LGPL.
Besides interpreting the original AgentSpeak language, Jason also features:
- strong negation, so both closed-world assumption and open-world are available;
- handling of plan failures;
- speech-act based inter-agent communication (and belief annotations on information sources);
- annotations in beliefs used for meta-level information and annotations in plan labels that can be used by elaborate (e.g., decision theoretic) selection functions;
- meta events, declarative goal annotations, higher order variables and treating plans as terms, imperative style commands in plan bodies, and various other language extensions;
- support for developing Environments (which are not normally to be programmed in AgentSpeak; in this case they are programmed in Java);
- support for MAS organisations and agents that reason about them, using the Moise+ model;
- the possibility to run a multi-agent system distributed over a network (using Saci or JADE); other distribution infrastructures can be added by the user;
- fully customisable (in Java) selection functions, trust functions, and overall agent architecture (perception, belief-revision, inter-agent communication, and acting);
- a library of essential “internal actions”;
- straightforward extensibility by user-defined internal actions, which are programmed in Java;
- an IDE in the form of a jEdit or Eclipse plugin; the IDE includes a “mind inspector” that helps debugging.