노트를 내용별 폴더로 정리했더라도, 저장하는 코드가 이전의 공통 폴더를 기본값(default value)으로 지정해 두었다면, 다음 저장 시 구 버전의 위치를 다시 만들 수 있습니다.
제가 직접 만든 AI 어시스턴트에는 프로젝트를 지정하면 해당 프로젝트별로, 아무것도 지정하지 않으면 공통 장소에 추가하는 도구가 있었습니다. 노트를 내용별 카테고리로 정리한 후, 이 '생략할 경우 공통 폴더에 저장'되는 동작을 남기지 않도록, 저장 위치를 선택하는 경계(boundary)를 변경했습니다.
이전의 공통 폴더를 새로운 지식 폴더 바로 아래로 대체만 한다고 해서는, 분류되지 못한 메모들이 별개의 한 장소에 모이는 것을 막을 수 없습니다.
이번에 선택한 방법은, 프로젝트를 지정하지 않을 때 기존 내용 카테고리를 명시적으로 요구하는 방식입니다. 즉, 프로젝트도 없고 카테고리도 없는 경우, 카테고리가 허용한 목록에 없는 경우, 그리고 프로젝트와 카테고리가 모두 있는 경우 이 세 가지 상황에서는 저장하지 않고 오류(error)를 반환합니다.
구현 분기(implementation branch)를 단순화하면 다음 순서입니다.
프로젝트명과 카테고리명의 앞뒤 공백을 제거한다.
→ 둘 다 존재할 경우 저장하지 않고 오류 발생
→ 프로젝트만 있을 경우 기존의 프로젝트별 저장 방식으로 진행
...
입력의 모순이나 부족함을 확인하는 위치를 디렉터리 생성보다 앞으로 옮겼습니다. 이는 단순히 '올바른 장소에 저장되었음'을 확인하는 것을 넘어, '분류할 수 없을 때는 아무것도 만들어지지 않음'을 확실히 할 수 있는 경계로 만들기 위함입니다.
모델에게 전달되는 도구 정의(tool definition)에는 카테고리 열거 목록(enumeration)을 추가하고, 한/영 설명을 업데이트했습니다. 또한 호출하는 쪽에서 저장 함수로 해당 카테고리를 전달하는 경로도 변경했습니다.
그럼에도 불구하고 설명에 '카테고리를 선택한다'라고만 적는 것으로 완료되지 않습니다. 저장 함수 자체가 목록을 검사하여 부족하거나 둘 다 지정된 경우를 거부합니다. 프로젝트와 카테고리가 모두 전달되었을 때, 어느 한쪽을 암묵적으로 우선시하지도 않습니다.
이 변경 사항은 분류할 수 없을 때는 반드시 사용자에게 확인하는 화면이 작동했다는 것을 의미하지는 않습니다. 이는 저장 함수의 비저장 조건과 모델을 위한 안내를 정비한 범위에 국한됩니다.
저장된 시험 기록에서는 임시 폴더와 더미 데이터를 사용하여 다음을 확인했습니다.
| 조건 | 확인 결과 |
|---|
| 프로젝트/카테고리 모두 미지정 | 오류 발생. 저장용 루트 디렉터리도 생성되지 않음 |
| ... | |
| 어시스턴트 측에서는 기존 시험을 포함한 3개 파일 총 57건이 성공적으로 기록되었습니다. 이 57건 전부를 이번에 추가했다는 의미는 아닙니다. main 계층의 TypeScript 타입 검사(type checking)도 성공했습니다. | |
관련된 단방향 노트 생성 스크립트에는 별도의 모의 시험(mock test)이 1건 있습니다. 실제 생성 처리는 임시적인 home과 제한된 파일 접근으로 구동하여, 새로운 카테고리 내의 생성 위치, 진입 노트의 위치, 손글씨 원문의 유지, 그리고 기존 폴더가 만들어지지 않음을 확인했습니다.
확인한 것은 2026년 10월 21일 JST 기준 저장된 차이점과 결과입니다. 실행 소스 3건과 관련 테스트 4건을 적용하여, 적용한 내용과 시험한 내용의 해시(hash)가 일치하는 기록이 있습니다. 본고를 위해 테스트를 재실행하지는 않았습니다.
실제 애플리케이션 구동, 배포물에 반영되는 빌드, 실제 vault로의 자동 저장, 실제 동기화는 이 기록에서 확인하지 못했습니다. 생성 스크립트의 기존 파일 정리 처리 역시 이번 변경에서는 다시 만들지 않았습니다. 실제 동기화 전에는, 이동 후에 늘어난 손글씨 추가 내용을 어떻게 유지할지에 대해 별도의 확인이 필요합니다.
목록 외 카테고리를 거부하는 테스트는 모든 경로 조작(path operation), 심링크(symlink), 동시 쓰기(concurrent write)에 대한 안전성을 증명하는 것은 아닙니다.
이번 경계 설정은 작은 것입니다. 저장할 위치를 결정하지 못한 입력을 편리한 기본값으로 강제하여 쓰기로 진행시키지 않는 조건입니다. 이 조건을 안내문뿐만 아니라 저장 함수와 비저장 테스트에 두었습니다.
본고는 구현과 저장된 검증 기록을 정리한 내용입니다. 구현, 검증 및 본고의 정리/작성에는 AI를 사용했습니다.