The terms "Software Agent", "Agent", "Intelligent Software Agent", "Mobile Agent", "Intelligent Agent", and other phrasings using "Agent" are used by different people to mean different things. For example, some people presume that agents MUST be intelligent, some presume they must be autonomous, some presume mobility, and some people have agents that execute on a fixed server.
There is a lot of intense debate going on about both terminology as well as more fundamental philosophical issues. I've started putting together a paper outlining not MY answers to all these issues, but a detailed set of questions which ultimately must be answered before software agents can become a mainstream, non-research, comodity technology. My questions aren't yet ready to be organized into a nice, neat structure, but are presently arranged merely as a scattered collection of "pieces in a puzzle". Maybe some of the questions have "obvious" positions. Some questions "obviously" fit together, but we may not have general consensus where those tentative groupings should be positioned. Even if we think we have answers today, advances in research and application will most likely result in many changes over time. I see the "agent puzzle" as very evolutionary, both in terms of the final locations of the pieces, but also in the number and appearance of the pieces themselves.
I haven't seen a definition that I really like, so here's my own: A Software Agent is a computer program whose execution is contingent upon events and data conditions in its environment and is not under continuous, direct control by a human user.
The dictionary says that an agent is "one who acts for in the place of another by authority from him." I'd adjust this to suggest that an agent is "an entity that acts on behalf of another entity." There is an implication that the agent acts with "at least some" autonomy. There is also the implication that the agent does its thing wherever appropriate and is not restricted to being co-located with its "client".
Loosely speaking, we say that autonomy is a requirement for being an agent. But, it would be more correct to say that agents have "a degree of autonomy." Sometimes agents can be preprogrammed to complete their tasks without any further interaction with their creators, but it's perfectly reasonable (and frequently preferable) for an agent to periodically interact with its creator, possible merely to report progress or to request additional guidance. The real requirement is that the agent take on some of its creator's burden and free them from at least some of their tasks. So, I say that an agent has "some degree of autonomy."
A word processor would not by itself be an agent, but an automatic spelling checker could be considered to be an agent. I don't consider a web browser to be an agent, but a search engine MIGHT be a candidate. An autonomous web search engine that periodically (without further interaction) reported search results (based on criteria specified by the user) would also be a possible candidate.
An agent could periodically interact with the user (just like a real-world, human agent), so absolute autonomy is not a strict requirement.
To avoid the confusion over the meaning of "autonomy", we could instead say that an agent is "not under continuous, direct control by the user".
Some proponents of software agents are focusing on the problem of "information overload." My thinking focuses on providing tools for "distributed computation". You can certainly think of the net as a giant repository of information, but you can also think of it as a very large parallel computer. Dealing with "information" (primarily searching and filtering) is only one of the categories of tasks to be performed by computer applications running on the net.
For a list of the variations of the term 'agent' that I have identified, click here.
I am slowly working through my thoughts on agents and gradually at least some aspects are becoming clear. See my Agent Thoughts web to get an idea of where I'm currently at in my thinking.
I have my own software agent system, RAGS (Remote AGent System), under development. No date has been set for commercial availability or even when I'll have a free, downloadable beta release. Stay tuned or send me email.
I recently completed an exhaustive search for all hits on "software agent" [watch out, it's over 225K!] using Alta Vista. I examined almost all of the hits (several thousand) to determine which had even the slightest potential interest to me or anyone else wanting to know about software agents. The result is over 1,200 URLs. I also spent a fair amount of time synthesizing reasonable titles for many of the URLs when the page author hadn't done so.
Please contact us with any questions or comments.
Updated: November 04, 2005 05:08:09 PM -0500
Copyright © 2001 John W. Krupansky d/b/a Base Technology