본문 바로가기
728x90
반응형

전체 글224

백그라운드 SSE 1.2MB를 65KB로, 안 보이는 화면은 조회를 멈췄다 휴대폰 화면을 꺼도 내 AI 작업 모니터 앱은 서버에 상태를 묻고 있었다. 조사해 보니 숨긴 화면의 조회, 백그라운드 전체 상태 수신, 같은 메시지의 객체 교체가 겹쳤다. 보이지 않으면 묻지 않고, 바뀌지 않으면 다시 그리지 않기로 했다.화면을 안 볼 때도 앱은 계속 묻고 있었다기능은 그대로 두고 반복 갱신 경로를 전수 조사했다. Android 소스 44개와 서버 SSE(Server-Sent Events), 웹, IDE 확장을 살피고 에뮬레이터 재현 테스트 6개로 확인했다.먼저 수명 문제가 드러났다. 예약 화면의 Activity를 CREATED로 내리고 테스트 시계를 6.5초 진행하자 조회가 1회에서 2회로 늘었다. LaunchedEffect는 Activity가 아니라 컴포지션 수명을 따랐다.한 메시지만.. 2026. 10. 29.
사용 한도 자동 재개 예약, 429만으로는 한도라고 판단하지 않았다 AI 에이전트가 한도에 막히면 리셋 뒤 직접 메시지를 보내는 일이 번거로웠다. 그래서 앱이 대신 보내는 '재개 예약'을 만들었다. 단, 429나 잔여량 0%만으로 한도 중단을 판단하지 않게 했다.한도에 막힌 대화를 리셋 뒤 다시 깨우고 싶었다앱이 추적하는 한도는 Codex·Cursor의 주간 한도와 Codex의 5시간 한도다. 긴 작업이 멈추면 리셋 뒤 내가 '이어서 해 줘'를 보내야 이어졌다.이번에는 앱 왼쪽 메뉴에 '예약'을 넣었다. 대기 중, 한도 중단, 기록 세 칸으로 나뉜다. 채팅 목록에는 '한도 중단', '재개 가능', '재개 예약됨', '예약 확인 필요' 표시가 붙는다.한도로 멈춘 채팅은 입력창 위에 '재개 예약' 버튼이 뜬다. 작업 중에 미리 걸어 두려면 입력창 추가 메뉴의 '한도 후 보내.. 2026. 10. 29.
작업 중 메시지는 예약으로, 입력창 버튼 하나가 녹음·전송·중단을 오갔다 휴대폰 앱으로 IDE의 AI 에이전트에게 일을 시키면 작업 도중에 한 줄 더 말하고 싶어진다. 이번에는 작업 중 보낸 메시지를 기본으로 '예약'하고, 입력창 버튼 하나가 상황에 따라 음성 입력·전송·중단을 오가게 바꿨다. Codex는 원본 큐와 steer를, Cursor는 stop Hook을 썼다.작업 중에 한 줄 더 보내고 싶을 때예전 입력창 코드에서는 주 버튼이 음성 입력과 전송을 맡았다. 입력이 비면 음성 입력, 글이 있으면 전송하는 식이었다. 작업 중 멈추는 동작은 그 버튼에 없었다.작업 중 전송은 별도 모드 버튼 없이 기본 예약으로 정했다. 전달 시점은 IDE별로 다르게 처리했다.수정은 2026년 10월 28일 23시 57분(KST) 커밋에 들어갔다. 첫 화면은 Android 2.3.15, 예약.. 2026. 10. 29.
채팅 전송 '실행 중' 멈춤, 대화 읽기 전에 '안 보냄'부터 기록했다 휴대폰에서 보낸 Codex 요청 하나가 서버에서 '실행 중'으로 바뀐 뒤 결과 없이 멈춰 있었다. 원인은 IDE 확장이 전송 기록을 남기기 전에 대화 기록부터 읽었고, 그 읽기가 실패하면 아무것도 남지 않는 구조였다. 기록을 먼저 남기고 앱이 이전 말풍선도 관찰하게 고쳤다.결과 없이 '실행 중'에 남은 요청 하나2026년 10월 29일 06시 06분(KST), 운영 중인 Codex 요청 하나가 실행 중으로 바뀌었다. 그런데 결과 보고도, 확장의 전송 기록(receipt)도 없었다. 바로 다음 요청은 정상으로 접수됐다.같은 대화에는 약 1분 뒤 컨텍스트 요약 기록이 있었다. 시간은 겹치지만 당시 읽기 예외 로그가 없어서 요약이 원인이라고 단정하지는 않았다. 대신 요약 중에 생길 수 있는 읽기 실패를 기준으.. 2026. 10. 29.
Compose 채팅 첫 화면 개편, PC 폴더 500개 넘으면 커서로 이어 받았다 휴대폰 앱을 켜면 마지막으로 본 하단 탭이 다시 열렸다. 이번에는 앱의 중심을 채팅으로 옮겼다. 첫 화면을 빈 새 채팅으로 바꾸고, 프로젝트 폴더는 PC에서 필요한 만큼만 읽어 500개가 넘으면 커서로 이어 받게 했다.앱을 켜면 마지막 탭 대신 빈 새 채팅2026년 10월 28일 06시 29분(KST) 메인 반영 커밋 중 Android 앱 2.3.10~2.3.12의 화면 부분이다. 앞의 두 글과 같은 커밋이다.예전에는 마지막으로 본 탭 이름을 저장해 두고 다음 실행 때 그 탭을 열었다. 이 설정을 더는 읽지 않고, 새로 실행하면 항상 빈 새 채팅에서 시작하게 했다.- val navigationPrefs=remember(context) {context.getSharedPreferences("navig.. 2026. 10. 28.
Cursor 창 자동 종료, 앱이 연 창만 닫고 느린 시작은 240초 기다렸다 휴대폰에서 과거 Cursor 대화를 열자 모델 조회가 프로젝트 창까지 열었다. 이전에는 앱이 연 창을 닫는 기능도 없었다. 그래서 앱이 연 게 증명된 창만 5분 유휴 뒤 닫고, 느린 시작은 240초까지 기다리게 했다.기록만 봐도 프로젝트 창이 열렸다2026년 10월 28일 06시 29분(KST) 메인 반영 커밋 중 IDE 확장 0.4.21~0.4.23의 창 수명 부분이다. 바로 앞 글의 새 대화 생성과 같은 커밋이다.첫 문제는 과거 대화에 들어갈 때 생겼다. 앱이 자동으로 모델을 조회하는데, 이 조회가 그 대화의 프로젝트 창을 열었다. 읽기만 하려던 요청이 창을 띄운 셈이다.그래서 모델 조회는 PC·프로필·원본 ID를 확인한 뒤 읽기 전용 DB에서 끝내게 했다. 창은 실제 전송·모델 변경·새 대화 생성 .. 2026. 10. 28.
728x90
반응형