bdi-mental-states について
bdi-mental-statesは、外部のRDFコンテキストをエージェントの信念・願望・意図としてモデル化するスキルです。形式的な認知構造を必要とするシステム向けに、根拠付け、追跡可能な推論、時間的有効性を扱います。
主な機能
- 01RDFをBDI心理状態に変換
- 02信念・願望・意図を接続
- 03心理状態を世界状態に根拠付け
- 04正当化と有効期間を記録
- 05計画の実行結果をRDFに投影
活用シーン
- 01説明可能なエージェント推論フローの構築
- 02外部のセマンティックデータを信念に変換
- 03時間経過に伴う信念の変化を追跡
- 04行動結果を下流のRDFシステムに提供
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ guanyang/ open-agent-hub --skill bdi-mental-statesインストール後、Claude Code で/bdi-mental-statesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/bdi-ontology-core.mdframework-integration.mdrdf-examples.mdsparql-competency.md詳細
BDI メンタルステートモデリング
形式的な BDI オントロジーパターンを使用して、外部 RDF コンテキストをエージェントのメンタルステート(信念、欲求、意図)に変換します。このスキルにより、エージェントは認知アーキテクチャを通じてコンテキストを推論でき、マルチエージェントシステムにおける熟慮的推論、説明可能性、セマンティックな相互運用性を支援します。
有効にするタイミング
次の場合にこのスキルを有効にします。
- 外部 RDF コンテキストを、世界の状態に関するエージェントの信念に変換する
- 知覚、熟慮、行動のサイクルを用いて合理的なエージェント性をモデル化する
- 追跡可能な推論チェーンを通じて説明可能性を実現する
- BDI フレームワーク(SEMAS、JADE、JADEX)を実装する
- 形式的な認知構造で LLM を拡張する(Logic Augmented Generation)
- マルチエージェントプラットフォーム間でメンタルステートを連携させる
- 信念、欲求、意図の時間的な変化を追跡する
- 動機づけの状態を行動計画に結び付ける
他のスキルが担当する隣接領域の作業では、このスキルを有効にしないでください。
- 一般的なコンテキストウィンドウの説明や注意機構:
context-fundamentals。 - 形式的な BDI 状態を伴わない、ユーザー、エンティティ、会話の永続的な記憶:
memory-systems。 - スーパーバイザー、スウォーム、ハンドオフのトポロジーに関する判断:
multi-agent-patterns。 - 一般的なエージェント評価基準や品質ゲート:
evaluation。
コアコンセプト
メンタルリアリティアーキテクチャ
BDI 推論では、持続するものと起きることを区別する必要があるため、メンタルステートを2つのオントロジーカテゴリーに分けます。
メンタルステート(Endurants) — 時間間隔を通じて保持される、持続的な認知属性としてモデル化します。
Belief:エージェントが世界について真実だと考えていることを表します。すべての信念を世界状態への参照に基づかせます。Desire:エージェントが実現したいと望むことを表します。それぞれの欲求を、その動機となる信念に結び付けます。Intention:エージェントが達成を約束することを表します。意図は欲求を満たし、計画を指定する必要があります。
メンタルプロセス(Perdurants) — 因果的な遷移を追跡することで説明可能性を実現できるため、メンタルステートを生成または変更するイベントとしてモデル化します。
BeliefProcess:知覚に基づく信念の形成や更新を引き起こします。生成元となる世界状態に必ず接続します。DesireProcess:既存の信念から欲求を生成します。動機づけの連鎖を維持します。IntentionProcess:選択した欲求を、実行可能な意図として確約します。
認知チェーンパターン
前向き推論(エージェントは何をすべきか?)と後ろ向きの追跡(なぜエージェントは行動したのか?)の両方を可能にするため、双方向プロパティ(motivates/isMotivatedBy、fulfils/isFulfilledBy)を使って、信念、欲求、意図を有向チェーンに接続します。
:Belief_store_open a bdi:Belief ;
rdfs:comment "Store is open" ;
bdi:motivates :Desire_buy_groceries .
:Desire_buy_groceries a bdi:Desire ;
rdfs:comment "I desire to buy groceries" ;
bdi:isMotivatedBy :Belief_store_open .
:Intention_go_shopping a bdi:Intention ;
rdfs:comment "I will buy groceries" ;
bdi:fulfils :Desire_buy_groceries ;
bdi:isSupportedBy :Belief_store_open ;
bdi:specifies :Plan_shopping .
世界状態へのグラウンディング
グラウンディングされていない信念は、セマンティッククエリやエージェント間の相互運用性を損なうため、自由記述ではなく、必ずメンタルステートを世界状態への参照に基づかせます。
:Agent_A a bdi:Agent ;
bdi:perceives :WorldState_WS1 ;
bdi:hasMentalState :Belief_B1 .
:WorldState_WS1 a bdi:WorldState ;
rdfs:comment "Meeting scheduled at 10am in Room 5" ;
bdi:atTime :TimeInstant_10am .
:Belief_B1 a bdi:Belief ;
bdi:refersTo :WorldState_WS1 .
目標指向型計画
計画を異なる意図間で再利用できるようにしつつ、実行順序を明示できるよう、bdi:specifies で意図を計画に接続し、bdi:precedes を使用して計画を順序付けられたタスクシーケンスに分解します。
:Intention_I1 bdi:specifies :Plan_P1 .
:Plan_P1 a bdi:Plan ;
bdi:addresses :Goal_G1 ;
bdi:beginsWith :Task_T1 ;
bdi:endsWith :Task_T3 .
:Task_T1 bdi:precedes :Task_T2 .
:Task_T2 bdi:precedes :Task_T3 .
T2B2T パラダイム
エージェントは外部 RDF コンテキストを取り込むと同時に新しい RDF アサーションを生成する必要があるため、Triples-to-Beliefs-to-Triples を双方向パイプラインとして実装します。T2B2T の実装はすべて、次の2つの明示的なフェーズで構成します。
フェーズ1:Triples-to-Beliefs — 入力された RDF トリプルを信念インスタンスに変換します。bdi:triggers を使用して外部世界状態を BeliefProcess に接続し、bdi:generates を使用して結果となる信念を生成します。これにより、ソースデータから内部認知までの来歴が保持されます。
:WorldState_notification a bdi:WorldState ;
rdfs:comment "Push notification: Payment request $250" ;
bdi:triggers :BeliefProcess_BP1 .
:BeliefProcess_BP1 a bdi:BeliefProcess ;
bdi:generates :Belief_payment_request .
フェーズ2:Beliefs-to-Triples — BDI の熟慮で意図が選択され、計画が実行された後、bdi:bringsAbout を使用して結果を RDF に投影します。これによりループが閉じ、下流システムがエージェントの出力を標準的なリンクトデータとして利用できます。
:Intention_pay a bdi:Intention ;
bdi:specifies :Plan_payment .
:PlanExecution_PE1 a bdi:PlanExecution ;
bdi:satisfies :Plan_payment ;
bdi:bringsAbout :WorldState_payment_complete .
レベルに応じた記法の選択
モデル化する C4 の抽象化レベルに応じて記法を選択します。誤ったレベルで記法を混在させると、認知アーキテクチャが明確になるどころか、かえって曖昧になるためです。
| C4 レベル | 記法 | メンタル状態の表現 |
|---|---|---|
| L1 コンテキスト | ArchiMate | エージェントの境界、外部の知覚元 |
| L2 コンテナー | ArchiMate | BDI 推論エンジン、信念ストア、プラン実行器 |
| L3 コンポーネント | UML | メンタル状態マネージャー、プロセスハンドラー |
| L4 コード | UML/RDF | 信念/欲求/意図のクラス、オントロジーのインスタンス |
正当化と説明可能性
すべてのメンタルエンティティに bdi:isJustifiedBy を使って bdi:Justification インスタンスを関連付けます。正当化されていないメンタル状態では、エージェントの推論が不透明になり、追跡できなくなるためです。各正当化には、そのメンタル状態を生み出した証拠またはルールを記録します。
:Belief_B1 a bdi:Belief ;
bdi:isJustifiedBy :Justification_J1 .
:Justification_J1 a bdi:Justification ;
rdfs:comment "Official announcement received via email" .
:Intention_I1 a bdi:Intention ;
bdi:isJustifiedBy :Justification_J2 .
:Justification_J2 a bdi:Justification ;
rdfs:comment "Location precondition satisfied" .
時間的な次元
すべてのメンタル状態に TimeInterval インスタンスを使って bdi:hasValidity で有効期間を設定します。時間的な境界がない信念は、通時的推論の際にガベージコレクションや競合チェックができないためです。
:Belief_B1 a bdi:Belief ;
bdi:hasValidity :TimeInterval_TI1 .
:TimeInterval_TI1 a bdi:TimeInterval ;
bdi:hasStartTime :TimeInstant_9am ;
bdi:hasEndTime :TimeInstant_11am .
SPARQL の時間フィルターを使って、特定の時点で有効なメンタル状態をクエリします。同じ世界状態について複数の信念が時間的に重複する場合は、このパターンを使って競合を解決します。
SELECT ?mentalState WHERE {
?mentalState bdi:hasValidity ?interval .
?interval bdi:hasStartTime ?start ;
bdi:hasEndTime ?end .
FILTER(?start <= "2025-01-04T10:00:00"^^xsd:dateTime &&
?end >= "2025-01-04T10:00:00"^^xsd:dateTime)
}
合成メンタルエンティティ
bdi:hasPart 関係を使って、複雑な信念を構成要素に分解します。一枚岩の信念では、部分的な更新のたびに全体を置き換える必要があるためです。各サブ信念を個別に更新、クエリ、または無効化できるように、複合信念を構成します。
:Belief_meeting a bdi:Belief ;
rdfs:comment "Meeting at 10am in Room 5" ;
bdi:hasPart :Belief_meeting_time , :Belief_meeting_location .
# Update only location component without touching time
:BeliefProcess_update a bdi:BeliefProcess ;
bdi:modifies :Belief_meeting_location .
実践的なガイダンス
6 つの工程で BDI モデルを構築する
外部のセマンティックコンテキストを BDI 表現に変換する際は、次のワークフローを使います。
- 世界状態の基盤を定義する:エージェントが知覚できる外部の事実やイベントを特定します。信念を作成する前に、これらを世界状態としてモデル化します。
- 信念インスタンスを作成する:関連する各世界状態を、来歴、時間的な有効性、正当化への参照を持つ信念に変換します。
- 信念から欲求を導き出す:信念によって目標に関連する動機が生まれる場合にのみ、欲求を追加します。各欲求を、その動機となる信念に関連付けます。
- 意図を慎重に確定する:エージェントがプランを確定した場合にのみ、欲求を意図に昇格させます。選択したプランと前提条件を記録します。
- アクションの結果をトリプルに反映する:実行後、結果として得られた世界状態を RDF として出力し、下流のシステムが新しい状態を利用できるようにします。
- コンピテンシークエスチョンで検証する:モデルを信頼する前に、来歴、動機、プランの順序、有効な期間をクエリします。
オントロジーを小さく保つ
まずは Agent、WorldState、Belief、Desire、Intention、Plan、Task、Justification、TimeInterval を使います。コンピテンシークエスチョンによってコアモデルでは必要なクエリに答えられないと確認できてから、専用クラスを追加します。簡潔なオントロジーはプロンプトにシリアライズしやすく、検証も容易で、脆弱な推論チェーンを生み出しにくくなります。
メンタル状態のセマンティクスが重要な場合にのみ BDI を使う
システムに説明可能なエージェンシーが必要な場合、つまり、エージェントが何かを信じた理由、その信念から生じた欲求、選択した意図、実行したプランを説明する必要がある場合は、BDI モデリングが適しています。セッションをまたいで事実を記憶するだけでよい場合は、memory-systems を使います。エージェント間で作業を分割するだけでよい場合は、multi-agent-patterns を使います。
詳細なトピック
統合パターン
論理拡張生成(LAG)
オントロジーの構造で LLM の出力を制約するには、LAG を使います。制約のない生成では、BDI クラスの制約に違反するトリプルが生成されるためです。オントロジーをプロンプトのコンテキストにシリアライズし、生成されたトリプルを受け入れる前に検証します。
def augment_llm_with_bdi_ontology(prompt, ontology_graph):
ontology_context = serialize_ontology(ontology_graph, format='turtle')
augmented_prompt = f"{ontology_context}\n\n{prompt}"
response = llm.generate(augmented_prompt)
triples = extract_rdf_triples(response)
is_consistent = validate_triples(triples, ontology_graph)
return triples if is_consistent else retry_with_feedback()
SEMAS ルール変換
ルールベースのエージェントプラットフォームにデプロイする際は、BDI オントロジーパターンを実行可能なプロダクションルールに変換します。各認知チェーンのリンク(信念から欲求、欲求から意図)を HEAD/CONDITIONALS/TAIL ルールに対応付けます。これにより、熟慮の意味を保ちながら、実行時に実行できるようになります。
% Belief triggers desire formation
[HEAD: belief(agent_a, store_open)] /
[CONDITIONALS: time(weekday_afternoon)] »
[TAIL: generate_desire(agent_a, buy_groceries)].
% Desire triggers intention commitment
[HEAD: desire(agent_a, buy_groceries)] /
[CONDITIONALS: belief(agent_a, has_shopping_list)] »
[TAIL: commit_intention(agent_a, buy_groceries)].
ガイドライン
-
世界の状態はエージェントの視点に依存しない構成としてモデル化し、心的状態を参照するための基盤を提供します。
-
DOLCE オントロジーに合わせ、持続体(永続的な心的状態)と発生体(時間的な心的プロセス)を区別します。
-
目標は心的状態ではなく記述として扱い、認知レイヤーと計画レイヤーを分離します。
-
選択的な信念の更新を可能にする、メロニミー構造には
hasPart関係を使用します。 -
すべての心的実体を、
atTimeまたはhasValidityを介して時間構成要素に関連付けます。 -
柔軟なクエリを可能にするため、双方向のプロパティペア(
motivates/isMotivatedBy、generates/isGeneratedBy)を使用します。 -
説明可能性と信頼性を確保するため、心的実体を
Justificationインスタンスにリンクします。 -
T2B2T は、(1)RDF を信念に変換する、(2)BDI 推論を実行する、(3)心的状態を RDF に戻す、という手順で実装します。
-
心的プロセスに存在制約を定義します(例:
BeliefProcess ⊑ ∃generates.Belief)。 -
相互運用性のため、確立された ODP(EventCore、Situation、TimeIndexedSituation、BasicPlan、Provenance)を再利用します。
適格性質問
以下の SPARQL クエリを使用して、実装を検証します。
# CQ1: What beliefs motivated formation of a given desire?
SELECT ?belief WHERE {
:Desire_D1 bdi:isMotivatedBy ?belief .
}
# CQ2: Which desire does a particular intention fulfill?
SELECT ?desire WHERE {
:Intention_I1 bdi:fulfils ?desire .
}
# CQ3: Which mental process generated a belief?
SELECT ?process WHERE {
?process bdi:generates :Belief_B1 .
}
# CQ4: What is the ordered sequence of tasks in a plan?
SELECT ?task ?nextTask WHERE {
:Plan_P1 bdi:hasComponent ?task .
OPTIONAL { ?task bdi:precedes ?nextTask }
} ORDER BY ?task
例
例 1:RDF 通知から BDI チェーンへ
入力となる世界の状態:
:WorldState_invoice_due a bdi:WorldState ;
rdfs:comment "Invoice INV-42 is due tomorrow" ;
bdi:atTime :Time_2026_05_15 .
BDI 投影:
:Belief_invoice_due a bdi:Belief ;
bdi:refersTo :WorldState_invoice_due ;
bdi:isJustifiedBy :Justification_billing_system ;
bdi:motivates :Desire_avoid_late_fee .
:Desire_avoid_late_fee a bdi:Desire ;
bdi:isMotivatedBy :Belief_invoice_due .
:Intention_pay_invoice a bdi:Intention ;
bdi:fulfils :Desire_avoid_late_fee ;
bdi:specifies :Plan_pay_invoice .
例 2:境界の判断
タスクが「Alice は簡潔な要約を好むことを覚えておく」であれば、memory-systems を使用します。タスクが「エージェントが Alice には要約が必要だと信じる理由、その信念が生み出す目標、およびエージェントがどの計画にコミットするかを表現する」であれば、このスキルを使用します。
注意点
-
心的状態と世界の状態を混同する:心的状態は
bdi:refersToを介して世界の状態を参照しますが、それ自体が世界の状態ではありません。両者を混同すると、知覚と認知の境界が崩れ、型で絞り込む SPARQL クエリが機能しなくなります。 -
時間的な範囲の欠落:通時的推論には、すべての心的状態に有効期間が必要です。これがないと、古い信念が無期限に残り、競合を検出できなくなります。
-
平坦な信念構造:複雑な信念には、
hasPartを使用した構成的なモデリングを採用します。モノリシックな信念では、属性を 1 つ変更するだけでも全体を置き換える必要があります。 -
暗黙の正当化:心的実体は必ず、明示的な
Justificationインスタンスにリンクします。正当化されていない心的状態は、監査も追跡もできません。 -
意図と行動の直接的な対応付け:意図はタスクを含む計画を指定し、行動はタスクを実行します。計画レイヤーを省略すると、実行戦略を再利用、並べ替え、共有できなくなります。
-
オントロジーの過度な複雑化:まずは 5~10 個の中核クラスとプロパティ(Belief、Desire、Intention、WorldState、Plan、および主要な関係)から始めます。早まってオントロジーを拡張すると、推論の質を向上させることなくプロンプトのコンテキストが膨らみ、SPARQL クエリが遅くなります。
-
推論コストの急増:信念チェーンは 3 レベル以下(信念 -> 欲求 -> 意図)に保ちます。より深いチェーンは LLM の推論コストが過大になり、浅い構成と比べて意思決定の質が向上することもほとんどありません。
統合
このスキルは、形式的な心的状態モデリングを担当します。隣接するスキルは、それぞれ異なる層を担当します。
memory-systems:BDI の信念/欲求/意図の意味論を用いない、永続的な事実、エンティティメモリ、時間的知識グラフ。multi-agent-patterns:エージェントのトポロジー、引き継ぎプロトコル、エージェント間の連携。evaluation:BDI 実装のための能力質問、回帰チェック、品質ゲート。context-fundamentals:プロンプト構築に役立つ、コンテキストウィンドウと注意機構の概念。tool-design:BDI のクエリ、検証、投影ツールのスキーマとツール契約。
参考資料
内部資料:
- BDI オントロジーのコア - 読むタイミング:BDI のクラス階層を実装する場合、またはオントロジーのプロパティを一から定義する場合
- RDF の例 - 読むタイミング:心的状態を Turtle 形式でシリアライズする場合、またはトリプル構造をデバッグする場合
- SPARQL 能力クエリ - 読むタイミング:能力質問に照らして実装を検証する場合、またはカスタムクエリを構築する場合
- フレームワーク統合 - 読むタイミング:BDI モデルを SEMAS、JADE、または LAG パイプラインにデプロイする場合
主要な資料:
- Zuppiroli ら「The Belief-Desire-Intention Ontology」(2025)— 読むタイミング:形式的な BDI クラス階層を実装する場合、またはオントロジーとの整合性を検証する場合
- Rao & Georgeff「BDI agents: From theory to practice」(1995)— 読むタイミング:実践的推論エージェントの理論的基盤を理解する場合
- Bratman「Intention, plans, and practical reason」(1987)— 読むタイミング:意図性の哲学的基盤に基づいて実装上の判断を行う場合
スキルのメタデータ
作成日: 2026-01-07 最終更新日: 2026-05-15 著者: Agent Skills for Context Engineering Contributors バージョン: 2.1.0