dxsworks

recrep

화면을 주기적으로 캡처해 AI가 "오늘 한 일"을 기록하는 개인 활동 로거

상태
정보 없음
기간
2026-08
형태
개인
역할
1인 개발 — 기획·구현·테스트
스택
PythonTkinterSQLitePillowmssClaude Code
링크
비공개 저장소

최근 52주 활동

활동 정보 없음

무엇을 하나요

하루를 마치고 나면 "오늘 뭘 했지?"가 잘 떠오르지 않을 때가 많아요. recrep은 PC 화면을 45초마다 캡처해 두었다가, AI가 한 시간에 한 번 모아서 읽고 무엇을 했는지 문장으로 기록해 주는 Windows용 개인 활동 로거예요.

기록은 시간대별 타임라인으로 정리되고, 하루가 끝나면 AI 총평과 직접 쓴 한 줄 회고가 함께 붙어요. 결과가 Markdown 파일로 남고 git에 자동으로 커밋되기 때문에, 나중에 "지난주에 그 작업 어디까지 했더라?" 같은 질문을 기록에 바로 물어볼 수 있어요.

무엇을 만들었나요

기획 문서 작성부터 구현, 테스트까지 혼자 진행했어요.

  • 캡처 데몬: 주기 캡처와 축소 저장, 화면이 거의 그대로면 저장하지 않는 중복 제거, 화면 잠금·절전 구간의 "자리 비움" 기록
  • AI 분석 배치: Claude Code CLI(claude -p)를 서브프로세스로 호출해 JSON 형식의 활동 요약을 받고 SQLite에 저장해요. 앱을 켤 때 밀린 날짜도 따라잡아요.
  • 자동 분류와 라벨 선언: 평소에는 AI가 활동을 분류하고, 라벨을 직접 고르면 계획과 실제가 다른 구간을 표시해 일치율을 보여줘요.
  • 하루 마감: 날짜가 바뀌면 남은 구간 분석, 총평 생성, 회고 입력, 리포트 생성, git 커밋까지 자동으로 이어져요.
  • 데스크톱 창: Tkinter로 상태 표시, 라벨 전환, 일시정지, 오늘 라벨별 사용 시간 요약을 만들었어요.

기술적으로 눈여겨볼 점

  • 구독 사용량 한도를 아끼는 것을 분석 설계의 중심에 뒀어요. 같은 창이 이어지는 구간은 변화가 가장 큰 프레임 1장만 보내고, 배치당 이미지 수에 상한을 두고, 새 화면이 없으면 호출 자체를 건너뛰어요. 대신 창 제목 이력을 압축해 함께 넘겨서 이미지가 적어도 맥락을 잡을 수 있게 했어요.
  • 중복 판정은 추가 라이브러리 없이 Pillow만으로 dHash(difference hash)를 구현하고 해밍 거리로 비교해요.
  • 라벨 설명을 사용자가 쓰는 "정의"와 AI가 갱신하는 "관찰"로 나눴어요. AI가 자기 추측으로 설명 전체를 덮어쓰면, 그 추측을 근거로 다시 화면을 해석하는 순환이 생기기 때문이에요.
  • 프라이버시를 기본값으로 두었어요. 키보드 입력은 수집하지 않고, 비밀번호 관리자나 은행 같은 창은 제목조차 남기지 않으며, 스크린샷은 7일 뒤 지워지고 커밋되지 않아요. 이런 규칙은 200여 개의 자동 검사로 지키고 있어요.