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: 현재 설계가 이미 존재하고 문제점을 디버깅 중일 때 로드합니다.