# [Claude Code] "같은 서버인데 왜 하나만 죽었지?" — AI에게 봇 끊김 미스터리를 통째로 맡겨봤습니다
## 📝 한줄 요약
같은 서버(맥북)에서 돌리던 두 개의 AI 봇 중 하나만 텔레그램 연결이 끊긴 미스터리를, Claude Code가 시스템 로그를 직접 뒤져 "노트북 뚜껑을 닫아서"라는 진짜 원인까지 30분 만에 찾아냈습니다.
## 🎯 이런 분들께 도움돼요
- 개인 서버나 맥에서 텔레그램/디스코드 봇, 자동화 에이전트를 24시간 돌리는 분
- "재시작하면 되긴 하는데 왜 죽는지는 모르겠는" 문제를 매번 손으로 때우고 계신 분
- 로그 분석·장애 원인 추적을 AI에게 어디까지 맡길 수 있는지 궁금한 분
## 😫 문제 상황 (Before)
저는 맥북 한 대에서 AI 비서 봇을 **두 개** 동시에 돌리고 있습니다.
- **Hermes** (루이-휴먼)
- **Openclaw** (루피)
둘 다 텔레그램으로 메시지를 주고받는 같은 구조인데, 어느 날 보니 **Hermes만 텔레그램 연결이 끊겨 있고 Openclaw는 멀쩡히 살아 있었습니다.**
한국 왓츠앱 스크린샷
대답을 한참동안 안하고 있는 루이-휴먼(Hermes)
한국 왓츠앱 스크린샷
요청 즉시 대답하는 루피(Openclaw)
같은 노트북, 같은 네트워크, 같은 텔레그램. 조건이 전부 똑같은데 한쪽만 죽는다? 이게 제일 찝찝했습니다. 그냥 재시작하면 다시 붙긴 하는데, **원인을 모르니 내일 또 끊길 게 뻔했죠.** 매번 "어 또 끊겼네" 하고 손으로 살리는 게 일이었습니다.
## 🛠️ 사용한 도구
- **Claude Code** (모델: Claude Opus 4.8)
- 별도 설정 없이, 평소 쓰던 터미널에서 한 문장으로 시작했습니다.
## 🔧 작업 과정
### 1. "Hermes 연결 끊긴 것 같은데 확인 좀 해봐"
딱 이 한 문장으로 시작했습니다. 제가 한 일은 이게 전부예요.
Claude Code는 먼저 시스템에서 'hermes'라는 이름의 프로세스와 서비스를 직접 훑었습니다. 그리고 게이트웨이 프로세스 자체는 **4일째 멀쩡히 살아 있다**는 걸 확인했죠. 죽은 건 프로그램이 아니라 **텔레그램 채널 하나**였습니다.
### 2. 로그에서 "범인의 흔적"을 찾다
Claude Code가 게이트웨이 로그를 뒤지자 결정적인 줄이 나왔습니다.
> `telegram paused after 10 consecutive failures` (2026-05-30 13:23:18)
즉, 텔레그램 연결이 **10번 연속 실패하자 시스템이 채널을 스스로 "일시정지(paused)" 시켰고**, 그 상태는 사람이 직접 풀어주기 전까지 자동으로 복구되지 않는 구조였습니다. 그래서 무려 **약 34시간** 동안 끊긴 채 방치돼 있었던 거죠.
실패 로그의 에러 메시지도 단서였습니다.
> `nodename nor servname provided, or not known`
이건 "서버가 다운됐다"가 아니라 **"인터넷 주소를 변환하는 것 자체가 안 됐다"** — 즉 그 시점에 맥의 네트워크가 통째로 죽어 있었다는 뜻이었습니다.
### 3. 진짜 범인: 노트북 뚜껑
여기서 Claude Code가 한 발 더 들어갔습니다. "그 시각에 이 맥에서 무슨 일이 있었나"를 보려고 **macOS 전원 로그(pmset)**를 직접 확인한 거죠. 그리고 결정적 증거가 나왔습니다.
> `2026-05-30 11:32:08 Sleep — 'Clamshell Sleep' Using Batt`
**클램셸 슬립** = 노트북 뚜껑을 닫아서 잠든 상태. 게다가 충전기도 안 꽂힌 배터리 상태였습니다. 뚜껑을 닫는 순간 Wi-Fi가 내려갔고, 그 와중에 봇이 재연결을 시도하다 10번 연속 실패해서 영구 정지에 빠진 겁니다.
범인은 해커도, 버그도 아니고 **"노트북 뚜껑을 닫은 것"** 이었습니다. 😅
### 4. 그럼 Openclaw는 왜 안 죽었을까? (핵심)
여기서 제가 진짜 궁금했던 걸 물어봤습니다. *"같은 맥북인데 Openclaw는 왜 멀쩡하지?"*
Claude Code가 Openclaw 로그를 똑같이 까봤더니 — **Openclaw도 정확히 같은 시각에 똑같이 끊겨 있었습니다.**
```
09:47 [health-monitor] 텔레그램 재시작 (이유: 연결 끊김) → 시도 1/10
09:59 재시작 → 시도 1/10
10:16 재시작 → 시도 2/10
10:34 재시작 → 시도 1/10 ← 카운터가 다시 1로 리셋!
```
차이는 **실패를 세는 방식**이었습니다. 이게 이번 사건의 핵심입니다.
## 🆚 두 봇의 근본적인 차이
둘 다 같은 맥에서, 같은 뚜껑 닫힘으로, 똑같이 끊겼습니다. 운명을 가른 건 **"끊겼을 때 어떻게 대응하도록 설계됐느냐"** 단 하나였습니다.
| 구분 | **Hermes** 🔴 | **Openclaw** 🟢 |
|---|---|---|
| 실패 카운트 방식 | 끊긴 구간을 **하나로 계속 누적** | 끊김이 생길 때마다 **카운터 리셋** |
| 한계 도달 시 | 10회 → **영구 정지(사람이 풀어야 함)** | 감지 즉시 **자동 재시작 반복** |
| 노트북이 깨어난 뒤 | 끊긴 채 그대로 (34시간 방치) | **스스로** 다시 연결 |
| 설계 철학 | **래치형(걸쇠) 차단기** | **자가 치유형** |
- **Hermes**는 "문제가 반복되면 일단 멈추고 사람을 부른다"는 안전장치형 설계입니다. 서버 환경에선 합리적이지만, **노트북처럼 자주 잠들었다 깨는 환경**에서는 잠든 동안의 실패가 쌓여 깨어난 뒤에도 죽어 있게 됩니다.
- **Openclaw**는 "끊기면 그냥 계속 다시 붙어본다"는 끈질긴 설계입니다. 그래서 뚜껑을 여닫을 때마다 알아서 회복합니다.
하드웨어 문제도, 네트워크 문제도 아니었습니다. **순전히 소프트웨어의 '장애 복구 철학' 차이**였습니다.
## ✅ 결과 (After)
| | Before | After |
|---|---|---|
| 원인 파악 | "왜 끊기는지 모름" | 노트북 클램셸 슬립 → 네트워크 단절 → 영구 정지로 **명확히 규명** |
| 두 봇의 차이 | "느낌상 Openclaw가 튼튼한가?" | **설계 차이를 로그 증거로 입증** |
| 복구 | 매번 수동 | 원인을 아니 **재발 방지 방향**까지 확보 |
| 소요 시간 | (원인 영영 모름) | **약 30분** |
그 자리에서 `hermes gateway restart` 한 번으로 텔레그램이 23:25:19에 다시 붙는 것까지 확인했습니다.
## 🛡️ Hermes도 계속 끊기지 않게 하려면
Claude Code와 함께 정리한, 끊김을 막는 3가지 방법입니다. 상황에 맞게 고르면 됩니다.
**1) 근본 해결 — 노트북을 안 재우기**
24시간 돌릴 거라면 충전기를 꽂고, 뚜껑을 닫아도(혹은 일정 시간 지나도) 잠들지 않게 전원 설정을 바꾸는 방법입니다. 네트워크가 안 끊기면 애초에 "정지"가 발생하지 않습니다. (단, 배터리 소모·발열은 감수)
**2) 끈질기게 재시도하게 만들기 (Openclaw처럼)**
Hermes가 10번 실패 후 영구 정지하는 동작은 **설정이 아니라 코드에 박혀 있어서**, 이 부분을 고치면 Openclaw처럼 "계속 다시 붙는" 방식으로 바꿀 수 있습니다. 다만 프로그램을 업데이트하면 수정이 덮어써질 수 있어 재적용이 필요합니다.
**3) 운영으로 보완하기**
끊김을 완전히 막기보다, **끊기면 자동으로 살리는** 방식입니다. 일정 주기로 상태를 점검해 "정지" 상태가 보이면 자동으로 재시작하거나, 텔레그램 창에서 명령어 한 줄(`/platform resume`)로 즉시 되살리는 방법입니다.
> 제 결론: 노트북에서 돌리는 만큼 **1번(전원 유지)** 을 기본으로 하고, 혹시 모를 상황 대비로 **3번(자동 살리기)** 을 얹는 조합이 가장 마음 편합니다.
## 💬 AI 활용 팁
- **"확인 좀 해봐"처럼 막연하게 던져도 됩니다.** AI가 알아서 프로세스 → 로그 → 시스템 로그 순으로 좁혀 들어갑니다. 처음부터 완벽한 질문을 만들 필요가 없어요.
- **"왜?"를 한 번 더 물어보세요.** "끊겼다"에서 멈추지 않고 "왜 그 시각에 네트워크가 죽었지?"라고 물으니 전원 로그까지 파고들어 진짜 원인이 나왔습니다.
- **비교는 AI의 특기입니다.** "쟤는 왜 안 죽었어?"라는 질문 하나로 두 시스템의 설계 철학 차이까지 정리해줬습니다.
- **주의점:** 실행 중인 서비스를 재시작·수정하는 건 영향이 있으니, AI가 원인을 설명한 뒤 **무엇을 바꿀지 확인하고 진행**하는 게 안전합니다.
## 📋 재사용 가능한 프롬프트
실제로 제가 던진 문장들입니다. 그대로 따라 하셔도 됩니다.
> "(서비스 이름) 연결이 끊긴 것 같은데 확인 좀 해봐"
> "원인이 정확히 뭐야?"
> "같은 맥북에서 돌리는데 A는 끊겼고 B는 안 끊겼어. 이유가 뭘까?"
> "A에서도 계속 끊기지 않게 하려면 어떻게 해?"
---