2026-05-09 (토) 개발일지
오늘은 bit-scalp 프로젝트의 macro_engine.py를 Claude Sonnet 3.5로 리팩토링하고 디버깅한 하루였다. 로그 분석부터 코드 생성까지 체계적 프롬프팅을 시도했는데, 컨텍스트를 코드 스니펫 + 실행 로그로 제공하니 AI의 제안이 실전에서 바로 먹혔다.
코드 리팩토링 프롬프트 최적화
기존엔 “이 코드 개선해줘” 식으로 전체 파일을 던졌더니, AI가 불필요한 제너릭 패턴을 뱉어냈다.
“macro_engine.py의 메인 루프를 더 효율적으로 만들어줘. 현재 구조: while 루프 안에서 API 호출 반복.”
이번엔 함수별 역할 + 예상 입력/출력을 먼저 나열한 후 물어봤다. Claude가 macro_engine.py의 상태 머신 로직을 정확히 파악해, 비동기 처리로 변환 제안.
잘 통한 점:
- 스니펫 20줄 + “이 부분의 병목: API 호출 100ms 지연” 설명 → 15분 만에 동작 코드.
- Sonnet 3.5의 컨텍스트 창(200k 토큰) 활용으로 전체 파일 검토 OK.
안 통한 점:
- 입력 예시를 생략하니 엣지 케이스(빈 리스트) 무시 → 로컬
python3테스트에서 뻑남.
| 시도 | 프롬프트 스타일 | 결과 |
|---|---|---|
| 1회 | 전체 코드 던지기 | 일반론( “try-except 추가” ) |
| 2회 | 역할+입력/출력 | 실제 동작 코드 (통과율 90%) |
노하우: 다음엔 macro_engine.py 변경 전/후를 diff 형식으로 AI에 보여주며 검증.
디버깅 시 로그 컨텍스트 제공
python3 macro_engine.py 실행 중 문자열 파싱 에러가 발생했다. strings로 바이너리 덤프 확인 후 Claude에 넘김.
“이 로그 봐: ‘Invalid macro string: \x00’. macro_engine.py 45라인에서 문자열 처리 중.”
AI가 바이너리 문자열 인코딩 문제를 바로 짚었고, encode('utf-8', errors='ignore') 패치 제안. 적용 후 재실행 성공.
잘 통한 점:
- 로그 10줄 + 라인 번호 지정 → AI가 “45라인의 split()이 null 바이트 무시” 정확 진단.
- 분업 지점: AI는 원인 분석, 나는
python3으로 검증.
안 통한 점:
- 로그만 주니 하드웨어 의존성(플랫폼 문자열 처리) 놓침 → macOS vs Linux 차이 직접 테스트 필요.
다음 디버깅 플로우:
strings로 로그 필터링.- Claude에 “로그 + 해당 코드 10줄” 제공.
- 제안 즉시
python3단위 테스트.
의존성 관리와 설치 스크립트 생성
pip으로 새 라이브러리 추가 중 충돌. echo로 버전 고정 스크립트 만들려다 Claude 활용.
“requirements.txt에 다음 추가: library==1.2.3. macro_engine.py에서 import 에러 날 수 있음.”
AI가 requirements 충돌 체크 + 설치 순서 스크립트 생성. pip install --upgrade 우선순위 제안으로 5분 만에 해결.
잘 통한 점:
- 현재
pip list출력 첨부 → 버전 호환성 100% 맞춤 제안.
안 통한 점:
- AI가 가상환경 가정 → 실제
echo > .env로 환경 변수 직접 세팅.
배운 점: pip 관련은 “현재 설치 목록 + 에러 로그” 패턴으로 고정. # 주석으로 스크립트 옵션 나열해 AI가 이해 쉽게.
오늘의 한줄
Claude에 로그 + 코드 스니펫 조합 프롬프트가 디버깅 속도를 2배 올렸지만, 플랫폼 차이는 여전히 인간 검증 필수.