Devotd Github
새 소식AI 에이전트

neatlogs/neatroots 4f0b3ad — quiet-run 스윕 인덱스와 시작 복구 분리

neatlogs/neatroots는 2026년 11월 2일 커밋에서 quiet-run 스윕 쿼리에 인덱스를 걸고 시작 복구를 백그라운드 재확인과 분리했다.

저장소 정보neatlogs/neatroots ↗

neatlogs/neatroots는 2026년 11월 2일 커밋에서 quiet-run 스윕 쿼리에 인덱스를 걸고 시작 복구를 백그라운드 재확인과 분리했다.

GitHub 설명: neatroots: see, check and replay your AI agent's runs on your machine while you build it. Local-first, by Neatlogs.

스타
★ 73
포크
45
언어
TypeScript
라이선스
Apache-2.0
최신 릴리스
v0.2.8
원문 보기 ↗GitHub에서 보기 ↗

neatroots는 로컬에서 동작하는 AI 에이전트 실행 기록 도구다. 에이전트가 만든 실행을 확인하고 그대로 재현(replay)할 수 있게 하며, 최신 커밋 4f0b3ad(2026년 11월 2일, #675)은 내부 quiet-run 스윕의 조회 성능과 시작 복구 순서를 함께 손봤다. quiet-run 스윕은 종료 신호를 보내지 않은 실행을 주기적으로 찾아 interrupted 상태로 표시하고 재확인하는 작업이다.

커밋은 두 가지를 함께 바꾼다. 먼저 60초마다 실행되는 스윕의 쿼리가 runs 테이블 전체를 훑던 것을 (status, doctor, complete, updated_ms) 인덱스로 대체했다. 커밋 메시지는 10만 개 run이 쌓인 스토어에서 7.1 ms에서 0.52 ms로 줄었다고 밝힌다. 둘째로 스윕이 처리할 run을 먼저 한 번의 빠른 DB 패스로 클레임하고 재확인은 백그라운드로 넘기면서, 시작 시 복구(resumeUnfinished)가 옛 run마다 모델 재확인 하나씩을 기다리지 않게 했다. 클레임 상한은 SQL LIMIT으로 쿼리 안에서 적용돼 전체 행을 읽어 온 뒤 자르는 방식이 사라졌다.

다만 한 번의 스윕이 동기적으로 클레임하는 수에는 상한이 있어, 오래 멈췄던 시점에 쌓인 잔여분은 다음 스윕이 대신 처리한다. 재확인이 실패하면 경고만 남기고 같은 배치의 나머지는 계속 진행하지만, 복구까지 실패한 run은 다음 스윕이 버려진 클레임으로 회수하기 전까지 interrupted로 남는다. 완료된 스윕은 runs 테이블에 추가된 quiet_sweep_done 컬럼에 기록된다. 성능 수치는 커밋 메시지에 적힌 값이고 라이선스와 별 수치는 제시되지 않았다. 테스트 파일 quiet-run.test.ts는 467줄이 늘었고 실패 경로를 함께 다루지만, 전체 회귀 통과 여부는 커밋 정보만으로 알 수 없다.