Next: SodaBot's Motivation
Up: Software Agents -
Previous: Other Points of
Clearly, there is an enormous variety in what people deem a software agent,
and it is somewhat difficult to tell whether this is good or bad for
the field. Nonetheless, having many enthusiastic researchers working
on their various ``agents'' is probably to everyone's benefit, so we
refrain from complaining too loudly.
However, we favor the following as a set of minimum criteria for
establishing a program's ``agency:''
- Software agents engage in dialogs; we don't issue commands to
agents, rather we have conversations with them. The communication
patterns among agents can be quite complicated.
- Software agents are autonomous and intelligent; they respond to
complex stimuli with sophisticated (and appropriate) behaviors.
- Software agents must be robust. Because they are autonomous and
presumably doing something important, agents must be able to respond
to unexpected changes in their computation world.
- Software agents are generally not time invariant - they
have memory and change what they do over time. Agents can employ
formal machine learning techniques, or they can more casually collect
data while they operate. Personal assistants can learn patterns in
their owners' behavior, and more generally, agents can spontaneously
react to particular events in their computational world.
- Software agents are typically distributed across a network, so
their behavior can have both local and global effects. Abstraction
barriers can become confused if an agent is responsible for too many
non-local events.