본문으로 건너뛰기

LLM 보조 개발을 위한 실전 워크플로

LLM은 설계가 끝난 작업의 구현을 가속하지만, 구조와 검증 기준은 엔지니어가 정해야 한다는 실전 원칙을 정리합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

LLM 보조 개발에서 모델은 반복적인 보일러플레이트, 코드베이스 탐색, 익숙하지 않은 언어의 문법 변환을 빠르게 처리하지만 설계와 도메인 판단까지 맡기면 구조적으로 잘못된 코드를 만들기 쉽습니다. 사람은 목표와 알고리즘, 파일 구조, 런타임 제약을 먼저 정하고 모델에는 Mermaid.js 계획, 독립 작업, 테스트 계약을 제공해야 합니다. 컴포넌트 및 end-to-end 테스트와 benchmark가 결과를 평가하고, Git commit이 실험 실패를 되돌리는 안전망이 됩니다. Dirge처럼 SQLite 작업 추적, critic, verifier, retry fallback을 갖춘 하네스는 모델을 결정적 제어 구조 안에 배치해 더 복잡한 작업도 제한된 범위에서 수행하게 합니다.

섹션별 상세

01
LLM 보조 개발은 사람이 모든 코드를 한 줄씩 쌓는 방식과 달리 모델이 초기에 많은 코드를 만든 뒤 필요한 부분만 남기는 흐름으로 진행됩니다. Agentic Loop에서는 모델이 대략적인 구현을 내놓고 테스트 실행 결과를 피드백으로 받아 수정하며, 이 반복이 유전 알고리즘처럼 요구사항에 맞는 해를 찾아가는 선택 압력으로 작동합니다. 반복 작업이 빠르다는 장점은 있지만, 최종 구조와 평가 기준을 사람이 정하지 않으면 빠른 생성이 곧 좋은 설계로 이어지지 않습니다.
02
LLM은 공개 코드에 자주 등장하는 보일러플레이트, API 엔드포인트 생성, JSON 응답을 이용한 서비스 구현, UI 구성처럼 반복 패턴이 뚜렷한 작업에 적합합니다. 호출 그래프를 따라가며 특정 엔드포인트의 구현과 매개변수를 찾거나, 익숙하지 않은 언어의 문법과 관용적 라이브러리 사용으로 의사코드를 옮기는 탐색 작업에도 시간을 줄여줍니다. 글쓴이는 10년 넘게 다루지 않은 JavaScript 프로젝트에서 DeepSeek를 활용해 익숙한 Clojure를 사용할 때와 비슷한 생산성을 얻었지만, 문제의 본질과 도메인 판단은 여전히 자신의 역량에 의존했다고 말합니다.
근거
  • LLM은 반복적인 보일러플레이트와 익숙하지 않은 언어의 문법 변환에 강하지만, 설계와 아키텍처 판단을 대신하지 못합니다. What to Delegate와 When to Take the Wheel 부분의 JSON 엔드포인트, JavaScript, Clojure 관련 사례
03
에이전트가 가장 자주 실패하는 지점은 프로젝트 고유의 실행 환경과 구조적 제약을 충분히 모르는 상태에서 모호한 목표를 임의의 구현으로 바꾸는 경우입니다. 예를 들어 Clojure 방언이라는 정보만 주면 존재하지 않는 JVM 도구 체인을 선택할 수 있으므로, 순수 Chez Scheme 런타임과 make 및 chez --script 기반 빌드 방식, 권위 있는 소스 경로를 명시해야 합니다. 문자열 메서드의 성능 개선처럼 구조가 중요한 문제에서도 에이전트는 타입 추론으로 컴파일 시점에 직접 호출해야 하는 상황을 일반 디스패치 테이블의 순서만 바꾸는 방식으로 처리할 수 있어, 입력과 출력뿐 아니라 내부 알고리즘과 자료구조 제약까지 미리 고정해야 합니다.
근거
  • 모델에 프로젝트의 런타임, 빌드 방식, 권위 있는 소스 경로를 명시하지 않으면 존재하지 않는 도구 체인이나 잘못된 실행 방식을 선택할 수 있습니다. When to Take the Wheel 부분의 pure Chez Scheme, make, chez --script, host/chez/*.ss, jolt-core/*.clj 사례
04
효율적인 작업 순서는 사람이 먼저 목표, 알고리즘, 기존 아키텍처와 파일 구조를 정한 뒤 모델에게 요구사항과 단계별 계획을 맡기는 방식입니다. 모델이 만든 Markdown 계획과 Mermaid.js 흐름도를 먼저 검토하고, 각 단계를 독립적인 작업으로 나눈 다음 브랜치와 pull request 단위로 구현하게 하면 변경 범위와 검토 대상이 선명해집니다. 결합도가 낮고 상태 전달이 명시적인 functional style, 독립 단계로 나뉜 구조, 라우팅을 일급 요소로 취급하는 state machine이 이런 분할과 검토를 돕습니다.
05
테스트는 LLM이 구현을 맞춰야 하는 요구사항 계약이자 기존 기능을 지키는 회귀 방지 장치로 기능합니다. 컴포넌트 기능 테스트와 end-to-end 통합 테스트를 먼저 마련하고, 웹 앱에서는 Storybook과 Playwright로 사용자의 전체 흐름을 재현하며, 테스트가 포착하지 못하는 CPU와 메모리 특성은 별도 benchmarking suite로 측정해야 합니다. 안정적으로 테스트를 통과하고 의도한 동작을 보이는 순간마다 Git commit을 남기면 잘못된 실험을 즉시 되돌릴 수 있고, 한 번의 구현이 근본적으로 어긋났을 때 임시 수정 누적 대신 문제를 다시 정의할 수 있습니다.
근거
  • 테스트는 LLM 보조 개발에서 기능 요구사항 계약과 회귀 방지 장치로 작동합니다. Use Tests as a Contract 부분의 테스트 주도 개발, end-to-end 테스트, Playwright, benchmarking suite 설명
06
에이전틱 하네스는 모델 자체보다 프로젝트의 실행 규칙과 검증 절차를 어떻게 감싸는지가 중요합니다. 글쓴이가 만든 Dirge는 프로젝트별 .dirge 플러그인, SQLite 기반 프로젝트 메모리와 작업 추적, 현재 작업을 컨텍스트 상단에 주입하는 방식, diff를 별도 critic 역할이 검토하는 흐름을 사용합니다. 괄호 불일치처럼 기계적으로 고칠 수 있는 오류는 하네스가 직접 수정하고, verifier와 critic, code reviewer를 고정된 종료 게이트로 배치해 모델이 전체 에이전트가 아니라 결정적 제어 구조 안의 행동 생성 노드로 작동하게 합니다.
07
LLM은 설계자나 도메인 전문가를 대체하기보다 보일러플레이트 작성, 문법 변환, 코드베이스 탐색, 빠른 프로토타이핑을 가속하는 도구로 자리매김합니다. 글쓴이는 Clojure 내부 동작과 목표 구현을 거의 20년간 이해해 온 경험 덕분에 Clojure compiler를 만들 때 결과의 옳고 그름과 피해야 할 함정을 판별할 수 있었다고 말합니다. 반대로 익숙하지 않은 영역에서는 생성된 코드의 정확성을 평가할 기준이 없으므로, LLM 사용의 전제는 모델 선택보다 문제 이해와 아키텍처 판단입니다.
근거
  • Dirge는 SQLite 기반 작업 추적과 critic, verifier 같은 고정 검증 절차를 사용해 모델의 작업 범위와 종료 조건을 통제합니다. The Harness Matters 부분의 .dirge 플러그인, SQLite datastore, task 주입, critic과 finalization gates 설명

용어 해설

에이전틱 루프(Agentic Loop)
LLM이 코드를 생성한 뒤 테스트 결과와 오류를 피드백으로 받아 다시 수정하는 반복 작업 방식입니다. 초기 출력과 검증 결과를 여러 차례 순환시키며 요구사항에 맞는 구현으로 수렴시키는 구조라서, 모델의 일회성 생성 능력보다 실행 환경과 평가 절차가 중요합니다.
유전 알고리즘(Genetic Algorithm)
후보 해를 만들고 평가한 뒤 더 나은 해를 선택해 반복적으로 개선하는 최적화 방식입니다. 글에서는 Agentic Loop가 초안 코드와 테스트 피드백을 반복해 점차 적합한 구현을 찾는 과정이 이 구조와 닮았다고 설명합니다.
스캐폴딩(Scaffolding)
모델이 작업할 파일 구조, 구성 요소, 실행 규칙, 제약 조건을 미리 마련하는 작업 환경입니다. LLM이 임의의 아키텍처를 발명할 여지를 줄이고 기존 프로젝트의 경계 안에서 구현하도록 만드는 실질적인 통제 장치입니다.
상태 머신(State Machine)
시스템의 상태와 상태 사이의 전이를 명시적으로 표현하는 제어 구조입니다. 데이터 처리의 내용과 단계 간 이동을 분리하므로, Mermaid.js 그래프처럼 흐름을 선언적으로 관리하고 각 단계를 독립적인 LLM 작업으로 나누는 데 활용됩니다.
테스트 주도 개발(Test-Driven Development)
구현 전에 원하는 동작을 테스트로 정의하고, 테스트를 통과하도록 코드를 작성하는 개발 방식입니다. LLM 보조 개발에서는 테스트가 요구사항 계약과 선택 압력 역할을 하며 기능 오류와 기존 기능의 회귀를 함께 확인하는 기준이 됩니다.
Behavior Trees
복잡한 에이전트 동작을 선택, 순서, 재시도 같은 결정적 제어 구조로 조합하는 방식입니다. LLM을 전체 의사결정 주체가 아니라 행동을 생성하는 말단 노드로 제한해 verifier, critic, code reviewer 같은 고정 검증 절차와 결합합니다.

기술

  • DeepSeek
  • JavaScript
  • Clojure
  • Chez Scheme
  • make
  • Mermaid.js
  • Git
  • Storybook
  • Playwright
  • Jolt
  • Janet
  • Dirge
  • SQLite
  • GLM
  • Pi
  • beads
  • official deepseek-harness

활용 사례

  • 반복적인 API 엔드포인트와 UI 보일러플레이트 생성
  • 익숙하지 않은 프로그래밍 언어의 문법과 도구 체인을 이용한 구현
  • 대규모 코드베이스의 호출 그래프와 서비스 흐름 탐색
  • 테스트와 benchmark를 기준으로 한 기능 구현 및 회귀 검증
  • Git commit을 활용한 에이전트 코드 실험과 롤백
  • 프로젝트별 플러그인과 작업 메모리를 갖춘 Agentic Harness 구성

언급된 리소스

논문Behavior Trees Enable Structured Programming of Language Model Agents
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 18.수집 2026. 08. 18.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.