RavenClaw

From Olympus
Jump to: navigation, search

RavenClaw is the dialogue manager and is a successor to the earlier AGENDA dialog manager. RavenClaw manages dialog using two data structures, the task tree and the agenda. The task tree is essentially a plan (or plans) for performing specified tasks in a given domain. In principle the task tree should include each of the activities that humans may reasonably want to undertake using the systems. Task trees are normally constructed by the developer although the architecture provides for dynamic task tree modification allowing the system and the user to carry out a limited form of planning. The agenda is an ordered list of agents that is used to dispatch inputs to appropriate agents in the task tree. The agenda is recomputed on every turn of the dialogue, placing the current agent (effectively the focus of the conversation) at the top of the list. Input (in the form of semantic concepts generated by Phoenix and Helios) is matched to successive items on the agenda. When a match occurs the corresponding agent is activated with matching concepts in the input. An agent may not consume all input concepts and thus remaining concepts are passed further down the agenda until some agent can consume them (including a catch-all agent at the bottom of the agenda). RavenClaw operation is driven by concept input. In principle the origin of the input(s) is not specified and in practice can come from sources other than spoken language. This allows RavenClaw to manage multi-modal dialogues as well as accept inputs from non-human sources (for example non-synchronous events generated in the domain). An example of such a system is LARRI.

Core Agent Thread

The core agent is a loop that processes input passes, organizes the agent stack, and executes the agents on the stack. The loop outlined below runs until the execution stack is empty.

  1. Remove completed agents from the execution stack
  2. Do grounding actions (if the floor is free and we are not waiting for any notifications)
  3. Do focus analysis and get the focus agent
  4. If we have the floor (or the focus agent doesn't require the floor)
    1. Execute the focus agent
    2. Take or release the floor as nessesary
  5. Wait for the next event

See Also

Publications

Personal tools