Observer-guided RAG Repository-level Coding Agents SWE-bench Lite episodes Updated 2026-05-24

Observer-Retrieval Augmented Generation

Frame-parallel Observer Problem-structure Packets

Worker가 놓친 문제 해결 구조 Observer가 찾아낸다

ORAG는 코딩 에이전트의 framing failure를 관찰하고 교정하기 위해, Worker coding agent가 증상 위치에 갇히거나 필요한 retrieval을 스스로 트리거하지 못할 때, 별도의 Agentic Observer가 trajectory를 병렬 관찰하고 code·test·log evidence를 수집해 problem-structure evidence packet으로 추론 방향과 patch scope를 바로잡는 프레임워크입니다.

Agentic Research Success Conversion SWE-bench Lite Frame-parallel In progress

Repository-level coding agent는 관련 파일을 일부 찾아도 실패할 수 있습니다. 증상이 나타난 위치를 실제 원인으로 오해하거나, 테스트 실패가 가리키는 더 넓은 API contract와 invariant를 확인하지 않은 채 바로 patch에 들어가기 때문입니다.

ORAG의 출발점은 이 병목을 검색 성능 부족이 아니라 실행 중 검색 필요성과 문제 frame을 인식하지 못하는 실패로 보는 데 있습니다. self-reflection만으로는 기존 가설을 깨지 못하고, 같은 hypothesis를 다른 말로 반복할 수 있습니다.

Figure 1. Misframing loop · shallow localization becomes a patch path
Symptom locus looks plausible Patch starts before evidence Test fails same hypothesis Observer contract oracle risk

따라서 ORAG가 던지는 질문은 단순합니다. Worker가 지금 놓치고 있는 문제 해결 구조를 외부 Observer가 더 빨리, 더 명확하게 찾아 줄 수 있는가?

ORAG는 Worker를 교체하지 않습니다. Worker는 기존처럼 repository를 읽고 patch를 만들며 테스트합니다. Observer는 Worker event stream을 관찰하고, compact context pack을 바탕으로 frame별 질문을 만든 뒤 evidence를 수집합니다.

Problem frame invariant · api contract · dataflow · test oracle
Evidence chain symptom → cause → governing constraint → action
Delivery rule safe boundary, advisory only, use-or-ignore
Figure 2. Frame-parallel Observer · progressive packet injection
Worker plan · read · edit · test Observer coordinator symptom / causal contract / invariant test / oracle patch risk Evidence packet causal structure governing constraint application risk

최신 기준은 완성된 최종 보고서를 기다리지 않는 것입니다. 첫 packet은 완전성보다 시점이 중요하고, 이후 contract/oracle/risk evidence가 준비되면 frame expansion 또는 correction packet으로 Worker의 좁은 frame을 넓힙니다.

Official resolved

scikit-learn__scikit-learn-25570

Invariant-level packet은 Worker가 보고 있던 `_hstack` 증상을 generated column stream과 stacked block stream의 alignment 문제로 재구성했다. Worker는 packet 이후 `_iter`와 `_update_fitted_transformers`를 함께 수정했고, official 평가에서 `187 passed`로 resolved됐다.

Worker-only: unresolved Earlier ORAG-on: unresolved Invariant packet: resolved
Honest failure

scikit-learn__scikit-learn-25747

Observer는 Worker를 정확한 helper인 `_wrap_in_pandas_container`로 이끌었지만, 결론이 row-count mismatch guard에 묶였다. Hidden oracle은 DataFrame output의 자체 index 보존을 요구했고, 결과는 unresolved였다.

frame_coverage: 0.75 first packet: 76,527ms observer cost: $1.5436

이 증거가 말해 주는 것

ORAG의 강한 신호는 success conversion 자체보다, packet 직후 Worker의 reasoning과 tool call이 실제로 달라졌다는 점입니다. 다만 success conversion 사례가 아직 적고, frame-parallel cost가 크며, correct patch locus를 찾더라도 broader contract를 놓칠 수 있다는 한계도 분명합니다.

01

Trigger-based ORAG v0

edit-before-evidence, failed-test-symbol-not-searched 같은 규칙으로 missing evidence 후보를 잡았다.

02

Shadow / Advisor replay

저장된 Worker trajectory 위에서 packet 품질과 delivery artifact를 검증했다.

03

Agentic Observer Retriever

Observer가 tool-use loop로 evidence를 직접 찾고 primary conclusion을 self-select한다.

04

Frame-parallel Observer

narrow-frame 실패를 줄이기 위해 causal, contract, oracle, risk frame을 병렬 scout한다.

성능 일반화

아직 ORAG가 coding agent 성능을 일반적으로 높인다고 주장하지 않는다. 다음 단계는 5-10개 Worker-only 실패 task에서 success conversion 재현성을 확인하는 것이다.

Packet causality

delivered packet 원문과 Worker 직후 thinking/message/tool call을 함께 남겨, 실제로 무엇이 바뀌었는지 episode 단위로 감사해야 한다.

Cost accounting

Observer LLM 비용을 자동 수집하고, total cost와 cost per resolved를 Worker-only baseline과 함께 비교해야 한다.