The long-term objective of the KAoS (Knowledgeable Agent-oriented System) agent architecture is to address two major limitations of current agent technology: 1. failure to address infrastructure, scalability, and security issues; and 2. lack of semantics and extensibility of agent communication languages. The first problem is addressed by taking advantage of the capabilities of commercial distributed object products (CORBA, DCOM, Java) as a foundation for agent functionality, and supporting collaborative research and statndards-based efforts to resolve agent interoperability issues. The second problem is addressed by providing an open agent communication meta-architecture in which any number of agent communication languages with their accompanying semantics could be accommodated. Unlike most agent communication architectures, KAoS explicitly takes into account not only the individual message, but also the various sequences of messages in which it may occur. Shared knowledge about message sequencing conventions (conversation policies) enables agents to coordinate frequently recurring interactions of a routine nature simply and predictably.
1.1. The Promise of Software Agents
Current trends have made it clear that automation of dynamic, real-time environments will dramatically increase in the coming decades. The complexity, real-time constraints, and distributed nature of such tasks require that software not merely respond to requests for information but intelligently anticipate, adapt, and actively seek ways to support users. Not only must these systems assist in coordinating tasks among humans, they must also help manage cooperation among distributed programs.
Software agents have been proposed as one way to help people better cope with the increasing volume and complexity of information and computing resources (Bradshaw, 1996) . Researchers are hopeful that this approach will help restore the lost dimension of individual perspective to the content-rich, context-poor world of the next decade. What will such agents do? At the user interface, they will work in conjunction with compound document frameworks and document management tools to select the right data, assemble the needed components, and present the information in the most appropriate way for a specific user and situation. Behind the scenes, agents will take advantage of distributed object management, database, workflow, messaging, transaction, searching, indexing, and networking capabilities to discover, link, and securely access the appropriate data and services.
1.2. Limitations of Current Approaches
While several approaches to agent technology are showing significant promise, many critical issues remain unsolved. For one thing, agents created within one agent framework can seldom communicate with agents created within another.
Semantics. KQML has been proposed as a standard communication language for distributed agent applications (Finin, Labrou, & Mayfield, 1996; Genesereth, 1996) . The core concept is that agents communicate via "performatives", by analogy with human performative sentences and speech acts (e.g., "I hereby request you to send me file ABC.TEX"). Unfortunately, KQML developers have not yet reached full consensus on many issues. Agent designers are free to add new types of performatives to the language. However, there exist a number of confusions in the set of performatives supplied by KQML and no constraints are provided to agent designers on what can be a performative (Cohen & Levesque, 1996) . Without a clearly-defined semantics of individual performatives as they are employed within particular types of agent-to-agent dialogue, developers cannot be sure that the communication acts their agents are using will have the same meaning to the other agents with whom they are communicating. Such a semantics is needed to determine the appropriateness of adding new performatives to a particular agent communication language, and to define their relationship to preexisting ones.
Infrastructure, scalability, and security. In addition to the current limitations of agent communication languages, the potential for large-scale, cross-functional deployment of general purpose agents in industrial and government settings has been hampered by insufficient progress on infrastructural, architectural, security, and scalability issues. Considerable research has been done on these issues by the distributed computing community, and in some cases commercial products exist that could address many of them, yet up till now relatively little effort has been made to incorporate these technologies into agent development frameworks.
The current lack of standards and supporting infrastructure has prevented the thing most users of agents in real-world applications most need: agent interoperability (Gardner, 1996; Virdhagriswaran, Osisek, & O'Connor, 1995) . A key characteristic of agents is their ability to serve as universal mediators, tying together loosely-coupled, heterogeneous components-the last thing anyone wants is an agent architecture that can accommodate only a single native language and a limited set of proprietary services to which it alone can provide access.
1.3. KAoS: An Agent Architecture for Reuse, Interoperability, and Extensibility
To address some of these problems, we are working in partnership with Seattle University to develop KAoS (Knowledgeable Agent-oriented System), an open distributed architecture for software agents (Bradshaw, Dutfield, Benoit, & Woolley, 1996) . Our experience with KAoS to date leads us to believe that an approach of this type can become a powerful and flexible basis either for implementing diverse types of agent-oriented systems, or for interoperation with non-KAoS agent frameworks.
Providing infrastructure, scalability, and security through a foundation of distributed object technology. To the extent KAoS can take advantage of architectures such as CORBA, we can concentrate our research efforts on the unique aspects of agent interaction rather than on low-level distributed computing implementation issues. CORBA provides a means of freeing objects and agents from the confines of a particular address space, machine, programming language, or operating system (Betz, 1994) . The Interface Definition Language (IDL) allows developers to specify object interfaces in a language-neutral fashion. Object Request Brokers (ORBs) allow transparent access to these components and services without regard to their location. The CORBA 2.0 specification extends the architecture to deal with the problem of interoperability between ORBs from different vendors. A set of system services is bundled with every ORB, and an architecture for "common facilities" of direct use to application objects is being defined. Among these common facilities will be a compound document facility based on an enhanced version of the CI Labs OpenDoc specification (Orfali, Harkey, & Edwards, 1995) .
Our collaborations with SU have produced increasingly sophisticated versions of KAoS that are designed to take advantage of the capabilities of commercial distributed object products as a foundation for agent functionality. To date, we have investigated the use of two object request broker (ORB) products: IBM's System Object Model (SOM) (Campagnoni, 1994) , and Iona's Orbix. We have also explored agent interaction with Microsoft Component Object Model (COM) underlying OLE (Brockschmidt, 1994) , and are currently extending our investigations to Distributed COM, ActiveX, and Java.
We are encouraged by the increased cooperation among research teams and product development groups working on agent technology. For example, we are closely following the progress of the Mobile Agent Facility, currently being defined by the common facilities task force of the Object Management Group (OMG) (Chang & Lange, 1996; Lange, 1996; Virdhagriswaran, Osisek, & O'Connor, 1995) . We have also been active participants in the Hippocrene project of the Aviation Industry Computer-Based Training Committee (AICC) (Bradshaw, Madigan, Richards, & Boy, 1993; Bradshaw, Richards, Fairweather, Buchanan, Guay, Madigan, & Boy, 1993) and are working with members of the KQML subgroup of the knowledge-sharing initiative to better understand and resolve interoperability issues. As research progresses, we will continue to advocate industry-wide agent interoperability standards that are neutral with respect to particular hardware platforms, operating systems, transport protocols, and programming languages.
Providing an extensible language semantics through an agent communication meta-architecture. It is challenging to define an architecture that is general enough to be implemented in many different ways and applied to diverse problems, yet specific enough to guarantee support for the requirement of agent interoperability. A prime example of this difficulty is the CORBA specification, which required successive refinement over a period of years until sufficient experience and consensus was attained that cross-vendor interoperability could be assured.
The KAoS architecture dictates neither the particular transport-level protocol, nor the form in which content should be expressed, and allows agents to be configured with whatever set of communication primitives is desired. For this reason, it may be properly regarded as an open agent communication meta-architecture.
While not incompatible with languages such as KQML, KAoS provides a more flexible and robust foundation for industrial-strength agents. We have optimized the architecture for extensibility so that new suites of protocols and capabilities can be straightforwardly accommodated as needed. Our goal is not to lead the invention of new languages and methods of agent interaction but rather to anticipate and easily adapt to new research, standards, and domain-specific enhancements as they emerge in the future. If desired, for example, the set of KQML "performatives" or the communication primitives of some future specialized agent language could easily be implemented within KAoS.
2.1. KAoS Agents
A consistent structure provides mechanisms allowing the management of knowledge, commitments, choices, and capabilities. These structures are shown in the box on the right of figure 1. Knowledge is defined as a collection of facts and beliefs. Facts are simply beliefs about the agent and the environment in which the agent has complete confidence. Facts or beliefs may be held privately or potentially made public (e.g., using a blackboard). Desires represent the goals and preferences that motivate the agent. Intentions represent the commitment of the agent to being in a state where it believes it is about to actually perform some set of intended actions (Cohen & Lesvesque, 1990) . All agents are required to appropriately handle external requests to provide information about their structure. An appropriate response might be sometimes simply, "I am unable to give you the information you request."
While the KAoS architecture provides the "hooks" for implementing
sophisticated agents based on these structures and related mechanisms, it
does not require that agents use these hooks in an "intelligent"
fashion. The minimal requirement is that agents be able to carry out successful
conversations related to services they are requesting or ones which they
have advertised-the determination of the mechanisms by which this is accomplished
is left to the agent designer.
Each agent goes through the equivalent of birth, life, and death. At birth, agents instantiated and initialized with some amount of innate structure. During their lives, agents go through a continuous cycle of reading, processing, and sending messages. Agent death poses special problems. Depending on the application, it may be necessary to include domain-specific procedures for dealing with it. These may include notification of other agents, transfer of any pending commitments, or transfer of knowledge. KAoS agents that are declared as persistent must be able to go into a form of "suspended animation" (called cryogenic state). Each persistent agent is responsible for saving the aspects of its structure required allow it to be reactivated when required. The process of saving and restoring structure may also be simple or complex, depending on the situation.
Each agent contains a generic agent instance, which implements as a minimum the basic infrastructure for agent communication (figure 2). Specific extensions and capabilities can be added to the basic structure and protocols through standard object-oriented mechanisms. Mediation agents provide an interface between a KAoS agent environment and external entities, resources, or agent frameworks. The Domain Manager controls the entry and exit of agents in a domain according to policies set by the domain administrator. The Matchmaker can access information about the location of the generic agent instance for any agent that has advertised its services. Proxy agents extend the scope of the agent-to-agent protocol beyond a particular domain.
2.2. Agent Communication
Conversations. Unlike most agent communication architectures, KAoS explicitly takes into account not only the individual message in isolation, but also the various sequences in which a particular message may occur. We believe that social interaction among agents is more appropriately modeled when conversations rather than isolated illocutionary acts are taken as the primary unit of agent interaction. As Winograd and Flores observe:
The issue here is one of finding the appropriate domain of recurrence. Linguistic behavior can be described in several distinct domains. The relevant regularities are not in individual speech acts (embodied in sentences) or in some kind of explicit agreement about meanings. They appear in the domain of conversation, in which successive speech acts are related to one another (Winograd & Flores, 1986, p. 64) .
Offer. Whereas the effect of an inform message is immediate, an
offer is future-oriented. Hence an offer is something that can be declined,
while it is impossible to decline to be informed once one already has processed
the content of an inform message (figure 4). As an example, a monitoring
agent could initiate an Offer conversation with another agent that it perceived
could benefit from its assistance.
Request. The conversation policy for a Request is shown in figure
5. This kind of conversation policy (as opposed to the Conversation for
Action policy below) is best suited to an agent that known to reliably fulfill
its commitments, or for which the consequences of its failure to do so are
slight. In the simplest case, Agent B can simply perform the request of
Agent A, with an optional acknowledgment. The request may also be declined
or countered by Agent B. Agent A can in turn counter again, accept the request,
or withdraw it at any time. Once the request has been carried out by B,
it sends the report satisfied message to A with results returned in the
We note here that there is a tradeoff between economy of verb types and
"naturalness" of expression within a given conversation policy.
For example, one could argue that acknowledge (in the Offer policy) and
report satisfied (in the Request policy) should be replaced by simple inform
messages. On the other hand, it is clear that the use of the more specific
verbs makes it easier to infer the function of the messages in the context
of their respective conversation policies.
This tradeoff between economy and naturalness of expression is an issue which cries out for additional study. Based on our informal analysis, we believe that the most common types of more specific verbs can be straightforwardly derived from the formal definitions of a small number of basic speech acts.
Conversation For Action. We regard Winograd and Flores' Conversation For Action (CFA) (Winograd & Flores, 1986) as a more complex variant of request (figure 6). We include a slightly modified version of their Conversation For Action in our core set of conversation policies, since it seems well-suited to many of the requests both that agents make of each other and that humans make of agent systems.
In contrast to the Request conversation policy, Conversation for Action provides a more complex mechanism to handle commitments that persist over time and may not be reliably fulfilled. Additional conversations may well be generated, as the agent negotiates with others to fulfill its commitments. The important feature to note in the state-transition diagram is that communication about commitments is handled explicitly: a definite promise must be communicated if B accepts A's initial request, and if B does not intend to fulfill its commitment, it must send a renege message to A. A in turn must declare explicitly that it either will accept or decline the report from B that the request has been satisfied.
Asynchronies in conversations. The implementation of a conversation
policy must account for asynchronies in conversations (Bowers & Churcher,
1988) . The major asynchrony of concern is between the time of transmission
of a particular message and the time of response.
To handle asynchronies, a conversation policy must be designed to prevent a conversation entering a state from which it cannot process an incoming message. An asynchrony will manifest itself as an attempt to effect an invalid transition on a conversation, and should occur only when more than one participant in a conversation can instigate a valid transition from a state. For example, in figure 12, transitions from state 2 allow messages from either A or B. Each transition from such a state will conform to one of the following rules:
Rôles. In a typical conversation, the agent requesting a
service will select the suite to be used for the conversation. The agent
providing the service must have already advertised the service and the set
of suites which it requires. Having done so, the two agents may then participate
in a conversation, using an appropriate conversation policy in the selected
Since a service-providing agent cannot make its services known to the Matchmaker without first advertising their existence, and since a service-requesting agent cannot access the required services for the first time without having the Matchmaker recommend an appropriate agent, every agent must have access to the Matchmaker suite (described below). However, there is an important difference between non-Matchmaker and Matchmaker agents in how they will participate in such conversations: the former will only need to know how to initiate advertising and recommending conversations in the rôle of a service requester, while the latter must how to process them as a service provider.
Rôles serve to partition the available messages, such that a given agent need not implement verbs and conversation policies in ways that it will never use. For example, most KAoS agents will be capable of playing advertiser or requester rôles in conversations with the Matchmaker, but only the Matchmaker agent itself will need to implement capabilities and roles relevant to the processing of advertise and recommend messages generated by others.
Rôles and suites. A suite maintains the permissible combinations of initial verb, conversation policy, and rôle. It must specify at least two rôles (e.g., one for the initiator of the conversation and one for the respondent). Where appropriate, agents may be permitted to play more than one possible rôle for a given conversation policy. For example, a Matchmaker may act as a service provider during the course of processing a recommend conversation for a requesting agent. However, in order to carry out the request, it may subsequently act in the rôle of a service requester by initiating a recommend conversation with another Matchmaker in order to have its assistance in locating service providers consistent with the original recommend request.
From figure 7, we see that the Core suite provides the following combinations of initial verb, conversation policy, and rôle for agents which initiate conversations:
Consistent with the state transition diagram, the table below shows that
the query conversation protocol is identical to the request conversation
protocol except that the use of the report satisfied verb is required rather
than optional (figure 9). The shaded cells show what has been newly added:
one conversation policy, one verb, and the participation information.
Example of Conversation Policy Reuse: The Matchmaker Suite. One
challenge addressed by the KAoS architecture is how to enable developers
and consumers of agent services to add a new suite with minimal effort.
For example, if a request for a new service could be made by reusing an
existing conversation policy combined with a new initial verb, developers
could often be spared the trouble of creating a whole new conversation policy
and making it available to each potential requester. In the simplest case,
any agent desiring access to the service which had already implemented the
conversation policy being reused would simply have to extend its data about
supported suites with a new initial verb. In many cases, not only the conversation
policy but also many of the agent-specific handlers that process the messages
of the conversation policy (e.g., countering) could be reused.
As an example, the Matchmaker suite is shown as the shaded area of figure 10. The suite is implemented by combining existing conversation policies with three new initial verbs: retire, advertise, and recommend. The advertise message is sent to the Matchmaker by any agent wishing to offer services. It uses the Offer conversation policy with a more specific verb. The retire message is used by an agent to withdraw its services. It uses the Inform conversation policy. The recommend message is used to request the Matchmaker's help in finding an agent to perform some service. Recommend uses the Query conversation policy.
The Matchmaker suite thus provides the following combinations of initial verb, conversation policy, and rôle for agents which originate conversations:
Initial prototypes and agent utilities. Early versions of KAoS
were used to build demonstrations of agent-oriented programming and simulations
of various agent activities. The first prototype implemented a multi-agent
version of a battleship game, defining specializations of the generic agent
class for one or many cooperating ship captains on each team, a game board
Matchmaker, an Excel spreadsheet mediation agent, and a referee (Atler,
Bingle, Cooke, Morgan, Duine, & Zonczyk, 1994; Tockey, Rosenthal, Rosman
LaFever, Jasper, George, Woolley, Bradshaw, & Holm, 1995) . A maintenance
performance support prototype demonstrated how mediation agents could help
coordinate the interaction between airline maintenance mechanics and their
supervisors and adapt the presentation of task-related information through
a dynamic OpenDoc component interface (Bos, Boyer, Dutfield, & Jones,
1995) . A scheduling environment prototype based on Microsoft OLE technology
showed how KAoS could be used to implement assistants to aid in the process
of scheduling meetings and meeting rooms (Barker, Benoit, Tomlinson, &
Landon, 1995) .
We have created an agent construction kit prototype based on Microsoft Foundation Classes for the Windows platform, and a visual interface construction kit prototype using HyperCard on the Macintosh. We created a conversation monitor to allow particular sets of agent conversations to be logged, passively monitored, or intercepted. A Service Viewer provides a view on the services currently registered with a Matchmaker, and an Agent Structure Viewer allows one to inspect the persistent state of a particular agent.
Gaudi intelligent maintenance performance support system. The Boeing Company is exploring the use of portable airplane maintenance aids (PMA) to provide training and support to customers (Bradshaw, Richards, Fairweather, Buchanan, Guay, Madigan, & Boy, 1993; Guay, 1995) . A new version of KAoS is being incorporated into one such prototype of an intelligent performance support system (Bradshaw, Robinson, & Jeffers, 1995) . The system, named Gaudi, is designed around the actual processes, activities, and resources of the work environment. It is intended to directly and actively support necessary tasks, adapting information to the requirements of the user and situation.
Seven requirements guide Gaudi's evolution in the long-term:
1. Think tasks, not documents. The current transition in desktop computing is from an application-centric to a document-centric paradigm. Distributed component integration technologies (e.g., WWW, OpenDoc, ActiveX, Java) are fueling this trend. However, as component integration technologies increase in power and flexibility, user interfaces will move beyond a document-centric approach to a task-centric one. Large undifferentiated data sets will be restructured into small well-described elements, and complex monolithic applications will be transformed into a dynamic collection of simple parts, driving a requirement for new intelligent technology to put these pieces back together in a way that appropriately fits the context.
2. Pave where the path is. This phrase comes from the old story of the college planner who built a new campus with no paths built in at all (Brand, 1994, p. 187) . After the first winter, she photographed where people made paths in the snow between the buildings, and paved accordingly in the spring. The lesson is that some elements of the design of the system need to be postponed, and learned instead through actual experience with the user. As part of a collaboration with NASA-Ames, we are working to incorporate their adaptive engine into Gaudi. The adaptive component is described in more detail in section 5.3 below.
3. Make all parts replaceable. The idea is that future users of such a system would be able to easily add to or replace the software applications Boeing provides with applications of their own choosing in conjunction with their own or Boeing-provided data. A migration path from legacy monolithic applications to distributed component-based software must also be provided.
4. Link to anything (without requiring markup). SGML and HTML-based software typically provides for hyperlinking based on embedded markup of textual data. However embedded markup becomes problematic (Malcolm, Poltrock, & Schuler, 1991) :
Additionally, new techniques need to be developed to allow linking to complex data elements such as individual frames in a video stream or pieces of 3D geometry. We have implemented an agent-assisted external linking facility that implements dynamic links without markup.
- where context-sensitive linking is needed, since appropriate links may vary according to the user, task, or situation;
- where linking needs to be added after the fact to data provided in a read-only format such as CD-ROM, or
- where the unpredictable nature of the content requires dynamic query-based links rather than static pre-determined ones.
5. Run it everywhere. This requirement underlines the necessity of developing a cross-platform approach (i.e., Mac, Windows, Unix). It also requires that progress in wearable and mobile computing platforms and networking approaches (such as developments in wireless communication) be taken into account.
6. Pull data from anywhere. Rather than delivering a closed-box containing a static set of Boeing data, users must be able to dynamically access and integrate data that may reside on a networked server. This data may include anything from a private airline spares database, to a Boeing-managed media server for digital video, to other sources of information residing anywhere on the public Internet. A special requirement is the ability to interoperate with object request brokers and message-based protocols.
7. Let your agents handle the details. The fragmentation of data into smaller-grain-sized objects and the decomposition of large applications into sets of pluggable components could prove a nightmare for users if there is no support to help them put all the pieces together again. KAoS agents will enable intelligent interoperability between heterogeneous system components, and will help filter and present the right information at the right time in the most appropriate fashion to users who would otherwise be overwhelmed by a flood of irrelevant data.
Mobile agents. WWe are working on the issue of agent mobility
on two fronts: 1) allowing mobile users of small computing devices to interact
with a KAoS agent domain residing on a remote machine, 2) integrating the
KAoS architecture with mobile agent approaches that permit the physical
migration and secure, managed execution of agent programs on "guest"
hosts not belonging to the sender of the agent.
With regard to the first issue, we have completed a prototype of a mediation agent serving a mobile client of the Gaudi application by a wireless connection. In the prototype, agents involved in a currently running session can be transferred from one client to another at the request of a user. Though the current session context is preserved in the transfer, the agents are responsible for adapting to the characteristics of the client platform as required. For example, a user can transfer a session running on a desktop with a high-resolution display to a laptop with a low-resolution display. The user interface will adapt to the new hardware configuration, and hyperlinks not appropriate for the new client (e.g., high-resolution multimedia) will be filtered out automatically. A serial connection is maintained only as needed between the mobile client and the machine on which KAoS is running. To preserve power and bandwidth, the connection is an intermittent rather than an exclusive, continuous one.
With regard to the second issue, we are beginning work on a Java implementation of KAoS and on enhancements to the KAoS OLE/ActiveX implementation to take advantage of DCOM. Agents will be able to transport themselves in two ways: 1) by transferring an entire agent from one domain to another (teleportation), or 2) by transferring only a mobile portion of the agent's capabilities (e.g., as an applet) to a different host (telesthesia). In this second scenario, the mobile portion of the agent could execute on remote hosts while remaining in communication with its generic agent in the home domain. Agent communication with other programs may be facilitated by the ability of agents to plug into an open protocol bus hosted as part of client or server Web application services (e.g., LiveConnect on NetScape). We will incorporate industry standards for agent transfer protocols as they emerge (e.g., the dispatch, retract, and fetch verbs defined in (Lange, 1996) ).
Formalizing semantics and modeling dialogue as a joint activity. To date, we have attempted no formal description of the semantics of agent communication. Ongoing progress in such formalizations is summarized by Cohen and Levesque (Cohen & Levesque, 1996) and Labrou and Finin (Labrou & Finin, 1994) . We anticipate continued collaboration with these and other researchers as this work moves forward.
A more general issue concerns the manner in which such a set of social laws (e.g., conversation policies, collaboration strategies, policies governing reconsideration of conventions) comes to exist within an agent society (Durfee, Gmytrasiewicz, & Rosenschein, 1994; Jennings, 1993; Shoham & Tennenholtz, 1992; Wooldridge & Jennings, 1994) . We have noted above the distinction between the approaches of off-line design and emergence of agent social behavior. While the off-line design of social laws generally makes for simpler design and more predictable agent behavior, we see value in allowing for emergent behavior where the situation demands (e.g., complex negotiations (Zlotkin & Rosenschein, 1994) , teamwork (Cohen & Levesque, 1991) ).
For example, Cohen and Levesque (Cohen, 1994) discuss the limitations of "state models" of conversations, such as those we have proposed as part of the current KAoS architecture. While many of the problems they describe (nonliteral language, multifunctional utterances, etc.) are more important for human-human or human-agent than for agent-agent interaction using a very restricted language, they make a good case that, over the long term, "state model" ("dialogue grammar") approaches need to function in concert with more powerful plan-based approaches that require agents to infer one another's intentions at runtime.
The KAoS architecture assumes that agents identify each other by the services they advertise; such an environment need not treat random encounters between unrelated agents as a primary concern. Accordingly, the concept of "joint intention" is dealt with only implicitly by considering at design time the services and the rules within conversation policies associated with those services. Increasing the flexibility and power of agents will require elaboration of joint action theory.
Cohen and Smith have begun the development of a semantics of agent communication that would allow the rigorous analysis of conversation policies (Cohen & Levesque, 1996; Smith & Cohen, 1995) . Among other things, they have demonstrated that the behavior of the state transition model of the Winograd and Flores CFA policy is consistent with an emergent behavior of agents operating according to the principles in their model of interagent communication. The goal would be to predict the structure of finite-state models of interagent conversations as used in agent architectures such as KAoS. Such a strategy parallels the approach of Rosenschein, who designed a compiler that generates finite state machines whose internal states can be proved to correspond to certain logical propositions about the environment (Kaelbling & Rosenschein, 1990; Rosenschein, 1985) .
The KAoS architecture will succeed to the extent that it allows agents to carry out useful work while remaining simple to implement. Although it is still far from complete, our experience with the current KAoS architecture has shown it to be a powerful and flexible basis for diverse types of agent-oriented systems. The strength of the architecture derives from several sources:
Apple_Computer (1993). Inside Macintosh: Interapplication Communication., Reading, MA: Addison-Wesley.
Atler, D., Bingle, M., Cooke, T., Morgan, J., Duine, D. V., & Zonczyk, M. (1994). AgONy! Battleship Documentation. Seattle, WA: Seattle University Department of Software Engineering, June 9, 1994.
Barker, D., Benoit, P., Tomlinson, J., & Landon, S. (1995). KAoS CORBA Design Document. Seattle, WA: Seattle University Department of Software Engineering, May 30, 1995.
Betz, M. (1994). Interoperable objects. Dr. Dobb's Journal(October), 18-39.
Bos, M., Boyer, R., Dutfield, S., & Jones, E. J. (1995). TAINT OpenJob Design Document. Seattle, WA: Seattle University Department of Software Engineering, May 30, 1995.
Bowers, J., & Churcher, J. (1988). Local and global structuring of computer-mediated representation: Developing linguistic perspectives on CSCW in COSMOS. Proceedings of the Conference on Computer-supported Cooperative Work, . Portland, OR, , ACM ,
Bradshaw, J. M. (Ed.). (1996). Software Agents. Cambridge, MA: AAAI/MIT Press.
Bradshaw, J. M., Dutfield, S., Benoit, P., & Woolley, J. D. (1996). KAoS: Toward an industrial-strength generic agent architecture. In J. M. Bradshaw (Ed.), Software Agents. (pp. in preparation). Cambridge, MA: AAAI/MIT Press.
Bradshaw, J. M., Madigan, D., Richards, T., & Boy, G. A. (1993). Emerging technology and concepts for computer-based training. Proceedings of the Sixth Annual Florida AI Research Symposium (FLAIRS '93), . Ft. Lauderdale, FL, , ,
Bradshaw, J. M., Richards, T., Fairweather, P., Buchanan, C., Guay, R., Madigan, D., & Boy, G. A. (1993). New directions for computer-based training and performance support in aerospace. Proceedings of the Fourth International Conference on Human-Machine Interaction and Artificial Intelligence in Aerospace., . Toulouse, France, 28-30 September, , ,
Bradshaw, J. M., Robinson, T., & Jeffers, R. (1995). Gaudi: An unfinished architecture for performance support. P. C. Cacciabue (Ed.), Proceedings of the Fifth International Conference on Human-Machine Interaction and Artificial Intelligence in Aerospace (HMI-AI-AS '5), (pp. in press). Toulouse, France, , ,
Brand, S. (1994). How Buildings Learn: What Happens after They're Built., New York: Viking Penguin.
Brockschmidt, K. (1994). Inside OLE 2., Redmond, WA: Microsoft Press.
Campagnoni, F. R. (1994). IBM's System Object Model. Dr. Dobb's, Winter 1994/95, 24-28.
Chang, D. T., & Lange, D. B. (1996). Mobile agents: A new paradigm for distributed object computing on the WWW. Proceedings of the OOPSLA 96 Workshop "Toward the Integration of WWW and Distributed Object Technology", . , , ,
Cohen, P. R. (1994). Models of dialogue. T. Ishiguro (Ed.), Cognitive Processing for Vision and Voice: Proceedings of the Fourth NEC Research Symposium, (pp. 181-203). , , Philadelphia, PA: Society for Industrial and Applied Mathematics ,
Cohen, P. R., & Lesvesque, H. J. (1990). Intention is choice with commitment. Artificial Intelligence, 42(3), .
Cohen, P. R., & Levesque, H. (1996). Communicative actions for artificial agents. In J. M. Bradshaw (Ed.), Software Agents. (pp. in preparation). Cambridge, MA: AAAI/MIT Press.
Cohen, P. R., & Levesque, H. J. (1991). Teamwork. Technote 504. Menlo Park, CA: SRI International, March.
DeMichelis, G., & Grasso, M. A. (1994). Situating conversations within the language/action perspective: The Milan conversation model. R. Furuta & C. Neuwirth (Ed.), Proceedings of the Conference on Computer Supported Cooperative Work, (pp. 89-100). Chapel Hill, NC, USA, , New York: ACM Press ,
Durfee, E. H., Gmytrasiewicz, P., & Rosenschein, J. S. (1994). The utility of embedded communications: Toward the emergence of protocols. M. Klein & K. Sharma (Ed.), Proceedings of the Thirteenth International Distributed Artificial Intelligence Workshop, (pp. 85-93). Seattle, WA, , Seattle, WA: Boeing Information and Support Services ,
Finin, T., Labrou, Y., & Mayfield, J. (1996). KQML as an agent communication language. In J. M. Bradshaw (Ed.), Software Agents. (pp. in preparation). Cambridge, MA: AAAI/MIT Press.
Gardner, E. (1996). Standards hold key to unleashing agents. Web Week, 5, April 29,
Genesereth, M. R. (1996). An agent-based framework for interoperability. In J. M. Bradshaw (Ed.), Software Agents. (pp. in press). Cambridge, MA: AAAI/MIT Press.
Guay, R. L. (1995). Notebook simulations as electronic performance support tools for airline maintenance. N. R. Hartley (Ed.), Proceedings of the Royal Aeronautical Society Flight Simulation Group Simulation in Aircraft Maintenance Training Conference, . London, England, , ,
Jennings, N. R. (1993). Commitments and conventions: The foundation of coordination in multi-agent systems. Knowledge Engineering Review, 8(3), 223-250.
Kaelbling, L. P., & Rosenschein, S. J. (1990). Action and planning in embedded agents. Robotics and Autonomous Systems, 6(1-2), 35-48.
Labrou, Y., & Finin, T. (1994). A semantics approach for KQML-a general purpose communication language for software agents. N. R. Adam, B. K. Bhargava, & Y. Yesha (Ed.), Proceedings of the Third International Conference on Information and Knowledge Management, (pp. 447-455). Gaithersburg, MD, , New York: The Association for Computing Machinery ,
Lange, D. B. (1996). Agent Transfer Protocol ATP/0.1 Draft 4. IBM Research, Tokyo Research Laboratory, July 29.
Malcolm, K. C., Poltrock, S. E., & Schuler, D. (1991). Industrial strength hypermedia: Requirements for a large engineering enterprise. Proceedings of the Third ACM Conference on Hypertext, . San Antonio, TX, , ,
Orfali, R., Harkey, D., & Edwards, J. (1995). Client/server components: CORBA meets OpenDoc. Object Magazine, Maay, 55-59.
Robinson, M. (1991). Computer supported cooperative work: Case and concepts. In P. R. Hendriks (Ed.), Groupware 1991: The Potential of Team and Organisational Computing. (pp. 59-75). Utrecht, The Netherlands: SERC.
Rosenschein, S. J. (1985). Formal theories of knowledge in AI and robotics. New Generation Computing, 3(4), 345-357.
Shoham, Y., & Tennenholtz, M. (1992). On the synthesis of useful social laws for artificial agent societies. Proceedings of the Tenth National Conference on Artificial Intelligence, (pp. 276-28?). San Jose, CA, , ,
Smith, I. A., & Cohen, P. R. (1995). Toward a semantics for a speech act based agent communications language. T. Finin & J. Mayfield (Ed.), Proceedings of the CIKM Workshop on Intelligent Information Agents, . Baltimore, MD, , ACM SIGART/SIGIR ,
Suchman, L. (1993). Do categories have politics? The language/action perspective reconsidered. Proceedings of the Third European Conference on Computer-Supported Cooperative Work, (pp. 1-14). Milan, Italy, , Dordrecht, The Netherlands: Kluwer Academic Publishers ,
Tarrago, S. (1992). Gaudi., Barcelona, Spain: Editorial Escudo de Oro, S.A.
Tockey, S., Rosenthal, D., Rosman LaFever, M., Jasper, R., George, N., Woolley, J. D., Bradshaw, J. M., & Holm, P. D. (1995). Implementation of the KAoS generic agent-to-agent protocol. Northwest AI Forum (NAIF) Journal(Spring), .
Virdhagriswaran, S., Osisek, D., & O'Connor, P. (1995). Standardizing agent technology. ACM Standards View, in press.
von Martial, F. (1992). Coordinating Plans of Autonomous Agents., Heidelberg, Germany: Springer Verlag.
Walker, A., & Wooldridge, M. (1995). Understanding the emergence of conventions in multi-agent systems. V. Lessor (Ed.), Proceedings of the First International Conference on Multi-Agent Systems, (pp. 384-389). San Francisco, CA, , Menlo Park, CA: AAAI/MIT Press ,
White, J. (1996). A common agent platform. (http://www.genmagic.com/Internet/Cap/w3c-paper.htm). General Magic, Inc., 11 March.
Winograd, T., & Flores, F. (1986). Understanding Computers and Cognition., Norwood, N.J.: Ablex.
Wooldridge, M. J., & Jennings, N. R. (1994). Formalizing the cooperative problem solving process. M. Klein & K. Sharma (Ed.), Proceedings of the Thirteenth International Distributed Artificial Intelligence Workshop, (pp. 403-417). Seattle, WA, , Seattle, WA: Boeing Information and Support Services ,
Zlotkin, G., & Rosenschein, J. (1994). Rules of Encounter: Designing Conventions for Automated Negotiation among Computers., Cambridge, MA: MIT Press.