dev.to

EmbodiWeave: my agent read its own failure and repeated it, so I made the graph enforce it (FalkorDB + MCP)

EmbodiWeave: 실패 기록을 읽고도 같은 선택을 반복한 에이전트, 그래프 규칙으로 선택을 제한하다

EmbodiWeave는 로봇 정책의 학습 시작점을 고르는 에이전트로, 체크포인트와 평가, 실패 기록을 FalkorDB 그래프에 저장하고 MCP로 조회합니다. 그래프가 과거 회귀 이력이 있는 계보를 후보에서 제외하자 에이전트의 선택이 달라졌지만, 새 정책도 부모보다 나빠 배포되지 않았습니다.

에디터 노트

이 사례에서 설득력 있는 결과는 에이전트가 과거 회귀를 읽고도 같은 후보를 다시 골랐다는 점과, 그래프 규칙을 넣은 뒤 선택이 달라졌다는 점입니다. 근거를 프롬프트에 보여주는 일과 선택을 제약하는 일의 차이를 구체적인 실행 기록으로 드러냅니다. 다만 선택이 달라졌다는 사실은 정책이 더 안전해졌다는 증거가 아닙니다. 새 후보도 부모보다 일부 충돌 지표가 나빠 배포되지 않았고, MuJoCo 목표 충돌률도 기준을 넘었습니다. 글은 이 한계를 명시하며, 댓글은 짧은 호응만 있어 기술적 반론이나 검증을 보태지는 않습니다.

AI 요약

EmbodiWeave는 2D 로봇 정책을 어디서부터 재학습할지 정하고, 결과가 배포 기준을 통과하는지 검증하는 시스템입니다. FalkorDB에 정책 계보, 평가 결과, 실패, 에이전트의 선택과 그 결과를 기록합니다. 에이전트는 MCP 도구로 그래프를 읽고 학습을 시작하기 전에 선택 이유를 남깁니다. 고정된 게이트와 부모 정책 비교가 최종 배포 여부를 결정합니다.

평가와 계보를 그래프로 연결

시뮬레이션 로봇은 보행자가 지나가는 상황에서 51번째 단계에 충돌했습니다. 이미 여러 체크포인트가 있었고, 각 정책은 목표 장애물, 개방 공간, 정적 장애물, 횡단 보행자 등 네 검증 스위트에서 평가됐습니다. 스위트마다 충돌 상한과 성공률 하한이 다릅니다. 체크포인트 하나를 검증하려면 총 180회 에피소드를 돌려야 하며, 네 스위트를 모두 통과해야 승격할 수 있습니다.

시스템은 정책 간 DERIVED_FROM 관계로 학습 계보를 나타내고, 평가를 측정 대상 정책과 스위트에 연결합니다. 평가 기록에는 정확한 가중치의 artifact_hash와 스위트의 suite_fingerprint를 붙입니다. 둘 중 하나라도 현재 정책이나 스위트와 맞지 않으면 그 평가는 인정하지 않습니다. 센서와 행동의 의미를 담은 contract도 비교하므로 입력 차원이 같다는 이유만으로 호환성을 가정하지 않습니다. 불완전하거나 오래된 평가, 다른 계약의 기록도 승격 근거가 되지 않습니다.

선택과 배포를 분리

첫 실험에서는 실패 스위트 수와 기준 미달 폭 등을 기준으로 출발 체크포인트를 정하는 결정론적 플래너를 사용했습니다. 기존 정책은 1개 스위트, 장시간 학습 정책은 3개 스위트만 통과했습니다. 네 작업군을 함께 연습한 정책은 4개를 모두 통과했지만, 별도 목표 테스트에서 100회 중 13회 충돌해 10% 한도를 넘었습니다. 검증 통과가 별도 확인 시험의 통과를 보장하지 않는 사례입니다.

이후 사전 등록한 새 시드로 확인 실험을 했습니다. 학습 중 충돌 페널티를 두 배로 높인 한 시드 실험은 600,064 스텝을 수행했고, 새 확인 평가에서 목표 8/100, 개방 공간 0/100, 정적 장애물 4/100, 횡단 보행자 5/100 충돌을 기록했습니다. 이 정책은 2D 평가를 통과해 배포됐습니다. 다만 저자는 시드가 하나뿐이고 후속 후보의 학습 예산도 더 컸다고 밝힙니다.

에이전트가 읽고도 반복한 실패

GPT-4.1 Mini는 MCP로 그래프를 조회하고 후보를 골라 학습을 실행했습니다. 첫 후보는 네 검증 스위트를 통과했지만 부모보다 목표 충돌이 2/60에서 3/60으로, 횡단 충돌이 0/40에서 1/40으로 늘었습니다. 고정 게이트는 통과했어도 부모 비교에서 회귀로 판정해 배포를 막았습니다. 결과는 REGRESSED_AGAINST 관계와 DecisionOutcome 기록으로 그래프에 돌아갔습니다.

다음 시도에서 에이전트는 과거 회귀를 읽고 선택 이유에도 적었지만 같은 출발점을 골랐습니다. 도구 결과가 요청 한도 32,000바이트를 넘겨 학습이 시작되지 않은 시도도 있었습니다. 도구별 요약 2,000바이트, 보존 텍스트 12,000바이트, 전체 요청 28,000바이트로 제한하고 상세 기록은 ID로 다시 가져오도록 바꿨습니다. 이후에도 에이전트가 같은 후보를 골라 회귀가 반복되자, 개발자는 과거 회귀가 있거나 계보를 충분히 확인하지 못한 후보를 제외하는 그래프 규칙을 추가했습니다.

규칙이 바꾼 선택과 남은 한계

새 도구는 최대 8세대 계보에서 계약, 체크포인트 해시, 완전한 검증 기록을 확인합니다. 기록된 회귀가 있거나 검색 깊이 안에서 계보를 충분히 확인하지 못한 후보는 제외합니다. 제외 사유와 결과 ID도 반환하며 학습 직전 가드레일이 선택을 다시 검사합니다. 적용 뒤 에이전트는 이전과 다른 출발점을 골랐습니다. 새 정책은 4개 스위트를 통과했지만 부모보다 목표 충돌이 2/60에서 4/60, 횡단 충돌이 0/40에서 1/40으로 늘었습니다. 따라서 다시 배포되지 않았고, 기존에 배포된 8/100 충돌 정책이 유지됐습니다.

저자는 이 결과가 에이전트의 학습 능력이나 정책의 안전성 향상을 입증하지 않는다고 선을 긋습니다. MuJoCo 전이 평가에서도 배포 정책은 목표 충돌 6/40으로 10% 기준을 넘었습니다. 시스템이 보여준 결과는 그래프 규칙이 후보 자격과 에이전트의 다음 선택을 바꿨고, 부모 비교가 회귀 정책의 배포를 차단했다는 범위입니다. 모델이 근거를 읽는 것만으로 행동이 바뀌지는 않으므로, 제한이 필요하면 선택 가능한 행동 자체에 규칙을 적용해야 한다는 설계 사례입니다.

dev.to 반응

  • @shantanu_songirkar_a0b60a — 정말 멋지네요.

원문: dev.to / 번역·요약: Trawling