Discord bot은 보통 멘션을 기준으로 움직입니다. 아무 채널에서나 모든 메시지에 답하면 금방 시끄러워지기 때문입니다. 그래서 기본값은 안전합니다. 누군가 bot을 직접 부르거나, bot이 참여한 thread 안에서만 반응하게 만드는 쪽입니다.
그런데 sessions Forum은 조금 달랐습니다. 여기는 오케이징과 자연어로 대화하는 공간입니다. 매번 멘션을 붙이는 건 대화 감각을 깨뜨립니다. thread 하나가 진규와 오케이징의 1:1 세션처럼 느껴지려면, 그 공간 안에서는 멘션 없이도 응답할 수 있어야 했습니다.
그래서 Hermes Discord gateway에는 free-response channel 개념이 필요했습니다. 특정 channel이나 parent Forum을 free-response로 등록하면, 그 안에서는 멘션 요구를 완화할 수 있습니다. sessions Forum이 여기에 들어갑니다.
일반 채널: 멘션이 있어야 응답
sessions Forum/thread: free-response라서 자연어 세션처럼 응답
tickets Forum/thread: 작업 맥락에 따라 티켓 중심으로 응답
이 차이가 없으면 두 가지 중 하나가 됩니다. 모든 채널에서 너무 말이 많아지거나, sessions에서도 매번 멘션을 붙여야 합니다. 둘 다 원하는 UX가 아니었습니다.
free-response만 있으면 위험합니다. 어디서든 멘션 없이 응답하는 bot이 되면 안 됩니다. 그래서 allowed channel과 같이 봐야 합니다. 응답 가능한 채널의 울타리를 먼저 정하고, 그 안에서 특정 채널만 free-response로 푸는 방식이 안전합니다.
| 설정 개념 | 역할 |
|---|---|
| allowed channels | 오케이징이 응답할 수 있는 전체 범위 |
| ignored channels | 응답하면 안 되는 범위 |
| free-response channels | 멘션 없이도 응답 가능한 범위 |
| thread parent lookup | thread가 속한 Forum 기준으로 규칙 적용 |
특히 Forum thread에서는 parent channel을 보는 게 중요합니다. 실제 메시지는 thread에 올라오지만, 정책은 부모 Forum 기준으로 잡히는 경우가 많기 때문입니다.
sessions와 tickets가 다른 이유는 응답 허용 범위만이 아닙니다. channel prompt도 다릅니다. sessions는 자연어 대화 공간이고, tickets는 작업 추적 공간입니다. 같은 오케이징이라도 어느 채널에 있느냐에 따라 우선순위가 달라져야 합니다.
sessions prompt는 대화와 아이디어 정리를 허용하되, 실행 요청이 나오면 티켓을 만들도록 합니다. tickets prompt는 이미 작업 맥락이 있다고 보고, 보고와 상태 추적을 더 중요하게 봅니다. 이 차이가 없으면 sessions에서도 너무 딱딱해지고, tickets에서는 작업 상태가 흐려집니다.
gateway가 붙기 전에는 오케이징이 먼저 호출되어야만 움직였습니다. Discord channel에 상주한다는 건 조금 다른 감각입니다. 메시지를 받고, thread parent를 보고, channel prompt를 적용하고, 멘션 필요 여부를 판단합니다. 그냥 API 하나가 붙은 게 아니라, 오케이징의 입력 경로가 바뀐 것입니다.
그래서 channel 설정은 단순한 config가 아닙니다. 오케이징이 이 공간을 어떤 맥락으로 읽을지 정하는 규칙입니다. sessions Forum이 자연어 세션처럼 동작하는 것도 결국 이 규칙 덕분입니다.
free-response channel은 편의 기능처럼 보이지만, 실제로는 sessions Forum을 가능하게 한 핵심 설정입니다. allowed channel로 울타리를 만들고, free-response로 자연스러운 대화를 열고, channel prompt로 행동 규칙을 나눕니다.
오케이징이 Discord에 있다는 건 모든 메시지에 반응한다는 뜻이 아닙니다. 어디서는 조용히 있고, 어디서는 자연스럽게 대화하고, 어디서는 작업 상태를 남깁니다. 그 차이를 만드는 것이 channel policy입니다.