← Docs hub

SK-Intellix Framework SDK System Design

1. 범위

이 문서는 A1 기준 Android platform package와 DeviceAgent API 구조를 설명한다. 범위는 a1-packages, <qssi-vendor-overlay>, <um-vendor-overlay>, QCS6490 split build, platform vendor HAL/vendor service까지다.

범위에 포함하지 않는 것:

이 문서의 핵심 질문은 하나다.

현재 A1 제품 이미지 안에서 client app의 기능 호출이
DeviceAgent, peer agent, platform vendor HAL/vendor service, board device node까지
어떤 경계로 내려가는가?

DeviceAgent는 여기서 단순 Android app이 아니라 A1 제품 기능의 product-level SystemServer / service hub다. Android OS의 system_server를 대체한다는 뜻은 아니며, 제품 기능 제어 계층에서 system_server처럼 중앙 Binder service, domain dispatcher, peer service coordinator, HAL bridge 역할을 모아 수행한다는 뜻이다.

2. 현재 호출 구조

SKMLauncher / SKMLauncher2 / ICT / privileged package
  -> DeviceControlAPIJavaLib
     -> DeviceControlProxy.bindService(action=com.sk.airbot.devicecontrol.IDeviceControl)
        -> DeviceAgent service
           -> IDeviceControl.sendModuleCommand(Bundle)
              -> MainApi / framework command / task package / domain managers
                 -> AMRAgent / IotAgent / UpdateAgent / PairingAgent / VisionAgent / LLMAgent
                 -> vendor.<platform-vendor>.hardware.device_manager@1.0
                 -> vendor.<platform-vendor>.hardware.soundflowservice@1.0
                    -> UM vendor service / MCU / SoundFlow / sysfs / DTS-backed node

Runtime Call Flow

3. A1 Package Runtime Composition

영역 현재 구성 확인 근거
Client API apps/DeviceControlAPI/java/com/sk/airbot/devicecontrol/DeviceControlProxy.java action com.sk.airbot.devicecontrol.IDeviceControl로 bind
Binder contract apps/DeviceAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidl registerCallback, sendModuleCommand(Bundle)
Runtime entry apps/DeviceAgent/app/src/main/AndroidManifest.xml .DeviceAgent service, signature/privileged permission
Runtime implementation apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/DeviceAgent.java IDeviceControl.Stub 구현
Legacy command path main/api/MainApi.java, framework/command/* 기존 method string/Bundle 처리와 command handler 후보
Task path task/TaskManager.java, TaskIngressClassifier.java, TaskExecutorRegistry.java, TaskReasonContract.java task/workflow 계층 상세는 DeviceAgent/SoC 문서에서 관리
State/policy/event event/StateManager.java, event/EventManager.java, policy/CmdPolicyManager.java, framework/policy/PolicyEngine.java 현재 코드에 존재하는 정책/상태 관련 구현
Peer agent binding AMRAgent, IotAgent, UpdateAgent, PairingAgent, VisionAgent, LLMAgent SERVICE_MAP.md
HAL bridge DeviceManager HAL, SoundFlow HAL platform vendor HIDL Java lib와 getService() 호출
Native support ethernetagent, logwriter, a1_decrypt, libserial_port.so MODULE_INVENTORY.md, packages.mk

3.1 DeviceAgent as Product SystemServer

역할 DeviceAgent에서 보이는 구조 설명
Service entrypoint .DeviceAgent service, IDeviceControl action client app이 제품 기능을 호출하는 중앙 Binder entry
Permission boundary ACCESS_DEVICE_CONTROL, signature|privileged 아무 앱이나 제품 제어 API를 호출하지 못하게 막는 경계
Command dispatch sendModuleCommand(Bundle), MainApi, framework/command/* legacy method와 command handler를 제품 기능으로 연결
Task/runtime coordination task/TaskManager.java, TaskExecutorRegistry.java, TaskReasonContract.java 실행 가능성, queue, reason, callback을 구조화하는 후보/현재 구현
Peer service coordination AMR/IoT/Update/Pairing/Vision/LLM agent binding 제품 기능별 agent를 묶는 service hub
HAL bridge DeviceManager/SoundFlow HIDL Java lib, getService() path Android system app 영역에서 vendor HAL service로 내려가는 다리
State/policy/event StateManager, EventManager, CmdPolicyManager, PolicyEngine 제품 기능 상태와 정책 판단이 모이는 지점

3.2 Peer Agent Service Topology

DeviceAgent는 client API만 받는 endpoint가 아니라 기능별 service agent를 묶는 hub다. SERVICE_MAP.mdDeviceAgent.connectServices() 기준으로 확인되는 연결은 다음과 같다.

DeviceAgent Peer Agent Topology

연결 등록/action DeviceAgent 연결 방식 의미
Client apps -> DeviceAgent com.sk.airbot.devicecontrol.IDeviceControl DeviceControlProxy.bindService, IDeviceControl.Stub 외부 제품 API 진입점
DeviceAgent -> AMRAgent com.sk.airbot.amrcontrol.IAMRControl AMRService.connectService, IAMRControlCallback AMR 이동/지도/도킹/배터리 상태 수신 및 명령
DeviceAgent -> IotAgent com.sk.airbot.iotcontrol.IIotControl bindService, mServiceConnectionIot IoT 보고/제어
DeviceAgent -> UpdateAgent com.sk.airbot.updatecontrol.IUpdateControl bindService, mServiceConnectionUpdate OTA/update orchestration
DeviceAgent -> PairingAgent com.sk.airbot.pairingcontrol.IPairingControl bindService, mServiceConnectionPairing pairing/BLE control
DeviceAgent -> VisionAgent com.sk.airbot.visioncontrol.IVisionControl VisionAIManager.bindService vision recognition/control
LLMAgent com.sk.airbot.llmcontrol.ILLMControl AIDL/manifest/package 존재. DeviceAgent direct bind 여부는 별도 source 확인 필요 LLM/TTS peer package 후보

이 표에서 중요한 점은 Agent들이 DeviceAgent 내부 클래스로 합쳐진 구조가 아니라는 것이다. 각 Agent는 별도 package/service이고, DeviceAgent가 Binder/action/callback 경계로 연결한다.

4. Partition / Package Boundary

Build Partition Flow

Partition 관점 현재 구성 설명
QSSI / system <qssi-vendor-overlay>/vendor.mk, prebuilts/packages.mk, a1-packages/packages.mk system/priv-app, permissions, sysconfig, HIDL interface 정의
system/priv-app DeviceAgent, AMRAgent, IotAgent, UpdateAgent, VisionAgent, PairingAgent, launcher류 PRODUCT_PACKAGES와 prebuilt/source package로 포함
system policy privapp-permissions-vendor_packages.xml, vendor_whitelist.xml, package sepolicy privileged app 권한과 system allowlist
UM / vendor <um-vendor-overlay>/vendor.mk, airbot/airbot.mk vendor service, vendor sepolicy, thirdparty/Kardome 포함
vendor HAL service vendor.<platform-vendor>.hardware.device_manager@1.0-service, vendor.<platform-vendor>.hardware.soundflowservice@1.0-service /vendor/bin/hw, init rc, VINTF fragment
board/kernel kernel/msm-5.4, board DTS include, device node UART/MCU/fan/thermal/audio 실기기 경로

4.1 BSP Split Build Evidence

QCS6490 BSP 관점에서 platform vendor package는 QSSI와 UM에 나뉘어 들어간다.

단계 확인 근거 의미
QSSI source/prebuilt overlay <qssi-vendor-overlay>/vendor.mk, <qssi-vendor-overlay>/prebuilts/packages.mk system/priv-app, permission/sysconfig, HIDL interface 반영
UM vendor overlay <um-vendor-overlay>/vendor.mk, <um-vendor-overlay>/airbot/airbot.mk vendor HAL service, vendor sepolicy, Kardome/SoundFlow 반영
동기화 위치 sync_vendor_overlay.sh QSSI/UM 각각의 vendor/<platform-vendor>로 복사
split build g13qcs6490/build_project.sh qssi --qssi_only, lahaina --target_only 빌드
merge/release build_image_standalone.py --image super, RELEASE/OTA, RELEASE/PKG merged super/OTA/PKG 산출

5. HAL / Vendor Boundary

HAL Interface 위치 Implementation 위치 검증
DeviceManager <qssi-vendor-overlay>/airbot/hardware/interfaces/device_manager/1.0/IDeviceManager.hal <um-vendor-overlay>/airbot/external/device_manager/service service 등록, callback, MCU/fan/thermal/serial 기능 log
SoundFlow <qssi-vendor-overlay>/airbot/hardware/interfaces/soundflowservice/1.0/ISoundFlowService.hal <um-vendor-overlay>/airbot/external/sndflow/service service 등록, event callback, Kardome/SoundFlow log

HAL DTS Driver Validation Flow

6. SDK 전환의 실제 의미

현재 존재하는 API는 DeviceControlAPIJavaLibIDeviceControl.sendModuleCommand(Bundle)이다. 따라서 SDK 전환은 다음 순서로만 사실 기반으로 말할 수 있다.

단계 설명 완료 조건
현재 API 고정 DeviceControlProxy, IDeviceControl, Bundle key/method contract를 문서화 source map, sample call, callback log
Adapter 정리 public caller가 직접 Bundle key를 다루지 않도록 wrapper 추가 adapter test, 기존 path parity
AAR 후보 sk-intellix-sdk-core.aar 같은 별도 artifact로 분리 AAR build, sample app, API diff
Platform packaging AOSP image에 SDK/client library 반영 QSSI package evidence

7. 리스크

리스크 의미 대응
Bundle/method string 의존 API 안정성, 타입 안정성 낮음 현재 contract를 먼저 고정하고 adapter로 감싼다
DeviceAgent 책임 집중 API gateway, domain manager, HAL bridge, policy/state가 한 앱에 집중 DeviceAgent/SoC 문서에서 task/domain/source map으로 분해
QSSI/UM 경계 혼동 system app, HIDL interface, vendor service 책임이 섞여 보일 수 있음 build partition flow와 vendor brief에서 owner 분리
evidence owner 혼동 device log를 SK-Intellix 역할처럼 표현할 수 있음 플랫폼 벤더 제출, release gate 검증으로 표기
SDK 구현 상태 오해 후보 계약을 구현 완료처럼 읽을 수 있음 SDK 문서는 candidate/contract draft로 표기

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date