← Docs hub

TaskManager 사양 6 · 운영, 보안과 검증

None
사양 허브DeviceAgent MR6Spec 1.9

관측성, 영속성, 용량, 보안, 실패 UX, 인수 시험과 변경 절차를 정의한다.

이 장의 결론: 출시 판정은 코드 존재가 아니라 요청부터 실제 terminal 증거까지 이어지는 반복 검증으로 결정한다.

21. 모니터링과 관측성

21.1 운영자가 봐야 하는 상태

화면 요소 기준 정보
현재 Task와 상태 listTasks/getTaskStatus
현재 Workflow 단계 TaskRecord 단계 상태
대기열의 실행·대기 상태 getQueueStatus
실제 기기 위치와 청정 상태 계획 컨텍스트와 도메인 상태
완료 증거 완료 이벤트와 결과
실패 원인 실패 사유 계약
예약 목록 getScheduledTasks
Planner 계획 Cloud 실행 추적 정보

Task Monitor와 A2A Text Console은 같은 정보를 다른 관점으로 보여준다.

21.2 필수 상관관계

상위 세션부터 기기 완료 이벤트까지의 추적 ID 연결

21.3 UI에서 구분해야 하는 상태

21.4 운영 지표

현재 런타임은 Task 최종 결과와 대기열 상태를 바탕으로 다음 운영 지표를 만들 수 있다.

제품 지표는 단순 접수 비율이 아니라 실제 완료 증거를 기준으로 산정해야 한다.


22. 영속성·용량·런타임 설정

22.1 TaskManager 속성

persist.sys.deviceagent.taskmanager.enable
persist.sys.deviceagent.taskmanager.legacy_queue
persist.sys.deviceagent.taskmanager.queue_size
persist.sys.deviceagent.taskmanager.persist
persist.sys.deviceagent.taskmanager.persist_path
persist.sys.deviceagent.taskmanager.schedule_persist
persist.sys.deviceagent.taskmanager.schedule_persist_path
persist.sys.deviceagent.taskmanager.strict_validation
persist.sys.deviceagent.taskmanager.executor_dry_run
persist.sys.deviceagent.taskmanager.scheduler.enable
persist.sys.deviceagent.taskmanager.scheduler.interval_ms
persist.sys.deviceagent.taskmanager.scheduler.limit
persist.sys.deviceagent.taskmanager.scheduler.exact_alarm
persist.sys.deviceagent.taskmanager.resource_policy
persist.sys.deviceagent.taskmanager.cpu_limit
persist.sys.deviceagent.taskmanager.ram_pressure_limit
persist.sys.deviceagent.taskmanager.thermal_limit
persist.sys.deviceagent.taskmanager.move_timeout_ms
persist.sys.deviceagent.taskmanager.clean_dwell_ms

22.2 기본값

항목 기본값
대기열 용량 64
Task·예약 기록 상한 100
일반 시간 제한 30초
예약 저장소 /mnt/data2/db/taskmanager_scheduled_tasks.json
TaskManager 활성화 속성 기본값 true
기존 명령 대기열 속성 기본값 true
일반 Task 스냅숏 영속 저장 false
지연 예약 영속 저장 true
엄격한 입력 검증 false
실행기 모의 실행 false
예약 실행 주기 확인·정확한 알람 false / false
예약 확인 주기·묶음 상한 30초 / 20
시스템 자원 정책 false
CPU / RAM / thermal threshold 90 / 90 / 4
movement timeout 120초
cleaning dwell 0ms
모니터 상태 보고·명령 조회 false / false

22.3 영속성 원칙

현재 일반 Task 영속성은 persistTaskSnapshot()이 Task ID, 메서드, 대기열, 상태, 진행률과 시각을 JSON으로 남기는 쓰기 전용 진단 스냅숏이다. 이를 읽어 TaskRecord와 비동기 실행을 복원하는 런타임은 없다. 반면 지연 예약은 허용된 Bundle 키를 저장하고 ScheduledTaskRecord를 다시 읽는 별도 경로가 있다. 두 영속성 기능을 같은 수준의 장애 복구 기능으로 표현하면 안 된다.

22.4 용량 관리 원칙


23. 보안과 권한

23.1 Binder 경계

TaskManager API는 DeviceAgent Binder를 통과한다. 제품 배포에서 확인할 항목:

23.2 시스템 앱 배포

23.3 모니터 전송 보안

23.4 특권 우회 필드

다음 필드는 일반 외부 호출자에게 직접 노출하지 않는다.


24. 실패 처리와 사용자 UX

24.1 구조화 실패에서 사용자 문장으로

reason_code=ROOM_NOT_FOUND
reason_params.target_location_name=거실
suggested_action=ASK_USER_TARGET

사용자 응답:
  “거실은 등록된 공간에서 찾지 못했어. 등록된 다른 공간으로 이동할까?”

내부 필드를 그대로 TTS로 읽지 않는다.

나쁜 예:

context 기준으로 current_room_id=0입니다.
CAPABILITY_UNAVAILABLE reason_params가 발생했습니다.

좋은 예:

현재 스테이션에 있어.
요청한 공간을 찾지 못했어. 공간 이름을 다시 알려줘.

24.2 실패 후 동작

실패 기본 안내 실행 정책
공간 없음 가능한 공간 안내 또는 질문 재계획 전 기기 동작 금지
저전력 복귀 안내 도킹 후 재개 가능
사용 중 현재 작업 설명 대기·재시도·취소 중 선택
경로 차단 장애물 제거 요청 사용자 확인 전 반복 이동 금지
사용자 취소 취소 확인 Workflow 종료
기능 없음 지원 범위 설명 임의로 다른 기능 실행 금지
시간 초과 지연 또는 실패 설명 최신 상태 확인 후 재시도 판단

25. 테스트 전략과 인수 기준

25.1 테스트 계층

계층 확인 대상 한계
단위 시험 정책, 검증기, 실패 사유와 Bundle 변환 실제 Binder와 하드웨어 없음
JVM 통합 시험 TaskManager 기록, 대기열과 Workflow Android 런타임 차이
빌드 DeviceAgent와 AAR 컴파일·패키징 실행 연결 미확인
계측 시험 Binder와 DeviceAgent 경로 일부 도메인 하드웨어 제한
실기기 모의 실행 요청 구조, 이벤트와 모니터 실제 기기 동작 미실행
실기기 실제 실행 이동, 청정, 화면과 세션의 완료 증거 특정 기기 상태에 의존
장시간·재부팅 시험 영속성, 예약과 고립 Task 복구 장시간 필요

25.2 최소 기능 검증

  1. DIRECT 조회 성공과 실패
  2. ASYNC Task 접수 후 최종 이벤트
  3. QUEUED_WAIT 시간 초과
  4. 같은 대기열의 실행 순서
  5. 우선순위 순서
  6. 대기열 포화
  7. 엄격한 입력 검증 거절
  8. 요청 출처별 긴급 우선순위 거절
  9. 상태·자원 실행 허용 거절
  10. 대기·실행 Task 취소
  11. 취소 명령 실패
  12. 보상 동작 실행
  13. 순차 Workflow
  14. 병렬 그룹 성공과 부분 실패
  15. 조건에 따른 생략과 실패
  16. 선행 단계 기준 지연
  17. 과거 완료 증거 재사용 방어
  18. PUI 취소 콜백
  19. 예약 중복 제거, 저장, 복원, 실행, 취소와 미실행 처리
  20. 이벤트 상관관계와 모니터 표시

25.3 도메인별 실기기 인수 시험

도메인 반드시 확인할 증거
Movement 실제 출발, 목표 도착, 시간 초과, 정지와 스테이션 충전
Cleaning 시작, 실행, PUI 중지, 자연 종료, 결과 보고와 복귀
TTS 재생 시작·종료, 호출어 취소와 중지
UI·Vital Sign 화면 적용, 앱 실행, 측정 완료와 사용자 취소
Security 시작, 일시정지, 재개, 중지, 저전력과 순찰 완료
Schedule 재부팅 복원, 정확한 실행 시각, 미실행과 시계 변경
Monitor 이벤트 누락·중복, 인증과 오프라인 복구

25.4 기존 검증 증거 해석

기존 문서에는 다음 수준의 증거가 있다.

이 기록은 당시 기기와 APK 조합에 한정된 증거다. MR6 소스, 서명 또는 빌드 산출물이 바뀌면 출시 인수 시험을 다시 수행한다.

25.5 출시 판정 기준

위 구조도의 Gate 1~10은 API 정합에서 입력 검증, 실행기, 완료 증거, 취소·보상, 실패 사유, Binder 보안, 실기기 시험, 장시간 시험, 관측성과 원복까지 순서대로 확인한다.


26. 현재 구현의 한계와 목표 확장

26.1 현재 확인된 한계

영역 현재 한계 영향
입력 검증 기본적으로 엄격 검증 비활성 잘못된 기존 입력이 실행 직전에 실패할 수 있음
기본 정책 메서드 이름을 바탕으로 추정 신규 메서드 오분류 가능
대기열 별칭 queuequeueKey 차이 설정값 불일치 가능
결과 취합 정책 값을 보존하지만 모든 하위 Task 대기 중심 하나 성공·정족수 완료 방식 미지원
실행 조건 단계 완료·출력 일치 중심 숫자와 복합 조건식 제한
장기 지연 Workflow 스레드에서 대기 매우 긴 지연에 부적합
영속성 메모리 상태와 실제 상태의 재정합 제한 재부팅 후 고립·중복 Task 위험
멱등성 일부 경로만 requestId 사용 기기 동작 재실행 방어 확대 필요
자원 점유 일부 도메인 충돌만 명시 카메라·화면·이동의 공통 점유 계약 미완성
완료 판정 도메인별 완료 증거 범위 편차 요청 접수를 실제 완료로 오해할 위험
모니터 HTTP 조회와 POST 중심 오프라인 대기열과 확인 응답 생명주기 보강 필요
기능 계약 불일치 AAR, DeviceAgent와 Planner 기능 목록 분산 계층 간 메서드 불일치 가능

26.2 목표 확장

  1. 기능 설명자에서 정책, 스키마, 실행기와 완료 증거를 일관되게 생성한다.
  2. 요청 진입점에서 queue 별칭을 표준 이름으로 완전히 정규화한다.
  3. 엄격한 입력 검증을 단계적으로 기본 활성화한다.
  4. 자원 점유 계약을 카메라, 화면, 스피커, 이동과 앱 세션으로 확장한다.
  5. 이벤트 기반 Workflow 재개로 긴 대기를 대기열 작업자에서 분리한다.
  6. 장애·재부팅 복구와 멱등성 원장을 강화한다.
  7. 실행 조건을 타입 기반 연산자로 확장한다.
  8. Task·이벤트 스키마의 버전 전환 절차를 정의한다.
  9. AAR, DeviceAgent와 Cloud 기능 목록의 불일치를 CI에서 검사한다.
  10. 도메인별 완료 증거 범위표를 출시 판정 기준으로 운영한다.

26.3 선택적 상위 계획 연동과 Core 안정성

동적 목표 해석, 상태 관찰과 기능 조합은 TaskManager 위의 선택 확장이다. Core는 다음을 유지해야 한다.


27. 구현 변경 절차

27.1 신규 메서드 추가

  1. TaskMethods의 public/internal 상수를 추가한다.
  2. TaskSupportedCommands의 도메인 그룹을 추가한다.
  3. TaskBundleValidator 입력 스키마를 추가한다.
  4. TaskPolicyRegistry의 정확한 실행 정책을 추가한다.
  5. 기기 도메인 TaskExecutor를 구현하고 등록한다.
  6. 별칭 변환기 적용 여부를 확인한다.
  7. 완료 대상과 Completion Bridge를 연결한다.
  8. 취소와 보상 동작을 정의한다.
  9. 실패 사유 매핑과 컨텍스트 필드를 정의한다.
  10. AAR API 사양과 llmwiki를 갱신한다.
  11. 단위, 기기 계측과 실기기 시험을 수행한다.

27.2 기존 메서드 수정

27.3 문서 변경

변경 함께 갱신할 문서
public method/field 이 사양서, AAR API, DeviceAgent API contract
이벤트·실패 사유 이 사양서, 콜백 완료 판정, 모니터
schedule 이 사양서, scheduling readiness/roadmap
Cloud shape 이 사양서, voice closed-loop/data-flow
완료 연결부 이 사양서, 콜백 완료 판정
제품 인수 시험 implementation worklog와 validation report

28. 참조 규격과 문서 색인

이 사양서는 Core 규범을 소유한다. 상세 문서는 한 가지 책임만 갖고, 같은 계약을 다시 정의하지 않는다.

목적 기준 문서
개념과 도입 효과 AS-IS / TO-BE 가이드
DeviceAgent 구현 Source-Level Implementation Guide
시스템 앱 typed API TaskManagerClient AAR API
DeviceAgent API·event·reason DeviceAgent API Contract
IoT/MQTT MQTT Task Contract
예약·지연 실행 Scheduling Runtime Readiness
기기 planning context Device Context Planning Spec
capability 조합 Capability Composition Catalog
Cloud·On-device 폐루프 Voice TaskManager Closed Loop
운영 관측과 검증 TaskManager Live Monitor
PUI·Voice 경계 PUI and Voice Task Design Hub
LLM/MCP 표현 TaskManager LLM/MCP Mapping
업체 구현·인수 Vendor Implementation Workbook
압축 설명 자료 TaskManager 핵심 설명 자료

해석 충돌 시 제품 안전 정책과 승인된 요구사항, 이 사양서, 세부 계약 문서, 검증 기록 순서로 판단한다. 통합된 이전 문서는 기존 URL의 리다이렉트로만 유지하며, 활성 검색과 신규 링크에서는 사용하지 않는다.

제6부 · 상세 규범과 호환성 — 29~31장은 Core 불변 조건, 도메인별 Task 사양, 기존 시스템 전환과 적합성 판정을 고정한다.

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