[Lobsters 요약] 100줄 Lisp 코드로 구현한 AI 에이전트: 상징적 AI의 부활과 미래 전망
1
설명
2026년 7월 7일, 25년 전 AI 수업에서 Lisp 언어를 배웠던 경험이 현재 AI 에이전트 개발에 대한 통찰을 제공합니다.
당시 상징적 AI의 언어로 여겨졌던 Lisp는 딥러닝 시대에 잊혀졌지만, 최근 100줄의 Lisp 코드로 구현된 AI 에이전트가 주목받고 있습니다.
이 에이전트는 Lisp의 '코드=데이터' 특성을 활용하여 모델이 스스로 기능을 생성하고 실행하는 방식을 보여줍니다.
### 배경 설명
2000년대 초반, 저자가 University of Guelph에서 수강했던 AI 수업에서는 신경망이나 트랜스포머와 같은 현대 AI 기술에 대한 논의가 없었습니다. 당시에는 Lisp가 상징적 AI, 즉 전문가 시스템이나 정리 증명기 등 기호와 규칙을 조작하는 프로그램의 언어로 여겨졌습니다. 그러나 통계적 방법론과 딥러닝의 부상으로 Lisp는 상징적 AI와 함께 쇠퇴하는 듯 보였습니다. Paul Graham과 같은 일부 개발자만이 Lisp를 활용한 경험을 언급할 뿐, 일상적으로 사용하는 개발자는 드물었습니다. 이러한 배경 속에서 저자는 25년이 지난 2026년에 AI 에이전트 개발에 몰두하며 Lisp가 에이전트 루프에 유용할 수 있다는 가능성을 재발견하게 되었습니다. 이는 현대 AI 개발의 주류에서 벗어나 있지만, AI의 근본적인 작동 방식에 대한 오래된 아이디어를 재조명하는 계기가 되었습니다.
### AI 에이전트 루프의 본질: 재귀 함수로서의 Lisp
현대의 복잡한 AI 에이전트 프레임워크를 벗겨내면, 에이전트 루프는 매우 단순한 구조를 가집니다. 메시지 목록을 모델에 전달하고, 모델의 응답(텍스트 또는 도구 사용 요청)에 따라 다음 단계를 결정합니다. 도구 사용 요청이 있을 경우, 도구를 실행하고 결과를 메시지 목록에 추가하여 재귀적으로 루프를 반복합니다. 저자는 이 과정을 8줄의 Common Lisp 코드로 구현했습니다. Lisp의 재귀 함수는 에이전트의 상태를 인자로 전달하며, 모델이 응답을 반환하면 재귀가 종료됩니다. 이는 별도의 프레임워크나 상태 머신 없이도 에이전트의 핵심 로직을 간결하게 표현할 수 있음을 보여줍니다. SBCL, dexador, shasht 라이브러리만을 사용하여 약 100줄의 Lisp 코드로 전체 AI 에이전트를 구축할 수 있었습니다.
### Homoiconicity를 활용한 'eval' 도구: 코드 생성 및 실행
Lisp의 가장 큰 특징 중 하나는 'Homoiconicity'입니다. 이는 Lisp 프로그램이 Lisp 자체의 데이터 구조(리스트)로 표현된다는 의미로, 코드와 데이터가 동일한 형태를 가집니다. 이 특성을 활용하여 저자는 모델에게 언어 자체를 도구로 제공하는 방식을 구현했습니다. 모델은 문자열 형태의 Common Lisp 코드를 생성하고, 에이전트는 이를 `eval` 함수를 통해 실행합니다. 예를 들어, 30번째 피보나치 수를 계산하라는 요청에 모델은 직접 재귀 함수를 작성하고 실행하여 결과를 도출했습니다. 이는 기존 에이전트들이 미리 정의된 도구 카탈로그에 의존하는 방식과 달리, 모델이 필요에 따라 스스로 기능을 생성하고 실행하는 새로운 가능성을 제시합니다. 다만, `eval`은 임의의 코드를 실행하므로 로컬 환경이나 샌드박스에서 주의하여 사용해야 합니다.
### 메모리 관리: Lisp의 기본 기능으로 구현된 영속성
대화 기록을 유지하기 위한 메모리 기능은 Lisp의 기본 기능만으로 구현되었습니다. 메시지 목록은 이미 해시 테이블의 리스트 형태로, JSON과 유사한 구조를 가집니다. 따라서 메모리는 이 리스트를 파일에 저장하고 불러오는 방식으로 처리됩니다. `remember` 함수는 현재 메시지 목록을 JSON 형식으로 파일에 저장하고, `recall` 함수는 저장된 파일을 읽어와 대화 기록을 복원합니다. 이를 통해 에이전트는 이전 대화 내용을 기억하고, 새로운 세션에서도 일관된 응답을 제공할 수 있습니다. 대화 기록이 무한정 늘어나 컨텍스트 창을 초과하는 문제는, 에이전트가 자신의 과거 기록을 요약하는 모델을 호출하는 방식으로 해결할 수 있습니다. 이는 에이전트가 자신의 역사를 재평가하고 재구성하는 능력을 갖게 됨을 시사합니다.
### 웹 검색 기능의 자율적 생성: 도구 카탈로그의 동적 확장
저자는 Brave Search API 키를 에이전트에게 제공하여 웹 검색 기능을 실험했습니다. 놀랍게도 에이전트는 미리 정의된 웹 검색 도구가 없음에도 불구하고, `eval`을 사용하여 `brave-search` 함수를 직접 정의하고 HTTP 요청을 수행했습니다. 모델은 API 응답을 파싱하여 웹 검색 결과를 제공하는 새로운 기능을 스스로 만들어낸 것입니다. 이는 기존 에이전트 플랫폼에서 설계 시점에 고정되는 도구 카탈로그와 달리, 런타임에 에이전트가 필요에 따라 기능을 동적으로 확장할 수 있음을 보여줍니다. 코드 인터프리터와 유사한 방식이지만, 에이전트가 자신의 스킬을 텍스트 형태로 저장하고 필요할 때 불러오는 '스킬' 패턴을 더욱 발전시킨 형태입니다. 이는 에이전트의 능력이 단순히 주어진 도구에 의존하는 것이 아니라, 대화 속에서 스스로 학습하고 확장될 수 있음을 의미합니다.
### 가치와 인사이트
이 100줄 Lisp 에이전트 구현은 AI 에이전트 개발에 대한 근본적인 질문을 던집니다. 첫째, 복잡한 프레임워크 없이도 Lisp의 간결함과 강력한 메타프로그래밍 능력을 통해 핵심적인 에이전트 루프를 구현할 수 있음을 보여줍니다. 둘째, 'Homoiconicity'를 활용한 `eval` 도구는 모델이 스스로 코드를 생성하고 실행함으로써, 미리 정의된 도구 카탈로그에 의존하지 않고 동적으로 기능을 확장할 수 있다는 가능성을 제시합니다. 이는 에이전트의 능력이 설계 시점이 아닌 런타임에 결정될 수 있음을 시사하며, 에이전트의 '스킬'이 단순한 코드 조각이 아니라, 에이전트 스스로가 생성하고 기억하는 이야기의 일부가 될 수 있음을 보여줍니다. 셋째, Lisp의 기본 기능을 활용한 메모리 관리 방식은 외부 데이터베이스나 복잡한 스키마 없이도 영속성을 구현할 수 있음을 증명합니다. 이는 에이전트가 자신의 과거 경험을 기억하고 이를 바탕으로 새로운 기능을 재구성하는 능력을 갖게 됨을 의미합니다.
### 기술·메타
- Lisp (Common Lisp)
- SBCL (Steel Bank Common Lisp)
- dexador (HTTP client library)
- shasht (JSON library)
- Homoiconicity
- Recursive functions
- `eval` function
### 향후 전망
이 Lisp 기반 에이전트의 접근 방식은 향후 AI 에이전트 개발의 중요한 방향을 제시할 수 있습니다. 기존의 '설계 시점'에 고정된 도구 카탈로그 방식에서 벗어나, '런타임'에 에이전트가 스스로 필요한 기능을 생성하고 통합하는 방식으로 발전할 가능성이 있습니다. 이는 에이전트의 유연성과 적응성을 크게 향상시킬 것입니다. 또한, 에이전트가 자신의 경험과 학습 과정을 '기억'하고 이를 바탕으로 새로운 능력을 '재평가'하는 방식은, 인간의 학습 및 문제 해결 과정과 유사한 메커니즘을 AI에 구현하는 데 영감을 줄 수 있습니다. 경쟁 측면에서는, 이러한 동적 기능 생성 능력은 특정 도메인에 특화된 에이전트뿐만 아니라, 범용적인 문제 해결 능력을 갖춘 에이전트 개발에 기여할 수 있습니다. Lisp 커뮤니티의 활성화와 함께, 이러한 접근 방식이 다른 언어 및 프레임워크로 확장될 가능성도 있습니다. 궁극적으로는 에이전트의 '능력' 자체가 고정된 것이 아니라, 에이전트의 '이야기' 또는 '기억'의 일부로서 동적으로 구성되는 미래를 상상해 볼 수 있습니다.
📝 원문 및 참고
- Source: Lobsters
- 토론(Lobsters): [lobste.rs](https://lobste.rs/s/wsw7tq/agent_100_lines_lisp)
- 원문: [링크 열기](https://thebeach.dev/posts/lisp-agent/)
---
출처: Lobsters · [원문 링크](https://thebeach.dev/posts/lisp-agent/)
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.