AI

AI가 밤에 일한다 (2) - 자동화가 버그를 낳고, 버그가 교훈을 낳는다

시간이 다다! 2026. 3. 30. 18:51
반응형

 

자동화를 믿는다고 해도, 가끔은 뒤통수를 맞는다.

얼마 전에 이런 일이 있었다.

옵시디언에서 Dataview라는 플러그인을 쓴다. 노트들의 속성을 읽어서 표나 목록을 만들어주는 기능인데, 이게 정말 유용하다. 마감일 다가오는 업무들을 자동으로 모아주거나, 진행 중인 과제를 한 눈에 보여준다.

근데 어느 날 갑자기 이게 이상하게 동작하기 시작했다.

분명히 완료 처리를 한 노트가 "진행 중인 업무"에 계속 뜨는 거다. 어이없지. 분명히 완료여부를 true로 바꿨는데 왜 이러지?

처음엔 캐시 문제인가 싶었다. 캐시를 지워봤다. 안 됐다.

플러그인 재시작해봤다. 안 됐다.

볼트를 껐다 켰다. 안 됐다.

한 시간쯤 헤맸나. 그러다가 문제의 원인을 찾았다. frontmatter에 중괄호 두 개가 혼자 있었다.

배경을 설명하면, 얼마 전에 노트들을 일괄적으로 배치 편집하는 스크립트를 돌렸다. 효율적이라고 생각했는데, 그 과정에서 일부 노트의 frontmatter에 빈 중괄호가 들어가버린 거다.

YAML에서 빈 중괄호는 "빈 오브젝트"를 의미한다. 근데 Obsidian이 이걸 파싱할 때, 이 줄을 만나면 이후 모든 속성을 그냥 무시해버린다.

그러니까 완료여부가 true로 적혀있어도, 그 위에 빈 중괄호가 있으면 없는 속성 취급이 되는 거다.

30개 파일에서 이게 발견됐다.

참 어이가 없었다. 한 줄짜리 버그 때문에 30개 파일이 다 망가져 있었던 거니까.

직접 고쳐야 했고, 직접 고쳤다.

근데 이게 배울 게 있었다. 자동화 스크립트로 배치 편집을 할 때, YAML 문법을 검증하는 단계가 없었던 거다. 편집은 했는데 검증이 없었다. 앞으로는 배치 편집 후에 반드시 문법 검사를 해야 한다는 교훈이 됐다.

Dataview가 이상하게 동작하면 캐시보다 YAML 문법을 먼저 의심하라.

이것도 피드백으로 기록해뒀다. 다음번에 같은 실수를 반복하지 않도록.

자동화가 편리하긴 한데, 자동화가 만든 버그를 자동화가 다 잡아주진 않는다. 결국 사람 눈이 필요한 지점은 남아있다.

실패가 쌓여서 시스템이 더 단단해진다. 이게 루프가 돌수록 나아진다는 말의 진짜 의미인 것 같다.

반응형