- AI 프로그래밍 어시스턴트 Sketch 개발에서 가장 놀라운 점은, 도구 사용을 붙인 LLM 에이전트가 9줄 수준의 단순한 루프로도 강력하게 동작한다는 점임
- 기본 흐름은 사용자 입력을 LLM에 보내고, 응답에 도구 호출이 있으면 실행 결과를 다시 대화에 넣어 다음 판단에 쓰는 방식임
- 시스템 프롬프트와 대화 이력, 도구 설명만으로도 LLM은 정해진 스키마에 맞춰
bash같은 도구를 호출할 수 있음 - Sketch는 Claude 3.7 Sonnet과
bash만으로 git 작업, merge 1차 처리, 타입 체커 오류 수정 등을 수행하지만, 테스트를 건너뛰려는 답답한 행동도 보임 - 개발자 워크플로에 맞춘 추가 도구와 임시 에이전트 루프가 늘어나면, 기존 자동화로 다루기 어려웠던 일상 작업을 더 많이 맡길 수 있음
9줄에 가까운 에이전트 루프
- Sketch는 최근 몇 달간 개발 중인 AI 프로그래밍 어시스턴트임
- 핵심 루프는 사용자 입력을 받고 LLM 호출 결과를 확인한 뒤, 도구 호출이 있으면 실행 결과를 다음 메시지로 넣고, 없으면 다시 사용자 입력을 받음
- 전체 구현에는 부가 코드가 필요하지만, 핵심 아이디어는 9줄짜리 루프에 가까움
- 전체 스크립트: agent_loop.py
llm()함수는 시스템 프롬프트, 지금까지의 대화, 다음 메시지를 LLM API로 보내는 역할을 함- 도구 사용은 LLM이 특정 스키마에 맞는 출력을 반환하는 방식임
- 전체 스크립트에서는 시스템 프롬프트와 도구 설명 프롬프트를 통해 LLM이
bash에 접근할 수 있음을 알려줌
- 전체 스크립트에서는 시스템 프롬프트와 도구 설명 프롬프트를 통해 LLM이
Sketch로 확인한 가능성과 한계
bash라는 범용 도구 하나만으로도 현재 모델, 특히 Claude 3.7 Sonnet은 여러 개발 작업을 처리할 수 있음- 난해한 git 작업을 찾아보고 복사해 붙여넣는 대신 Sketch에 요청할 수 있음
- git merge를 수동으로 처리하기 전에 Sketch가 1차 시도를 맡을 수 있음
- 타입 변경 뒤 발생하는 타입 체커 오류를 하나씩 고치는 작업도 Sketch에 맡겨볼 수 있음
- 적절히 프롬프트하면 에이전트 루프는 지속적으로 동작함
- 필요한 도구가 설치돼 있지 않으면 설치함
grep의 명령줄 옵션이 환경마다 다르면 그 차이에 맞춰 적응함
- 한계도 뚜렷함
- 테스트가 통과하지 않자 그냥 건너뛰려는 식의 행동이 나올 수 있음
- Sketch는
bash만 쓰지 않고, 품질과 반복 속도, 개발자 워크플로를 개선하기 위해 몇 가지 추가 도구를 사용함 - LLM이 텍스트를 정확히 편집하게 만드는 도구는 의외로 까다로움
- LLM이
sed한 줄 명령에서 고전하는 모습은 시각적 편집기가 줄 단위 편집기와 다른 강점을 갖는다는 점을 보여줌
- LLM이
- 에이전트 루프는 일반 목적 도구로는 너무 구체적이고, 전통적 자동화로는 너무 난해하거나 불안정했던 일상 자동화 작업에 더 많이 들어갈 수 있음
- 스택 트레이스와 git 커밋을 연결하는 작업은 LLM이 1차 처리를 잘할 수 있는 예임
- 맞춤형·임시 LLM 에이전트 루프가
bin/디렉터리에 더 많이 생길 수 있음