Skip to content

Closiro v2.43.0

Choose a tag to compare

@closedsi-engineering closedsi-engineering released this 28 Oct 01:55
· 1 commit to main since this release
bd2d4a6

Closiro v2.43.0

터미널에서 closiro만 치면 다시 코딩 에이전트가 뜹니다. 코딩 에이전트 모드에서 명령이 남긴 프로세스를 끝까지 추적해 정리하고, 요청에 적힌 수정 금지 조건을 작업 시작 시점의 파일 기준으로 판단하도록 바꿨습니다.

바뀐 실행 방법

  • closiro = 코딩 에이전트. 인자 없이 closiro를 실행하면 코딩 에이전트의 대화 화면이 열립니다(closiro agent와 같습니다). v2.38.0부터 이 자리에 있던 사건 작업 화면은 closiro debug를 인자 없이 실행하면 열립니다. 터미널이 아닐 때 closiro debug는 예전처럼 사용법을 출력합니다.

명령이 남긴 프로세스

  • 프로세스를 pid와 시작 시각으로 추적합니다(Linux /proc, macOS libproc). 재사용된 pid에 신호를 보내지 않습니다. Linux에서는 가디언이 subreaper가 되어, setsid나 이중 fork로 떨어져 나간 자손도 놓치지 않습니다.
  • 명령이 끝나면 아직 살아 있는 자손을 모두 멈추고 결과의 children_stopped에 이름을 남깁니다. 정리 확인(cleanup_confirmed)은 리더가 회수되고, 프로세스 그룹이 사라지고, 남은 소유 프로세스가 없을 때만 참입니다. 확인되지 않은 실행은 호스트가 5초 동안 다시 확인하며, 확인된 프로세스에만 신호를 보내고 시도를 모두 기록합니다.
  • 동작 변경: 일반 명령에서 &, nohup, setsid로 띄운 프로세스는 이제 명령이 끝날 때 함께 멈춥니다. 계속 떠 있어야 하는 서버는 bash_run의 background_policy: "service"와 준비 조건(readiness: 포트·확인 명령·시간 제한)으로 띄웁니다. 이번 실행이 띄운 프로세스가 그 포트를 듣고 있을 때만 준비된 것으로 봅니다.
  • 실행이 끝난 뒤 서비스 넘기기: 정리 책임자를 정한 실행 계약(SNAILER_HANDOFF_CONTRACT=harness)이 있고, 요청이 계속 실행을 원하며, 실행이 완료됐거나 예산·시간을 다 썼을 때만 준비된 서비스를 넘깁니다. 넘긴 기록은 .snailer/handoffs.json에 남습니다. 취소·실패·충돌한 실행은 아무것도 넘기지 않고, 서비스는 계약의 마감 시각을 넘기지 않습니다.

수정 금지 조건 읽기

  • 콜론 뒤 목록을 금지 대상으로 읽습니다. "Do not modify the following files:" 다음 목록이 대상이고, 빈 줄이나 목록이 아닌 줄에서 목록이 끝납니다. 그래서 이어지는 "Create solution.sql"은 금지 대상에 들어가지 않습니다.
  • 대상이 잘린 금지는 전체 금지로 읽지 않습니다. 모든 쓰기를 보류하고 묻습니다. "Do not modify."처럼 대상이 없는 문장은 그대로 전체 금지입니다.
  • "그 데이터베이스 파일" 같은 지칭은 작업 시작 때 있던 파일만 가리킵니다. 명사로 범위를 좁힙니다(database → *.db). 작업 중에 새로 만든 파일은 막지 않습니다.
  • "기존 파일"은 작업 시작 시점의 파일입니다. 작업이 만든 출력 파일은 다시 쓸 수 있고, 지웠다가 다시 쓴 보호 파일은 여전히 보호됩니다. mv/rm/touch/mkdir의 대상도 쓰기로 셉니다.
  • 조건을 모두 따져 봅니다. 거부가 질문보다 앞서고, 요청이 출력으로 지정한 파일을 동시에 보호하면 constraint_conflict로 알립니다. 쓰기 대상을 읽을 수 없는 명령은 나중에 확인할 수 있으면 실행하고, 확인할 수 없으면 보류합니다.
  • 대답할 사람이 없는 실행(--auto-approve 또는 비대화형)에서 결정할 수 없는 쓰기를 만나면 같은 질문을 반복하지 않고 constraint_unresolved로 한 번에 끝냅니다.
  • Terminal-Bench 2.1 시행 두 건(constraints-scheduling, query-optimize)에서 과제가 요구한 파일을 막던 오판을 고쳤습니다.

모델 응답 기록

  • 거부된 응답의 종료 사유를 tool_protocol_error 대신 provider_refusal, output_limit_reached, empty_response, unhandled_stop_reason으로 나눠 보여 줍니다. 실패 분류와 종료 코드(1)는 그대로입니다.
  • SNAILER_DUMP_RESPONSES를 켜면 response-outcomes.jsonl에 요청 ID, HTTP 상태, 스트림 완료 여부, stop_reason, 사용량을 남깁니다(본문은 가립니다).
  • --prompt 값이 -로 시작해도 받아들입니다.

Terminal-Bench 2.1

experiments/terminal-bench-21/에 공식 하니스(Harbor)용 어댑터와 리더보드 규칙(89과제 × 5회, 배수·자원 조정 없음, ATIF 궤적)에 맞춘 전체 실행 스크립트를 넣었습니다. v2.42.1로 89과제를 한 번씩 돌린 결과는 66/89(74.2%), $54.75입니다. 2.1 리더보드는 현재 커뮤니티 제출을 받지 않습니다.