Devotd Github
새 소식AI 에이전트

evannzhongg/nosis — 공유 파일 잠금 헬퍼로 잠금 로직 통합

Nosis가 메모리·세션 잠금을 공유 파일 잠금 헬퍼로 통합하고, 스케줄러 리더십 잠금의 경합과 오류를 분리 처리한 커밋을 정리합니다.

저장소 정보evannzhongg/nosis ↗

Nosis가 메모리·세션 잠금을 공유 파일 잠금 헬퍼로 통합하고, 스케줄러 리더십 잠금의 경합과 오류를 분리 처리한 커밋을 정리합니다.

GitHub 설명: Nosis is a lightweight personal agent runtime: per-session execution boundaries with OS-level sandboxing, computer use, a full built-in toolset, Skill / Plugin / MCP extensions, one runtime shared by GUI and TUI, and file-persisted sessions, plans, and memory.

스타
★ 61
포크
5
언어
Python
라이선스
MIT
원문 보기 ↗GitHub에서 보기 ↗

evannzhongg/nosis는 세션별 실행 경계와 OS 수준 샌드박싱, 컴퓨터 사용 기능, 내장 도구 모음, Skill·Plugin·MCP 확장을 한데 묶은 경량 개인 에이전트 런타임이다. 2026년 11월 2일 GitHub 커밋 03cc986은 메모리 쓰기와 세션 저장소가 각자 들고 있던 잠금 코드를 공유 파일 잠금 헬퍼로 합쳤다. 변경 230줄 가운데 146줄 추가, 84줄 삭제였다.

acquire_file_lock에 blocking 옵션이 붙어 메모리 잠금과 세션 잠금이 헬퍼를 기다리는 경로로 통일됐고, 두 모듈에 중복돼 있던 _lock_file·_unlock_file 구현은 사라졌다. 잠금 파일 크기 확인도 손잡이의 append 모드 위치 대신 os.fstat 결과로 바꿨다. Windows의 바이트 범위 잠금은 잠긴 바이트의 읽기도 막으므로 크기를 읽지 않고 fstat으로 확인한다는 이유다. 스케줄러는 리더십 잠금 경합과 그 밖의 파일시스템 오류를 나눠 처리한다. 경합은 BlockingIOError로 받아 다음 주기에 계속 폴링하고, 그 외 오류는 예외를 로그로 남긴 뒤 스케줄 루프를 끝내고 리더십 잠금을 해제한다. 테스트 네 개도 함께 바뀌었다.

다만 이 커밋은 기능 추가보다 내부 구조 정리에 가깝다. README에는 스케줄러의 오류 처리 정책이 반영됐지만 성능 수치나 동시성 검증 결과는 함께 제시되지 않았다. 블로킹 모드가 다른 소유자를 기다린다는 설명만 있고 대기 상한이나 타임아웃에 대한 언급은 없다. 배포 버전 태그도 묶이지 않아 어느 릴리스에 들어갔는지는 이 커밋 정보만으로 알기 어렵다. 여러 프로세스가 같은 세션 디렉터리를 공유하는 환경에서 경합이 늘면 블로킹 대기도 늘어난다는 점까지 고려하면, 파일 잠금 경로를 다시 쓰는 쪽은 회귀를 직접 확인할 필요가 있다.