재귀적 신경기호 제어 역전
- 2025-08-21
- 별칭: RNS-IoC
- 저자: AK
AI 에이전트와 전통적인 로직 사이의 재귀적인 제어 역전(IoC)을 통해 두 시스템 사이의 장점을 취하는 설계 방식에 대한 생각을 정리했다. 최근에 했던 두 가지 시도(반구조적 소프트웨어 명세서 (s4), 과정에 담긴 가치의 증강)에 담긴 공통점이기도 하다.
AI 에이전트의 도구 사용과 제어 역전
초기에는 전통적인 방식의 프로그램에서 OpenAI 호환 API 등을 호출하여 LLM을 활용하는 방식의 시도가 많았는데, 2025년에는 LLM이 전통적인 방식의 프로그램을 호출하는 소위 ‘AI 에이전트와 도구’라는 접근이 유행하고 있다. 혹자는 2025년이 ‘에이전트의 해’라고 주장하기도 한다.
전통적 방식이 순방향의 제어라면 AI 에이전트가 도구를 활용하는 설계는 제어 역전이라고 볼 수 있다. 상위 수준의 흐름을 AI 에이전트가 제어하고 도구는 에이전트의 호출에 의해 구체적인 하위 수준의 작업을 수행한다는 점에서 그렇다.
재귀적 제어 역전
반구조적 소프트웨어 명세서의 s4
는 특정 형식을 따르는 yaml 명세서(s4.yaml
)와 소스 코드를 정적 분석하여 다음에 해야할 일이 무엇인지를 출력하는 전통적인 CLI 프로그램이다.
s4
를 실행하면
- 명세서에 내적 일관성이 있는지(모든 비즈니스 목표에 한 개 이상의 구체적 기능이 존재하는지, 기능 사이의 의존 관계에 순환이 없는지, 모든 기능에 한 개 이상의 인수 기준이 존재하는지 등)
- 명세서와 코드 사이가 일치하는지(명세서 상 인수 기준에 대응되는 인수 테스트가 코드에 존재하는지)
- 명세서에 등록된 모든 검사(인수 테스트, 단위 테스트, 커버리지, 타입 검사 등)를 통과하는지를
검사한 후 문제가 발견되면 가장 먼저 해결해야할 문제가 무엇인지, 해당 문제를 해결하기 위해 필요한 뭘 하면 되는지 등을 출력한다.
이 도구를 AI 에이전트에게 줘어주면 재미난 일이 일어난다.
- 가장 추상적인 상위 수준의 제어는 AI 에이전트가 담당한다. 에이전트는 언제
s4
를 호출할지를 결정한다. s4
는 정해진 로직에 따라 각종 검사를 수행하고 그 결과를 출력한다.- AI 에이전트는
s4
의 출력을 참고하여 구체적 작업을 수행한다. 이 단계에서 에이전트는 또다른 하위 단계의 도구들(diff, patch, MCP server 등) 사용한다.
2-3 단계에서 사이에서 벌어지는 일이 흥미로운데, s4
는 구체적인 작업(즉, 실질적인 코딩)을 직접 하지 않는다. 대신 AI 에이전트가 뭘 해야하는지 알려줄 뿐이다. 기술적으로만 보자면 s4
는 그저 분석 결과를 텍스트로 출력할 뿐이고 AI 에이전트는 이를 참고할 뿐이지만, 실제로 일어나는 일을 의미적으로 해석해보면 s4
가 AI 에이전트에게 다음에 해야할 일을 지시하고 에이전트가 이에 따라 가장 구체적인 하위 수준의 작업(코딩)을 수행한다고 볼 수 있다.
분산된 기능적 분해라는 관점에 따라 해석해보면 s4
가 에이전트를 호출하여 일을 시키는 방향으로 다시한번 제어 역전이 일어난 것이다.
또다른 사례
과정에 담긴 가치의 증강에서는 위키 정원 관리를 하는 맥락에서 전통적인 그래프 분석 알고리즘과 LLM을 섞어 쓴 사례를 소개한다.
- 사용자가 AI 에이전트에게 추상적인 수준의 명령을 내리면(“위키를 개선하고 싶어”), 에이전트는 그래프 분석을 수행하는 CLI 스크립트를 호출한다.
- CLI 스크립트는 그래프 분석 결과 가장 멀리 떨어진 두 문서를 이어주는 경로를 맥락과 함께 출력하고 AI 에이전트가 특정 작업(리버스 사전 탐색)을 수행하도록 유도한다.
- AI 에이전트는 CLI의 출력이 유도하는대로 구체적 작업을 수행한다.
이 사례에서도 마찬가지로 재귀적 제어 역전이 일어났다.
일반화
두 사례를 일반화해보면 일반적인 에이전트-도구 사이의 인터랙션과 재귀적 제어 역전이 일어나는 방식 사이의 차이를 알 수 있다.
에이전트가 호출하는 도구가 단지 수동적으로 정보를 제공하는 역할을 하는지, 에이전트의 특정 행동을 강하게 유도하는(그래서 기능적으로는 에이전트를 호출하는 것과 동일한) 역할을 하는지가 유일한 차이점이다. 전자가 “신경-기호 제어 역전Neuro-symbolic IoC”이라면 후자는 “재귀적 신경-기호 제어 역전Recursive neuro-symbolic IoC”이라고 부를 수 있겠다.
에이전트가 도구의 호출 여부를 제어하고, 호출된 도구는 에이전트가 잘 하지 못하는 종류의 작업을 수행한 뒤에 도구가 잘 하지 못하는 종류의 작업을 다시 에이전트에게 지시하여 에이전트의 작업을 촉발하는 패턴이다. 이때 에이전트는 다시 다른 도구들(예: git diff
, grep
, MCP 서버 등)을 호출해가며 작업을 수행하게 되므로 재귀적이다.
기술적으로는 아주 작은 차이지만 활용 가치가 큰 패턴이라고 생각한다. 결정론적 특성의 전통적 도구와 확률적 생성 모델의 일종인 LLM 기반 AI 에이전트를 상호보완적인 방식으로 결합할 수 있는 패턴 중 하나로 다양하게 써먹을 수 있겠다.