스크랩

LLM이 '말한 것'과 코드가 '확인한 것'을 분리한다면? — 로컬 에이전트 런타임 'SongRyeon Core' 실험기

LLM이 '말한 것'과 코드가 '확인한 것'을 분리한다면? — 로컬 에이전트 런타임 'SongRyeon Core' 실험기

한눈에 보는 요약

코딩을 배우는 중인 개발자 '정후'님이 공개한 SongRyeon Core는, AI 에이전트가 답할 때 "LLM이 추측한 판단"과 "코드가 실제로 검증한 사실"을 명확히 구분하려는 작은 로컬 우선(local-first) 에이전트 런타임 실험입니다. 화려한 데모보다 **"에이전트가 무엇을, 어떤 근거로 말했는지 숨기지 않는 것"**에 초점을 맞춘 프로젝트예요.

왜 이런 실험이 필요했을까?

LLM 기반 에이전트를 만들다 보면 누구나 한 번쯤 부딪히는 문제들이 있습니다. 정후님은 다음과 같은 지점들을 직접 느꼈다고 합니다.

  • LLM이 추측한 내용을 마치 시스템이 확인한 사실처럼 보여줌
  • 코드가 만든 fallback이나 휴리스틱이 LLM의 판단과 뒤섞임
  • 문서를 몇 개 읽었는지, 어떤 실행이 실제로 일어났는지가 화면마다 다르게 표시됨
  • 최종 답변이 내부 런타임 상태와 어긋남

결국 사용자는 "이 답이 진짜 검증된 것인지, 아니면 그럴듯한 추측인지" 구분하기 어려워집니다. SongRyeon Core는 바로 이 경계를 또렷하게 그으려는 시도입니다.

핵심 아이디어: 정보를 세 가지로 나눈다

이 프로젝트의 가장 큰 특징은 정보를 다음 세 종류로 분리해 다룬다는 점입니다.

  • 절대정보: 코드 / trace / schema / tool result로 직접 확인 가능한 값 (= 사실)
  • 상대정보: 하나의 절대정보에 대응하는 LLM의 판단
  • 혼합정보: 여러 source bundle에 근거한 LLM의 판단

즉, "코드가 확인한 것"과 "LLM이 해석한 것"을 같은 평면에 놓지 않고, 출처와 신뢰 수준을 구조적으로 구분하겠다는 발상입니다.

어떤 구조로 돌아갈까?

아직 작은 연습판이지만, 다음과 같은 노드 기반 구조를 실험하고 있습니다.

  • node_0 memory supplier (메모리 공급)
  • node_1 router (라우팅)
  • L loop (루프)
  • node_3 reporter (보고)
  • node_4 verifier (검증)
  • smoke-test 기반 회귀 검증
  • runtime terminal / final renderer 정직성 검사

특히 마지막의 '정직성 검사'는, 최종 화면에 보여주는 내용이 실제 런타임 상태와 어긋나지 않는지 점검하는 장치라는 점이 인상적입니다.

직접 돌려보려면?

SongRyeon Core는 웹 서비스가 아니라 로컬 CLI / smoke-test 중심의 런타임 실험입니다. README의 실행 방법을 따라 아래 명령으로 바로 확인해볼 수 있습니다.

python -m compileall songryeon_core main.py
python main.py smoke-test

만든 사람이 받고 싶어 하는 피드백

정후님은 아직 학습 중인 프로젝트라며, 다음 부분에 대한 피드백을 특히 환영했습니다.

  • 절대정보 / 상대정보 / 혼합정보 구분이 설계상 납득되는지
  • LLM 판단과 code-verified fact를 나누는 방식이 실제 에이전트 런타임에 유용해 보이는지
  • README에서 처음 보는 사람이 이해하기 어려운 부분은 어디인지

마치며

LLM 에이전트의 신뢰성 문제는 점점 더 중요한 화두가 되고 있습니다. SongRyeon Core처럼 "근거의 출처를 숨기지 않는 런타임"을 작게라도 직접 만들어 보는 시도는, 거칠더라도 충분히 의미 있는 방향이라고 생각합니다. 비슷한 고민을 해본 분이라면 README와 smoke-test를 한번 들여다보고 피드백을 남겨보는 건 어떨까요?


원문: https://news.hada.io/topic?id=30854