HN 표시: Claude Code에 대한 도구별 체크포인트
hackernews
|
|
📦 오픈소스
#claude
#claude code
#command r
#show hn
#개발 도구
#복구
#체크포인트
원문 출처: hackernews · Genesis Park에서 요약 및 분석
요약
오픈소스 도구인 'daedalus'는 AI 코딩 에이전트인 Claude Code 실행 중 파일 수정이나 셸 명령어 등으로 인해 작업 상태가 손상되는 것을 방지하기 위해, 위험한 동작 전 로컬 체크포인트를 생성하는 기능을 제공합니다. 사용자는 문제 발생 시 작업 공간을 특정 시점으로 되돌리는 'restore' 기능과 함께, 파일 복구뿐만 아니라 기존의 Claude 세션까지 이어서 작업을 재개할 수 있는 'rewind' 기능 중 상황에 맞게 복구 경로를 선택할 수 있습니다. 특히 일반적인 Git 되돌리기 기능보다 더 세밀하게 에이전트의 실수를 복구할 수 있도록 설계되었으며, 현재 v1 버전은 Claude Code 환경에서만 제한적으로 작동합니다.
본문
Repo-local checkpointing and recovery for Claude Code runs. daedalus wraps Claude Code, creates checkpoints before configured mutation tools, and gives you two recovery paths: ddl restore restores the workspace to a checkpointddl rewind restores the workspace and resumes the Claude-backed run when rewind data was captured Git still owns commit history. daedalus handles the failure mode where an agent run was going fine until one edit or shell command damaged the working state. Status: early and intentionally narrow. daedalus is currently Claude-first and only supports Claude Code forddl run . Run Claude under daedalus : ddl run -- claude If a protected action goes wrong: ddl log ddl restore If the checkpoint came from a Claude-backed run and rewind state was captured: ddl rewind That is the whole model: - checkpoint before risky action - inspect recent checkpoints - restore files, or restore files and resume the run AI coding workflows have a specific failure mode: - the agent has already made useful progress - a later edit or shell command damages the workspace - a normal Git revert is too coarse or too late - starting a fresh agent session throws away useful context daedalus is built for that case. It does not replace Git. It adds short-range recovery around live agent actions. Install from crates.io after the first publish: cargo install daedalus-cli The published package is daedalus-cli . The installed command remains ddl . Install from a local checkout: cargo install --path crates/ddl Initialize per-repo Daedalus state: ddl init Inspect or edit checkpoint rules for the current checkout: ddl config ddl config edit Run Claude under protection: ddl run -- claude Inspect recent checkpoints and recover when needed: ddl log ddl restore ddl rewind ddl log opens an interactive recovery console in a TTY and prints plain text in non-interactive contexts. daedalus owns the Claude run and checkpoints before configured mutation boundaries. Today that means: Edit(*) MultiEdit(*) Write(*) - configured Bash(...) rules ddl init writes per-repo config under ~/.daedalus/repos//config.json by default or $DAEDALUS_HOME/repos//config.json when overridden: { "checkpointing": { "before": [ "Edit(*)", "MultiEdit(*)", "Write(*)", "Bash(rm:*)", "Bash(mv:*)" ] } } Recovery flow: Claude run | v checkpoint before protected action | v bad action lands | +-+-------------------+ | | v v restore rewind files only files + Claude session resume Use ddl restore when you want the workspace back at a checkpoint. Use ddl rewind when all of the following are true: - the checkpoint came from a Claude-backed run owned by daedalus - workspace snapshot data still exists - Claude rewind state was captured for that checkpoint ddl rewind first restores the checkpoint, then attempts to resume the same Claude session. If Claude context is unavailable, or the checkpoint is not rewindable, ddl rewind fails clearly and ddl restore remains available. Protected today: - workspace files - per-repo checkpoint metadata under ~/.daedalus/repos// - Claude-backed local rewind snapshot data when captured Checkpoint coverage today: Edit(*) MultiEdit(*) Write(*) - configured Bash(...) For Claude-backed runs owned by daedalus , checkpoints also record: - the Claude session id - a best-effort local Claude rewind snapshot under ~/.daedalus/repos//runtime//claude-checkpoints// That snapshot currently covers: ~/.claude/projects//.jsonl ~/.claude/file-history// The v1 scope is intentionally narrow: - Claude Code only. Other runtimes are unsupported for ddl run . ddl rewind only works for Claude-backed checkpoints with captured rewind state..git is out of scope.daedalus does not snapshot, restore, or protect repo metadata.- External side effects outside the workspace are not rewound. - The current Claude snapshot is best-effort and does not cover all of ~/.claude , subagent state, task state, telemetry, or vendor UI state. - Symlink snapshots are rejected. ddl restore replaces the current workspace snapshot and removes files created after the checkpoint while leaving.git andtarget untouched. ddl init ddl config [path|edit] ddl where ddl run -- claude ddl shell -- ddl log ddl diff [checkpoint_a] [checkpoint_b] ddl restore ddl rewind ddl init creates per-repo state under~/.daedalus by default, initializes the shadow git repository, and writes the default checkpointing config there on first init- re-running ddl init preserves an existingconfig.json and reports that the repo is already initialized ddl config shows the current repo config andddl config edit opens it in$EDITOR ddl where prints the current checkout's repo root, state id, state directory, and key metadata paths so users can inspect or remove stored state directlyddl run launches Claude from the repo root with checkpoint protection enabledddl shell runs a shell command through the same checkpoint matcherddl log shows recent checkpoints and available recovery actionsddl diff compares checkpoint snapshotsddl restore
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유