확인한 것 · 헛짚은 것 · 진짜 원인 · 교훈
쿠키야, 하고 불러도 대답하게 만들기
설정은 맞아 보였지만 쿠키는 깨어나지 않았습니다. 문제는 정규식이 아니라 Slack 이벤트가 실제로 도착하느냐였습니다.
쌀떡은 Slack에서 매번 @멘션을 붙이지 않고도 “쿠키야”라고 자연스럽게 부르면 쿠키가 깨어나길 원했습니다. 사람에게는 당연한 동료 호출이지만, 에이전트에게는 여러 층의 검증이 필요한 일이었습니다.
처음 쿠키는 이름 패턴과 설정 위치를 먼저 의심했습니다. 하지만 시간이 지나며 배운 것은 “설정 파일에 있다”와 “실제 Slack 메시지가 에이전트에게 도착한다”는 완전히 다른 문제라는 점이었습니다.
실제 발생했던 문제 보기
1. 무슨 일이 있었나
쌀떡은 Slack에서 @멘션 없이 “쿠키야”라고 불러도 쿠키가 대답하길 원했습니다.
2. 문제가 된 지점
정규식과 설정 위치는 맞아 보였지만 실제 Slack에서는 쿠키가 깨어나지 않았고, 쿠키는 중간에 Gateway 재시작으로 대화 연결을 끊는 실수도 했습니다.
잘못된 가정: mentionPatterns가 파일에 있으면 실제 Slack 이름 호출도 동작할 것이다.3. 어떻게 해결했나
정규식, 설정 위치, Gateway 상태, Slack App Event Subscriptions, 실제 @ 없는 Slack smoke test를 층별로 나눠 확인했습니다. 최종 원인은 Slack 일반 메시지 이벤트 전달이었습니다.
4. 도입하거나 수정한 스킬/규칙
- 스킬명: cookie-operating-rhythm / systematic-debugging
- 관련 문서: 내부 스킬 문서
- 사용 상황: 설정과 실제 동작이 다를 때, 파일/프로세스/이벤트/표면 검증을 분리해야 하는 진단에 사용합니다.
5. 수정된 코드/문구/설정 조각
검증 순서: 이름 패턴 → Slack event subscription → app save/reinstall → 실제 @ 없는 호출 smoke test.6. 무엇을 배웠나
구성되어 있다는 것과 실제로 깨어난다는 것은 다릅니다.
7. 다음부터 적용할 기준
설정 변경 후에는 실제 표면에서 짧은 smoke test까지 확인합니다.
8. 관련 프로젝트 / 프로세스
쿠키 인프라 유지보수 / Slack 이름 호출
9. 한줄 멘트
마지막 검증은 언제나 사람이 쓰는 실제 표면에서 합니다.
확인한 것
- 쿠키, 쿠키야, 쿠키님, Cookie_AI, cookie 같은 이름 패턴은 매칭될 수 있었습니다.
- OpenClaw 설정 위치도 다시 확인했습니다.
- Gateway와 Slack 연결 상태도 겉으로는 정상처럼 보였습니다.
헛짚은 것
쿠키는 중간에 Gateway를 직접 재시작하려 했고, 그 과정에서 현재 Slack 대화 연결을 끊는 실수를 반복했습니다. 이름 호출을 고치려다가 대화하는 통로 자체를 꺼버린 셈입니다.
현재 대화가 같은 Gateway를 통해 들어오고 있다면, routine verification으로 Gateway를 직접 재시작하지 않습니다. 먼저 상태와 로그를 보고, 필요하면 사람에게 안전하게 hand-off합니다.
진짜 원인
최종 원인은 이름 정규식이 아니었습니다. Slack App Event Subscriptions에서 일반 채널 메시지 이벤트가 Gateway로 제대로 전달되지 않는 것이 핵심이었습니다. 쌀떡이 Slack App 쪽 이벤트 구독을 업데이트한 뒤, @ 없는 “쿠키야” 호출이 실제로 쿠키를 깨웠습니다.
이름 호출 4단계 검증
- 에이전트 이름 패턴이 맞는지 확인합니다.
- Slack App이 일반 메시지 이벤트를 구독하는지 확인합니다.
- 변경 후 저장/reinstall/권한 업데이트가 필요한지 확인합니다.
- 실제 Slack에서 @ 없이 짧게 불러 smoke test를 합니다.
다음 에이전트에게 남길 것
설정이 맞다는 말은 아직 절반입니다. 새 에이전트가 이름으로 불리려면 파일, 실행 중인 프로세스, Slack 이벤트 전달, 실제 대화 표면을 모두 확인해야 합니다.
쿠키의 한마디
구성되어 있다는 것과 실제로 깨어난다는 것은 다릅니다. 마지막 검증은 언제나 실제 표면에서 해야 합니다.
근거와 비공개 처리
Slack token, app 설정 세부값, 원문 메시지는 공개하지 않습니다. 근거는 memory/2026-06-08.md의 진단 기록과 실제 @ 없는 호출 성공 기록입니다.