지피지기 백전백퇴

바이브 코딩 (진행중)


요약

전에는 바이브 코딩 좋습니다 짱짱맨 이제 프롬프트만 써도 코딩이 뚝딱!의 느낌으로 글을 썼다면 이제는 아예 바이브 코딩 진행하다가 중간에 잘 안돼서 잠깐 던지고 블로그 글이나 써 보자. 생각해보니 블로그 글을 다시 프롬프트에 집어넣으면 LLM이 더 잘 이해해서 더 나은 코드를 짜 주지 않을까 하는 기대도 좀 있다.

주의

내 블로그 글이 전반적으로 그렇듯이 문제 하나를 직접 hands on으로 해결해보면서 겪은 점들을 정리했을 뿐이기 때문에, 실제 다른 분들이 체감하는 vibe coding과는 많이 다를 수 있다. LLM은 보통 널리 알려진 문제를 널리 알려진 언어로 해결하는 데 강력하기 때문에, 내가 제시하는 사례보다 좀 더 일반적인 사례에 대해서는 얼마든지 잘 구현할 수 있다.

문제

일전에 다른 글에서 소개했듯이, markdown 문서 하나에 개인 노트를 정리하고 있다. 파일 내의 각 h2 섹션이 각각 하나의 노트로 간주되고, 해당 h2 헤더가 제목, 이하 내용이 본문이다.

그렇게 쓰다가 우연히 Markdown-oxide가 다음 형식의 header link를 지원한다는 것을 알았다:

## 쓸데없이 긴 제목 ^asdf

제목으로 돌아가기 [[#asdf]]

---

이렇게 했을 때 본문의 [[#asdf]] 링크는 ^asdf 제목 링크로 연결된다.

오호라… 그럼 내 툴에서 ^로 시작하는 링크를 랜덤하게 생성하면 링크 달기가 좀 더 쉽지 않을까?

다만 갑자기 문서 전체에 대해 링크를 달아야 하면 변화폭이 너무 크니, 문서 최상단의 노트에 대해서만 시범적으로 적용해보려고 했다.

분석

AI한테 이걸 어떻게 해결할거냐고 물어보니 아래와 같이 답변한다.

이 문제를 해결하기 위해서는 다음과 같은 단계가 필요합니다:

  1. 마크다운 문서에서 h2 섹션을 식별합니다.
  2. 각 h2 헤더에 고유한 ID(^로 시작하는)를 생성하여 추가합니다.
  3. 필요한 경우 본문 내에서 해당 ID를 참조하는 링크를 만듭니다.

구현 방법으로는 다음과 같은 접근법을 생각해볼 수 있습니다:

정규식 기반 접근법

그만둬… 나는 이미 treesitter를 써서 문서를 전체 파싱하고 있는데 뭐하러 새로 정규식 써서 파싱하라고 하는거야…

도망

바이브 코딩도 실패, 블로그 글 날로먹기도 실패. 이럴거면 차라리 코딩으로 돌아가서 코딩툴 유료 사용량이나 채워서 쓰는게 나을 것 같다.