# task-936.1: 인포키워드 CLAUDECODE 환경변수 충돌 영구 수정 (한정위임)

## 배경
- 인포키워드 워커가 Claude CLI를 호출하여 키워드를 생성함
- Claude Code 세션 안에서 워커를 실행하면 `CLAUDECODE` 환경변수가 상속되어 Claude CLI가 "중첩 세션" 오류를 발생시킴
- 현재는 수동으로 `env -u CLAUDECODE`로 워커를 재시작해야 하는 상황
- **목표: 코드 레벨에서 영구 수정하여, 어떤 환경에서 워커를 실행하든 Claude CLI 호출이 정상 작동하도록**

## 에러 메시지
```
RuntimeError: Claude CLI 오류 (code=1): Error: Claude Code cannot be launched inside another Claude Code session.
Nested sessions share runtime resources and will crash all active sessions.
To bypass this check, unset the CLAUDECODE environment variable.
```

## 에러 발생 위치
- 파일: `/home/jay/projects/InfoKeyword/worker/generator/keyword_generator.py` (line 95)
- 함수: `_call_claude()` — subprocess로 Claude CLI를 호출하는 부분

## 작업 범위 (한정위임 — 끝까지 진행)

### Phase 1: 원인 분석
1. `keyword_generator.py`의 `_call_claude()` 함수 확인
2. subprocess 호출 시 환경변수가 어떻게 전달되는지 확인
3. `start-worker.sh` 스크립트 확인

### Phase 2: 수정
다음 중 적절한 방법(복수 적용 가능)으로 수정:

1. **keyword_generator.py 수정** (핵심)
   - subprocess 호출 시 `env` 파라미터에서 `CLAUDECODE` 제거
   - 예: `env = {k: v for k, v in os.environ.items() if k != 'CLAUDECODE'}`
   - `subprocess.run(..., env=env)` 형태로 전달

2. **start-worker.sh 수정** (보조)
   - 스크립트 시작 부분에 `unset CLAUDECODE` 추가
   - 어떤 환경에서 실행하든 워커 프로세스에 해당 변수가 전달되지 않도록

### Phase 3: 검증
1. `CLAUDECODE` 환경변수가 설정된 상태에서 워커 시작 → Claude CLI 호출 정상 작동 확인
2. 기존 키워드 생성 기능이 정상 작동하는지 확인

## 프로젝트 경로
- 프로젝트 루트: `/home/jay/projects/InfoKeyword/`
- 워커 메인: `/home/jay/projects/InfoKeyword/worker/main.py`
- 키워드 생성기: `/home/jay/projects/InfoKeyword/worker/generator/keyword_generator.py`
- 시작 스크립트: `/home/jay/projects/InfoKeyword/scripts/start-worker.sh`

## 제약사항
- 인포키워드 프로젝트 파일만 수정
- Claude CLI 호출 로직 자체는 변경하지 말 것 (환경변수 처리만)
- 다른 환경변수는 건드리지 말 것

## 산출물
1. 수정된 파일 목록
2. 보고서: `memory/reports/task-936.1.md`
