Claude Code, Codex, OpenCode 중 어떤 세션이 멈췄는지 구분하는 방법(터미널 10개를 확인하지 않고)
"승인 대기", "오프라인", "실제로는 실행 중"을 구분하는 실용적인 워크플로. 가벼운 확인부터 시작하고, 가능하면 휴대폰에서 쓰기 편한 제어 루프를 씁니다.
- CLI
- 0.2.17
- 프리뷰 ref
- a2c45c8
흔하고 곤란한 상황입니다.
여러 세션(Claude Code, Codex, OpenCode)이 돌아가고 있습니다. 잠깐 노트북을 내려놓았다가 돌아오니 뭔가 이상합니다.
"크래시"라기보다는 이런 느낌입니다.
- 아무것도 진행되지 않는다
- 출력이 생각 중간에 멈췄다
- 세션은 "실행 중"인데 뭘 하고 있는지 알 수 없다
곤란한 건 수고입니다. 세션이 5~10개라면 어느 것에 확인이 필요한지 알아내는 데만 20분이 걸릴 수 있습니다.
이 가이드는 한 가지 질문에 빠르게 답하기 위한 워크플로입니다.
실제로 멈춘 세션은 어느 것이고, 어떤 식으로 멈춘 것인가?
요약
- 추측하지 마세요. 먼저 멈춘 상태를 분류합니다.
- 승인 대기 / 입력 필요(흔한 경우)
- 연결 끊김 / 오프라인(머신 절전, Wi-Fi 끊김)
- 작업 중(아직 실행 중, 느릴 뿐)
- 고장(크래시 / 멈춤)
- 부담이 적은 확인부터 시작합니다(세션 목록, 마지막 활동, 로그 끝부분 하나).
- 휴대폰에서 쓰기 편한 "지금 확인이 필요한 건?" 루프를 원한다면, Happier가 도움이 되는 선택지 중 하나입니다. 전체 Inbox와 요청 알림 라우팅이 있습니다.
문제(쉽게 말하면)
"멈춘 세션"의 대부분은 실제로 멈춘 게 아닙니다.
기다리고 있는 겁니다.
- 권한 프롬프트를 기다린다
- 답하지 않은 질문을 기다린다
- 노트북이 절전되어 클라이언트 연결이 끊겨서 기다린다
이게 어려운 이유는 터미널이 "이건 확인이 필요해"라고 알려 주지 않고, "이 프로세스가 존재해"라고만 알려 주기 때문입니다.
그리고 세션이 여러 개라면 비용은 수정이 아니라 진단에서 나옵니다.
일반적인 방법과 트레이드오프
- 세션 수를 줄이기: 가끔은 현실적이지만, 실제 작업은 병렬화되기 마련입니다.
- 저장소마다 tmux 창 하나와 이름 규칙: 도움은 되지만 여전히 손으로 훑어봐야 합니다.
- 로그 tail하기(Codex log_dir / OpenCode 로그): 유용하지만 올바른 로그를 열어야 합니다.
- Claude Code의 내장 재개 / 이름 지정과 Agent Teams 화면: 유용하지만 프로바이더를 넘나드는 "처리할 목록"은 주지 못합니다.
그런 "처리할 목록"을 휴대폰(또는 브라우저)에서 원한다면, Happier는 Claude Code, Codex, OpenCode 등 여러 에이전트를 크로스 디바이스로 실행하고 오케스트레이션할 수 있는 오픈 소스 앱입니다. 승인과 요청을 한곳에 모아 보여 줍니다.
Happier가 처음이라면(무엇이고 어디서 받는지)
Happier는 Claude Code, Codex, OpenCode 같은 코딩 세션을 위한 오픈 소스 컴패니언 앱(모바일 / 웹 / 데스크톱)입니다.
워크플로는 세션을 신뢰하는 머신(노트북 / 서버 / 개발 머신)에서 계속 실행하고, 휴대폰의 Happier에서 모니터링, 승인, 진행을 하는 것입니다.
설정하기:
- 휴대폰에서 Happier 사용하는 방법
- GitHub: https://github.com/happier-dev/happier
- 설치 / 다운로드: https://github.com/happier-dev/happier#how-it-works
- Discord: https://discord.gg/W6Pb8KuHfg
실제로 통하는 진단 체크리스트
1) 먼저: 나를 기다리고 있나?
세션이 "멈췄다"면, 실제로 사람의 결정을 기다리며 막혀 있는지 물어보세요.
흔한 신호:
- 마지막 출력이 질문이다("어떤 옵션을 고를까요?")
- 세션이 도구 권한을 기다리고 있다
- 사용자 작업이 필요한 프로바이더별 모드에 있다(예: 플랜 모드 종료)
Happier를 쓴다면 여기서 전체 Inbox가 도움이 됩니다. 승인 요청과 권한 / 사용자 작업 요청이 그곳에 나타나고, 알림 라우팅은 확인이 필요한 바로 그 세션으로 데려가려고 합니다.
2) 다음: 머신 절전이나 Wi-Fi 끊김으로 클라이언트 연결이 끊겼나?
노트북 덮개를 닫았거나, 네트워크를 옮겼거나, 클라이언트가 백그라운드로 갔다면, 프로세스는 괜찮아도 화면이 오래된 상태일 수 있습니다.
일반적인 해결책은 도구에 따라 다릅니다.
- SSH를 쓴다면, 이런 종류의 문제에는 Mosh가 "이동 + 절전"에 강하고 부담이 적은 개선책입니다.
- 클라이언트 / 서버 방식의 스트리밍 UI라면 다시 연결하거나 스트림을 새로 고쳐야 할 수 있습니다.
(클라이언트 / 서버 방식 도구에서 "절전 후 세션 상태가 오래된 채로 남는" 문제의 실제 보고가 있습니다. 그런 경우 해결책은 대개 "재연결과 업데이트"입니다.)
3) 그다음: 작업 중인데 느릴 뿐인가?
세션은 이럴 때 멈춘 것처럼 보일 수 있습니다.
- 큰 diff를 처리하고 있다
- 테스트를 실행하고 있다
- 느린 네트워크 호출을 기다리고 있다
이 경우 필요한 것은 진행 신호입니다.
- 마지막 도구 호출 시각
- 마지막 파일 편집
- 마지막 토큰 출력
진행 신호를 전혀 얻을 수 없다면 고장으로 보고 다음 단계로 넘어갑니다.
4) 마지막: 멈춘 것으로 다루기(그리고 안전한 개입 고르기)
정말 멈췄다고 확신한다면:
- 위험이 낮은 중단을 우선한다("멈추고 지금 어디까지 했는지 요약해 줘")
- 그다음 다시 시작하거나 재개한다
세션 정체성을 지키고 싶다면 무작정 프로세스를 kill하지 마세요. 재개 가능한 구조가 있다면 "새로 시작하고 맥락 붙여 넣기" 대신 resume / attach 경로를 쓰세요.
휴대폰 중심 "처리할 목록" 워크플로(Happier)
많은 세션을 돌리면서 진단에 계속 시간을 잃고 있다면, Happier가 주는 주된 가치는 "더 강한 기능"이 아닙니다.
덜 찾아다니는 것입니다.
-
Inbox가 "지금 내가 확인해야 할 건?"에 답한다
-
알림이 올바른 세션(그리고 올바른 서버 프로필)으로 바로 데려간다
-
Needs attention은 나 때문에 막혀 있는 세션을 모아 주므로, 나머지는 하나씩 확인하지 않아도 계속 실행될 수 있습니다
리마인더로 세션을 잠시 미뤄 두기
어떤 세션은 멈춘 게 아니라, 앞으로 두 시간 동안 신경 쓸 필요가 없을 뿐입니다. 0.2.13부터는 의도적으로 미뤄 둘 수 있습니다.
- 세션 행의 메뉴를 열고 Remind me를 고릅니다.
- 추천 시간, Choose date and time…, 또는 저장한 프리셋을 고릅니다.
리마인더를 설정하면 세션이 읽음으로 표시되고, 그 시간까지 Needs attention에서 빠집니다. 시간이 되면 새로운 일이 없어도 다시 돌아옵니다. 0.2.16부터는 세션을 열면 기한이 된 리마인더가 지워집니다(직접 지우고 싶다면 Settings → Session → Clear reminders on open을 끄세요). 리마인더는 Happier 앱 안의 확인 상태를 바꾸는 것이고, 푸시를 보내지는 않습니다. 자세한 내용은 세션 읽음 상태 문서에 있습니다.
작업 중인 세션을 멈추지 않고 방향 바꾸기
세션이 작업 중인데 엉뚱한 방향으로 가고 있다면, 에이전트가 스티어링을 지원하는 경우 Steer now(0.2.16)가 큐에 든 메시지를 턴을 중단하지 않고 에이전트에 전달합니다. Send now는 여전히 중단합니다. 스티어링을 참고하세요.
컴퓨터 앞에 있을 때는 휴대폰을 조용히 두기
역시 0.2.16의 새 기능입니다. 선택적인 알림 설정으로, Happier가 컴퓨터에서 포커스되어 있는 동안 휴대폰 푸시를 끕니다. 컴퓨터 포커스를 확인할 수 없으면 푸시는 계속 휴대폰으로 갑니다.
솔직한 트레이드오프: 머신에 계속 접근할 수 있어야 합니다.
문제 해결
멈춘 건지 기다리는 건지 모르겠다
판단을 끌어내세요.
- 짧은 메시지 보내기: "내 입력을 기다리는 거야, 아직 실행 중이야?"
- 도구가 지원하면 한 줄 상태 업데이트를 요청한다
세션을 계속 놓친다
다음 패턴 중 하나를 쓰세요.
- 작업마다 워크트리 하나 / 세션 하나
- 세션과 저장소의 일관된 이름
- 하나의 "처리할 목록"(Inbox, Needs attention, 알림)
- 읽었지만 나중에 다시 보고 싶은 세션에는 Remind me 시간 설정