AgentSpeak(L) BDI 架构
当难点不是编写另一个工作流,而是决定自主智能体在变化条件下应如何反应、承诺、挂起工作并解释其选择时,使用此技能。
何时使用
- 系统必须对新事件做出反应,同时不放弃长期运行的承诺。
- 需要一个计划库,其中包含可重用的行为,这些行为根据当前上下文选择,而不是由单个控制器决定。
- 智能体策略必须与领域知识分离,以便能在不重写计划的情况下更改紧迫性、公平性或风险承受能力。
- 失败应触发恢复行为和重新规划,而不是导致整个智能体崩溃。
- 需要一个可检查的心理模型,用于解释智能体为什么选择某个任务或计划而不是另一个。
不适合用于
- 不需要持久承诺或意图栈的简单规则引擎。
- 环境不会中断执行的静态规划问题。
- 由一个调度器决定所有步骤的集中式工作流系统。
- 从不分别表示信念、计划或策略的纯提示智能体循环。
核心心智模型
信念、愿望和意图是不同的对象
信念模拟当前世界,愿望定义候选结果,意图是当前正在消耗执行预算的特定承诺计划栈。如果三者合并成一个整体,智能体将无法被解释。
计划是情境化知识
AgentSpeak 计划不是通用过程。它们是事件触发的配方,带有上下文守卫,因此同一个目标可以根据智能体当前的信念调用不同的行为。
选择函数包含策略
事件选择器、选项选择器和意图选择器属于紧迫性、公平性和风险承受能力。计划应编码“怎么做”,选择函数应编码“策略”。
可中断性是特性,不是缺陷
意图是部分执行的栈,可以交错、挂起和恢复。这使得响应式智能体能够处理中断,而无需将每个长任务都变成重新开始。
从运行系统向上形式化
AgentSpeak(L) 的实践教训是从运行中的智能体循环开始,然后形式化它实际做的事情。不要编写优雅的抽象理论,然后稍后再将其近似为运行时行为。
决策点
flowchart TD
A[需要自主行为设计] --> B{需要持久承诺?}
B -->|否| C[使用规则、状态机或简单工作流]
B -->|是| D{环境中断活跃工作?}
D -->|否| E[经典规划器可能足够]
D -->|是| F{需要策略与计划分离?}
F -->|否| G[自定义智能体循环,但注意耦合]
F -->|是| H[使用 AgentSpeak 风格 BDI]
H --> I{当前问题}
I -->|选择了错误任务| J[重新检查 SI 或 SE]
I -->|选择了错误计划| K[重新检查 SO 或上下文守卫]
I -->|失败导致执行终止| L[添加失败事件和恢复计划]
I -->|难以审计| M[暴露意图栈和选择痕迹]
- 当系统必须在响应性与承诺之间取得平衡而不是二选一时,使用 AgentSpeak 风格建模。
- 将世界假设放入信念查询和计划守卫中,而不是作为深层嵌套在动作内部的条件语句。
- 如果策略发生变化但领域知识不变,优先更改选择函数而不是重写计划。
- 将长任务分解为子目标,以便意图栈保持可检查和可中断。
失败模式
目标-意图混淆
线索:设计声称智能体“有一个目标”,但无法显示它是否真正为这个目标提交了资源。
修复:将候选目标与当前活跃的意图栈分开表示。
策略隐藏在计划中
线索:每个计划体都包含优先级、公平性或紧迫性分支。
修复:将这些选择移动到事件、选项或意图选择函数中。
巨型计划
线索:计划太长,任何中断都迫使整个序列在心理上重新启动。
修复:将长行为拆分为较短的、带有显式子目标边界的计划。
失败作为崩溃而不是事件
线索:失败的子目标中止整个智能体或无声消失。
修复:将失败建模为可以触发恢复、重试或放弃计划的事件。
无依据的上下文守卫
线索:计划匹配基于模糊的世界假设,这些假设从未与实际信念或观察绑定。
修复:使信念更新路径明确,并确保守卫可对照当前信念状态查询。
工作示例
带有紧急中断的工具调用型 LLM 智能体
一个编码智能体正在执行长时间的重构任务,突然收到一个高严重级别的生产告警。将重构任务建模为一个意图栈,将告警建模为一个新事件。让选择函数抢占重构任务,稍后在不丢失状态的情况下恢复它。
无中央调度器的仓库协调
多个移动智能体共享关于通道拥堵和库存状态的信念基础。它们的领域知识保留在计划中,而选择函数编码哪些紧急取货作业在拥堵情况下优先于补货工作。
质量关卡
- 信念、愿望和意图被分开表示。
- 每个主要触发事件至少有一个带有显式上下文守卫的计划。
- 设计明确指出 SE、SO 和 SI 策略所在的位置。
- 失败路径创建事件或恢复计划,而不是无声崩溃。
- 审查者可以检查活跃意图并解释为什么选中一个计划而不是另一个。
行话测试
- 如果某人无法解释智能体“想要”的目标与它“承诺”的意图之间的区别,那么他们就还没有内化这个模型。
- 如果“策略”变化需要重写计划体,说明策略和知识从未分离。
- 如果智能体无法说出是什么中断了它以及下一步将恢复什么,那么它并没有真正使用意图栈。
参考索引
references/bdi-architecture-for-agent-orchestration.md:加载以获取完整的智能体循环和 B/D/I 交互。references/context-sensitive-plans-as-agent-knowledge.md:当计划结构和守卫设计是主要问题时加载。references/selection-functions-as-agent-policy.md:当优先级、公平性或风险承受能力需要显式策略处理时加载。references/intention-management-and-goal-decomposition.md:当暂停/恢复、子目标或意图可审计性是核心问题时加载。references/failure-modes-in-bdi-systems.md:当已存在的设计出现故障并需要调试时加载。