docs: add closure research for naverworks insight preamble leak

This commit is contained in:
Claude-51124 2026-03-11 17:39:14 +09:00
parent 0f97331f0e
commit 9330b564c7
2 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,84 @@
---
tags: [research, naverworks, briefing, insight, llm, closure]
---
# NAVER WORKS 브리핑 인사이트 서두 누출 종료 리서치
## 관련 문서
- [NAVER WORKS 브리핑 인사이트 서두 문구 누출](../troubleshooting/260311_naverworks_briefing_insight_preamble_leak.md)
- [자가수정 에이전트 프레임워크 및 Workspace CLI 검증 리서치](./260311_자가수정_에이전트_프레임워크_및_workspace_cli_검증_리서치.md)
## 목적
- `로빙입니다. 사용자님께서는... 요약해 드리겠습니다.` 같은 서두가 NAVER WORKS 브리핑 인사이트에 노출되는 문제를 어떤 수정으로 닫는 것이 맞는지 결정 가능한 근거를 남깁니다.
- 이 문서는 이번 문제를 닫기 위한 리서치에 한정합니다.
## 조사 질문
1. 현재 서두 문구는 어느 레이어에서 붙는가
2. 직접 원인은 무엇인가
3. 이번 문제를 닫는 최소 수정은 무엇인가
4. 수정 후 어떤 테스트와 로그 기준이 있어야 닫혔다고 볼 수 있는가
## 확인된 사실
1. `2026-03-11 09:00 KST` NAVER WORKS 브리핑 실행 로그에서 아래 순서가 확인됐다.
- `Running job: NAVER WORKS Daily Briefing`
- `Generated insight: 로빙입니다...`
- `Briefing sent successfully: 14 emails`
2. 인사이트 생성 프롬프트는 이미 `인사말, 서두 없이 바로 내용 시작`을 요구한다.
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L191)
3. `_generate_insight()`는 현재 줄바꿈 제거만 수행하고, 금지 서두 제거/시작 패턴 검증은 하지 않는다.
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L159)
4. Slack 포맷터는 전달받은 `insight`를 그대로 `*{insight}*`로 넣는다.
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L278)
5. 현재 테스트는 정상 문장만 검증하고, `로빙입니다`, `요약해 드리겠습니다`, `사용자님께서는` 같은 금지 서두 누출 케이스는 다루지 않는다.
- [test_naverworks_briefing.py](/home/admin/robeing/rb8001/tests/test_naverworks_briefing.py#L37)
## 해석
- 이 문제는 Slack 포맷 문제나 스케줄 실패 문제가 아니다.
- 직접 원인은 LLM이 프롬프트를 어긴 출력값을 냈고, 애플리케이션이 그 값을 검증 없이 통과시킨 것이다.
- 즉 장애의 본질은 `프롬프트만 있고 출력 강제 규칙이 없는 상태`다.
## 선택지 비교
### 선택지 A. 프롬프트만 더 강하게 수정
- 장점:
- 변경 범위가 작다
- 코드 후처리보다 자연스러운 출력 유도 가능
- 단점:
- LLM 일탈이 다시 발생하면 같은 문제가 반복된다
- 테스트 없이 프롬프트에만 의존하면 닫힌 문제로 보기 어렵다
### 선택지 B. 후처리만 추가
- 장점:
- 출력 강제력이 생긴다
- `로빙입니다`, `사용자님께서는` 같은 알려진 서두는 안정적으로 제거 가능
- 단점:
- 분류 문장이 완전히 다른 형태로 나오면 여전히 누락 가능
- 프롬프트가 약하면 후처리 규칙이 늘어날 수 있다
### 선택지 C. 프롬프트 강화 + 후처리 + 금지 케이스 테스트 추가
- 장점:
- 생성 단계와 검증 단계 둘 다 보강된다
- 이번 문제를 닫는 기준으로 가장 명확하다
- 재발 방지까지 같이 확보된다
- 단점:
- A/B보다 수정 범위가 조금 넓다
## 결론
- 이번 문제를 닫는 최소 충분 조건은 `선택지 C`다.
- 이유:
1. 프롬프트만으로는 이미 한 번 실패했다.
2. 후처리만으로는 모델 출력 형태가 달라질 때 불안정하다.
3. 테스트가 없으면 문제 재발 시 다시 눈으로만 확인해야 한다.
## 닫힘 기준
1. `_generate_insight()` 또는 인사이트 직후 경로에서 금지 서두 제거/검증이 추가돼야 한다.
2. 프롬프트는 `회신 필요`, `결제/청구`, `안내/공지` 같은 분류 표현으로 바로 시작하도록 더 강하게 제한돼야 한다.
3. 테스트에 아래 케이스가 추가돼야 한다.
- `로빙입니다... 회신 필요 1건`
- `사용자님께서는... 결제/청구 1건`
- `오늘 알아야 할 메일 핵심 내용을... 안내/공지 3건`
4. 실행 로그의 `Generated insight:`와 실제 Slack 노출값 모두에서 금지 서두가 0건이어야 한다.
## 이번 문제를 닫는 실행 문장
- 이 문제는 `LLM 출력 일탈을 허용한 검증 부재` 문제다.
- 따라서 닫는 방법은 `프롬프트 보강`만이 아니라 `출력 후처리와 금지 케이스 테스트`를 함께 넣는 것이다.

View File

@ -11,6 +11,7 @@
- [51124 먹통 48시간 코드 차분 원인 확정 리서치 (260304)](./260304_51124_먹통_48시간_코드차분_원인확정_리서치.md) - [51124 먹통 48시간 코드 차분 원인 확정 리서치 (260304)](./260304_51124_먹통_48시간_코드차분_원인확정_리서치.md)
- [9시 네이버 이메일 분석 미전송 실패 은닉 리서치 (260309)](./260309_9시_네이버이메일분석_미전송_실패은닉_리서치.md) - [9시 네이버 이메일 분석 미전송 실패 은닉 리서치 (260309)](./260309_9시_네이버이메일분석_미전송_실패은닉_리서치.md)
- [자가수정 에이전트 프레임워크 및 Workspace CLI 검증 리서치 (260311)](./260311_자가수정_에이전트_프레임워크_및_workspace_cli_검증_리서치.md) - [자가수정 에이전트 프레임워크 및 Workspace CLI 검증 리서치 (260311)](./260311_자가수정_에이전트_프레임워크_및_workspace_cli_검증_리서치.md)
- [NAVER WORKS 브리핑 인사이트 서두 누출 종료 리서치 (260311)](./260311_naverworks_briefing_insight_preamble_leak_closure_research.md)
### [기억(Memory)](./memory/README.md) ### [기억(Memory)](./memory/README.md)
- 장단기 기억 메커니즘 - 장단기 기억 메커니즘