LangGraph·CrewAI 같은 전용 프레임워크 대신 Python·JavaScript 같은 평범한 코드로 에이전트의 실행 순서와 분기를 직접 짜는 방식으로, 이렇게 짠 코드가 그대로 여러 에이전트를 조율하는 하네스가 된다. 흐름을 끝까지 직접 통제하고 코드를 그대로 읽으며 디버깅하고 싶을 때 쓴다.
| 항목 | 코드 하네스 | 전용 프레임워크 |
|---|---|---|
| 흐름 표현 | 함수 호출, if, 반복문 | 노드·엣지·액터 같은 추상화 |
| 디버깅 | 코드를 그대로 읽는다 | 프레임워크 내부를 알아야 한다 |
| 재시도·병렬 같은 공통 기능 | 직접 만든다 | 기본 제공 |
| 새로 배울 것 | 거의 없다 | 프레임워크마다 따로 |
먼저 작업을 단계로 쪼개고, 단계마다 모델을 부르는 함수를 하나씩 둔다. 앞 단계 결과를 변수로 받아 다음 호출에 넘기고, 갈림길은 if 문으로 처리한다.
모델은 각 단계 안에서 판단만 하고, 다음에 무엇을 할지는 코드가 정한다. 그래서 실행 경로가 예측 가능하고, 문제가 생기면 어느 줄에서 틀어졌는지 바로 찾을 수 있다.
Claude Code의 워크플로우 스크립트처럼 agent(), parallel(), pipeline() 같은 기본 함수를 조합하면 멀티에이전트도 짧게 쓸 수 있다. 예를 들어 리뷰 에이전트 셋을 병렬로 돌리고 결과를 모아 검증 에이전트에 넘기는 일이 몇 줄이면 된다.
| 패턴 | 코드로는 | 이럴 때 |
|---|---|---|
| 순차 연결 | 앞 결과를 다음 호출에 전달 | 조사 → 초안 → 검토 |
| 병렬 실행 | 여러 호출을 동시에 돌리고 모으기 | 여러 관점의 코드 리뷰 |
| 분기 | 결과를 보고 if로 갈림 | 통과면 종료, 실패면 수정 |
| 반복 | 최대 횟수를 둔 루프 | 테스트가 통과할 때까지 수정 |
단계가 분명한 자동화, 동작을 한 줄 단위로 확인해야 하는 업무에는 코드 하네스가 잘 맞는다. 에이전트를 일반 소프트웨어처럼 다루라는 12-factor agents 원칙과도 같은 생각이다.
반대로 상태 저장, 중간 재개, 사람 승인 같은 기능이 많이 필요하면 이를 이미 갖춘 프레임워크가 시간을 아껴 준다.
프레임워크가 해 주던 재시도, 오류 처리, 시간 제한, 실행 기록을 스스로 만들어야 한다. 특히 반복 루프에는 최대 횟수를 꼭 둬야 비용이 끝없이 늘지 않는다. 팀에서 여러 번 쓰게 되면 이런 패턴을 작은 내부 라이브러리로 묶어 두는 편이 좋다.
가장 흔한 건 코딩 에이전트 위에 짧은 스크립트를 얹어 여러 에이전트를 정해진 순서로 돌리는 방식이다. 순서가 분명하고 결과를 확인해야 하는 일일수록 프레임워크 없이 코드 몇 줄로 끝내는 경우가 많다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코드 리뷰 | 관점이 다른 리뷰 에이전트를 병렬로 돌리고, 결과를 모아 검증 에이전트에 넘긴다 |
| 버그 수정·테스트 | 테스트가 실패하면 수정 에이전트를 다시 부르는 루프를 짜고, 최대 횟수를 둔다 |
| 조사·문서 작성 | 조사 → 초안 → 검토를 함수로 이어, 앞 결과를 다음 단계에 넘긴다 |
| 업무 자동화 스크립트 | 모델의 판단 결과를 보고 if로 다음 처리를 나눈다 |