S-Agent 2.0은 코딩 에이전트에 공간 지각 도구를 붙여 증거 루프를 닫는다
S-Agent 2.0: Spatial Reasoning with a General Coding Agent
무엇인가
이 논문은 3D 공간에서 물체의 위치와 관계, 움직임을 묻는 공간 추론 문제를 다룬다. 최근 에이전트형 VLM은 3D 지각 도구로 증거를 모으면서 성능을 올렸지만, 저자들은 SpatialClaw의 궤적을 분석해 도구가 올바른 증거를 반환해도 모델이 답을 틀리는 지점을 파고든다. 실패는 두 갈래다. 모델이 이미 얻은 측정값을 잘못 읽어 회전 부호를 뒤집거나 좌표계와 방향을 혼동하는 경우, 그리고 측정값이 작업공간에 있는데도 모델이 이미지를 눈으로 보고 답하거나 무관한 이유로 올바른 값을 버리는 경우다. 따라서 문제는 지각 도구의 부족이 아니라 증거 획득, 기억, 해석이 하나의 루프로 닫히지 않는 데 있다.
어떻게 동작하나
S-Agent 2.0의 구성은 범용 코딩 에이전트 π, 명령줄 지각 툴킷 T, 에피소드별 장면 메모리 S다. 에이전트는 고정 지시 u로 툴킷 사용법과 권장 흐름을 받고, 질문 q와 프레임 I, 이전 사고 z<t, 행동 a<t, 도구 응답 o<t를 조건으로 다음 사고와 행동을 낸다. 행동 공간은 코딩 에이전트의 일반 행동 A_gen과 지각 행동 A_perc로 나뉜다. A_gen은 리눅스 명령 실행, 코드 작성·실행, 파일과 이미지 읽기이고, A_perc는 재구성, 분할, 공간 관계 읽기다. 지각 행동은 전체 출력 m을 디스크에 남기고 요약 응답 o_perc만 컨텍스트에 넣는다. 모델은 필요할 때 A_gen의 파일 읽기로 m을 다시 읽는다. 모델의 핵심 작업은 질문에서 필요한 증거 E를 정하는 q→E와, 각 응답을 증거로 읽는 o_perc→E다.
무엇과 다른가
장면 메모리는 S=(I,P,{(ν_i,g_i)})로 정의된다. I는 원본 프레임, P는 중력 정렬된 세계 좌표계의 융합 메트릭 포인트 클라우드, 각 인스턴스는 이름 ν_i와 기하 g_i=(p_i,E_i,T_i)를 갖는다. p_i는 xyz 위치, E_i는 인스턴스에 속한 P의 부분집합인 범위, T_i는 6자유도 자세다. E_i와 T_i는 비어 있을 수 있다. 툴킷과 모델 모두 이 메모리에 쓸 수 있고, 읽기 명령 Rτ는 이름 붙은 인스턴스들을 대상으로 크기와 높이 같은 단일 속성, 쌍별 거리, 상대 방향, 프레임 간 움직임을 저장된 기하에서 닫힌 형태로 계산한다. 읽기는 매 호출마다 새로 계산되므로 모델은 인스턴스 이름만 기억하면 된다.
어떻게 쓰나
지각은 역량에 따라 나뉜다. 무엇을 측정할지 정하는 일은 VLM이 잘하는 의미 작업이고, 정밀 마스크와 측정은 전용 지각 모델이 더 잘한다. 툴 지각 T_tool에서 recon은 모든 프레임을 하나의 메트릭 중력 정렬 장면으로 융합하고 카메라를 등록하며, segment는 모델이 쓴 말을 프롬프트로 받아 객체를 픽셀에 접지한다. 모델 지각 T_model의 add-instance는 모델이 인식했거나 질문이 상상한 객체나 관찰자를 이름 붙여 등록하고, 다른 인스턴스나 이미지 픽셀에서 위치와 자세를 초기화한다. drop은 반사상 마스크처럼 도구가 잘못 등록한 인스턴스를 모델이 지우게 한다. 호출 의미는 (o_perc,S_{t+1})=τ(x_t;S_t)다. 각 응답은 전체 출력 m과 장면 메모리 S를 압축해 o_perc=cτ(m;S)로 만들며, 단위가 붙은 소수 숫자 필드와 함께 엔티티, 좌표계(중력 정렬, 카메라, 이미지 평면), 답안 어휘까지 담은 한 문장 결론을 제공한다. 전체 기하는 디스크에 남아 필요할 때 다시 읽힌다.
전제와 한계
실험은 다중 뷰와 비디오 공간 추론을 아우르는 다섯 벤치마크에서 이뤄졌다. MMSI-Bench, MindCube, SPAR-Bench, ReVSI, MMSI-Video-Bench다. 주 백본은 로컬 FP8로 서빙한 Qwen3.8-27B이고, 더 강한 백본은 Gemini-3.8-Flash다. 기본 하네스는 OpenHands이며 Codex와 Claude Code에서도 같은 워크스페이스와 툴킷을 돌린다. 지각 도구는 Depth Anything 3, π^3_mos, GeoCalib, SAM 3를 고정해 쓴다. MMSI-Bench와 ReVSI에서 툴킷은 Qwen3.8-27B를 도구 없는 같은 에이전트보다 각각 13.9점, 20.5점 올렸고 Gemini-3.8-Flash는 11.2점, 9.6점 올렸다. 오픈 백본에서 S-Agent 2.0은 MMSI-Bench 66.5, ReVSI 82.3으로 같은 백본의 SpatialClaw 62.6, 74.5를 앞선다. Gemini-3.8-Flash에서는 74.1, 90.5로 SpatialClaw의 67.0, 79.7을 앞선다. 27B 오픈 백본과 무학습 설정에서 MMSI-Bench는 GPT-6를 제외한 모든 독점 모델과 모든 에이전트 베이스라인을 앞서고, Gemini 백본에서는 표 내 최고 평균을 기록했다. ReVSI는 두 백본 모두 모든 에이전트 베이스라인을 앞서며, 교차 객체 기하, 상대 방향, 경로 계획에서 격차가 크고 절대 거리에서는 결손이 있다. Table 4 기준 다섯 벤치마크 모두 에이전트 베이스라인보다 앞선다.
절제 실험은 설계의 각 요소가 실제로 필요함을 보여준다. 해석된 읽기를 빼면 MMSI-Bench와 ReVSI에서 1.3점, 1.2점 떨어지고, 장면 메모리를 빼면 3.5점, 2.5점 떨어진다. 모델 지각 인터페이스를 빼면 8.8점, 5.9점으로 가장 큰 손실이 난다. 하네스를 Codex나 Claude Code로 바꿔도 동작한다. 백본이 강해질수록 도구 이득은 줄지만, ReVSI에서 SpatialClaw의 이득은 13.2점에서 2.7점으로 크게 줄어드는 반면 S-Agent 2.0은 9.6점을 유지한다. 질적 분석에서 SpatialClaw는 올바른 마스크와 위치를 얻고도 숫자에서 질문의 관계로 가는 단계를 모델에 맡겨, 오른손 법칙을 맞게 말하고도 반대로 구현하거나 두 번째 이미지 확인에 방향을 뒤집히는 경우가 있었다. S-Agent 2.0은 질문의 전제를 방향 있는 인스턴스나 나침반 기준으로 장면에 넣고, 관계를 선택지가 쓰는 말로 돌려준다. 또한 모델은 지각 출력과 메모리를 대조해 잘못된 인스턴스를 지우고 진짜 중복 객체는 남긴다.
저자들이 밝힌 남은 한계는 모델과 도구 사이의 접지다. 모델 추론은 대체로 맞지만 질문을 측정으로 접지하는 단계에서 실패가 남는다. 질문이 요구하는 상상 시점을 시뮬레이션하지 못해 관찰자에게 다른 방향을 빌려주거나, 바닥 위 높이를 묻는데 물체 자체 높이를 읽는 식으로 올바른 양을 잘못된 감각으로 측정한다. 또한 도구 이득은 백본이 강해질수록 줄고, ReVSI 절대 거리 유형에서는 결손이 있다. 이 논문은 학습 없이 고정된 지각 도구를 쓰며, 범용 코딩 에이전트 하네스의 CLI·파일 시스템·코드 실행을 전제로 한다. 개발자에게는 공간 에이전트를 만들 때 지각 라이브러리 추가보다 측정값을 영속 메모리에 쓰고 해석된 읽기를 반환하는 인터페이스가 병목을 줄인다는 참고가 된다. 코드와 궤적은 https://ropedia.github.io/S-Agent-2.0 에 공개되어 있다.