← 모든 글

BCI가 가르쳐 준 에이전트 루프 설계법

Science Corporation의 시각 복원 칩과 LLM 에이전트는 같은 루프 구조다. 작은 팀이 AI 에이전트를 실무에 붙일 때 BCI 설계에서 꺼낼 수 있는 원칙 네 가지.

망막 칩이 에이전트 루프와 구조가 같다

Science Corporation이 스타가르트병 환자에게 PRIMA 칩을 이식했다. Neuralink 공동창업자 출신인 Max Hodak이 TechCrunch Disrupt 무대에서 직접 설명한 내용이다. 스타가르트병은 황반의 광수용체가 유전적으로 망가지는 질환 — 중심 시야가 흐릿해지다가 결국 기능적 실명에 이른다. PRIMA 칩은 그 손상된 광수용체를 우회한다. 안경에 달린 카메라가 빛을 포착하고, 무선으로 전기 신호를 망막 세포에 전달해 아직 살아있는 하위 신경 경로에 직접 연결하는 구조다.

이 설명을 읽으면서 즉각 떠오른 건 BCI가 아니라 우리가 매일 다루는 LLM 에이전트였다. 지각(Perception) → 처리(Processing) → 행동(Action) → 피드백(Feedback) → 재지각. PRIMA 칩이 하는 일이 정확히 이 루프다. LLM 에이전트가 도구 호출을 반복하며 목표를 달성하는 방식도 동일하다. 구조가 같으면 실패 지점도 같다. 그게 이 뉴스에서 우리 팀이 꺼낼 수 있는 핵심이다.

단, 이 유사성을 그대로 받아들이면 생기는 함정이 있다. 구조가 같다는 건 성공 패턴도 비슷하다는 뜻인데, BCI 설계에서 가장 중요한 전제는 "완전한 복원이 아니라 기능적 복원"이다. 이 전제를 에이전트 설계에 잘못 적용하면 처음부터 목표를 낮게 잡는 핑계가 된다. 그러니 각 원칙을 가져올 때 왜 그 원칙이 생겼는지까지 따라와야 한다.

"완벽한 시야"가 아니라 "기능적 시야" — 스코프 설정의 실제 의미

Hodak은 PRIMA 칩의 목표를 "기능적 시야(functional vision)"라고 명시했다. 1.0 시력 복원이 아니다. 읽기, 얼굴 인식, 장애물 회피 — 일상에서 필요한 작업을 수행할 수 있는 수준. 처음엔 "그게 전부야?" 싶었는데, 생각이 거꾸로였다. 목표를 "완전한 시야 복원"으로 잡았다면 임상은 영원히 실패 상태로 남았을 것이다. 기능 단위로 목표를 쪼갰기 때문에 측정 가능해졌고, 개선이 가능해졌다.

AI 에이전트를 실제로 붙여보면 똑같은 함정에 빠진다. "우리 업무 전체를 자동화하는 에이전트"를 목표로 세우는 순간, 프롬프트는 계속 늘어나고 아무것도 완성되지 않는다. 포티포티처럼 AI가 특정 말투(영포티 말투)를 교정해주는 서비스가 실제로 잘 작동하는 이유가 여기 있다. "자연스러운 한국어 전반"이 아니라 "40대 감성 화자처럼 들리게 고쳐라"는 극도로 좁은 지시. 범위가 좁을수록 LLM은 일관되게 행동한다.

우리 팀 경험을 솔직히 말하면, 초기에 "콘텐츠 전반을 검수하는 에이전트"를 만들려다 한 달을 날렸다. review_loop를 "1500자 미만이면 REJECT, 변형판 패턴이면 REJECT, 나머지는 OK" 세 가지 조건으로 좁혔더니 그제서야 하루 수십 건을 실수 없이 처리하기 시작했다. 기능적 시야. 정확히 그 개념이다.

피드백 루프가 없으면 에이전트는 반맹이다

PRIMA 칩 설계에서 가장 흥미로운 부분은 환자가 칩의 시각 신호에 적응하는 데 수 주가 걸린다는 점이다. 뇌가 낯선 신호 패턴을 학습하는 시간이 필요하다. 단방향으로 신호만 집어넣는 게 아니라, 환자의 행동 반응과 과제 수행 결과를 보고 파라미터를 조정한다. 피드백 루프가 있어야 시스템이 개선된다.

LLM 에이전트에서 피드백 루프가 빠진 경우를 생각보다 자주 본다. "LLM에게 초안 써달라고 하고, 나온 결과 그대로 발행." 이건 에이전트가 아니라 일회성 함수 호출이다. 실패해도 다음 번에 같은 실패가 반복된다.

우리 bots 구조를 돌아보면, 발행 후 review_loop가 Claude Sonnet으로 재검수하고, 그 결과가 매일 04:00에 learn-update.py를 통해 learned/{slug}.json으로 갱신되어 다음 발행 시스템 프롬프트에 주입된다. 의도하지 않게 피드백 루프를 이미 구현하고 있었다. 직접 운영해보니 이 루프가 없을 때와 비교해, 반복적인 형식 오류(동일 패턴 제목, 단조로운 문단 구조)가 3~4주 후부터 눈에 띄게 줄었다.

그런데 루프의 품질이 아직 아쉽다. 지금은 "발행됐다 / 거부됐다" 이진 신호에 가깝다. PRIMA 칩처럼 더 세밀한 신호 — 어떤 섹션이 왜 나빴는지, 어떤 주제에서 체류율이 떨어지는지 — 를 루프에 넣으면 에이전트의 적응 속도가 달라진다. 이진 신호도 없는 것보단 낫지만, 거기서 멈추면 개선이 느리다.

우리 팀이라면 지금 당장 이렇게 적용한다

blog 봇을 구체적인 예시로 들겠다.

현재 흐름은 뉴스 크롤 → Haiku 초안 작성 → 1500자 게이트 → 발행 → Sonnet 검수 → OK/REJECT다. 여기에 에이전트 루프를 제대로 달면 세 군데가 바뀐다.

첫째, 지각 단계를 개선한다. 초안 생성 전, learned 데이터에서 유사 주제의 REJECT 사례 3건을 뽑아 프롬프트에 주입한다. "이 주제로 지난번에 이런 이유로 거부됐으니 피해라"는 맥락이 들어가면, 지금처럼 일반론으로만 채워진 시스템 프롬프트보다 초안 품질 자체가 올라간다. 입력 전처리에 투자하는 게 모델 업그레이드보다 ROI가 높다는 게 우리 팀의 결론이다.

둘째, Haiku 초안 생성 직후 Sonnet에게 한 가지만 묻는 반성 스텝을 넣는다. "이 글에서 가장 약한 섹션 하나와 이유를 한 문장으로." 그 답을 받아 Haiku가 해당 섹션만 재작성하면, 전체 재생성보다 토큰이 크게 줄면서도 품질이 올라간다. Haiku 1회 + Sonnet 1회 + Haiku 부분 재작성 1회 = 3 LLM 호출. Sonnet 기준 호출당 추가 비용은 $0.001 이하, 일 10건 발행 기준 월 $0.3 추가다. 해볼 만한 숫자다.

셋째, 약한 피드백 신호도 루프에 쌓는다. REJECT만 피드백으로 쓰지 말고, 게시 후 48시간 체류율 하위 20% 글도 "soft reject"로 분류해 learned에 누적한다. 에이전트가 어떤 구조의 글이 독자를 잡아두지 못하는지 자연스럽게 회피하기 시작한다. 성능 평가는 루프가 2~4주 충분히 돈 뒤에 해야 한다. PRIMA 칩 환자가 적응 기간을 거치는 것과 같다.

지금 바로 써먹을 수 있는 원칙 네 가지

다음 스프린트에 그대로 가져갈 수 있는 것들이다.

스코프를 먼저 좁혀라. "이 에이전트가 할 수 없는 것"을 먼저 명시하지 않으면 프롬프트는 계속 늘어나고 일관성은 떨어진다. "기능적 시야"처럼 목표를 기능 단위로 선언하는 것이 먼저다.

손상된 레이어를 파악하라. 에이전트 실패의 대부분은 LLM 자체가 아니라 지각(입력) 단계에서 발생한다. 맥락 없이 날 것으로 들어오는 데이터가 문제다. 입력 전처리에 투자하는 쪽이 더 비싼 모델로 교체하는 것보다 먼저다.

피드백 루프는 이진 신호부터 시작해도 된다. "좋다/나쁘다" 두 가지만으로도 루프는 작동한다. 처음부터 정교한 점수 체계를 설계하려 들면 루프 자체가 완성되지 않는다. 일단 이진 루프를 돌리고, 신호를 세밀하게 다듬는 건 다음 단계다.

적응 기간을 설계에 포함시켜라. 루프가 충분히 돌기 전의 성능으로 에이전트를 평가하면 틀린 결론을 내린다. 초기 2~4주는 데이터 수집 기간으로 잡고, 그 이후의 결과로 판단해야 한다.

Science Corporation의 칩이 완성된 BCI로 가는 중간 단계인 것처럼, 지금 만드는 에이전트도 완성형일 필요가 없다. 루프가 살아있으면 알아서 나아진다.


원문: AI News & Artificial Intelligence | TechCrunch

* 위 링크는 인프런 affiliate 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

📚 추천 강의
한 입 크기로 잘라먹는 바이브코딩 (with Claude Code)
Claude Code로 바이브코딩, 개발자라면 꼭 들어야 할 필수 강의
강의 보러가기 →

* 위 추천 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.