[멈춤 판정] 도구가 실행 중인 턴은 출력이 없어도 멈춤으로 끊지 않는다 #27

Closed
opened 2026-10-04 19:06:48 +09:00 by dreampiler · 4 comments
Owner

10-04 실측: 「Agent stopped responding; the turn was terminated.」 14건 중 Kandev R2 10건이 모두 마지막 에이전트 이벤트 뒤 15.2~15.9분에 끊겼다 — 그 사이 도구가 실행 중이었다(go test -p 2 ./internal/orchestrator·make test·git fetch·git worktree remove·하위 에이전트 검색·폴링 스크립트). 출력이 없는 긴 명령도 정상 작업일 수 있는데 Kandev 가 무출력 15분을 멈춤으로 보고 턴을 끊어, 세션 재기동·맥락 재읽기 비용이 든다. 고칠 것: ACP tool_call 이 열려 있는(시작됐고 끝나지 않은) 동안은 무출력 멈춤 판정을 늦춘다(별도 상한 예: 45분), 상한을 넘으면 지금처럼 끊는다. 운영 쪽은 같은 날 지시문 규칙(한 명령 10분 안, 긴 명령 출력 파일로, CI 폴링 금지)으로 줄였다 — 이 수정은 그래도 남는 정상 긴 명령을 위한 것. Kandev R3(다음 회차, R2 배포 뒤).

10-04 실측: 「Agent stopped responding; the turn was terminated.」 14건 중 Kandev R2 10건이 모두 마지막 에이전트 이벤트 뒤 15.2~15.9분에 끊겼다 — 그 사이 도구가 실행 중이었다(go test -p 2 ./internal/orchestrator·make test·git fetch·git worktree remove·하위 에이전트 검색·폴링 스크립트). 출력이 없는 긴 명령도 정상 작업일 수 있는데 Kandev 가 무출력 15분을 멈춤으로 보고 턴을 끊어, 세션 재기동·맥락 재읽기 비용이 든다. 고칠 것: ACP tool_call 이 열려 있는(시작됐고 끝나지 않은) 동안은 무출력 멈춤 판정을 늦춘다(별도 상한 예: 45분), 상한을 넘으면 지금처럼 끊는다. 운영 쪽은 같은 날 지시문 규칙(한 명령 10분 안, 긴 명령 출력 파일로, CI 폴링 금지)으로 줄였다 — 이 수정은 그래도 남는 정상 긴 명령을 위한 것. Kandev R3(다음 회차, R2 배포 뒤).
Author
Owner

10-04 19:5x 운영 세션 확인(포크 소스 읽기): ① 끊는 기준은 apps/backend/internal/agent/runtime/lifecycle/session.go:45 의 상수 stallEscalationThreshold = 15*time.Minute 이고 설정 목록(catalog.go)에 없다 — 설정으로는 못 바꾼다. ② 실행 중인 도구는 이미 execution.activeToolSnapshot()(types.go:505)으로 추적되고 멈춤 알림에도 실린다. 고칠 자리는 session.go:1393 분기 하나 — 최상위 도구가 열려 있으면 상한을 45분으로, 도구 없이 모델이 조용하면 지금처럼 15분. ③ 10-03~04 끊김 22건의 직전 상태: bash 실행 중 11 · 하위 에이전트(task) 5 · kandev MCP 도구 1 · 권한 요청 1(OR-SpaceBunny 10-04 04:19 go test — 프로필 auto_approve=1 인데 권한 요청이 떴다, 원인을 같이 본다) · 모델 자체 무응답(Still waiting for the agent) 4. 모델 자체 무응답은 지금처럼 15분에 끊는 것이 맞다.

10-04 19:5x 운영 세션 확인(포크 소스 읽기): ① 끊는 기준은 apps/backend/internal/agent/runtime/lifecycle/session.go:45 의 상수 stallEscalationThreshold = 15*time.Minute 이고 설정 목록(catalog.go)에 없다 — 설정으로는 못 바꾼다. ② 실행 중인 도구는 이미 execution.activeToolSnapshot()(types.go:505)으로 추적되고 멈춤 알림에도 실린다. 고칠 자리는 session.go:1393 분기 하나 — 최상위 도구가 열려 있으면 상한을 45분으로, 도구 없이 모델이 조용하면 지금처럼 15분. ③ 10-03~04 끊김 22건의 직전 상태: bash 실행 중 11 · 하위 에이전트(task) 5 · kandev MCP 도구 1 · 권한 요청 1(OR-SpaceBunny 10-04 04:19 go test — 프로필 auto_approve=1 인데 권한 요청이 떴다, 원인을 같이 본다) · 모델 자체 무응답(Still waiting for the agent) 4. 모델 자체 무응답은 지금처럼 15분에 끊는 것이 맞다.
Author
Owner

10-04 소유자 보충: 「중간에 정상 동작 중인지 출력을 확인 할 수 있도록 해서 정상 동작이 확인되면 응답 없음으로 처리되지 않도록」. 고칠 방향을 시간 연장(도구 열림 → 45분)에서 진행 확인으로 바꾼다 — 도구가 열린 동안 그 도구가 실제로 진행 중인지(에이전트 하위 프로세스의 CPU 사용 증가 또는 도구 출력 증가)를 주기적으로 보고, 진행이 있으면 끊지 않고 진행이 15분 넘게 없으면 지금처럼 끊는다. 진행 신호를 못 읽는 환경이면 기존 45분 상한으로 떨어진다. 운영 쪽은 같은 날 지시문 ③ 에 「쪼갤 수 없는 긴 명령은 백그라운드로 띄워 2~3분마다 로그 끝을 읽어 진행 확인 — 10분 넘게 로그가 안 늘면 멈춘 것」을 넣었다(158칸).

10-04 소유자 보충: 「중간에 정상 동작 중인지 출력을 확인 할 수 있도록 해서 정상 동작이 확인되면 응답 없음으로 처리되지 않도록」. 고칠 방향을 시간 연장(도구 열림 → 45분)에서 진행 확인으로 바꾼다 — 도구가 열린 동안 그 도구가 실제로 진행 중인지(에이전트 하위 프로세스의 CPU 사용 증가 또는 도구 출력 증가)를 주기적으로 보고, 진행이 있으면 끊지 않고 진행이 15분 넘게 없으면 지금처럼 끊는다. 진행 신호를 못 읽는 환경이면 기존 45분 상한으로 떨어진다. 운영 쪽은 같은 날 지시문 ③ 에 「쪼갤 수 없는 긴 명령은 백그라운드로 띄워 2~3분마다 로그 끝을 읽어 진행 확인 — 10분 넘게 로그가 안 늘면 멈춘 것」을 넣었다(158칸).
Author
Owner

10-04 운영 세션 실측 — 응답 없음 끊김의 큰 원인 하나: Start-Process 를 -RedirectStandardOutput/-RedirectStandardError 와 함께 써서 오래 도는 프로세스(미리보기·dev 서버)를 띄우면 OpenCode 계열 에이전트(OR·OCG·OCZ)의 셸 도구가 끝나지 않는다 — 10-02~04 그렇게 띄운 42회 중 21회가 10분 넘게 멈춰 15분에 끊겼고, 리다이렉트 없이 띄운 23회는 0회(6 Sol·Codex 는 리다이렉트 2회 모두 정상). 띄운 프로세스가 셸 출력 핸들을 물려받아 도구가 끝을 못 보는 것으로 보인다(추정). 운영 세션 셸(Git Bash·PowerShell)에서는 재현되지 않는다. 운영 쪽은 지시문 ⑦ 을 cmd /c 안 리다이렉트로 바꿨다(158칸). Kandev 쪽에서 볼 것: 도구가 끝나지 않은 이유가 이 상속이면 진행 확인(CPU·출력)으로도 「진행 있음」으로 보여 끊지 못한다 — 띄운 프로세스가 살아 있어도 셸 명령 자체가 끝났는지(셸 프로세스 종료)를 따로 본다.

10-04 운영 세션 실측 — 응답 없음 끊김의 큰 원인 하나: Start-Process 를 -RedirectStandardOutput/-RedirectStandardError 와 함께 써서 오래 도는 프로세스(미리보기·dev 서버)를 띄우면 OpenCode 계열 에이전트(OR·OCG·OCZ)의 셸 도구가 끝나지 않는다 — 10-02~04 그렇게 띄운 42회 중 21회가 10분 넘게 멈춰 15분에 끊겼고, 리다이렉트 없이 띄운 23회는 0회(6 Sol·Codex 는 리다이렉트 2회 모두 정상). 띄운 프로세스가 셸 출력 핸들을 물려받아 도구가 끝을 못 보는 것으로 보인다(추정). 운영 세션 셸(Git Bash·PowerShell)에서는 재현되지 않는다. 운영 쪽은 지시문 ⑦ 을 cmd /c 안 리다이렉트로 바꿨다(158칸). Kandev 쪽에서 볼 것: 도구가 끝나지 않은 이유가 이 상속이면 진행 확인(CPU·출력)으로도 「진행 있음」으로 보여 끊지 못한다 — 띄운 프로세스가 살아 있어도 셸 명령 자체가 끝났는지(셸 프로세스 종료)를 따로 본다.
Author
Owner

10-04 소유자 「아래 건도 긴급으로 처리해줘」(응답 없음 끊김) — 긴급 배포로 상시 관제 직속 Kandev 작업 69692813 로 등록·시작(고난도, 6 Sol). 진행 메모 셋(설정 불가 상수·진행 확인 방식·Start-Process 리다이렉트 상속)을 설명에 실었다.

10-04 소유자 「아래 건도 긴급으로 처리해줘」(응답 없음 끊김) — 긴급 배포로 상시 관제 직속 Kandev 작업 69692813 로 등록·시작(고난도, 6 Sol). 진행 메모 셋(설정 불가 상수·진행 확인 방식·Start-Process 리다이렉트 상속)을 설명에 실었다.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dreampiler/kandev#27