Herdr는 다양한 상황에 대해 여러 상태 경로를 사용합니다.
무엇이 살아남는가
| 케이스 | 프로세스가 계속 실행됨 | 화면 배치 복원 | 최근 화면 복원 | 에이전트 대화 재개 |
|---|---|---|---|---|
| 연결 해제 후 다시 연결 | 예 | 예 | 예, 라이브 터미널에서 | 예, 프로세스가 중단된 적이 없기 때문에 |
| 서버 재시작 | 아니요 | 예 | 패널 화면 기록만 사용 가능 | 에이전트 자체 세션 복원에만 해당 |
--handoff 없이 업데이트 | 호환되는 서버는 계속 실행됩니다. 다시 시작이 필요한 서버는 중지/다시 시작이 필요할 수 있습니다. | 예, 다시 시작한 후 | 패널 화면 기록만 사용 가능 | 에이전트 자체 세션 복원에만 해당 |
--handoff로 업데이트 | 지원되는 실행 서버에 대한 최선의 노력 | 예 | 예, 핸드오프가 성공하면 라이브 터미널에서 | 예, 핸드오프가 성공하면 프로세스가 계속 실행되기 때문입니다. |
실행 중인 프로세스 유지
정상적인 분리는 Herdr 서버를 계속 실행합니다. 패널, 셸, 에이전트, 서버, 테스트 및 명령 프로세스는 해당 서버 내에서 계속 실행됩니다.
ctrl+b q를 사용하여 클라이언트를 분리합니다. 나중에 다시 연결하세요.
herdr원래 프로세스는 절대 멈추지 않기 때문에 이것이 가장 강력한 지속성 경로입니다.
저장된 화면 배치 복원
Herdr 서버가 중지되었다가 다시 시작되면 원래 패널 프로세스가 사라집니다. Herdr는 작업 공간, 탭, 패널, cwd, 레이아웃 및 포커스 등 저장된 세션 형태를 복원합니다.
스냅샷 복원은 실행 중인 셸, 서버, 테스트 또는 임의 프로세스를 보존하지 않습니다. 더 강력한 복원 경로를 사용할 수 없는 패널은 저장된 디렉터리에 새 셸로 다시 나타납니다.
저장된 디렉터리를 사용할 수 없거나 셸을 시작할 수 없는 경우 패널이 사라지거나 홈 디렉터리로 이동하는 대신 오류와 함께 레이아웃에 유지됩니다. 저장된 디렉터리와 에이전트 세션 참조는 그대로 유지됩니다. 디렉터리 또는 셸 구성을 수정하고 서버를 다시 시작하여 재시도하거나 패널을 명시적으로 닫아 제거하세요.
저장할 때 Herdr는 운영 체제가 노출하는 라이브 쉘의 디렉터리를 선호하고 쉘이 종료된 후 마지막으로 확인된 디렉터리를 유지합니다. 쉘에서 보고한 디렉터리는 다른 플랫폼에서 대체용으로 남아 있습니다.
session.json을 읽거나 구문 분석할 수 없거나 최신 Herdr 버전이 필요한 경우 Herdr는 로드가 실패한 이유를 기록합니다. 대체 세션을 저장하거나 지우기 전에 session.json 옆에 있는 session-backups/의 원래 바이트를 보존하고 복구 경로를 persist.backup로 기록합니다. 처음 저장하거나 지우기 전에 시작 시 누락된 파일을 다시 확인합니다. 이러한 실패한 로드 복구 복사본은 일반 스냅샷 기록과 별개입니다.
Herdr는 가장 최근의 복구 복사본 3개를 유지하며 새 복사본이 안전하게 작성된 후에만 이전 복사본을 정리합니다. 보존에 실패하면 자동 저장 및 종료 기능이 원본을 그대로 두고 실패를 기록합니다. 다음 저장 요청 시 보존이 다시 시도됩니다. 복사본은 자동으로 복원되지 않습니다. 하나를 복구하려면 영향을 받은 서버를 중지하고 해당 session.json에 복구 파일을 복사한 다음 다시 시작하세요. 복구 복사본에는 패널 화면 기록이 포함되지 않습니다.
종료 및 스냅샷 복구
systemd-logind를 사용하는 Linux 시스템에서 Herdr는 호스트 종료 경고를 수신하고 저장 및 중지하는 동안 짧은 지연을 요청합니다. 이는 로그인이 종료를 진행하기 전에 발생합니다. 운영 체제는 지연을 제한합니다. Herdr는 종료를 무기한 차단하지 않습니다. 이 보호는 로그인하지 않으면 사용할 수 없으며 경고가 도착하기 전에 강제 종료, 정전 또는 프로세스 종료가 포함되지 않습니다.
Herdr는 또한 모든 플랫폼에서 session.json 옆에 있는 session-snapshots/에 최대 48개의 레이아웃 스냅샷을 보관합니다. 처음으로 저장된 레이아웃이 즉시 복사됩니다. 나중에 저장하거나 지우면 이전에 저장된 레이아웃의 스냅샷이 최대 15분마다 한 번씩 추가될 수 있습니다. 변경되지 않은 스냅샷은 복제되지 않습니다. 이 간격은 서버가 다시 시작된 이후에도 유지되므로 패널이 갑자기 종료되거나 다시 시작되더라도 모든 이전 레이아웃을 회전시킬 수 없습니다. 최근 변경 사항은 복구 스냅샷에 없을 수 있습니다.
일반 패널 닫기는 여전히 session.json를 업데이트합니다. 복구 메시지가 표시되지 않으며 이전 스냅샷이 자동으로 복원되지 않습니다. 레이아웃을 복구하려면:
herdr session list --json으로 영향을 받은 세션 디렉터리를 찾으세요.- 해당 서버를 중지합니다(기본 세션의 경우
herdr server stop, 명명된 세션의 경우herdr session stop <name>). - 현재
session.json의 복사본을 보관한 다음session-snapshots/에서 선택한 파일을session.json로 복사합니다. 파일 수정 시간은 스냅샷이 생성된 시기를 식별합니다. - 세션을 다시 시작하세요.
스냅샷에는 실행 중인 프로세스나 패널 화면 기록이 아닌 레이아웃 및 에이전트 세션 참조가 포함됩니다. 개인 세션 데이터로 처리합니다. 스냅샷 쓰기 실패가 기록되지만 기본 세션이 저장되는 것을 막지는 않습니다.
패널 화면 기록 복원
패널 화면 기록은 이전 프로세스를 복원하지 않고 전체 서버를 다시 시작한 후 최근 터미널 콘텐츠를 복원합니다.
창 출력에는 암호, 토큰, 프롬프트 및 명령 출력이 포함될 수 있으므로 패널 화면 기록은 기본적으로 꺼져 있습니다. 설정 파일에서 활성화하십시오.
[experimental]
pane_history = true활성화되면 Herdr는 저장된 패널 기록을 session.json 옆의 session-history.json에 저장합니다. Herdr 구성/세션 디렉터리를 터미널 기록처럼 취급하십시오.
기록은 저장된 레이아웃과 정확하게 일치하는 경우에만 재생됩니다. 수동 스냅샷 복구 이후를 포함하여 다른 레이아웃의 기록은 무시됩니다. 레이아웃 확인이 없는 이전 기록 파일도 무시됩니다. 새로 저장된 기록은 다음에 다시 시작할 때 재생할 수 있습니다.
에이전트 자체 세션 복원
일부 에이전트은 자신의 대화 세션을 재개할 수 있습니다. Herdr는 공식 통합 보고 세션 참조를 사용하여 Herdr 서버를 다시 시작한 후 지원되는 에이전트 패널을 다시 시작할 수 있습니다.
에이전트 자체 세션 복원은 기본적으로 활성화되어 있습니다. 다음을 사용하여 비활성화합니다.
[session]
resume_agents_on_restore = falseHerdr는 현재 공식 Herdr 통합을 통해 기본 세션 참조를 보고한 패널과 에이전트가 자체 재개 명령을 보고한 패널을 재개합니다. 에이전트에 Herdr 지원 추가을 참조하세요.
클라이언트가 터미널 크기 및 테마 컨텍스트를 연결하고 제공한 후 Herdr는 각 패널에 초점이 맞춰질 때까지 기다리지 않고 작업 공간과 탭에서 적합한 복원 에이전트 패널을 재개합니다.
기본 세션 복원에는 다음과 같은 Herdr 통합 버전 이상이 필요합니다.
| 대리인 | 최소 Herdr 통합 버전 | 재개 명령 |
|---|---|---|
| Pi | 2 | pi --session <path-or-id> |
| 반중력 CLI | 1 | agy --conversation <id> |
| OMP | 3 | omp --resume=<path-or-id> |
| Claude Code | 6 | claude --resume <id> |
| Codex | 5 | codex resume <id> |
| 커서 에이전트 CLI | 1 | cursor-agent --resume <id> |
| 그록 CLI | 2 | grok --resume <id> |
| GitHub 코파일럿 CLI | 2 | copilot --resume=<id> |
| 데빈 CLI | 2 | devin --resume <id> |
| Droid | 2 | droid --resume <id> |
| 키미 코드 CLI | 3 | kimi --session <id> |
| Qoder CLI | 2 | qodercli --resume <id> |
| 퀀 코드 | 1 | qwen --resume <id> |
| 레타코드 | 1 | default:<agent-id>의 경우 letta --conversation <id> 또는 letta --conversation default --agent <agent-id> |
| OpenCode | 5 | opencode --session <id> |
| 킬로 코드 CLI | 1 | kilo --session <id> |
| 헤르메스 에이전트 | 2 | hermes --resume <id> |
| 마스트라코드 | 1 | mastracode --thread <id> |
설치된 통합 버전을 확인하려면 herdr integration status을 실행하세요. herdr integration install <agent>을 사용하여 오래된 통합을 다시 설치합니다.
지원되지 않거나 누락되거나 유효하지 않거나 중복되거나 오래된 세션 참조는 저장된 패널 디렉터리에서 일반 셸로 복원됩니다.
에이전트 자체 세션 복원이 패널에 적용되는 경우 Herdr는 해당 패널에 대해 저장된 패널 기록을 재생하는 대신 에이전트 세션을 재개합니다.
실시간 핸드오프
실시간 핸드오프는 실행 중인 Herdr 서버를 교체해야 하는 업데이트 및 원격 연결 흐름을 위한 것입니다. 이전 서버에 라이브 패널을 새 서버로 전송하도록 요청하므로 패널 프로세스는 서버 교체 전반에 걸쳐 계속 실행될 수 있습니다.
스냅샷 복원, 패널 기록 재생 및 에이전트 자체 세션 복원과 달리 핸드오프는 이전 서버가 중지된 후 상태를 재구성하는 대신 현재 프로세스를 활성 상태로 유지하려고 합니다.
성공적인 핸드오프는 오래 지속되는 서버 소유 세션 상태(창 PTY 및 프로세스, 에이전트 ID 및 내구성 있는 메타데이터, 교체 서버에 필요한 플러그인/세션 상태)를 보존합니다. 교체 경계를 넘어 일시적인 조정을 유지하지 않습니다. 진행 중인 CLI 또는 API 요청, 대기, 구독 스트림, 클라이언트 소켓 및 패널 간 메시지가 중단될 수 있습니다. 클라이언트는 다시 연결하고 다시 시도해야 합니다.
업데이트된 Unix 서버는 일괄 전송을 통해 한 번에 64개 이상의 패널을 전송할 수 있습니다. 보내는 서버에는 이미 이 지원이 포함되어 있어야 합니다. 이전에 실행 중인 서버는 첫 번째 업그레이드에서 여전히 64개 패널 제한을 적용합니다. 해당 제한에는 일반적인 서버 다시 시작이 필요할 수 있으며, 이로 인해 패널 프로세스가 종료됩니다. 일괄 처리는 업데이트 설치 순서를 변경하거나 기타 핸드오프 호환성 요구 사항을 제거하지 않습니다.
실시간 핸드오프는 실험적이며 선택 가능합니다.
herdr update --handoff
herdr --remote workbox --handoff일반 herdr update은 새 클라이언트를 설치하고 끝점 생성-1 서버를 계속 실행합니다. 일반 herdr --remote workbox은 버전 차이에도 불구하고 호환 가능한 원격 서버를 계속 실행합니다. 1세대 이전 서버에서 일회성 업그레이드를 수행하는 경우에만 중지가 필요합니다. 해당 패널 프로세스를 잃지 않고 지원되는 실행 중인 서버를 명시적으로 교체하려는 경우 --handoff를 사용하세요.
herdr update --handoff은 Herdr의 자체 업데이터가 관리하는 설치에만 적용됩니다. Homebrew, mise 및 Nix 설치는 패키지 관리자를 통해 업데이트되므로 herdr update이 비활성화되어 라이브 핸드오프를 수행할 수 없습니다.