TaskManager LLM/MCP Mapping Wiki
1. 목적
LLM 발화 정책(llm_command.xlsx)을 DeviceAgent TaskManager API로 연결하는 mapping 기준을 정의한다.
이 문서는 다음 레이어를 연결한다.
llm_command.xlsx
-> llm-command-policy-mcp-v1.json
-> MCP router decision
-> DeviceAgent taskMethod
-> TaskManager submitTask/submitWorkflow
2. decisionType별 처리
| decisionType | DeviceAgent 호출 | 설명 |
|---|---|---|
EXECUTE |
submitTask 또는 submitWorkflow |
실제 기기 동작 수행 |
DENY |
DeviceAgent 호출하지 않음 | LLM 답변만 반환 |
NOOP |
DeviceAgent 호출하지 않음 | 중복 명령 답변 |
MULTI_TURN |
slot 채우기 후 실행 | position/설정값이 없으면 follow-up |
QUERY |
direct query 또는 getTaskStatus |
상태 조회 |
RESPONSE_ONLY |
DeviceAgent 호출하지 않음 | 정보성 답변 |
3. 대표 token mapping
| LLM 기능 | token 예 | DeviceAgent taskMethod | API |
|---|---|---|---|
| 고정청정 ON/OFF | sk_0, sk_38 |
setAirCleanerOperation, setStatusClean, stopCleaning |
submitTask |
| 스테이션 복귀 | sk_1 |
returnToStation |
submitTask |
| 선택 공간 청정 | sk_4 |
setAirCleanerOperation 또는 setMoveTo + setAirCleanerOperation |
submitWorkflow |
| 전체 공간 청정 | sk_5 |
setAirCleanerOperation |
submitTask |
| 풍량 변경 | sk_2 |
setDeviceStatus 또는 cleaning command |
submitTask |
| AI 모드/실외연동 | sk_40 |
setDeviceStatus |
submitTask |
| TTS/LLM 중단 | 상태 제어 | stopTts, setChangeLlmStatus |
submitTask |
정확한 token 전체 mapping은 framework-sdk-mcp/contracts/llm-command-policy-mcp-v1.json을 기준으로 생성해야 한다. 이 문서는 주요 연속 동작 기능의 기준만 정의한다.
4. submitTask payload 표준
MCP router가 DeviceAgent로 보낼 Bundle은 다음 필드를 기본으로 포함한다.
| key | type | 필수 | 설명 |
|---|---|---|---|
method |
String | Y | submitTask |
taskMethod |
String | Y | 실제 실행 method |
source |
String | Y | llm, iot, app, internal |
priority |
String | N | normal, control, high, emergency |
requestId |
String | N | MCP request correlation id |
llmRuleId |
String | N | 정책 rule id |
legacySkillToken |
String | N | <sk_x> 원본 token |
answerCode |
String | N | LLM 답변 코드 |
timeoutMs |
long | N | 완료 대기 timeout |
예시:
{
"method": "submitTask",
"taskMethod": "returnToStation",
"source": "llm",
"priority": "control",
"requestId": "mcp-20260622-0001",
"legacySkillToken": "sk_1",
"timeoutMs": 120000
}
5. submitWorkflow payload 표준
복합 명령은 subTasks로 분리한다.
예시: 특정 공간으로 이동 후 청정 시작
{
"method": "submitWorkflow",
"workflowName": "spot_clean",
"source": "llm",
"priority": "control",
"subTasks": [
{
"taskMethod": "setMoveTo",
"positionId": "living_room",
"timeoutMs": 120000
},
{
"taskMethod": "setAirCleanerOperation",
"action": "start",
"cleanMode": "spot",
"positionId": "living_room",
"timeoutMs": 30000
}
]
}
6. 멀티턴 처리
MULTI_TURN은 TaskManager에 바로 넣지 않는다. slot이 완성된 뒤에만 submitTask 또는 submitWorkflow로 전환한다.
| 누락 slot | 후속 질문 | 완성 후 task |
|---|---|---|
| 공간 | “어느 공간을 청정할까요?” | setMoveTo/setAirCleanerOperation |
| 풍량 | “어떤 풍량으로 설정할까요?” | setDeviceStatus |
| 시간/예약 | “언제 실행할까요?” | schedule task 또는 기존 schedule command |
7. callback mapping
DeviceAgent callback은 LLM/MCP에 그대로 노출하지 않는다. 다음 typed event로 변환한다.
| DeviceAgent event | MCP/SDK event |
|---|---|
onTaskEvent + state=RUNNING |
task.started |
onTaskEvent + state=COMPLETED |
task.completed |
onTaskEvent + state=FAILED |
task.failed |
AllMovingInfo.movingState=6 |
movement.rotationCompleted 또는 task progress event |
onMoveStateChanged arrived/failed |
movement.completed / movement.failed |
8. 금지 사항
- LLM router가
MainApilegacy method를 무분별하게 직접 호출하면 안 된다. DENY,NOOP,RESPONSE_ONLY를 DeviceAgent 명령으로 보내면 안 된다.taskId없이 장시간 명령 완료를 판단하면 안 된다.- raw
Bundlekey를 SDK public API로 그대로 노출하면 안 된다.
9. 관련 문서
10_llm_command_policy_mcp_guide.md12_policy_router_deep_dive.md20_deviceagent_taskmanager_framework_wiki.md../../docs/task-manager/DEVICEAGENT_EXTERNAL_TASK_API_GUIDE.md../../docs/task-manager/DEVICEAGENT_TASK_API_CONTRACTS.md