AIClaw 3.7.7, 파일 미리보기와 기록된 변경 검토 분리 기능 추가
요약
AIClaw v3.7.7 버전이 인앱 파일 미리보기 기능과 기록된 변경 사항 검토 기능을 추가했습니다. 이로써 사용자는 에이전트가 생성한 결과물을 채팅 옆에서 읽기 전용으로 확인하거나, 도구가 수행한 이전 스냅샷의 변화(diff)를 별도로 비교할 수 있게 되었습니다.
핵심 포인트
- 인앱 미리보기: 텍스트, SQL 등 다양한 형식의 결과를 편집 없이 검사 가능
- 변경 기록 검토: 에이전트가 생성한 과거 스냅샷을 Git diff와는 다른 방식으로 비교 제공
- 명확한 구분: 현재 파일 내용과 기록된 스냅샷은 별개의 정보임을 사용자에게 명시함
생성된 파일은 검사할 수 있을 때만 유용합니다. 채팅은 SQL 쿼리가 업데이트되었거나 보고서가 저장되었다고 말할 수 있지만, 다른 애플리케이션으로 전환하면 검토가 중단되고 현재 파일을 열어도 에이전트가 무엇을 변경했는지 반드시 보여주지는 않습니다.
AIClaw v3.7.7는 10월 12일에 출시되었으며, 인앱(in-app) 파일 미리보기와 기록된 수정 사항의 별도 보기 기능을 추가했습니다. 작성 시점 기준으로 v3.7.9가 최신 공개 버전입니다. 여기서 설명하는 동작은 v3.7.7에 포함되었으며, 미공개 제안이 아닙니다.
중요한 구분점은 현재 파일을 읽는 것과 도구가 변경했을 때 기록된 스냅샷을 검토하는 것 사이의 차이입니다.
대화 옆에서 결과 열기
지원되는 파일 카드를 클릭하면 채팅 옆에 읽기 전용 패널이 열립니다. 텍스트, SQL, Markdown 및 일반적인 소스 코드 형식은 로드된 문법(grammar)을 사용할 수 있는 경우 줄 번호, 콘텐츠 복사, 구문 강조 표시 기능을 제공받습니다. Markdown의 경우 렌더링된 보기와 소스 보기를 모두 가집니다. 창이 좁으면 미리보기가 두 패널을 무한정 압축하는 대신 메인 콘텐츠 위에 오버레이됩니다.
예를 들어, 에이전트가 다음과 같은 쿼리를 반환할 수 있습니다:
SELECT id, email FROM users WHERE active = 1;
에디터를 실행하지 않고도 문맥 속에서 이 쿼리를 읽을 수 있습니다. 이것은 편집(editing)이 아니라 검사(inspection)입니다: 해당 패널은 변경 사항을 저장하지 않습니다. Office 문서와 같은 지원되지 않는 형식은 기존의 시스템 열기 동작을 유지합니다.
format map은 명시적 확장자와 소수의 인식된 파일 이름을 통해 언어를 선택합니다. highlighter는 자동 감지 대신 명시적인 언어를 사용합니다. 사용할 수 없는 문법과 대용량 입력은 이스케이프된 일반 텍스트로 폴백(fallback)됩니다.
기록된 diff는 Git diff가 아닙니다
작업 패널의 파일 변경 항목은 동일한 미리보기 패널을 비교 모드로 엽니다. 사용자는 나란히 보기(side-by-side) 또는 통합 보기(unified view)를 선택하거나, 기록된 이전 및 이후 스냅샷을 읽을 수 있습니다. 삭제되거나 추가된 줄에는 별도의 줄 번호가 표시됩니다.
예를 들어, 어떤 도구가 쿼리를 ID만 선택하는 것에서 ID와 이메일을 선택하도록 변경했다고 가정해 봅시다. 비교는 나중에 누군가가 디스크의 파일을 편집하더라도 기록된 전환을 보여줍니다.
이것 또한 경계입니다: 기록된 이후 스냅샷은 현재 디스크 내용에 대한 주장이 아닙니다. 패널은 이 구분을 상기시키는 알림을 표시합니다. 이는 Git HEAD와 비교하거나, 스테이징된 변경 사항을 검사하거나, 일반적인 저장소 검토 뷰를 제공하지 않습니다.
diff helper는 줄 비교를 수행합니다. 두 줄 수의 곱이 250,000을 초과하면, 대규모 비교 행렬을 할당하는 대신 대체 블록(replacement blocks)을 사용합니다. 패널은 표시되는 차이를 3,000줄로 제한하므로, 매우 큰 변경 사항은 완전한 검토를 위해 외부 편집기가 필요할 수 있습니다.
로컬 파일 읽기는 호스트 경계가 필요함
렌더러는 경로와 소유 세션 ID 모두를 포함하여 Electron IPC를 통해 미리보기를 요청합니다. 호스트는 나중에 선택되는 작업 공간이 아니라, 해당 세션의 작업 디렉터리를 사용하여 상대 경로를 해결합니다.
reader는 요청된 경로와 그 정규 대상 모두에 대해 보호된 위치를 확인합니다. 이는 열린 디스크립터가 일반 파일(regular file)을 참조하는지 확인하고, 읽기를 제한하며, NUL 바이트 또는 유효하지 않은 UTF-8을 거부합니다. 디스크 텍스트 미리보기는 512 KiB 제한이 있습니다. 표시되는 소스 콘텐츠도 크기와 줄 수에 의해 제한됩니다.
이러한 검사들은 미리보기 경로를 보호하는 것이며, 모든 파일 시스템 작업에 대한 일반적인 샌드박스는 아닙니다. 비교 뷰는 파일을 다시 읽는 대신 기록된 스냅샷을 사용합니다.
별도로 처리해야 할 UI 경쟁 조건(race)이 있습니다. 읽기 작업이 완료된 후 사용자가 채팅을 전환하거나 다른 파일을 열 경우, store는 오래된(stale) 결과를 무시합니다. 지연 응답이 다른 대화의 미리보기를 다시 열어서는 안 됩니다.
Markdown은 실행 표면이 아닌 문서로 유지됨
로컬 Markdown 미리보기는 기존 Markdown 파서와 Sanitizer를 재사용하며, preview renderer에서는 이미지 태그 및 인라인 스타일 속성이 금지됩니다. 임베디드 이미지는 자동으로 가져와지지 않습니다. 상대 파일 참조는 문서의 디렉토리에서 해결됩니다.
이것은 임의의 HTML 애플리케이션을 위한 브라우저가 아니며, MDX 확장자를 인식한다고 해서 MDX 컴포넌트가 실행되는 것은 아닙니다.
테스트가 확립하는 것들
reader tests는 지원되는 형식, 보호된 경로 및 심볼릭 링크 별칭, 크기가 큰 텍스트 및 유효하지 않은 텍스트, 그리고 특수 파일 거부를 다룹니다. Diff tests는 줄 번호 매기기와 쌍을 이루는 대체 행(paired replacement rows)을 확인합니다.
desktop workflow smoke test는 Markdown/소스 전환, SQL 비교, 지연 읽기 격리 등 fixture 호스트 응답을 사용하여 실제 Vue/preload 인터페이스를 테스트합니다. 이는 해당 UI 및 브릿지 케이스를 검증할 뿐이며, 모든 언어 문법이나 모든 운영 체제의 파일 열기 동작을 증명하는 것은 아닙니다.
v3.7.7 릴리스 노트는 전체 로컬 검사(full local check)의 일부로 259개의 renderer/helper 테스트와 86개의 work-panel UI 검사가 통과했다고 보고합니다. 이 수치는 미리보기 전용 카운트가 아닌 전체 스위트 합계입니다. release CI 역시 성공했습니다. 같은 노트에는 관련 없는 라이브 트랜스크립션(live transcription) 타임아웃과 성공적인 목표 재시도(targeted retry) 기록이 있습니다. 픽스처 기반 미리보기 검사(fixture-based preview checks)를 라이브 모델 유효성 검사(live-model validation)와 혼동해서는 안 됩니다.
현재 파일 검사(current-file inspection)와 기록된 변경 검토(recorded-change review)를 시각적으로 분리하여, 역사적 스냅샷이 작업 공간의 현재 상태임을 암시하지 않으면서 결과를 평가하기 쉽게 만듭니다.
본 기사는 AI 에이전트에 의해 생성되었으며 공개된 AIClaw 소스, 릴리스 노트 및 릴리스 CI 결과와 비교 검토되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기