← 목록
AI 2026-07-23 5KB 읽기 5분

CrownyAI 8앱 벡터 이식 완료 — 전 앱 상주서버 직결, p50 전량 <10ms (2026-07-23)

개요

07-12 벡터직결 10ms 파이프라인의 잔여 트랙(중단 세션 인수) 완료. crowny://app/ 앱 전부를 PPM 스폰 경로에서 앱상주서버 벡터 직결로 이식 — 터미널·계산기·워드(기존) + 시계·메모·할일·설정·북마크·파일·날씨(신규 7). 런처는 네이티브 drawRect가 정본이라 이식 대상 아님.

결과 — 소켓 렌더 RTT 실측 (N=20/서비스, 최종본)

서비스p50p95서비스p50p95
터미널1.20ms1.25북마크2.54ms2.65
메모1.41ms1.45파일3.05ms3.17
할일1.73ms1.77워드3.44ms3.50
계산기1.84ms1.95시계5.45ms5.87
설정2.63ms2.74날씨5.70ms5.88
10서비스 전량 p50 < 10ms. 액션 상태변경(메모 새메모·할일 추가/토글·설정 토글·북마크 페이지·파일 진입/상위/열기·날씨 새로고침 실데이터 수신) 전부 소켓 왕복 실측 PASS. 파일 교차요청 내비게이션(진입→유지→상위 복귀) PASS.

산출물

  • 신규 모듈 6본: src/앱서비스_{메모,할일,설정,북마크,파일,날씨}.한선 — 시계 모듈 규약(함수만·prefix·INIT/END·800×600 균일스케일) 준수, sonnet 에이전트 6기 병렬 이식 + 각자 스텁 하네스 컴파일/실행 검증. 원본 데이터 경로 유지(PPM 폴백 호환).
  • src/앱상주서버.한선: 가져오기 7종 + 디스패처 액션/렌더 분기 확장(2273→2390여 줄, STRICT 컴파일 0경고). 백업 앱상주서버.한선.bak-8앱이식전.
  • ObjC 게이트 2곳: crowny-ai-engine.m:cbIsVectorService + crowny-ai-content.m:caIsVectorService에 7앱 추가. make ai 에러0(기존 butler 경고 1 유지) → install-ai-app.sh 설치+재서명 → 심볼가드 PASS(한글 CFString=UTF-16LE — python 바이트스캔으로 확인, strings/grep은 한글 불가시 함정). 앱 재시작 시 반영.

이 과정에서 잡은 실버그 3건

  1. _psv범용읽기/쓰기 파일존재() 상시참 가드(앱상주서버): 읽기=상시 빈값(캔버스 크기 캐시 사실상 무동작), 쓰기=매 호출 타 키 전멸. 수리 후 다중 서비스 키 공존 라이브 확증.
  2. 파일앱 경로 상시 HOME 리셋: _파일_현재경로읽기의 동일 가드 → 요청 간 디렉토리 이동 파괴. 수리 후 교차요청 내비 PASS. 체계("echo $HOME") 스폰 2곳 → 환경변수("HOME").
  3. 파일앱 렌더 55ms(예산 8배): ①렌더마다 ls+행별 du 스폰(1차 수리: 액션 시점 캐시화) ②잔존 55ms의 진범 = 분리()/줄분리() 줄당 ~0.2ms VM 고정비(279줄=58ms, 연산 무관 — 신규 함정). 오프셋 인덱스 파일(/tmp/파일목록오프셋.txt, 8자리 고정폭) O(1) 슬라이스로 55.6→3.05ms. → 가드레일 템플릿 + 메모리(feedback_분리계열_줄당고정비_오프셋인덱스) 등재.

프로토콜/계약

  • 요청: 벡터|<서비스>|<이벤트>|<인자> → 응답 CMD <줄수> + cmd IR + END (기존 계약 무변).
  • 신규 액션: 메모(새메모/메모열기:N/뒤로), 할일(할일추가/할일토글:N/할일완료:N/할일삭제:N), 설정(설정토글:키/설정변경:키:값/설정다음:키/설정초기화), 북마크(북마크열기:N/북마크삭제:N/북마크추가/북마크페이지이전·다음), 파일(파일진입:N/파일열기:N/파일상위/파일홈/파일이전·다음), 날씨(날씨새로고침/날씨도시:서울·부산·제주).
  • 날씨 데이터: wttr.in 파이프포맷(액션 시점만 fetch, curl -m 5, 실패=OFFLINE 정직 표시), 캐시 /tmp/날씨.psv.

잔여 이슈

  1. GUI E2E(실기동 앱에서 신규 7앱 벡터 드로우 육안/자동 확인) — 사용자 활동 중이라 GUI 자동화 보류(포커스레이스 규칙). 앱 재시작 후 crowny://app/시계 등 열어 확인 요.
  2. 메모/할일 텍스트 입력(본문 타이핑)은 범위 제외 — 워드 입력코어 패턴 후속.
  3. 북마크 열기 = /tmp/북마크_열기요청.txt 기록까지(ObjC 소비 배선 후속). 북마크 데이터가 브라우저 실 bookmarks.json이 아닌 데모 PSV — 실데이터 배선 후속.
  4. PPM 폴백 경로·렌더sh는 무수정 유지(상주서버 다운 시 폴백 정상 — 계약대로).

관련 파일

  • src/앱서비스_*.한선 7본 · src/앱상주서버.한선 · native/crowny-ai-{engine,content}.m
  • 학습: 앱서비스_{메모,할일,설정,북마크,날씨}_벡터모듈 · 앱서비스_파일_벡터모듈(_렌더캐시패치·_페이지윈도) · 앱상주서버_8앱_벡터디스패치확장
  • 선행: 2026-07-12-벡터직결-10ms-파이프라인-완성.md · 요청기록: 2026-07-22-요청-crownyai-8앱-벡터이식-계속.md