SK-Intellix 프레임워크·SDK 문서 모음
차세대 프레임워크 — 문맥 이해에서 목표 달성과 기기 실행까지. 환경 문맥·Experience Goal·Planner·로보틱스 실행 계약과 Android 구조를 연결한다.
팀 프로젝트 시작 기준: 두 브랜치의 폴더·업무 경계와 공통 출발점.
SoC 소스 기준 업무 전체 목록: SKIX SoC 소스 기준 작업분해표. 현행 소스 구역별 분석·설계·구축·검증 항목과 담당 슬롯을 확인할 수 있다.
현재 리팩토링: 전체 모듈·폴더 상세 지도 → 제공자 연결·TTS 전달 확대 → 구현·검증 진행 현황.
처음 보는 경우에는 SKIX 전체 구조 — 처음 보는 안내서를 먼저 연다. 요청·판단·실행·결과 환류를 쉬운 그림과 청소 예시로 이해한 뒤, 24개 Manager와 Atlas의 기술 상세 구조로 내려간다. Atlas에서 boot, request-to-evidence, Runtime 내부, Task/Policy/State, 24개 domain owner, DeviceAgent migration의 여섯 동작 구조로 바로 이동할 수 있다.
이 허브는 a1-packages와 platform vendor AOSP overlay를 기준으로, 현재 제품에 들어가는 Android system package, DeviceAgent API, peer agent, vendor HAL/service, init/VINTF/sepolicy/DTS 연결을 근거 기반으로 정리한다.
여기서 말하는 Framework/SDK는 현재 코드에 이미 제품 형태로 완성된 별도 SDK가 있다는 뜻이 아니다. 현재 확인된 사실은 다음에 가깝다.
Client apps / privileged packages
-> DeviceControlAPIJavaLib 또는 직접 Binder bind
-> DeviceAgent IDeviceControl.sendModuleCommand(Bundle)
-> MainApi / framework command / task package / domain managers
-> peer agents 또는 vendor.<platform-vendor>.hardware.* HAL
-> UM vendor service / MCU / SoundFlow / sysfs / DTS-backed device nodes
따라서 이 문서의 목적은 “새로운 상위 지능 계층”을 설명하는 것이 아니라, A1에 이미 존재하는 Android platform package와 DeviceAgent 중심 API를 어떤 기준으로 안정화하고, 필요하면 SDK 형태로 포장할 수 있는지 정리하는 것이다.
현재 DeviceAgent는 제품 기능의 central service hub지만 Android OS의 system_server는 아니다.
목표는 얇은 SkixFrameworkSystemService가 부팅·root Binder·권한을 담당하고, 분리된
system_ext Runtime이 Task·Policy·State·Evidence·도메인 서비스를 소유하는 하이브리드다.
1. 권장 읽기 순서
| 단계 | 문서 | 목적 |
|---|---|---|
| 0 · 시작 | 현재 문서 | 현재 A1 패키지와 SDK 후보의 범위 |
| 0-0 · 처음 보는 전체 구조 | SKIX 전체 구조 — 처음 보는 안내서 | 요청→보호→판단→도메인→실행→상태 환류를 쉬운 그림과 청소 예시로 이해 |
| 0-1 · 빠른 이해 | SKIX 리팩터링 한눈에 보기 | Manager/ManagerService/provider 경계, 현재 구현과 다음 작업을 5분 안에 파악 |
| Blueprint 실행계획 | P3 아키텍처 상세 Todo와 A–F 계층별 설계·구축 R&R | 제품 요구 도출부터 P3.1–P3.15 아키텍처 설계, P4 설계 Gate, A 통합 및 B–F 계층별 설계·구축 R&R 확인 |
| 0-2 · 전체 구조 | SKIX 로보틱스 프레임워크 전체 구조 Atlas | AOSP trust/boot, Runtime plane, 24개 owner, DeviceAgent/Agent/ROS 2/HAL과 진행 상태를 한 화면에서 확인 |
| 0-3 · 구조도 감사표 | Framework SVG 전체 95개 감사표 | Atlas·Detail·Flow 분류, 연결 문서, 보존 경계와 정적 검증 범위 확인 |
| 0-3 · 전체 동작 | Request-to-Evidence 전체 흐름 | 요청 접수·정책/자원 중재·물리 실행·State/Evidence·상위 지능 서비스 replan의 폐루프 확인 |
| 1 · 제품 프레임워크 | SKIX 리팩터링 프레임워크 설계안 | AOSP 위의 상태·정책·자원·생명주기·TaskManager 구조와 단계적 전환 전략 |
| 1-A · 교차 플랫폼 확장 | Booster T2와 SKIX 연동 설계 | Android namuh와 Ubuntu 기반 T2를 공통 Capability·Task·State·Evidence 계약으로 연결하는 구조와 도입 검증 기준 |
| 1-B · 로봇 모델 확장 | 자율주행·그리퍼 로봇 모델 아키텍처 | 바퀴형 모바일 매니퓰레이터의 지각·자율주행·파지 모델과 ROS 2·Jetson Thor·휴머노이드 확장 기준 |
| 1-0 · 실행 구조 | 하이브리드 SystemService·Runtime 구조 | system_server·system_ext Runtime·provider 경계와 부팅·복구 계약 |
| 1-1 · 누적 현황 | SKIX 제품 프레임워크 리팩터링 진행 현황 | 구현·설계·정적 검증·실기기 미검증을 구분한 현재 상태 허브 |
| 1-1a · Binder 입구 | Root Binder Admission Core | 공개 service/API/Manager ID와 fail-closed 호출자·범위·lifecycle 판정, 후속 AIDL 경계 |
| 1-2 · State 구현 | StateManager 읽기 전용 투영 구현 | typed observation, lifecycle affinity, MR6 producer 이식 경계와 SVG |
| 1-3 · Lifecycle | 서비스 라이프사이클과 도메인 상태 감사 | ManagerService lifecycle, 도메인 상태 writer와 MR7 구현·검증 상태 |
| 1-4 · 앱 아키텍처 | SKIX 응용 프로그램 아키텍처 표준 | MVVM+UDF, State/Event/Effect, Domain·Repository 경계와 Feature 복잡도별 확장 기준 |
| 1-5 · IoT 확장 | AWS IoT Domain Framework 상세 설계 | Manager/Service 경계에서 도메인별 양방향 통신, 기존 MQTT 호환, 다중화, 재연결과 제한된 원격 운영을 관리 |
| 참고 · 파트너 공개 경계 | Product Framework Gateway 검토 기록 | 승인 파트너 공개가 필요할 때 검토할 신뢰 경계와 별도 배치 조건. 1차 구현 기준은 제품 프레임워크 설계안 |
| 3 · 제품 변화 | Transformation Roadmap | 현재 구조를 깨지 않고 API를 안정화하는 이유 |
| 4 · 시스템 구조 | System Design | DeviceAgent Binder API, 동료 Agent, HAL·서비스 경계 |
| 5 · 계약과 데이터 | SDK Contract | DeviceControlAPIJavaLib와 IDeviceControl 위 호출 API 후보 |
| 6 · 구현 | DeviceAgent / SoC Category | TaskManager와 도메인 실행기의 실제 연결 |
| 7 · 검증 | Source and Evidence Catalog | 문서의 주장을 소스·시험·근거에 연결 |
| 8 · 운영과 로드맵 | QCS6490 Platform Vendor Brief | QSSI/UM, HAL, DTS, 드라이버 업체 전달 |
상위/하위 연결점:
| 위치 | 연결 이유 |
|---|---|
| SK-Intellix Engineering Hub | 전체 위키의 최상위 진입점 |
| Book Shelf | 책처럼 읽을 때 A1 platform/runtime 정리 파트 |
| DeviceAgent / SoC Category | DeviceAgent API, TaskManager, domain executor 상세 |
| Vendor Category | 업체 구현 범위와 evidence 제출 기준 |
| QCS6490 Platform Vendor Brief | QCS6490/QSSI/UM/HAL/DTS 업체 회의 시작점 |
2. 확인된 코드 근거
| 영역 | 확인된 근거 | 의미 |
|---|---|---|
| A1 package inventory | a1-packages/docs/architecture/MODULE_INVENTORY.md |
apps/, service/, libs/, sepolicy로 구성된 Android 제품 패키지 |
| 제품 패키지 포함 | a1-packages/packages.mk |
DeviceAgent, AMRAgent, IotAgent, StartupService, PairingAgent, SKMLauncher, UpdateAgent, VisionAgent, ethernetagent, logwriter 등 포함 |
| QSSI overlay | <qssi-vendor-overlay>/vendor.mk, <qssi-vendor-overlay>/prebuilts/packages.mk |
system/priv-app, permissions, sysconfig, HIDL interface 정의를 QSSI 쪽에 반영 |
| UM overlay | <um-vendor-overlay>/vendor.mk, <um-vendor-overlay>/airbot/airbot.mk |
vendor service, vendor sepolicy, Kardome/SoundFlow, HAL backend를 UM 쪽에 반영 |
| DeviceAgent Binder API | apps/DeviceAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidl |
registerCallback, sendModuleCommand(Bundle), callback 등록 API 제공 |
| Client API | apps/DeviceControlAPI/java/com/sk/airbot/devicecontrol/DeviceControlProxy.java |
com.sk.airbot.devicecontrol.IDeviceControl action으로 DeviceAgent에 bind |
| DeviceAgent service export | apps/DeviceAgent/app/src/main/AndroidManifest.xml |
exported=true. 현재 확인한 기준에서는 서비스 전체에 적용되는 signature permission이 없고 일부 명령만 호출자 UID를 별도로 검사하므로, 공개 SDK 전 공통 권한 경계 보강이 필요 |
| DeviceAgent build | apps/DeviceAgent/app/src/main/Android.mk |
system/priv-app, platform certificate, private platform API, platform vendor HAL Java lib 의존 |
| HAL interface | <qssi-vendor-overlay>/airbot/hardware/interfaces/device_manager/1.0, soundflowservice/1.0 |
vendor.<platform-vendor>.hardware.device_manager@1.0, vendor.<platform-vendor>.hardware.soundflowservice@1.0 HIDL |
| HAL implementation | <um-vendor-overlay>/airbot/external/device_manager/service, <um-vendor-overlay>/airbot/external/sndflow/service |
/vendor/bin/hw service, init rc, VINTF fragment 제공 |
| Platform policy | <um-vendor-overlay>/airbot/device/sepolicy/*, device_framework_matrix_vendor.xml |
service domain, hwservice context, file context, matrix 정합성 |
2.1 BSP / Build Flow 근거
Framework/SDK 문서가 BSP와 연결되는 지점은 QSSI/UM split build다. g13qcs6490/build_project.sh는 QSSI를 qssi lunch로 --qssi_only, UM을 lahaina lunch로 --target_only 빌드한 뒤 Qualcomm build_image_standalone.py --image super로 merge OTA를 만든다. platform vendor overlay는 <qssi-vendor-overlay>/vendor.mk, <um-vendor-overlay>/vendor.mk, sync_vendor_overlay.sh를 통해 각각 QSSI/UM의 vendor/<platform-vendor>로 들어간다.
따라서 이 허브에서 BSP를 말할 때는 “Android SDK 앱 개발”이 아니라 다음 chain을 뜻한다.
a1-packages source/prebuilt package
-> <qssi-vendor-overlay> system-side overlay
-> <um-vendor-overlay> vendor-side HAL/service overlay
-> QSSI/UM split build
-> merged super / OTA / PKG release
3. 현재 A1 레이어
이 허브의 레이어는 Android/AOSP 배치와 실제 호출 경계를 기준으로 본다.
| 레이어 | 현재 구조 | 이 문서에서의 의미 |
|---|---|---|
| Client / Consumer | SKMLauncher, SKMLauncher2, ICT, PairingAgent, 테스트 앱 |
DeviceAgent API를 호출하는 앱/패키지 |
| Client API | DeviceControlAPIJavaLib, DeviceControlProxy |
Binder 연결과 callback 등록을 감싸는 현재 API |
| Product SystemServer | DeviceAgent, IDeviceControl, MainApi, domain managers |
Android system_server는 아니지만 제품 기능 제어의 central service hub |
| DeviceAgent Binder boundary | IDeviceControl.aidl, DeviceAgent.java, sendModuleCommand(Bundle) |
외부 호출이 DeviceAgent로 들어오는 안정화 대상 |
| DeviceAgent runtime code | MainApi, framework/command/*, task/*, policy/*, event/*, domain managers |
제품 기능 라우팅, 정책, 상태, event, HAL/peer agent 연결의 중심 |
| Peer agent services | AMRAgent, IotAgent, UpdateAgent, PairingAgent, VisionAgent, LLMAgent |
DeviceAgent가 bind하거나 호출하는 기능별 프로세스 |
| QSSI contract/package | <qssi-vendor-overlay>, HIDL interface, permissions, sysconfig, priv-app package |
system/system_ext 성격의 제품 반영 영역 |
| UM vendor runtime | <um-vendor-overlay>, DeviceManager service, SoundFlow service, sepolicy_vndr |
vendor partition과 HAL backend 영역 |
| Kernel / board | kernel/msm-5.4, board DTS include, device nodes |
UART/MCU/fan/thermal/audio 등 실기기 검증 대상 |
3.1 DeviceAgent 위치 해석
DeviceAgent를 Android system_server로 쓰면 안 된다. 실제 Android system_server는 AOSP framework process다. 하지만 A1 제품 기능 관점에서는 DeviceAgent가 central Binder entry, command dispatcher, peer agent coordinator, state/policy/event owner, HAL bridge를 동시에 담당하므로 제품 기능의 SystemServer 역할이라고 표현하는 것이 정확하다.
이 표현의 의미는 다음처럼 제한한다.
| 표현 | 맞는 의미 | 틀린 의미 |
|---|---|---|
| product-level SystemServer | A1 제품 기능 호출이 DeviceAgent로 모이고 DeviceAgent가 peer agent/HAL로 분배한다 | Android OS system_server를 교체한다 |
| service hub | IDeviceControl entry와 AMR/IoT/Update/Pairing/Vision binding이 DeviceAgent에 모인다 |
모든 agent의 내부 구현이 DeviceAgent 안에 있다 |
| HAL bridge | system/priv-app DeviceAgent가 platform vendor HIDL Java lib를 통해 vendor HAL service와 통신한다 | DeviceAgent가 vendor daemon 자체다 |
4. 그림 읽는 기준
| 그림 | 설명 |
|---|---|
| QSSI/UM split build, platform vendor overlay 반영, merge/package/release gate | |
| Client API -> DeviceAgent -> domain manager/task -> platform vendor HAL -> vendor/kernel 경로 | |
| DeviceAgent가 AMR/IoT/Update/Pairing/Vision/LLM agent와 Binder/callback으로 연결되는 구조 | |
| HAL, DTS, driver, SELinux, device node evidence chain |
표현 기준:
- 파란색
SK-Intellix는 현재a1-packages안의 DeviceAgent/API/runtime 코드 또는 그 전환 후보를 뜻한다. - 주황색
Platform Vendor는 QSSI/UM overlay, vendor service, HAL backend 구현 owner를 뜻한다. - 녹색
Platform/Vendor Evidence는 boot/logcat/dmesg/AVC/HAL callback 같은 실기기 증거이며, 플랫폼 벤더가 수집하고 release gate가 검증한다. - device evidence 자체는 SK-Intellix 역할로 보지 않는다. SK-Intellix 쪽은 그 evidence가 API/HAL/runtime 계약을 만족하는지 판단한다.
5. A1 Package 구성
a1-packages는 단일 앱 저장소가 아니라 Android 제품 이미지에 들어가는 system app, privileged app, native daemon, shared library, SELinux policy 묶음이다.
DeviceAgent는 이 묶음 안에서 다음 책임을 동시에 가진다.
| DeviceAgent 책임 | 설명 | 근거 |
|---|---|---|
| Product service registry | 외부 client가 IDeviceControl action으로 bind하는 제품 기능 진입점 |
AndroidManifest.xml, IDeviceControl.aidl |
| Command dispatcher | sendModuleCommand(Bundle)를 받아 MainApi, framework command, task package로 전달 |
DeviceAgent.java, MainApi.java, framework/command/*, task/* |
| Peer service coordinator | AMR/IoT/Update/Pairing/Vision/LLM agent와 연결 | SERVICE_MAP.md, MainService.java, AMRService.java, VisionAIManager.java |
| Product state/policy owner | 상태, event, command policy, task reason을 관리 | event/StateManager.java, event/EventManager.java, policy/CmdPolicyManager.java, task/TaskReasonContract.java |
| HAL bridge | DeviceManager/SoundFlow HAL Java binding을 통해 vendor service로 내려감 | Android.mk, DeviceAgent.java, SoundFlowManager.java |
그래서 이 문서에서 DeviceAgent를 “앱 하나”로 표현하면 실제 역할이 축소된다. 더 정확한 표현은 “A1 제품 기능의 system service hub”다.
5.1 서비스 Agent 연동 구조
DeviceAgent는 외부 client와 peer agent 사이의 중심점이다. 외부 앱은 DeviceControlAPIJavaLib 또는 직접 Binder bind로 IDeviceControl에 들어오고, DeviceAgent는 내부 command/runtime 처리 후 필요한 경우 기능별 peer agent나 HAL로 분배한다.
| 연결 | Binder action / API | DeviceAgent 쪽 연결 근거 | 역할 |
|---|---|---|---|
| Client -> DeviceAgent | com.sk.airbot.devicecontrol.IDeviceControl, sendModuleCommand(Bundle) |
DeviceControlProxy.java, DeviceAgent.java |
제품 기능 외부 진입점 |
| DeviceAgent -> AMRAgent | com.sk.airbot.amrcontrol.IAMRControl |
AMRService.java, MainService.mAMRControlCallback |
이동, 지도, docking, battery/status callback |
| DeviceAgent -> IotAgent | com.sk.airbot.iotcontrol.IIotControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionIot |
IoT 상태 publish/control |
| DeviceAgent -> UpdateAgent | com.sk.airbot.updatecontrol.IUpdateControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionUpdate |
OTA/update control |
| DeviceAgent -> PairingAgent | com.sk.airbot.pairingcontrol.IPairingControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionPairing |
pairing/BLE 연동 |
| DeviceAgent -> VisionAgent | com.sk.airbot.visioncontrol.IVisionControl |
VisionAIManager.bindService() |
vision recognition/control |
| DeviceAgent -> LLMAgent | com.sk.airbot.llmcontrol.ILLMControl |
MODULE_INVENTORY.md, LLMAgent AIDL/manifest |
LLM/TTS 관련 peer package. DeviceAgent 직접 bind path는 별도 확인 필요 |
| DeviceAgent -> platform vendor HAL | IDeviceManager.getService(), ISoundFlowService.getService() |
DeviceAgent.java, SoundFlowManager.java, Android.mk HAL Java lib 의존 |
MCU/device manager, SoundFlow/Kardome vendor service 연결 |
| 구성 | 현재 역할 | 근거 |
|---|---|---|
apps/DeviceAgent |
IDeviceControl Binder 진입점, MainApi, domain managers, HAL/peer agent 연결 |
SERVICE_MAP.md, AndroidManifest.xml, Android.mk |
apps/DeviceControlAPI |
DeviceAgent에 bind하는 Java client library | DeviceControlProxy.java |
apps/AMRAgent |
AMR 이동/맵/로봇 상태 peer service | SERVICE_MAP.md |
apps/IotAgent |
IoT 상태 publish/control peer service | SERVICE_MAP.md |
apps/UpdateAgent |
OTA/update peer service | SERVICE_MAP.md |
apps/PairingAgent |
pairing control peer service | SERVICE_MAP.md |
apps/VisionAgent |
vision control/recognition peer service | SERVICE_MAP.md |
apps/LLMAgent |
LLM/TTS 관련 제어 패키지 | MODULE_INVENTORY.md |
apps/SKMLauncher, apps/SKMLauncher2, apps/ICT |
DeviceAgent API consumer | SERVICE_MAP.md |
service/ethernetagent, service/logwriter, service/decrypt |
native executable/init rc 기반 시스템 지원 서비스 | MODULE_INVENTORY.md, packages.mk |
libs/serial_port |
serial port shared library | MODULE_INVENTORY.md |
sepolicy |
system app 권한 보강 정책 | packages.mk |
6. SDK라는 표현의 정확한 범위
현재 근거 기준으로 “SDK”라고 말할 수 있는 것은 완성된 신규 product가 아니라 다음 두 단계다.
| 단계 | 상태 | 설명 |
|---|---|---|
| 현재 | DeviceControlAPIJavaLib + DeviceControlProxy |
DeviceAgent Binder 연결을 감싸는 client library가 존재 |
| 후보 | sk-intellix-sdk-core.aar 같은 별도 AAR |
기존 Bundle/method string을 숨기고 domain별 API를 제공하는 전환 후보 |
따라서 이 허브에서는 SDK를 “현재 존재하는 client API를 제품형 API로 정리할 수 있는 후보”로만 다룬다. 실제 SDK 구현, API diff, sample app, Maven/internal artifact 배포는 별도 구현과 검증이 필요하다.
7. 완료 판단
이 영역의 완료 판단은 문서 동의가 아니라 Android platform evidence로 한다.
| 판단 항목 | 필요한 evidence |
|---|---|
| QSSI package 반영 | vendor/<platform-vendor> include, PRODUCT_PACKAGES, permissions/sysconfig 산출물 |
| UM vendor service 반영 | /vendor/bin/hw service, init rc, VINTF fragment, hwservicemanager 등록 |
| DeviceAgent API 동작 | IDeviceControl bind, sendModuleCommand(Bundle), callback 등록/해제 log |
| HAL 연결 | IDeviceManager.getService(), ISoundFlowService.getService(), callback/event log |
| SELinux/VINTF 정합성 | avc: denied 정리, lshal, VINTF check, service context 확인 |
| DTS/driver/device node | boot dmesg, node permission, UART/MCU/fan/thermal/audio 기능 log |
8. 빠른 URL
Framework/SDK Hub:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/
SKIX 리팩터링 한눈에 보기:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-refactoring-at-a-glance-2026-09-05
리팩터링 진행 현황:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-layer-refactoring-progress-2026-09-04
Application UI Architecture Standard:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-application-ui-architecture-standard.html
System Design:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/system-design.html
SDK Contract:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/sdk-contract.html
Transformation Roadmap:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/transformation-roadmap.html