# 작업 보고서: task-106.1 — 3팀 GLM 프롬프트 경량화

## 작업 요약
3팀(dev3-team) GLM 프롬프트에서 task_desc가 이중 삽입되어 긴 작업 시 봇 세션 스폰 실패하는 문제를 수정.
`glm_message` 변수 내 task_desc 직접 삽입을 파일 경로 참조로 변경하여 프롬프트 크기를 task_desc 길이와 무관하게 일정하게 만듦.

## 수정 내용
- **파일**: `/home/jay/workspace/prompts/team_prompts.py`
- **위치**: 263행 (glm_message 내부)
- **변경 전**: `f"작업 ID: {task_id}. {task_desc}. "`
- **변경 후**: `f"작업 지시서: {WORKSPACE_ROOT}/memory/tasks/{task_id}.md 를 읽고 작업 수행. "`
- **280행 '내용:' 필드**: 유지 (라 팀장이 본문에서 작업 내용 확인 가능)

## 생성/수정 파일 목록
- `/home/jay/workspace/prompts/team_prompts.py` — 263행 수정 (task_desc → 파일 경로 참조)
- `/home/jay/workspace/teams/dev2/plan-task-106.1.md` — 실행 계획서 (신규)
- `/home/jay/workspace/teams/dev2/test_task_106_1.py` — 테스트 파일 (신규)

## 테스트 결과
pytest 실행: **5/5 통과**

1. **test_glm_message_length_independent_of_task_desc**: 짧은(50자)/긴(5000자) task_desc → glm_message 길이 동일(338자) ✓
2. **test_glm_message_does_not_contain_task_desc**: glm_message에 task_desc 미포함 ✓
3. **test_glm_message_contains_required_keywords**: openclaw, --agent main, --json, --deliver 키워드 보존 ✓
4. **test_prompt_body_contains_task_desc**: 본문 '내용:' 필드에 task_desc 존재 ✓
5. **test_glm_message_contains_file_path_reference**: glm_message에 파일 경로 참조 포함 ✓

## 버그 유무
발견된 버그 없음.

## 팀장 검토 결과
- **토르(백엔드)**: 1차 검토 통과, 수정 사항 없음. 263행만 정확히 수정, 수정 금지 영역(다른 함수, dispatch.py, hooks) 미접촉 확인.
- **헤임달(테스터)**: 1차 검토 통과, 수정 사항 없음. 5개 테스트 모두 통과, 검증 항목 충분.
- 프레이야(프론트엔드), 미미르(UX/UI): 이번 작업에 해당 없어 미참여.

## 검토한 대안과 기각 사유
1. **280행 '내용:' 필드도 파일 경로로 대체하는 안**: 라 팀장이 본문에서 바로 작업 내용을 확인할 수 없게 되므로 기각. 라 팀장 프롬프트 본문에는 task_desc가 필요.
2. **task_desc를 truncate하여 glm_message에 요약만 넣는 안**: truncate 기준이 모호하고, 정보 손실 위험. 파일 경로 참조가 더 안정적이므로 기각.
3. **glm_message와 본문 모두에서 task_desc 제거하는 안**: 라 팀장이 작업 내용을 전혀 알 수 없게 되므로 기각.

## 셀프 QC (아누 가이드 3.4 System 2 Forcing)

1. **이 변경이 다른 파일에 영향을 미치는가?**
   아니요. team_prompts.py 263행만 수정. dispatch.py, hooks 등 다른 파일 수정 없음. 이 함수를 호출하는 코드는 동일한 인터페이스를 사용하므로 영향 없음.

2. **이 로직의 엣지 케이스는 무엇인가?**
   task_id에 특수문자가 포함된 경우 파일 경로가 유효하지 않을 수 있으나, task_id는 시스템 내부에서 `task-NNN.N` 패턴으로 생성되므로 해당 없음. 파일이 존재하지 않는 경우는 오픈클로가 파일을 읽지 못해 에러가 발생하나, 이는 기존에도 task 파일 부재 시 동일한 문제이므로 새로운 위험 아님.

3. **이 구현이 작업 지시와 정확히 일치하는가?**
   예. 지시서: "openclaw 명령어 안에 task_desc 전체를 넣지 말고, task 파일 경로만 참조하도록 변경" → glm_message에서 task_desc 제거, 파일 경로 참조 삽입. 정확히 일치.

4. **에러 처리와 보안은 확인했는가?**
   파일 경로는 WORKSPACE_ROOT 상수 + task_id로 구성되어 경로 인젝션 위험 없음. task_id는 시스템 내부 생성값. 에러 처리는 기존과 동일 수준 유지.

5. **테스트가 모든 경로를 커버하는가?**
   glm_message 길이 독립성, task_desc 미포함, 키워드 보존, 본문 task_desc 유지, 파일 경로 참조 포함 — 작업 지시서의 3가지 테스트 요구사항(길이 일정, 키워드 보존, 크기 비교) 모두 커버.

## 수정 기록
- 2026-03-02: 오딘(팀장) 지시 → 토르(백엔드) 실행, 263행 glm_message 수정
- 2026-03-02: 헤임달(테스터) 5개 테스트 작성/실행, 전체 통과
