(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のノードを備え、前記複数のノードには、エージェントを生成させ他のノードに移動させるローカルノードと、前記ローカルノードにおいて生成されたエージェントの移動先となるリモートノードが設けられ、ローカルノードからリモートノードに対してエージェントを移動させながら情報処理を行うエージェントシステムのモニタ装置において、
前記ノードまたは前記ネットワークに接続されたノードとは別のコンピュータのいずれかには、エージェントシステム全体を監視するシステムモニタが設けられ、前記各ノードには当該ノードを監視するノードモニタが設けられ、前記各ノードのなかでエージェントが存在するノードには当該ノード上のエージェントを監視するエージェントモニタが設けられ、
前記ノードモニタは、対応するノード上に存在するエージェントを監視するエージェントモニタを保持し、前記エージェントが他のノードへ移動すると前記エージェントモニタを破棄し、エージェントの移動先であるノードを監視しているノードモニタは、移動してきたエージェントを監視するエージェントモニタを生成して保持するように構成されたことを特徴とするエージェントシステムのモニタ装置。
【請求項２】
前記システムモニタからノードモニタ及びエージェントモニタが起動され、前記ノードモニタからエージェントモニタが起動されることを特徴とする請求項１記載のエージェントシステムのモニタ装置。
【請求項３】
前記システムモニタは、エージェントシステム内にどのようなノード及びエージェントが存在するかを、前記ノードまたはネットワークに接続されたコンピュータに設けられた表示画面であるシステムモニタウインドウに対して出力し、指定されたノードを監視するノードモニタ又は指定されたエージェントを監視するエージェントモニタのうち少なくとも一方を起動するように構成されたことを特徴とする請求項１又は２記載のエージェントシステムのモニタ装置。
【請求項４】
前記ノードモニタは、対応するノードにどのようなエージェントが存在するかを、前記ノードに設けられた表示画面であるノードモニタウインドウに出力し、指定されたエージェントを監視するエージェントモニタを起動するように構成されたことを特徴とする請求項１乃至３のいずれか一に記載のエージェントシステムのモニタ装置。
【請求項５】
前記ノードモニタは、対応するノードにエージェントの動作を記録したログファイルとしてどのようなものが存在するかを、前記ノードに設けられた表示画面であるノードモニタウインドウに出力し、指定されたログファイルに基づいてエージェントの動作を確認するように構成されたことを特徴とする請求項１乃至４のいずれか一に記載のエージェントシステムのモニタ装置。
【請求項６】
前記エージェントモニタは、対応するエージェントがどのノードにいるか、及び当該エージェントが現在プランのどの部分を実行しているかを、当該エージェントモニタが起動されたノードに設けられたエージェントモニタウインドウに出力するように構成されたことを特徴とする請求項１乃至５のいずれか一に記載のエージェントシステムのモニタ装置。
【請求項７】
前記エージェントモニタは、対応するエージェントのプランのうち所望の部分にブレークポイントを設定するように構成されたことを特徴とする請求項１乃至６のいずれか一に記載のエージェントシステムのモニタ装置。
【請求項８】
前記エージェントモニタは、対応するエージェントのプランのうち所望の部分に、エージェントの動作についてログの記録を制御するためのロギングポイントを設定するように構成されたことを特徴とする請求項１乃至７のいずれか一に記載のエージェントシステムのモニタ装置。
【請求項９】
ネットワークに接続された複数のノードを備え、前記複数のノードには、エージェントを生成させ他のノードに移動させるローカルノードと、前記ローカルノードにおいて生成されたエージェントの移動先となるリモートノードが設けられ、ローカルノードからリモートノードに対してエージェントを移動させながら情報処理を行うエージェントシステムのモニタ方法において、
前記ノードまたは前記ネットワークに接続されたノードとは別のコンピュータのいずれかには、エージェントシステム全体を監視するシステムモニタが設けられ、前記各ノードには当該ノードを監視するノードモニタが設けられ、前記各ノードのなかでエージェントが存在するノードには当該ノード上のエージェントを監視するエージェントモニタが設けられたモニタ装置を使用して、
前記エージェントを生成して移動させるノードモニタに、対応するノード上に存在するエージェントを監視するエージェントモニタを保持させるステップと、前記エージェントが他のノードへ移動すると前記エージェントモニタを破棄するステップを実行させ、
前記エージェントの移動先であるノードを監視しているノードモニタに、移動してきたエージェントを監視するエージェントモニタを生成して保持するステップを実行させることを特徴とするエージェントシステムのモニタ方法。
【請求項１０】
エージェントシステム全体を監視するシステムモニタは、エージェントシステム内にどのようなノード及びエージェントが存在するかを、前記ノードまたはネットワークに接続されたコンピュータに設けられた表示画面であるシステムモニタウインドウに対して出力するステップと、ノード又はエージェントのうち少なくとも一方を指定するためのステップと、前記ノードモニタまたはエージェントモニタのうち少なくとも一方を起動するステップと、を実行することを特徴とする請求項９記載のエージェントシステムのモニタ方法。
【請求項１１】
前記ノードモニタは、対応するノードにどのようなエージェントが存在するかを、前記ノードに設けられた表示画面であるノードモニタウインドウに出力するステップと、エージェントを指定するためのステップと、前記エージェントモニタを起動するステップと、を実行することを特徴とする請求項９又は１０記載のエージェントシステムのモニタ方法。
【請求項１２】
前記エージェントモニタは、対応するエージェントがどのノードにいるか、及び当該エージェントが現在プランのどの部分を実行しているかを、当該エージェントモニタが起動されたノードに設けられたエージェントモニタウインドウに出力するステップを実行することを特徴とする請求項９乃至１１のいずれか一に記載のエージェントシステムのモニタ方法。
【請求項１３】
ネットワークに接続された複数のノードを備え、前記複数のノードには、エージェントを生成させ他のノードに移動させるローカルノードと、前記ローカルノードにおいて生成されたエージェントの移動先となるリモートノードが設けられ、ローカルノードからリモートノードに対してエージェントを移動させながら情報処理を行うエージェントシステムを実現させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記プログラムは、前記ノードまたは前記ネットワークに接続されたノードとは別のコンピュータのいずれかに、エージェントシステム全体を監視するシステムモニタを、前記各ノードには当該ノードを監視するノードモニタを、前記各ノードのなかでエージェントが存在するノードには当該ノード上のエージェントを監視するエージェントモニタを有するモニタ装置を実現するものであり、
前記エージェントを生成して移動させるノードモニタに、対応するノード上に存在するエージェントを監視するエージェントモニタを保持させるステップと、前記エージェントが他のノードへ移動すると前記エージェントモニタを破棄するステップを実行させ、
前記エージェントの移動先であるノードを監視しているノードモニタに、移動してきたエージェントを監視するエージェントモニタを生成して保持するステップを実行させることを特徴とするエージェントシステムのモニタ用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上に分散して存在する情報をエージェントを用いて処理する技術の改良に関するもので、特に、エージェントによる動作の柔軟性と安全性を高めたものである。
【０００２】
【従来の技術】
〔エージェントシステム〕
従来から、コンピュータのネットワーク上に分散した情報を処理する技術として、エージェントシステムが知られている。エージェントとは、ソフトウェア上の処理単位であり、周囲の状況に応じて自律的に動作するものである。エージェントシステムは、このようなエージェントが、ネットワークを構成するノード上を必要に応じて移動しながら情報収集などの処理を行うシステムである。ここで、ノードとは、ネットワークを構成する論理的な単位であり、一つのマシンすなわちコンピュータ上に複数存在し得る。
【０００３】
図７は、このようなエージェントシステムの一例として、本出願人が特願平７−１７６１８１で提案しているエージェントシステムについて、その構成例を示す機能ブロック図である。この図に示すエージェントシステムは、複数のノード８００をネットワーク８００Ｎで接続したものであり、多数設けることができるノードのうち図７では２つだけを例示している。そして、ノード８００のうち、ユーザがエージェント生成に使用するノードをローカルノード（８００Ｌ）と呼び、生成されたエージェントが移動して行く先のノードをリモートノード（８００Ｒ）と呼ぶ。
【０００４】
このエージェントシステムにおいて、各ノード８００は、ユーザがエージェントを生成する操作を行なったり、エージェントが情報処理を行なった結果を受け取るための入出力手段８０３（Ｌ，Ｒ）を有する。また、各ノードのエージェント管理手段８０４（Ｌ，Ｒ）は、エージェントを生成したり、役割を終えたエージェントを消去する他、エージェントの情報を他のノードへ転送することによって、エージェントを他のノードへ移動させたり、他のノードから同様に移動してくるエージェントを受け入れる手段である。ユーザは、このようなエージェントシステムを用いて何らかの情報処理を行ないたい場合、ローカルノード８００Ｌにおいて、入出力手段８０３Ｌからエージェント管理手段８０４Ｌに指示を与えることによってエージェントを生成させる。
【０００５】
そして、最も基本的な例を示せば、生成されたエージェントに対して、ユーザが入出力手段８０３Ｌからスクリプトを与える。スクリプトは、エージェントの行動プログラムであり、どのノードへ移動し、どのような処理を行う、といった内容を具体的に記述したものである。スクリプトのより具体的な例としては、例えば、ノードＡに移動してファイルａのコピーをユーザのノードに送信し、次にノードＢに移動してファイルｂのコピーをユーザのノードに送信し…といった内容が考えられる。そして、各ノードに備えられた解釈実行手段８０２（Ｌ，Ｒ）は、このようなスクリプトを実行することによってエージェントを活動させ、これによって目的とする情報処理を実現する。
【０００６】
この場合、各ノードに備えられたエージェント情報記憶手段８０１（Ｌ，Ｒ）が、エージェントに必要な情報を記憶する。エージェントに必要な情報は、例えば、前記のスクリプトのほか、スクリプトの解釈実行に必要な各変数（スクリプト変数と呼ばれる）や、必要な場合は、エージェントが収集した情報やファイルなどである。また、エージェントのスクリプトに記述される命令としては、一つのノード上だけで実行できる命令のほか、エージェントを他のノードへ移動させるための移動命令がある。解釈実行手段８０２Ｌは、スクリプトの命令を順次実行し、移動命令の実行が必要になった場合には、移動先のノードを指定して、エージェントの移動をエージェント管理手段８０４に依頼する。
【０００７】
このようなエージェントシステムでは、ユーザが、いくつかのファイルをネットワーク上から収集したいような場合、この目的を達成するための行動プログラムをエージェントに持たせてネットワーク上に送り出せばよく、送り出されたエージェントは、与えられたスクリプトに基づいて自律的に活動する。このため、ユーザのノードとエージェントとの間で通信を始終維持する必要はないことから、ftp やtelnetといった従来のネットワーク機能と比べて回線障害に強いという利点がある。
【０００８】
〔プランニングを用いる構成例〕
図７に示したエージェントシステムに対して、エージェントの行動プログラムであるスクリプトを、状況に応じて変化させることができるエージェントシステムも知られている。
【０００９】
すなわち、近年のようにネットワークが大規模化・複雑化し、特に、インターネットのような広域ネットワークと接続されることによっていわゆる開放型ネットワークになると、ファイルの所在などのようなネットワークの構成要素がしばしば変化するようになる。ところが、図７に示した上記のようなエージェントシステムでは、エージェントは生成される時点で固定されたスクリプトを与えられるため、状況に応じて行動を変更することができない。そこで、このような変化に柔軟に対応するため、人手を煩わせずにエージェントの行動を自動的に変化させる技術として、本出願人は、プランニング機能を持ったエージェントシステムを出願している。
【００１０】
この技術では、エージェントの行動プログラムはプランと呼び、プランを生成することをプランニングと呼ぶ。そして、この技術では、状況に応じてプランを適宜作り直すことによって、ネットワークの構成要素の変化に対応する。なお、ネットワークの構成などの変化に対応してプランニングを再度やり直すことを再プランニングと呼ぶ。
【００１１】
このようなエージェントシステムの構成例を図８の機能ブロック図に示す。この技術において、プランの生成に用いる情報としては、「知識」と呼ばれる情報とアクション定義とが挙げられる。このうち「知識」は、エージェントの動作、特にプランニングに利用する各種の情報であり、その一例として、どのファイルがどのノードに存在するかといったネットワークの構成要素に関する情報を含む。例えば図８の例では、このようなネットワークの構成に関する知識を、ローカル情報記憶手段１Ｌに保存しておき、ネットワークの構成に変化があったときは、更新手段２Ｌが、自動検出や手作業などによって、このような変化を知識に反映させる。また、アクション定義とは、プランを構成する部品として、どのような種類の命令（アクション）が使えるかを表す情報であり、エージェント情報記憶手段３に格納しておく。
【００１２】
このようなエージェントシステムでは、エージェントの生成を指示するユーザは、達成したいゴールをスクリプトの代わりにノードに与える。ここで、ゴールとは、情報処理の目的として達成したい状態を予め定められた文法で記述したものである。すると、プラン生成手段５は、与えられた知識を参照しながら、アクション定義に含まれる各種のアクションを組み合わせることによって、ゴールを達成するためのプランを生成する。このようなエージェントシステムでは、ネットワークの構成の変化は、プランニングや再プランニングの際に、知識を介してエージェントのプランに反映されるので、エージェントは、人手を介さずに状況の変化に対応し、柔軟に行動を変化させることができる。
【００１３】
なお、このようなプランを生成する手段は、「プランナ」とも呼ばれ、その実体はプランニングの手続きを表すプログラムの一種である。また、エージェントの行動プログラムやその各部分を呼ぶ広義の概念がスクリプトであり、プランというときは、特に、図８に示したようなプランニングを行うエージェントによって生成されたスクリプトの全体を指す。
【００１４】
〔プランニングの例〕
続いて、上記のようなプランニングを用いたエージェントシステムの具体的な動作手順を図９に例示する。この手順では、ユーザが、情報処理のゴールとしてエージェントに対する要求の記述（要求記述）を入力すると（ステップ２０１）、必要な初期化が行なわれた後（ステップ２０２）、プランが生成される（ステップ２０３）。なお、処理は、ゴールが既に達成されているなど終了条件の判定結果に応じて終了する（ステップ２０４，２０５）。
【００１５】
すなわち、このような終了条件が満たされるまでは、ゴールを達成するために実行を要するプランの実行が行われる（ステップ２０４）。プランの実行では、プランに含まれる各命令を順次実行し、実行する命令が移動命令の場合にはエージェントをノード間で移動させる処理（goアクションと呼ばれる）が実行される（ステップ２０６〜２０８）。また、各命令の実行やgoアクションの実行に失敗した場合は、必要に応じて新たなプランを生成する。
【００１６】
ここで、プランの生成に用いるアクション定義には、アクション（動作）の種類ごとに、事前条件と事後条件とが定義されている。このうち事前条件とは、どんな条件が満たされていればその動作を実行できるかを表し、事後条件は、その動作を実行するとどのような条件が作り出されるかを表す。例えば、「ファイルをコピーする」という動作を行うには、「現在いるノードにファイルが存在する」という事前条件が必要であり、コピーの動作を行なった結果として「ファイルのコピーが存在する」という事後条件が産み出される。
【００１７】
プランの生成は、最終的なゴールを事後条件として産み出す動作を発見し、この動作の事前条件を事後条件として産み出すさらに別の動作を発見する、という処理を続けることによって、プランを実行する前の状態（現在の状態）と最終的なゴールとの間をつなぐ動作の列を得ることである。なお、図１０は、生成途中におけるプランの例を示す図であり、この例では、動作Ｐ２の一方の事前条件Ｃ５と、動作Ｐ３の事前条件Ｃ７について、これら事前条件を事後条件として産み出す動作がまだ見つかっていない。このように、事後条件として産み出す他の動作がまだ見つかっていない事前条件は未達成ゴールと呼ばれる。
【００１８】
このようなプラン生成の処理は、ゴールの側から因果を逆に遡って行ない、プランの実行を開始する時点で存在している状態（現在の状態）に到達すると終了する。図１１は、このような処理によって完成したプランの例を示す図である。
【００１９】
続いて、プラン生成の具体的な手順を図１２に示す。すなわち、この手順では、ゴールを記録しておくゴールリストの一部を、図１０に示したような未達成ゴールを記録しておく未達成ゴールリストとしておき、次のような処理を行う。まず、ゴールリストに未達成ゴールが存在しなくなるまで（ステップ４０１）、未達成ゴールリストから未達成ゴールを１つずつ選択し（ステップ４０２）、ゴールが満足されている場合を除いて（ステップ４０３）、次のような動作を行う。すなわち、ゴールである事前条件を事後条件によって達成可能な動作が存在すれば（ステップ４０４）この動作を選択し（ステップ４０５）、このように選択した動作（選択動作）を図１１に示したような動作の系列（プラン木）に追加する（ステップ４０６）。
【００２０】
また、ゴールを達成可能な動作が存在しない場合は、ゴールが不確実知識で達成可能かを判断する。ここで、不確実知識とは、ネットワークの構成に関する知識のうち、他のノードで実際に何らかの処理を行なってみないと具体的な値がわからない知識である。ゴールが不確実知識で達成可能な場合はこの不確実知識を選択動作としてプラン木に追加するが（ステップ４０５）、不確実知識でも達成不可能な場合は、処理をバックトラックさせ（ステップ４０８）、現在の未達成ゴールを生じさせている動作を他の動作に置き換えて再度処理を行う。
【００２１】
例えば、ユーザが使用するノードのノード知識で、「ファイルａがノードＡに存在する」とされているとする。この場合、ファイルａを得るというゴールをユーザが与えると、ノードＡに存在するという知識が参照されるので、生成されたエージェントのプランは、「ノードＡに移動してファイルａのコピーをユーザのノードに送信する」、といった内容になる。
【００２２】
しかし、エージェントがノードＡに移動した時点で、ファイルａはノードＢに移動されていると、ファイルａが発見できないためにプランは実行失敗となり、ノードＡ上で再プランニングが行なわれる。このとき、ノードＢのノード知識がファイルの移動にあわせて更新されており、「ファイルａはノードＢに存在する」と変更されている場合、新しいプランは「ノードＢに移動してファイルａのコピーをユーザのノードに送信する」、という内容に変更される。この結果、エージェントはノードＢに自律的に移動するし、ファイルａを無事発見してユーザのノードに送信することができる。
【００２３】
また、このように生成されたプランに基づいて、エージェントがノード間で移動する場合の手順を図１３に示す。この例では、ユーザがエージェントを生成したローカルノードから、他のノードであるリモートノードへエージェントが移動するものとする。この場合、ローカルノードからの移動要求（ステップ５０１）を受信したリモートノードは（ステップ５０２）、エージェント用のプロセスを設定する（ステップ５０３）。
【００２４】
続いて、リモートノードから、プロセスの設定が完了した旨の通知（ステップ５０４）を受信したローカルノードは（ステップ５０５）、エージェントのプランや変数領域などのエージェント情報をリモートノードに送信する（ステップ５０６）。このエージェント情報を受信したリモートノードは（ステップ５０７）、エージェント情報を格納し（ステップ５０８）、ローカルノードへ移動成功の通知を送信し（ステップ５０９）、プランの解釈実行を開始する（ステップ５１０）。一方、成功の通知を受信したローカルノードは（ステップ５１１）、不要になったエージェント用のプロセスを消去する（ステップ５１２）。
【００２５】
〔エージェントのライフサイクル〕
次に、以上のようにプランニングを行うエージェントのライフサイクルを示す概念図を図１４に示す。すなわち、エージェントは、ゴール投入と共に生成されて活動を開始すると、まず、プランを生成するプランニングフェーズＰから開始し、生成されたプランにしたがい、プランを実行する実行フェーズＥやノード間で移動する移動フェーズＭに移行し、実行や移動の失敗に応じてこれらの各フェーズ間を移行しながら活動する。そして、当初与えられたゴールを達成すれば正常終了となり、ゴールが達成できずにプランニング自体にも失敗すると完全失敗となって終了する。
【００２６】
〔ファームを用いる例〕
また、１つのノード上に、ファームと呼ばれる領域をいくつか設けたエージェントシステムも考えられる。ここで、ファームとは、情報処理の目的や分野ごとに設定されるエージェントの活動領域であり、フィールドとも呼ばれる。このようなファーム（フィールド）は、一つのノード上に複数存在することができ、メモリなどの資源やプランの生成・実行に用いる情報は、ファーム（フィールド）毎に設けられる。
【００２７】
図１５は、ネットワークＮに複数のホストＨ（マシン）が接続され、各ホストＨ上には１つずつのノードＸが存在し、ノードＸ上に複数のフィールドＦＬが存在する例を示す概念図である。このようなエージェントシステムでは、プラン生成に用いる知識がファーム（フィールドＦＬ）ごとに分けられており、これによって、エージェントはプランニングなどに必要な情報を検索する際、余分な情報まで参照する必要がないので、情報処理が効率化される。なお、プラン生成に用いられる知識はその知識を所持している主体によって、ファームが所持しているファーム知識、エージェントが所持しているエージェント知識などに分けることができる。
【００２８】
【発明が解決しようとする課題】
しかしながら、上記のような従来技術には、次のような問題点が存在していた。
（１）まず、上記のように、エージェントシステムは、複数のノードを有するだけでなく、これらノード上を複数のエージェントが動き回るという複雑なシステムである。そして、従来、ネットワークに含まれる個々のノード毎に、状態を表示するモニタは知られていた。しかし、エージェントシステム全体について、どのようなノード及びエージェントが存在しているかを管理したり、特定のノードに存在するエージェントを把握したり、特定のエージェントがノード上を移動していく様子を追跡するモニタは知られていなかった。このため、システム全体の状態やエージェントの移動経路を把握してシステム全体の管理を効果的に行なったり、ノードやエージェントが持っている情報をデバッグするなどの作業が困難であった。
【００２９】
（２）また、エージェントシステムは、ゴールが与えられると、知識やアクション定義に基づいて、ゴールを達成するためのプランを生成する。しかし、従来は、与えられたゴールに対して正しいスクリプトが生成されるかどうかを確認するツールが存在しなかった。このため、知識やアクション定義のデバッグが困難であった。
【００３０】
また、与えられたゴールは、通常、１つ又は複数のサブゴールを派生させる。このサブゴールとは、最終的なゴールを達成するために、プラン生成の際に中間的に作成されるゴールである。例えば、最終的な１つのゴールを達成するために、２つの別々の必須条件が必要な場合、それぞれの条件がサブゴールとなり、各サブゴールを達成するためにはそのための部分的なスクリプトが生成される。
【００３１】
このため、最終的なゴールに対応して生成されたスクリプト全体について、システム内からテキストファイルを取り出せても、ゴールとサブゴールの関係や、サブゴールを達成するためにはどのようなスクリプトが用いられるかを理解することは困難であり、所望の部分について適切なデバッグを行うことが困難であった。
【００３２】
（３）また、従来のスクリプトは記述された命令を単に順番に実行するだけのものであったため、その動作を把握することも比較的容易であった。しかし、スクリプトが複雑化すると、その動作の把握は困難となる。
【００３３】
すなわち、本出願人は、どのような条件の時にどのような命令が使用できるかを表すアクション定義と、ある命令の動作として具体的にはどのような動作を行うかというスクリプトの実体とを、別々に記述できるエージェントシステムを出願している。このエージェントシステムでは、スクリプトの実体を、アクション定義の記述文法に拘束されずに自由に記述できる。このため、各種制御構文や変数を用いることによって、スクリプト中に複雑な動作を記述可能となる。
【００３４】
このように複雑なスクリプトをデバッグしようとする場合は、スクリプトのどの部分がどのような順序で実行され、また、それに伴ってどの変数がどのように変化するかを把握することが不可欠となる。しかし、従来は、このように複雑なスクリプトをデバッグするための技術は存在しなかったので、複雑なスクリプトのデバッグは特に困難であった。
【００３５】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、その目的は、エージェントシステムの管理と開発とを効果的に支援する技術を提供することである。より具体的には、本発明の目的は次のとおりである。
（１）全体、ノード、エージェントといった単位でそれぞれモニタで監視することによってエージェントシステムの振る舞いを把握できるようにすること。
（２）エージェントシステムのデバッグを効果的に支援する技術を提供すること。
（３）複雑なスクリプトを効果的にデバッグする技術を提供すること。
【００３６】
【課題を解決するための手段】
上記の目的を達成するため、本発明のモニタ装置は、ネットワークに接続された複数のノードを備え、前記複数のノードには、エージェントを生成させ他のノードに移動させるローカルノードと、前記ローカルノードにおいて生成されたエージェントの移動先となるリモートノードが設けられ、ローカルノードからリモートノードに対してエージェントを移動させながら情報処理を行うエージェントシステムのモニタ装置において、前記ノードまたは前記ネットワークに接続されたノードとは別のコンピュータのいずれかには、エージェントシステム全体を監視するシステムモニタが設けられ、前記各ノードには当該ノードを監視するノードモニタが設けられ、前記各ノードのなかでエージェントが存在するノードには当該ノード上のエージェントを監視するエージェントモニタが設けられ、前記ノードモニタは、対応するノード上に存在するエージェントを監視するエージェントモニタを保持し、前記エージェントが他のノードへ移動すると前記エージェントモニタを破棄し、エージェントの移動先であるノードを監視しているノードモニタは、移動してきたエージェントを監視するエージェントモニタを生成して保持するように構成されたことを特徴とする。また、前記のモニタ装置の構成を、方法またはコンピュータ読み取り可能な記録媒体の観点から把握したものも、本発明の一態様である。
このような構成を有する本発明によれば、システム全体、ノード及びエージェントをそれぞれ専用のモニタによって監視できるので、エージェントシステムの全体と各部分の双方について状態を効果的に把握でき、エージェントシステムの管理やデバッグが容易になる。特に、エージェントがノード間で移動すると、移動したエージェントのエージェントモニタは、移動元ノードでは破棄され、移動先ノードで再度生成されるので、エージェントモニタをエージェントと共に送信する必要がなく、そのような送信に要する所要時間や手数が不要となる。
【００３７】
本発明の他の態様は、前記システムモニタからノードモニタ及びエージェントモニタが起動され、前記ノードモニタからエージェントモニタが起動されること、前記システムモニタは、エージェントシステム内にどのようなノード及びエージェントが存在するかを、前記ノードまたはネットワークに接続されたコンピュータに設けられた表示画面であるシステムモニタウインドウに対して出力し、指定されたノードを監視するノードモニタ又は指定されたエージェントを監視するエージェントモニタのうち少なくとも一方を起動するように構成されたこと、前記ノードモニタは、対応するノードにどのようなエージェントが存在するかを、前記ノードに設けられた表示画面であるノードモニタウインドウに出力し、指定されたエージェントを監視するエージェントモニタを起動するように構成されたことを特徴とする。これらの本発明の態様においては、各モニタから他の種類のモニタを起動できるので、エージェントシステムの状態を多面的に把握することが容易になる。
【００３８】
本発明のさらに他の態様は、前記ノードモニタは、対応するノードにエージェントの動作を記録したログファイルとしてどのようなものが存在するかを、前記ノードに設けられた表示画面であるノードモニタウインドウに出力し、指定されたログファイルに基づいてエージェントの動作を確認するように構成されたことを特徴とする。この態様によれば、、所望のエージェントのログファイルに基づいてエージェントの動作を再現などによって確認できるので、個々のエージェントの動作を容易に検討することができる。
【００３９】
本発明の他の態様は、前記エージェントモニタは、対応するエージェントのプランのうち所望の部分にブレークポイントを設定するように構成され、また、前記エージェントモニタは、対応するエージェントのプランのうち所望の部分に、エージェントの動作についてログの記録を制御するためのロギングポイントを設定するように構成されたことを特徴とする。このような本発明の態様によれば、エージェントモニタからエージェントにブレークポイントを設定することができるので、エージェントの状態の監視からデバッグへ容易に移行でき、作業が効率化される。また、エージェントのプランにロギングポイントを設定することによって、必要な部分だけのログを容易に記録することができる。
【００４７】
【発明の実施の形態】
次に、本発明の実施の形態（以下「実施形態」という）について、図面を参照して説明する。
なお、本発明は、周辺機器を持つコンピュータを、ソフトウェアで制御することによって実現することが一般的と考えられる。この場合、キーボード及びマウスなどの入力装置で情報を入力し、ＣＲＴ表示装置及びプリンタなどの出力装置で情報を出力できる。また、レジスタ、メモリ、外部記憶装置などの記憶装置は、いろいろな形式で、情報を一時的に保持したり永続的に保存できる。そして、ＣＰＵは、前記ソフトウェアにしたがって、これらの情報に加工及び判断などの処理を加え、さらに、処理の順序を制御することができる。
【００４８】
また、コンピュータを制御するソフトウェアは、各請求項及び明細書に記述する処理に対応した命令を組み合わせることによって作成され、作成されたソフトウェアは、コンパイラやインタプリタなどの処理系によって実行されることで、上記のようなハードウェア資源を活用する。
【００４９】
但し、本発明を実現するための上記のような態様はいろいろ変更することができ、例えば、本発明の装置と外部との間で情報を入出力するには、フロッピーディスクなどの着脱可能な記録媒体やネットワーク接続装置を使用することもできる。さらに、本発明を実現するソフトウェアを記録したＣＤ−ＲＯＭのような記録媒体は、それ単独でも、本発明の一態様である。また、本発明の機能の一部をＬＳＩなどの物理的な電子回路で実現することも可能である。
【００５０】
以上のように、コンピュータを使用して本発明を実現する態様はいろいろ変更できるので、以下では、本発明の各機能を実現する仮想的回路ブロックを用いることによって、本発明の実施の形態を説明する。
【００５１】
〔１．第１実施形態…モニタ装置〕
第１実施形態は、請求項１〜１４に対応するもので、エージェントが複数のノード上を移動しながら情報処理を行うエージェントシステムをモニタするためのモニタ装置において、システム全体を監視するシステムモニタと、ノードを監視するノードモニタと、エージェントを監視するエージェントモニタと、を備えたものである。
【００５２】
〔１−１．構成〕
図１は、第１実施形態の構成を示す概念図である。この図に示すように、第１実施形態は、エージェントシステム全体を監視するシステムモニタ１１１と、ノード１１２を監視するノードモニタ１１３、エージェント１１４を監視するエージェントモニタ１１５を有する。これらの各モニタは、例えば、ノード上で実行されるプロセスとして立ち上げる。
【００５３】
このうち、システムモニタ１１１は、エージェントシステムのネットワークに接続されたどのノード上に設けてもよいが、ノード以外の、エージェントシステムがネットワーク経由で参照可能な任意のホスト（マシン）上で立ち上げることも可能である。こうすることにより、エージェントシステム外からシステムを監視することもできる。
【００５４】
また、ネーミングシステム１１９との通信量を削減するためには、システムモニタ１１１はネーミングサービス１１９の存在するホスト上に設けることが望ましい。そして、ネーミングサービス（ネームサーバ）１１９も、ノード以外の、エージェントシステムがネットワーク経由で参照可能な任意のホスト上で立ち上げることが可能である。
【００５５】
また、ノードモニタ１１３は、特定の１つのノードを監視するもので、複数のノードを監視するためにはノード毎に同数のノードモニタ１１３を立ち上げて用いる。
【００５６】
また、エージェントモニタ１１５も、特定の１つのエージェントを監視するもので、複数のエージェントに対しては同数立ち上げて用いる。このエージェントモニタは、対応するエージェントが存在するノードのノードモニタ１１３が、当該ノードモニタ１１３の一部として保持する。
【００５７】
また、これらシステムモニタ１１１、ノードモニタ１１３、エージェントモニタ１１４は、それぞれ対応する表示画面であるシステムモニタウインドウ１１６、ノードモニタウインドウ１１７、エージェントモニタウインドウ１１８を介して、ユーザとの間でデータを入出力したり、指示や操作・各種の指定を受け付ける。そして、これら各モニタ１１１，１１３，１１５は、ユーザが個別に直接立ち上げることもできるし、相互に他のモニタを起動することもできる。
【００５８】
ここで、ノードモニタ１１３は、ノードの情報の収集しやすさの点では、監視の対象とするノード上に設けることが望ましく、ノードモニタ１１３が収集した情報は、表示画面であるノードモニタウインドウ１１７を通じてユーザに提示され、ユーザからの指示もノードモニタウインドウ１１７を介して行われる。
【００５９】
このノードモニタウインドウ１１７は、遠隔地にあるノードモニタ１１３とユーザとの通信を行うのが主な役割である。よって、このように遠隔地からノードをモニタする場合の通常の構成例としては、ノード上にノードモニタ１１３が存在し、このノードをモニタするユーザ側のマシン上でノードモニタウインドウ１１７が立ち上がっているという形態が考えられる。そして、モニタ用の各ウインドウ１１６〜１１８は、エージェントシステムがネットワーク経由で参照可能な任意のホスト上で立ち上げることが可能である。
【００６０】
〔１−２．作用〕
上記のような構成を有する第１実施形態は、次のような作用を有する。ここで、図２は、第１実施形態における処理手順を示すフローチャートである。
〔１−２−１．システムモニタの作用〕
まず、ユーザが最初にシステムモニタ１１１を立ち上げると（ステップ６２１１）、システムモニタ１１１は、エージェントシステムの持つネーミングサービス１１９と通信することによってシステム全体の情報を獲得し、獲得した情報を表示画面であるシステムモニタウインドウ１１６に表示する（ステップ６２１２）。システムモニタ１１１がこのように表示する情報は、具体的には、例えばエージェントシステム内にどのようなノード及びエージェントが存在するかのリストである。
【００６１】
ユーザは、このリストから所望のノードを指定することによって（ステップ６２１３）、そのノードを監視するノードモニタ１１３を起動（立ち上げ）することができる（ステップ６２２１）。また、同様に、ユーザはリストからエージェントを指定することによって（ステップ６２１４）、そのエージェントを監視するエージェントモニタ１１５を立ち上げることができる（ステップ６２３１）。なお、ノードやエージェントを指定するには、例えば、名称をキーボードからタイプ入力したり、リスト上のノード名やエージェント名をマウスでダブルクリックすればよい。
【００６２】
〔１−２−２．ノードモニタの作用〕
ノードモニタ１１３は立ち上げられると（ステップ６２２１）、対応するノード１１２と通信することによってそのノード１１２に関する情報を獲得し、獲得した情報を表示画面であるノードモニタウインドウ１１７に表示する（ステップ６２２２）。ノードモニタ１１３がこのように表示する情報は、例えば、対応するノード１１２にどのようなエージェント１１４が存在するかのリストや、そのノード１１２に残されているエージェントログファイル（以下単に「ログ」という）のリストなどである。
【００６３】
ここで、ログとは、特定のエージェントがプランに基づいてどのような振る舞いをしたかを、プランに含まれる命令の１ステップごとに記録した情報である。ユーザは、このようなノードモニタ１１３の表示画面において、所望のエージェント名をマウスによるダブルクリックで指定することによって（ステップ６２２３）、そのエージェントを監視するエージェントモニタ１１５を立ち上げることができる（ステップ６２３１）。
【００６４】
また、ユーザは、ノードモニタの表示画面において所望のログを指定することによって（ステップ６２２４）、そのログに基づいてエージェントの動作を確認することができる。具体的には、そのログに基づいてエージェントが生成され、ログに記録されているとおりの振る舞いをそのエージェントに行なわせたり、その先の動作を継続させたりすることができる。
【００６５】
〔１−２−３．エージェントモニタの作用〕
また、エージェントモニタ１１５は、対応するエージェントと通信することによってそのエージェントに関する情報を獲得し、獲得した情報を、表示画面であるエージェントモニタウインドウ１１８に表示する（ステップ６２３２，６２３３）。エージェントモニタ１１５が表示する情報は、例えば、そのエージェントがどのノードにいるか（ステップ６２３２）や、エージェントが現在プランのどの部分をどのように実行しているかといった実行状態（ステップ６２３３）などである。
【００６６】
〔１−２−４．ブレークポイントの設定〕
また、エージェントモニタ１１５は、エージェントの動作を制御する機能を持っており、ユーザは、エージェントモニタ１１５を用いてエージェントのプランの所望の部分にブレークポイントを設定し（ステップ６２３４）、そのブレークポイントで実行を停止させたり、停止した位置からプランに含まれる各命令を１ステップずつ実行させたり、次のブレークポイントまで実行させたりすることができる。
【００６７】
このようなブレークポイントは、どんな条件でプランの実行を停止させるかなどに応じて、いくつもの種類を設定することが可能である。また、ブレークポイントを設ける対象についても、例えばプラン中の特定の行を単位としたり、特定の命令を単位としたり、また、特定のゴールやサブゴールを単位とすることもできる。さらに、前記のようなブレークポイントの種類や設定対象を自由に組み合わせることもできる。そして、このように設定されたブレークポイントは、エージェントモニタ１１５の表示画面であるエージェントモニタウインドウ１１８上に表示される。
【００６８】
〔１−２−５．ロギングポイントの設定〕
また、ユーザは、エージェントモニタ１１５を用いて、ブレークポイントと同様に、対応するエージェントのプランのうち所望の部分にロギングポイントを設定することができる。ここで、ロギングポイントとは、エージェントの動作についてログの記録を制御するためのポイントであり、ログの記録を行う開始点や終了点を指定するのに用いる。また、ロギングポイントは、ブレークポイントと同様に様々な条件や対象の単位を組み合わせて設定することができる。例えば、プランのどこからどこを実行しているときにログを記録するかという範囲だけでなく、例えば、実行失敗に対する復旧処理の間だけ記録するなど、ログを記録する条件も指定することができる。
【００６９】
そして、エージェントのプランが実行されると、エージェントモニタ１１５は、ロギングポイントで指定した条件や対象について、エージェントのログファイルを記録し、ユーザの求めに応じてエージェントモニタウインドウ１１８に出力する。さらに、このように得られたログファイルをノードモニタ１１３上から利用することによって、そのログをとったときと同じ状態で、エージェントを再現し、ログに記録された動作を再現させたり、その先の動作の実行を継続させたりすることができる。
【００７０】
〔１−２−６．エージェントが移動する場合の処理〕
ところで、エージェントモニタ１１５が対応しているエージェントが別のノードに移動すると（図３）、そのエージェントモニタ１１５を保持しているノードモニタ１１３は、当該エージェントモニタ１１５を破棄し、エージェントの移動先のノードに対応するノードモニタ１１３内に新たにエージェントモニタ１１５が生成される。
【００７１】
また、このようにエージェントモニタ１１５が移動しても、ユーザに対する表示画面としては同じエージェントモニタウインドウ１１８を使用する必要がある。このため、エージェントの移動によってエージェントモニタ１１５が破棄された場合、エージェントモニタウインドウ１１８は、図３に示すように、同じエージェントに対応するエージェントモニタ１１５が新たにどのノードで生成されたかをシステムモニタ１１１に問い合わせる。そして、エージェントモニタウインドウ１１８は、システムモニタ１１１からの回答に基づいて、新たに生成されたエージェントモニタ１１５との間にデータのリンクを確立し、エージェントモニタ１１５から送られてくる情報を表示したり、ユーザからの指示をエージェントモニタ１１５に転送する処理を続ける。
【００７２】
〔１−３．効果〕
上記のように、第１実施形態では、システム全体、ノード及びエージェントをそれぞれ専用のモニタによって監視できるので、エージェントシステムの全体と各部分の双方について状態を効果的に把握でき、エージェントシステムの管理やデバッグが容易になる。特に、第１実施形態では、各モニタから他の種類のモニタを起動できるので、エージェントシステムの状態を多面的に把握することが容易になる。
【００７３】
また、第１実施形態では、所望のエージェントのログファイルに基づいてエージェントの動作を再現などによって確認できるので、個々のエージェントの動作を容易に検討することができる。また、第１実施形態では、エージェントがノード間で移動すると、移動したエージェントのエージェントモニタは、移動元ノードでは破棄され、移動先ノードで再度生成されるので、エージェントモニタをエージェントと共に送信する必要がなく、そのような送信に要する所要時間や手数が不要となる。
【００７４】
また、第１実施形態では、エージェントがどのノードにいて、プランのどの部分を実行しているかが出力できるので、所望のエージェントの状態把握が容易になる。また、第１実施形態では、エージェントモニタからエージェントにブレークポイントを設定することができるので、エージェントの状態の監視からデバッグへ容易に移行でき、作業が効率化される。また、第１実施形態では、エージェントのプランにロギングポイントを設定することによって、必要な部分だけのログを容易に記録することができる。
【００７５】
〔２．第２実施形態…デバッグ装置〕
第２実施形態は、請求項１５〜２１に対応するもので、エージェントシステムをデバッグするためのデバッグ装置である。このデバッグ装置がデバッグの対象とするエージェントシステムは、知識及びアクション定義に基づいてプランナがエージェントのプランを生成し、エージェントは生成されたプランを実行することによって情報処理を行うものである。
【００７６】
第２実施形態は、このようなエージェントシステムに用いられる知識、アクション定義及びプランナについて、それらを用いたときに生成されるプランのスクリプトが正しいかどうかを検討することによって、それら知識、アクション定義及びプランナをデバッグするものである。なお、エージェントが実行する行動プログラム全体がプランすなわちスクリプトであり、また、プランナは、プランすなわちスクリプトの生成に必要なデータとして知識やアクション定義を参照し、プラン（スクリプト）生成の手続きを行うプログラムである。
【００７７】
〔２−１．構成〕
まず、図４は、第２実施形態の構成を示す機能ブロック図である。この図に示すように、第２実施形態は、ナレッジデバッガＤと、スクリプトトレーサＴとを有する。ナレッジデバッガＤは、デバッグの対象として指定された知識、アクション定義及びプランナを用いて、与えられたゴールを達成するためのスクリプトＳ１を生成する手段である。また、スクリプトトレーサＴは、与えられたスクリプトの挙動を調べる手段である。
【００７８】
このうちナレッジデバッガＤは、デバッグの対象を設定するための第１の設定手段Ｄ１と、設定されたデバッグの対象に基づいてスクリプトを生成する生成手段Ｄ２と、生成されたスクリプトの表示を制御する表示制御手段Ｄ３と、を有する。
【００７９】
また、スクリプトトレーサＴは、第２の設定手段Ｔ１と、実行制御手段Ｔ２と、出力制御手段Ｔ３と、を有する。このうち第２の設定手段Ｔ１は、与えられたスクリプトについてブレークポイントを設定し及び監視したい変数を指定する手段である。また、実行制御手段Ｔ２は、与えられたスクリプトを指定された態様で実行する手段であり、このような実行の態様としては例えば１ステップずつ実行するのか全部まとめて実行するのかなどが選択できる。また、実行制御手段Ｔ２は、ブレークポイントにおいてスクリプトの実行を停止するように構成されている。また、出力制御手段Ｔ３は、スクリプトの実行で得られた情報、例えば指定された変数の値などを出力する手段である。
【００８０】
〔２−２．作用〕
上記のような第２実施形態を用いたデバッグの手順を図５に示す。なお、第２実施形態では、ユーザは、ＧＵＩ（グラフィカルユーザインタフェース）を用いて各種設定を行なったり、指示を与えたり、情報を参照することができる。
【００８１】
〔２−２−１．デバッグ対象の指定〕
まず、ユーザは、デバッグ対象とする知識、アクション及びプランナに対して従来のエディタなどを用いて必要な編集や修正を加える（ステップ７２０１）。続いて、ナレッジデバッガＤの第１の設定手段Ｄ１を用いて、デバッグ対象とする知識、アクション及びプランナを指定する（ステップ７２０２）。具体的には、例えば、知識、アクション定義、プランナを複数ある候補から選択して利用できる場合、入出力用の表示画面（ダイアログ）にこれらの候補を表示させ、その中からデバッグの対象とするアクション定義やプランナなどを選択する。また、必要に応じて目的とする情報のファイルを指定し、ファイルから情報を読み込んでデバッグすることもできる。選択されたこれらの情報は、所定のテキスト表示欄（テキストボックス）に表示される。
【００８２】
〔２−２−２．スクリプトの生成〕
デバッグの対象とする情報を上記のように選択した後、ユーザは、ダイアログから所望のゴールを入力して設定する。続いて、所定の操作、例えば表示画面上にグラフィック表示されているGetScript ボタンをマウスでクリックすることによって生成手段Ｄ２を起動する。起動された生成手段Ｄ２は、選択されている知識、アクション定義及びプランナを用いて、与えられたゴールを達成するためのスクリプトを生成し（ステップ７２０３）、生成されたこのスクリプトが所定の表示用ウインドウに出力される。
【００８３】
〔２−２−３．サブゴールの抽出〕
このように生成されたスクリプトをどのように表示するかは、表示制御手段Ｄ３が制御する。すなわち、まず、表示制御手段Ｄ３は、生成されたスクリプトに含まれるサブゴールを抽出し（ステップ７２０４）、スクリプト自体とは別の表示用ウインドウにサブゴールリストとして表示される。このようなサブゴールは、スクリプト内では決まった命令語、例えばsubgoal やnewgoal などを用いて表されるので、サブゴールを抽出するには、これらの命令語をスクリプト内から検索すればよい。このように抽出され表示されたサブゴールのなかから、ユーザが所望のサブゴールＧを選択することによって（図４）、そのサブゴールＧを達成するための部分的なスクリプトＳ２だけを生成させて出力させることもできる。
【００８４】
〔２−２−４．スクリプトの階層的な表示〕
さらに、表示制御手段Ｄ３は、ゴールとサブゴール及び前記ゴールに対応するスクリプトと前記サブゴールに対応する部分的なスクリプトを、階層関係に基づいて表示することができる（ステップ７２０５）。すなわち、最終的なゴールとサブゴールの関係は、最終的なゴールが上位であり、最終的なサブゴールを達成するための各サブゴールが下位という階層的な関係にある。このため、下位のサブゴール及びサブゴールに対応する部分的なスクリプトは、スクリプト全体との関係で、階層的に管理され、表示される。
【００８５】
例えば、あるサブゴールを具体的なスクリプトに展開して表示させた後、表示を上位階層に戻すUpボタンをマウスでクリックすることによって、展開したサブゴールを含んでいた上位のスクリプト全体や、この全体的なスクリプトに対応する最終的なゴールの出力画面に戻ることもできる。同様に、サブゴールのスクリプトがさらに下位のサブゴールを含んでいるような場合は、階層的に順次下位のスクリプトを展開して表示させたり、逆に、上位の表示画面に順次戻ることもできる。
【００８６】
ここで、スクリプト中のサブゴールに対応する部分的なスクリプトを表示させ、表示されたスクリプト中のサブゴールに基づいてさらに下位の情報を表示して行く状態を図６の概念図に示す。このようにスクリプトを表示した結果、バグを発見した場合は（ステップ７２０６）デバッグ対象の編集／修正（ステップ７２０１）に戻って作業をやり直せばよい。
【００８７】
〔２−２−５．スクリプトのトレース〕
また、上記のように得られた所望のスクリプトをスクリプトトレーサＴに渡すことによって、スクリプトをトレースすることができる。ユーザは、スクリプトをトレースしようとするときは、トレースの対象とするスクリプトを例えば反転表示によって選択した状態で、表示画面上のTrace ボタンをマウスでクリックする。すると、スクリプトトレーサＴが起動され（ステップ７２０７）、スクリプトトレーサＴの入出力用ウインドウが現われ、渡されたスクリプトがテキスト表示された状態となる。
【００８８】
〔２−２−６．ブレークポイントと変数ウォッチ式の設定〕
このテキスト表示画面上で、ユーザは、第２の設定手段Ｔ１を用いて、所望の位置に何箇所でもブレークポイントを設定することができる（ステップ７２０８）。また、ユーザは、第２の設定手段Ｔ１を用いて、スクリプト内で使われている変数のうち、所望の変数を変数ウォッチ式で指定する（ステップ７２０８）。ここで、変数ウォッチ式は、スクリプトを実行する際にどの変数を監視し、その変数にどのような変化があったときに、その変化をどのような形式でユーザに提示するかを指定する式である。
【００８９】
このような変数ウォッチ式によって、例えば、ある２つの変数の値が食い違ったときに警告を表示したり、ある変数のうち所定の範囲のビットを１と０の並びで表示するといった指定を自由に行うことができる。変数ウォッチ式によって指定されたこのような表示は、出力制御手段Ｔ３によって実現される。
【００９０】
〔２−２−７．スクリプトの実行〕
以上のようにブレークポイント及び変数ウォッチ式を設定したスクリプトは、実行制御手段Ｔ２によって実行される（ステップ７２０９）。この際、ユーザは、実行制御手段Ｔ２を利用して、スクリプトを１ステップずつ実行することもできるし、各ステップを連続して実行することもできる。そして、このようなスクリプトの実行に際して、出力制御手段Ｔ３は、変数ウォッチ式で指定した変数の内容を順次表示及び記録する。
【００９１】
また、各ステップを連続して実行する場合も、実行制御手段Ｔ２は、設定したブレークポイントで実行を停止するので（ステップ７２０９）、ユーザは、その時点で各変数の値がどうなっているか確認することができる（ステップ７２１０）。また、１ステップずつ実行する場合は、スクリプトのどの部分がどんな順序で実行され、各変数の値がどのように変化していくかを詳細に検討することができる。この場合も、スクリプトが実行される様子や変数の内容を確認した結果、バグが発見された場合は、デバッグ対象の編集／修正（ステップ７２０１）から作業をやり直せばよい。
【００９２】
〔２−３．効果〕
以上のように、第２実施形態では、指定されたデバッグ対象を用いて、与えられたゴールを達成するためのスクリプトが生成され出力されるので、ユーザは、所望のデバッグ対象について意図した通りのスクリプトが生成されているかどうかを容易に確認することができる。
【００９３】
また、第２実施形態では、最終的なゴールに対応するスクリプト全体を表示して正しいかどうかを判断するだけでなく、所望のサブゴールに対応する部分的なスクリプトを表示して詳細に検討できるので、スクリプトの理解が容易になる。また、第２実施形態では、ゴールとサブゴール及びゴールに対応するスクリプトとサブゴールに対応する部分的なスクリプトについて、上位階層の表示と下位階層の表示を切り替えるなど階層関係に基づいて表示することによって、所望の範囲を容易に確認することができる。
【００９４】
また、第２実施形態では、指定したブレークポイントでスクリプトの実行が停止し、１ステップずつ実行したり、次のブレークポイントまで実行するなど所望の態様でスクリプトの実行を自由に制御することができ、また、指定した変数にの内容を調べることができるので、複雑なスクリプトについても効果的にデバッグを行うことができる。
【００９５】
〔３．他の実施の形態〕
なお、本発明は上記実施の形態に限定されるものではなく、次に例示するような他の実施形態をも含むものである。例えば、本発明において、ネットワークの規模、形式、ノード数などは自由であり、エージェントを用いて行う情報処理の種類や、アクション定義、知識、プランなどを記述する言語の形式も自由に選択しうる。
【００９６】
また、第１実施形態において、システムモニタ、ノードモニタ、エージェントモニタの具体的な構成や情報を表示する形式は自由であり、これら各モニタや各モニタの表示画面を一体に構成することもできる。また、各モニタから他のモニタを起動する機能や、ログファイルを取り扱う機能や、エージェントモニタからブレークポイントやロギングポイントを設定できる機能は、必ずしも必要ではない。また、エージェントが他のノードへ移動する場合、必ずしもエージェントモニタを破棄する必要はなく、エージェントと共に移動先に転送してもよい。
【００９７】
また、第２実施形態において、デバッグの対象として選択できるのは知識、アクション定義及びプランナに限定する必要はなく、システム構成に合わせて他の所望の構成要素を加えることができる。また、デバッグの対象を全てユーザが選択する必要はなく、選択しなかった対象についてはシステム上の標準構成（デフォルト）が選択されるようにすることもできる。また、生成されたスクリプトを表示する場合、表示は必ずしも階層的にする必要はなく、また、生成したスクリプトにブレークポイントを設定したり、指定した態様で実行する手段も必須ではない。
【００９８】
【発明の効果】
以上説明したように、本発明によれば、全体、ノード、エージェントといった単位でそれぞれモニタで監視することによってエージェントシステムの振る舞いを把握できるので、エージェントシステムの管理と開発とが効果的に支援される。
【図面の簡単な説明】
【図１】本発明の第１実施形態の構成を示す機能ブロック図。
【図２】本発明の第１実施形態における処理手順を示すフローチャート。
【図３】本発明の第１実施形態において、エージェントがノード間で移動した場合の処理を示す概念図。
【図４】本発明の第２実施形態の構成を示す機能ブロック図。
【図５】本発明の第２実施形態における処理手順を示すフローチャート。
【図６】本発明の第２実施形態において、階層的な表示を説明するための図。
【図７】従来のエージェントシステムの構成例を示すフローチャート。
【図８】プランニングを行う従来のエージェントシステムの構成例を示すフローチャート。
【図９】従来のエージェントシステムにおける処理手順を示すフローチャート。
【図１０】エージェントシステムにおいて、生成途中のプランの例を示す概念図。
【図１１】エージェントシステムにおいて、完成したプランの例を示す概念図。
【図１２】エージェントシステムにおけるプランニングの手順を示すフローチャート。
【図１３】エージェントシステムにおいて、エージェントがノード間で移動する手順を示すフローチャート。
【図１４】エージェントシステムにおけるエージェントのライフサイクルを示す概念図。
【図１５】エージェントシステムにおいてノード上に複数のファーム（フィールド）が存在する状態を示す概念図。
【符号の説明】
１…ローカル情報記憶手段
２…更新手段
３…エージェント情報記憶手段
４…入出力手段
５…プラン生成手段
６…プラン実行手段
７…エージェント管理部
Ｌ…ローカルマシン
Ｒ…リモートマシン
Ｎ…ネットワーク
１１１…システムモニタ
１１２…ノード
１１３…ノードモニタ
１１４…エージェント
１１５…エージェントモニタ
１１６…システムモニタウインドウ
１１７…ノードモニタウインドウ
１１８…エージェントモニタウインドウ
１１９…ネーミングサービス
Ｄ…ナレッジデバッガ
Ｄ１…対象設定手段
Ｄ２…生成手段
Ｄ３…表示制御手段
Ｔ…スクリプトトレーサ
Ｔ１…第２の設定手段
Ｔ２…実行制御手段
Ｔ３…出力制御手段
Ｓ１，Ｓ２…スクリプト
Ｃ…条件
Ｐ…動作
Ｓ…状態
８００Ｎ…ネットワーク
８００Ｌ…ローカルノード
８００Ｒ…リモートノード
８０１…エージェント情報記憶手段
８０２…解釈実行手段
８０３…入出力手段
８０４…エージェント管理手段
ＳＴＥＰ…手順の各ステップ
【図１】
0003722970.tif 000002
【図２】
0003722970.tif 000003
【図３】
0003722970.tif 000004
【図４】
0003722970.tif 000005
【図５】
0003722970.tif 000006
【図６】
0003722970.tif 000007
【図７】
0003722970.tif 000008
【図８】
0003722970.tif 000009
【図９】
0003722970.tif 000010
【図１０】
0003722970.tif 000011
【図１１】
0003722970.tif 000012
【図１２】
0003722970.tif 000013
【図１３】
0003722970.tif 000014
【図１４】
0003722970.tif 000015
【図１５】
0003722970.tif 000016