mcpField
B
bdi-mental-states

bdi-mental-states

github.com/guanyangAgent 工作流982273 次安装2 天前更新
代码仓库

关于 bdi-mental-states

bdi-mental-states 是一项将外部 RDF 上下文建模为 Agent 信念、愿望与意图的技能,面向需要形式化认知结构的 Agent 系统。它强调世界状态 grounding、推理链可追溯性和时间有效性。

主要功能

  1. 01将 RDF 转换为 BDI 心理状态
  2. 02连接信念、愿望与意图
  3. 03为心理状态关联世界状态
  4. 04记录理由与时间有效区间
  5. 05将计划执行结果投影为 RDF

适用场景

  1. 01构建可解释的 Agent 推理流程
  2. 02把外部语义数据转换为信念
  3. 03追踪信念随时间的变化
  4. 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.md
framework-integration.md
rdf-examples.md
sparql-competency.md

详细介绍

BDI 心理状态建模

使用形式化 BDI 本体模式,将外部 RDF 上下文转换为 Agent 心理状态(信念、愿望、意图)。此技能使 Agent 能够通过认知架构对上下文进行推理,支持多 Agent 系统中的审慎推理、可解释性和语义互操作性。

何时激活

在以下情况下激活此技能:

  • 将外部 RDF 上下文处理为 Agent 对世界状态的信念
  • 使用感知、审议和行动周期建模理性 Agent
  • 通过可追溯的推理链实现可解释性
  • 实现 BDI 框架(SEMAS、JADE、JADEX)
  • 使用形式化认知结构增强 LLM(逻辑增强生成)
  • 在多 Agent 平台间协调心理状态
  • 跟踪信念、愿望和意图的时间演变
  • 将动机状态关联到行动计划

对于归其他技能负责的相关工作,请勿激活此技能:

  • 通用上下文窗口说明或注意力机制:context-fundamentals。
  • 不含形式化 BDI 状态的持久用户、实体或对话记忆:memory-systems。
  • 主管、集群或交接拓扑决策:multi-agent-patterns。
  • 通用 Agent 评估标准或质量门槛:evaluation。

核心概念

心理现实架构

由于 BDI 推理需要区分持续存在的事物和发生的事件,因此要将心理状态分为两个本体类别:

心理状态(持续体)——将其建模为在一段时间内持续存在的认知属性:

  • Belief:表示 Agent 对世界所持的真实认知。每个信念都必须以世界状态引用为依据。
  • Desire:表示 Agent 希望实现的结果。将每个愿望关联回促使其产生的信念。
  • Intention:表示 Agent 承诺实现的目标。意图必须满足某个愿望并指定计划。

心理过程(发生体)——将其建模为创建或修改心理状态的事件,因为跟踪因果转变有助于实现可解释性:

  • BeliefProcess:触发基于感知的信念形成或更新。始终将其关联到生成该信念的世界状态。
  • DesireProcess:根据现有信念生成愿望。保留动机链。
  • IntentionProcess:将选定的愿望确定为可执行的意图。
认知链模式

使用双向属性(motivates/isMotivatedBy、fulfils/isFulfilledBy)将信念、愿望和意图连接成有向链,因为这样既能支持前向推理(Agent 应该做什么?),也能支持反向追溯(Agent 为什么采取行动?):

: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 互操作性:

: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 范式

将三元组到信念再到三元组(Triples-to-Beliefs-to-Triples)实现为双向流水线,因为 Agent 既要使用外部 RDF 上下文,也要生成新的 RDF 断言。每个 T2B2T 实现都要划分为两个明确阶段:

阶段 1:三元组到信念——将传入的 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:信念到三元组——BDI 审议选定意图并执行计划后,使用 bdi:bringsAbout 将结果映射回 RDF。这样便形成闭环,使下游系统能够将 Agent 输出作为标准关联数据使用:

: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 上下文ArchiMateAgent 边界、外部感知来源
L2 容器ArchiMateBDI 推理引擎、信念存储库、计划执行器
L3 组件UML心理状态管理器、流程处理器
L4 代码UML/RDF信念/愿望/意图类、本体实例
依据与可解释性

使用 bdi:isJustifiedBy 为每个心理实体附加 bdi:Justification 实例,因为缺乏依据的心理状态会使 Agent 的推理变得不透明且无法追溯。每项依据都应记录产生该心理状态的证据或规则:

: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" .
时间维度

使用 bdi:hasValidity 和 TimeInterval 实例为每个心理状态指定有效时间区间,因为没有时间边界的信念无法在历时推理期间进行垃圾回收或冲突检查:

: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 .

实用指南

分六步构建 BDI 模型

将外部语义上下文转换为 BDI 表示时,使用以下工作流:

  1. 定义世界状态基础:确定 Agent 可感知的外部事实或事件。在创建信念之前,先将它们建模为世界状态。
  2. 创建信念实例:将每个相关的世界状态转换为信念,并附上来源、时间有效性和依据引用。
  3. 从信念推导愿望:仅当信念产生与目标相关的动机时,才添加愿望。将每个愿望关联到激发它的信念。
  4. 审慎地确立意图:仅当 Agent 承诺执行计划时,才将愿望提升为意图。记录选定的计划及其前置条件。
  5. 将操作结果映射回三元组:执行后,将产生的世界状态以 RDF 形式输出,以便下游系统使用新状态。
  6. 通过能力问题验证:在信任模型之前,查询其来源、动机、计划序列和有效时间范围。
保持本体精简

从 Agent、WorldState、Belief、Desire、Intention、Plan、Task、Justification 和 TimeInterval 开始。只有在能力问题证明核心模型无法回答所需查询后,才添加专用类。紧凑的本体更易序列化到提示词中,也更易验证,并且不太可能产生脆弱的推理链。

仅在心理状态语义至关重要时使用 BDI

当系统需要可解释的 Agent 行为时,BDI 建模才有必要:Agent 为什么相信某事、该信念产生了什么愿望、选择了哪种意图,以及执行了什么计划。如果系统只需要跨会话记忆事实,请使用 memory-systems。如果系统只需要在多个 Agent 之间拆分工作,请使用 multi-agent-patterns。

详细主题

集成模式
逻辑增强生成(LAG)

使用 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 规则转换

在部署到基于规则的 Agent 平台时,将 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)].

指南

  1. 将世界状态建模为独立于 Agent 视角的配置,为心理状态提供指称基础。

  2. 区分持久存在的 endurants(心理状态)与随时间发生的 perdurants(心理过程),使其与 DOLCE 本体保持一致。

  3. 将目标视为描述而非心理状态,保持认知层与规划层之间的分离。

  4. 使用 hasPart 关系表示部分结构,以便有选择地更新信念。

  5. 通过 atTime 或 hasValidity 将每个心理实体与时间结构关联起来。

  6. 使用双向属性对(motivates/isMotivatedBy、generates/isGeneratedBy),以便灵活查询。

  7. 将心理实体关联到 Justification 实例,以便解释并建立信任。

  8. 通过以下步骤实现 T2B2T:(1)将 RDF 转换为信念;(2)执行 BDI 推理;(3)将心理状态映射回 RDF。

  9. 为心理过程定义存在性限制(例如,BeliefProcess ⊑ ∃generates.Belief)。

  10. 重用成熟的 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。如果任务是“表示 Agent 为什么认为 Alice 需要摘要、这会产生什么目标,以及 Agent 会承诺执行哪个计划”,请使用此技能。

注意事项

  1. 混淆心理状态与世界状态:心理状态通过 bdi:refersTo 引用世界状态,而非其本身就是世界状态。将两者混为一谈会模糊感知与认知的边界,并破坏按类型筛选的 SPARQL 查询。

  2. 缺少时间边界:每个心理状态都需要有效时间区间,以支持历时推理。没有这些区间,过时的信念会无限期保留,也无法检测冲突。

  3. 信念结构过于扁平:使用 hasPart 进行组合式建模来表示复杂信念。整体式信念会导致某个属性发生变化时,必须完全替换整个信念。

  4. 理由不明确:始终将心理实体关联到明确的 Justification 实例。缺少理由的心理状态无法审计或追溯。

  5. 意图直接映射到行动:意图指定包含任务的计划;行动负责执行任务。跳过计划层会失去重用、重新排序或共享执行策略的能力。

  6. 本体过于复杂:从 5–10 个核心类和属性(Belief、Desire、Intention、WorldState、Plan,以及关键关系)开始。过早扩展本体会增加提示词上下文并减慢 SPARQL 查询,却无法提升推理质量。

  7. 推理成本激增:将信念链限制在 3 层以内(信念 -> 愿望 -> 意图)。更深的链对于 LLM 推理而言成本过高,而且与较浅的替代方案相比,极少能提升决策质量。

集成

此技能负责正式的心理状态建模。相邻技能负责不同层面:

  • memory-systems:持久化事实、实体记忆和时间知识图谱,不涉及 BDI 信念/愿望/意图语义。
  • multi-agent-patterns:Agent 拓扑、交接协议以及 Agent 之间的协调。
  • 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)— 适用场景:了解实践推理 Agent 的理论基础
  • Bratman,《Intention, plans, and practical reason》(1987)— 适用场景:以意向性的哲学基础为实现决策提供依据

技能元数据

创建时间:2026-01-07 最后更新:2026-05-15 作者:Agent Skills for Context Engineering Contributors 版本:2.1.0

评论

支持 Markdown