exec 도구를 통해 셸 명령을 실행하고 장시간 실행되는 작업을 메모리에 유지합니다. process 도구는 이러한 백그라운드 세션을 관리합니다.
exec 도구
매개변수:
동작:
- 포그라운드 실행은 출력을 직접 반환합니다.
- 백그라운드로 전환되면(명시적으로 지정하거나
yieldMs제한 시간이 지난 경우) 도구는status: "running"+sessionId와 짧은 출력 끝부분을 반환합니다. - 백그라운드 실행 및
yieldMs실행은 호출에서 명시적인timeout을 전달하지 않는 한tools.exec.timeoutSec를 상속합니다. - 출력은 세션을 폴링하거나 지울 때까지 메모리에 유지됩니다.
process도구가 허용되지 않으면exec는 동기적으로 실행되며yieldMs/background를 무시합니다.- 생성된 exec 명령에는 상황 인식형 셸/프로필 규칙을 위해
OPENCLAW_SHELL=exec가 전달됩니다. - 지금 시작하는 장시간 작업의 경우 한 번만 시작하고, 명령이 출력을 내거나 실패했을 때 자동 완료 깨우기(활성화된 경우)에 의존하세요.
- 자동 완료 깨우기를 사용할 수 없거나 출력 없이 정상 종료되는 명령의 무출력 성공을 확인해야 한다면
process로 폴링하세요. sleep루프나 반복 폴링으로 알림 또는 지연된 후속 작업을 흉내 내지 마세요. 향후 작업에는 Cron을 사용하세요.
환경 변수 재정의
구성(환경 변수 재정보다 권장)
자식 프로세스 연결
exec/process 도구 외부에서 장시간 실행되는 자식 프로세스(CLI 재실행, Gateway 헬퍼)를 생성할 때는 종료 신호가 전달되고 종료/오류 시 리스너가 분리되도록 자식 프로세스 브리지 헬퍼를 연결하세요. 이렇게 하면 systemd에서 고아 프로세스가 생기는 것을 방지하고 플랫폼 전반에서 일관된 종료 동작을 유지할 수 있습니다.process 도구
작업:
참고:
- 백그라운드 세션만 나열되고 유지됩니다. 디스크가 아닌 메모리에만 저장됩니다. 프로세스를 다시 시작하면 세션이 사라집니다.
- 활성 백그라운드 세션은 프로세스 소유자가 실제 종료를 확인할 때까지 협력적 호스트 일시 중단과 안전한 Gateway 재시작을 차단합니다.
process remove는 종료를 요청한 직후 실행 중인 세션을 숨길 수 있지만, 종료가 확인될 때까지 일시 중단과 재시작은 계속 차단됩니다.- 세션 로그는
process poll/log를 실행하여 도구 결과가 기록된 경우에만 채팅 기록에 저장됩니다. process의 범위는 에이전트별로 한정되며, 해당 에이전트가 시작한 세션만 볼 수 있습니다.- 자동 완료 깨우기를 사용할 수 없는 경우 상태, 로그 또는 완료 확인을 위해
poll/log를 사용하세요. - 대화형 CLI를 복구하기 전에
log를 사용하여 현재 기록, stdin 상태 및 입력 대기 힌트를 함께 확인하세요. - 입력이나 개입이 필요할 때는
write/send-keys/submit/paste/kill을 사용하세요. - 빠르게 훑어볼 수 있도록
process list에는 파생된name(명령 동사 + 대상)이 포함됩니다. process list,poll,log는 세션에 여전히 쓰기 가능한 stdin이 있고 입력 대기 임계값(기본값 15000ms,OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS)보다 오랫동안 유휴 상태인 경우에만waitingForInput을 보고합니다.process log는 줄 기반offset/limit를 사용합니다. 둘 다 생략하면 페이징 힌트와 함께 마지막 200줄을 반환합니다.offset이 설정되고limit가 없으면offset부터 끝까지 반환합니다(200줄로 제한되지 않음).poll의timeout은 반환하기 전에 해당 밀리초만큼 기다리며, 30000보다 큰 값은 30000으로 제한됩니다.- 폴링은 요청 시 상태 확인을 위한 것이지 대기 루프 예약을 위한 것이 아닙니다. 작업을 나중에 수행해야 한다면 Cron을 사용하세요.