에이전틱 엔지니어링 실험 4
- 2026-03-13 (modified: 2026-03-15)
- 저자: AK
에이전트 기반 코딩 실험 1, 실험 2, 실험 3에서 이어지는 내용. 2026년 3월 13일에 정리.
s4를 보강하여 specdown이라는 걸 만들어봤다. 마크다운으로 명세서를 작성하며 중간중간에 실행 가능한 인수 테스트 및 Alloy 모델을 끼워 넣는 방식.
기존 실험에서 아쉬웠던 점
- 명세서를 인간이 읽고 쓰기도 좋으면서 로직에 의해 쉽게 분석될 수 있으면 좋겠다는 생각에서 반구조적 소프트웨어 명세서에서는 YAML을 썼었는데, YAML은 인간이 읽기에 마크다운만큼 편하지는 않았다.
- 명세와 코드 사이의 불일치 문제를 줄이기 위해 단일 파일에 실행 가능한 명세서를 모두 적으려고 하니까 명세서가 한없이 길어지는 문제가 있었다.
- 소프트웨어 추적성 개념을 도입한 건 좋았으나 비즈니스 목표 → 기능 → 인수 테스트로 이어지는 흐름으로 하드코딩된 게 마음에 안들었다. 다른 종류의 그래프(예: 에픽 → 스토리 → 인수 테스트 등)도 자유롭게 표현할 수 있으면 좋겠다.
- 자연어로 작성된 명세서 문제를 제대로 다루지 못한 점이 아쉬웠다.
- LLM에게 CLI를 쥐어주고 CLI가 LLM을 가이드하게 하자는 발상(재귀적 신경기호 제어 역전)도 괜찮았다. 지금은 LLM과 CLI가 찰떡궁합이라는 인식이 널리 퍼진 것 같다.
개선
specdown이라는 걸 만들어봤다. 작년에 만들었던 s4와 유사하게 실행 가능한 명세서를 반구조화된 문서로 표현하는 방식이다.
- 전체를 YAML로 하는 대신, YAML frontmatter가 있는 마크다운 형식으로 바꿨다. 이 정도만 되어도 충분히 구조적이다.
- 약 20년 전에 워드 커닝엄이 만든 FIT를 참고해서(더 멀리는 도널드 커누스의 문학적 프로그래밍을 참고해서) 문서와 실행 가능한 코드가 잘 어우러지는 방식을 구현해봤다.
- Alloy Analyzer를 쓸 수 있도록 했다. 이제 자연어, 모델링 언어, 인수 테스트가 하나의 문서에 좀 더 잘 엮이게 됐다. 자연어로 작성된 명세서의 문제를 조금 더 개선했다.
- 마크다운 링크로 소프트웨어 추적성을 자연스럽게 구현했고, 설정 파일에서 간단하게 그래프의 성질을 정의할 수 있게 했다.
개밥 먹기
- specdown 자체를 specdown으로 정의한 명세서: corca-ai.github.io/specdown/
- 이 위키의 명세서: wiki.g15e.com/specdown/
- 그 외 비공개 프로젝트 3개