Skip to main content
블로그로 돌아가기
블로그

Claude Code의 완료 신호는 계속 바뀝니다. 우리가 따라잡는 방법

Claude Code의 완료 배너에 키워드 매칭이 계속 깨지는 이유와, MadoHub이 에이전트의 턴이 끝났는지 알기 위해 실제로 신뢰하는 것.

MadoHub은 에이전트가 턴을 끝내는 즉시 알아야 합니다 — 그것이 라우팅을 촉발하고, 타일을 작업 중에서 완료로 바꾸고, 연결된 에이전트에게 출력을 가져가도 안전하다고 알리는 가장자리입니다. 한동안 "Claude Code가 끝났는지 어떻게 아나"에 대한 우리 답은 문자열 그대로의 매치였습니다. 그것은 Claude Code가 다른 단어가 든 릴리스를 출시할 때까지 작동했고, 그리고 작동을 멈추었습니다. 이것은 그것을 대체한 것의 이야기이며, 그 대체품조차 진짜 수정이 아닌 이유.

문제 또는 통찰

제때 만료된 단어 목록

Claude Code는 턴을 끝낼 때 한 줄 배너를 인쇄합니다: ✽ Worked for 2m 30s 같은 것. 우리 감지기의 첫 버전은 그 배너의 두 특정 동사 — Sautéed와 Cogitated — 를 매치했습니다, 왜냐하면 그것이 그때 Claude Code가 인쇄하던 단어였기 때문입니다. 감지는 키워드 검사였습니다: 단어를 보면, idle 타이머를 시작하고, 라우트를 촉발합니다.

이것은 Claude Code가 그 두 단어를 계속 쓰는 동안만 유지되었습니다. 그렇지 않습니다. 동사는 회전하는, 장난기 있는 집합 — Worked, Churned, Sautéed, Cogitated, 그리고 다른 것들 — 에서 뽑히며, 릴리스에 걸쳐 바뀝니다, 일종의 CLI 성격처럼. 단어 목록이 바뀔 때마다 우리의 키워드 매치가 조용히 발동을 멈추고, 그것을 쓰는 모든 타일이 누군가 알아채고 새 단어를 추가할 때까지 완료 감지를 멈추었습니다.

움직이는 표적을 열거하며 좇는 것은 지는 게임입니다. 수정은 그 단어가 무엇인지 신경 쓰지 않는 것이었습니다.

단어가 아닌 형태 매치

모든 완료 배너는 이번 주에 어느 동사가 출시되든 같은 구조를 가집니다: 줄 시작의 스피너 기호, 대문자로 시작하는 과거형 동사, 문자 그대로의 for, 그리고 지속 시간. 다음 릴리스에 어느 동사가 오든, 그 형태에 맞기만 하면 감지는 코드 변경 없이 작동합니다. 기호 요구가 중요합니다, 왜냐하면 터미널 출력은 턴이 끝났다는 것을 의미하지 않는 "동사 + for + 지속 시간"에 맞는 산문으로 가득하기 때문입니다 — Retried for 3s를 인쇄하는 재시도 루프, Waited for 5s를 로깅하는 빌드 단계. 줄 시작에 기호를 요구하면, 그런 거짓 매치가 사라집니다.

MadoHub이 다루는 방법

배너 매치는 가속, 평결이 아닙니다

이 배너 매치는 MadoHub이 Claude Code 에이전트가 끝났다고 결정하는 주 방법이 아닙니다 — 가속입니다. 권위 있는 신호는 Claude Code 자체의 세션 전사를 직접 읽는 백엔드 와처에서 옵니다: 로그에 쓰인 마지막 메시지를 보고, 그것이 보류 중인 툴 호출이 없는 assistant 메시지면 에이전트가 끝난 것이고; user 메시지, 진행 메시지, 또는 툴 호출 중간의 assistant 메시지면 여전히 작업 중입니다. 그 평결은 앱의 나머지가 전사 기반 팩트와 화면 스크레이프 추측을 구별할 수 있게 라벨이 붙습니다.

배너 매치는 터미널을 응시하며 와처가 따라잡기를 기다리는 대신 배너가 나타나는 순간 타일이 바뀌길 원하는 일반적인 경우에 그 와처의 레이턴시를 깎기 위해서만 존재합니다.

놓친 매치는 괜찮지만, 거짓 매치는 아닙니다

너무 엄격한 매치와 너무 느슨한 매치 사이에서, MadoHub은 엄격하게 기웁니다 — 짚을 가치가 있는 의도적 트레이드오프입니다. 놓친 배너 매치는 무해합니다: 와처가 짧은 뒤에 여전히 실제 정지를 보고합니다. 거짓 배너 매치는 무해하지 않습니다, 왜냐하면 턴 중간인 타일에 라우팅을 촉발할 수 있기 때문입니다. 그래서 MadoHub은 화면 매치 위에 깊이 있는 방어를 실행합니다: 라이브 와처 평결이 에이전트가 여전히 작업 중이라고 말하는 동안 화면 출처의 "완료" 평결이 나타나면, MadoHub은 그것에 행동하는 대신 화면 평결을 버립니다 — 완료에 대한 와처의 말이 최종입니다.

실용적 안내

  • Claude Code 타일을 지켜보며 라우트가 언제 촉발될지 예측하려면, 이번 주의 동사를 외우지 마세요. 몇 릴리스 뒤면 다른 것이 될 것입니다. 대신 형태를 배우세요: 기호, 대문자 과거형 동사, for, 지속 시간, 모두 한 줄에. 그것이 Claude Code이 중간에 무슨 단어가 들어가든 계속 인쇄를 멈추지 않을 신호의 부분입니다.
  • 타일의 상태가 잘못 보이면, 화면이 아닌 와처를 신뢰하세요. MadoHub이 그렇게 합니다 — 전사가 실제로 신뢰하는 신호이고, 배너 매치는 일반적인 경우를 더 빠르게 느끼게 할 뿐입니다. 타일이 "완료"로 바뀌었다가 다시 바뀌면, 그것은 버그가 아닌 과하게 열성인 배너 매치를 교정하는 와처입니다.
  • 특정 동사에 의존하는 자체 라우팅을 쓰지 마세요. Claude Code 완료에 의존하는 Flow나 연결을 만들 때, 배너 텍스트를 직접 매칭하는 대신 MadoHub의 상태(작업 중 / 완료 / 실패)에 의존하세요 — 그렇지 않으면 다음 Claude Code 릴리스가 우리의 첫 감지기가 깨진 것과 같은 방식으로 조용히 당신의 설정을 깰 것입니다.
  • 와처 경로가 바쁠 때 즉시 바뀜이 아닌 짧은 지연을 기대하세요. 배너 매치는 일반적인 경우를 즉시 만들지만, 바쁜 머신에서 와처는 항상 옳은 백업이며, 잠시 걸릴 수 있습니다. 1~2초 지연은 정상입니다; 절대 바뀌지 않는 타일은 아닙니다.

이것은 우리의 Claude Code 팁 글의 그 조언의 약식 버전을 대체합니다 — 그것은 형태를 지켜보고 넘어가라고 했고; 이것은 왜 그 형태가 지켜볼 옳은 것인지, 그리고 그 아래에서 세션 전사가 MadoHub이 실제로 신뢰하는 신호인 이유의 완전한 설명입니다.

관련 문서