← Docs hub

SoC TaskManager Execution Subsystem

TaskManager는 A2A와 DeviceAgent/SoC를 연결하는 큰 기능 범주다. 단순히 “명령을 queue에 넣는 클래스”가 아니라, Cloud가 만든 plan을 실제 기기 실행으로 안전하게 소비하기 위한 DeviceAgent 실행 오케스트레이션 서브시스템으로 봐야 한다.

이 문서의 기준은 아래와 같다.

SoC TaskManager Execution Subsystem

1. 큰 기능 범주

SoC 관점에서 TaskManager는 아래 7개 기능을 하나의 실행 계층으로 묶는다.

기능 설명
Control API Gateway submitTask, submitWorkflow, getTaskStatus, cancelTask, getDevicePlanningContext 같은 외부 호출 입구
Admission / Validation task method, 필수 parameter, caller/source, state/resource 조건 검사
Policy / Queue method별 execution mode, queue key, priority, timeout, retry, cancel/compensation 정책
Executor Binding task method를 실제 domain executor 또는 legacy function handler로 연결
Workflow Runtime subtask 순차 실행, parallel group, step event, parent workflow 상태 관리
Event / Reason Contract QUEUED, STARTED, PROGRESS, COMPLETED, FAILED, CANCELLED와 reason code를 구조화
Planning Context Cloud plan 전에 필요한 battery/map/location/cleaning/movement/queue/capability snapshot 제공

TaskManager는 Cloud가 이해하는 plan 언어와 DeviceAgent가 실행하는 legacy/device-domain 명령 사이의 중간 실행 계층이다.

2. A2A와 맞물리는 위치

전체 call chain은 다음처럼 정리된다.

사용자 발화
-> Cloud A2A Planner
-> Cloud Runtime device_task_requests
-> On-device Bridge
-> DeviceAgent TaskManager.submitWorkflow / submitTask
-> TaskPolicy / Validator / Resource check
-> TaskExecutorRegistry or legacy FunctionCallHandler
-> moving / cleaning / map / schedule / interaction domain manager
-> MCU / AMR / wrapper / sensor
-> TaskEventListener / AppCmd module callback
-> On-device Bridge event relay
-> Cloud replan only if requires_cloud_decision=true

여기서 중요한 정책은 다음이다.

3. 내부 구성요소

3.1 TaskManager.java

역할:

주요 근거:

영역 역할
METHOD_SUBMIT_TASK, METHOD_SUBMIT_WORKFLOW, METHOD_GET_DEVICE_PLANNING_CONTEXT TaskManager control API 목록
handleControlMethod(...) method dispatch 관문
submitTask(...) validation, caller policy, state/resource check, command 생성, execution mode 처리
submitWorkflow(...) subtask 목록을 workflow로 등록하고 step event 생성
updateTaskProgress(...) 진행률/stage/message update와 PROGRESS event
cancelTask(...) cancel command, child cancellation, CANCELLED event
writeDevicePlanningContext(...) Cloud plan 전 device context snapshot 제공
TaskRecord.writeSummaryTo(...) task id, state, progress, reason, trace metadata를 event payload로 작성
notifyTaskEvent(...) listener와 AppCmd.INSTANCE.sendModuleCallback_main(...)으로 event 전달

3.2 TaskPolicyRegistry.java

역할:

예:

Method Mode Queue 의미
getBatteryInfo DIRECT device_info 상태조회는 queue 없이 바로 응답
returnToStation ASYNC movement 장기 이동 task
setMoveTo ASYNC movement 방/좌표 이동 task
setAirCleanerOperation ASYNC cleaning 청정 실행 task
setChangeLlmStatus ASYNC ai LLM/TTS 계열 task
setConfig QUEUED_WAIT settings 설정 변경 task

설계상 의미:

3.3 TaskBundleValidator.java

역할:

예:

Method 필요한 입력 후보
setMoveTo positionId, positionName, position, positionIds 중 하나
setAirCleanerOperation action, mode, speed, operation 중 하나
setLlmTts text, ttsText, message 중 하나
setConfig key, configKey, name 중 하나

설계상 의미:

3.4 TaskExecutorRegistry.java와 executor classes

역할:

현재 구조:

Executor 등록 method 예 의미
MovementTaskExecutor returnToStation, setMoveTo, setMoving, stopMovement 이동/복귀 계열
CleaningAmpTaskExecutor setAirCleanerOperation, setStatusClean, stopCleaning, ampStop 청정/AMP 계열
LlmTtsTaskExecutor setChangeLlmStatus, setLlmTts, stopLlm, stopTts LLM/TTS 계열
IotTaskExecutor setDeviceStatus, setConfig, getConfig 상태/설정 계열
UpdateTaskExecutor OTA/update 관련 method 업데이트 계열

주의:

3.5 TaskResourceMonitor.java

역할:

설계상 의미:

3.6 TaskReasonContract.java

역할:

대표 reason:

Reason Code 의미 Cloud 개입
LOW_BATTERY 배터리 부족 보통 device self recoverable
DEVICE_BUSY queue/resource busy 보통 wait/retry
PATH_BLOCKED 이동 경로 막힘 사용자 조치 또는 replan
ROOM_NOT_FOUND 방/위치 없음 사용자에게 대상 확인
STATE_CONDITION_FAILED 현재 상태상 실행 불가 Cloud replan 후보
CAPABILITY_UNAVAILABLE method/기능 없음 Cloud replan 후보
SENSOR_ERROR 센서 오류 Cloud replan 후보

3.7 DevicePlanningContextProvider.java

역할:

현재 snapshot 축:

schema_version
snapshot_ts / updated_at_ms
main_state
battery
map
location
cleaning
movement
task_manager
capabilities

설계상 의미:

3.8 TaskIngressClassifier.java

역할:

설계상 의미:

4. Workflow 실행 모델

submitWorkflowsubTasks를 받아 순차 또는 일부 parallel group으로 실행한다.

순차 실행 원칙:

  1. workflow task record를 만든다.
  2. subtask를 하나씩 읽는다.
  3. subtask validation을 수행한다.
  4. WORKFLOW_STEP_STARTED event를 발생시킨다.
  5. subtask command를 실행한다.
  6. 성공하면 step state를 COMPLETED로 바꾸고 WORKFLOW_STEP_COMPLETED event를 발생시킨다.
  7. 모든 subtask result를 parent workflow result에 모은다.

복합명령에서 이 구조가 중요한 이유:

5. Event 모델

TaskManager event는 크게 두 그룹이다.

정상 진행 event:

QUEUED
STARTED
PROGRESS
WORKFLOW_STEP_STARTED
WORKFLOW_STEP_COMPLETED
COMPLETED
WORKFLOW_COMPLETED

Cloud는 이 event를 받아도 기본적으로 LLM replan을 하지 않는다. 온디바이스와 DeviceAgent가 다음 step을 이어간다.

판단 필요 event:

FAILED
BLOCKED
PAUSED
CANCELLED
NEEDS_USER_INPUT

이 event는 reason_code, reason_params, requires_cloud_decision 여부가 중요하다. Cloud는 이 값이 있어야 사용자에게 다시 물을지, 대체 경로를 만들지, 전체 workflow를 중단할지 판단할 수 있다.

6. SoC 업체 구현 기준

업체가 TaskManager를 구현할 때 최소한 아래 범위를 맞춰야 한다.

범주 구현해야 하는 것
API submitTask, submitWorkflow, getTaskStatus, getQueueStatus, cancelTask, getDevicePlanningContext
Queue movement/cleaning/state/update/sound/settings/ai/default queue 분리 또는 동등 정책
Policy method별 direct/queued/async, timeout, priority, cancellable, cancel method
Validation task method와 필수 slot 검증. 발화 slot 기반 room/action/mode 누락 탐지
Executor Cloud에서 내려온 task method를 기존 DeviceAgent 안전 경로로 연결
Workflow subtask 순차 실행과 step event 보장
Event task id, state, progress, workflow/step trace, reason, timestamp 보존
Context plan 전 battery/map/location/cleaning/movement/queue/capability snapshot
Test unit, instrumented, logcat, failure injection fixture

7. 금지해야 할 구현

아래 방식은 A2A 연계에는 맞지 않는다.

8. 검증 시나리오

ADB 없이 가능한 검증:

ADB/실기기 필요 검증:

9. 관련 문서