
Confucius Code Agent: Scalable Agent Scaffolding for Real-World Codebases
핵심 포인트
- 1Confucius Code Agent (CCA)는 대규모 codebase에서 작동하는 software engineering agent로, Agent Experience (AX), User Experience (UX), Developer Experience (DX) 세 가지 관점을 중심으로 설계된 Confucius SDK 위에 구축되었습니다.
- 2Confucius SDK는 긴 reasoning을 위한 hierarchical working memory, cross-session continual learning을 위한 persistent note-taking system, 그리고 신뢰할 수 있는 tool use를 위한 modular extension system을 통합합니다.
- 3Meta-agent를 통해 agent 설정을 자동화하고 정제하는 CCA는 SWE-Bench-Pro에서 54.3%의 Resolve@1 성능을 달성하여, 기존 연구 baseline을 능가하며 scaffolding의 중요성을 입증했습니다.
Confucius Code Agent (CCA) 논문은 대규모 코드베이스에서 작동하고, 장기적인 세션을 유지하며, 복잡한 툴체인을 안정적으로 조율할 수 있는 코딩 에이전트 개발을 목표로 한다. 기존 연구 등급 에이전트들이 확장성 문제에 직면하고, 프로덕션 등급 시스템은 확장성, 해석 가능성, 제어 가능성 면에서 제한적이라는 문제점을 지적하며, 이 간극을 메우기 위해 Confucius SDK 위에 구축된 CCA를 제안한다.
CCA는 크게 두 가지 핵심 과제를 해결하고자 한다. 첫째, C1: Long-context reasoning으로, 에이전트가 방대한 저장소 내에서 관련 코드를 효율적으로 찾아내고, 분산된 모듈, 긴 툴 추적, 깊은 실행 이력을 넘나드는 다단계 추론을 수행해야 하는 문제이다. 둘째, C2: Long-term memory로, 에이전트가 재사용 가능한 패턴, 실패 모드, 불변성을 파악하여 작업을 넘어 지속적인 지식을 축적해야 하는 문제이다.
이러한 문제를 해결하기 위해, 논문은 Agent Experience (AX), User Experience (UX), Developer Experience (DX)라는 세 가지 상호 보완적인 관점을 중심으로 Confucius SDK를 설계한다.
- Agent Experience (AX)는 에이전트의 내부 인지 작업 공간에 중점을 둔다. LLM이 안정적인 추론을 위해 어떤 정보를 받고, 어떻게 구조화되는지 다룬다. 노이즈를 피하고, distilled working memory, hierarchical memories, adaptive summaries를 통해 프롬프트를 간결하고 안정적으로 유지한다.
- User Experience (UX)는 사용자가 에이전트를 어떻게 관찰하고 상호작용하는지에 초점을 맞춘다. 읽기 쉬운 로그, 실행 추적, 아티팩트 미리보기를 통해 투명성과 해석 가능성을 극대화하는 것을 목표로 한다.
- Developer Experience (DX)는 에이전트 구축, 검사, 개선에 필요한 경험을 의미한다. 에이전트의 추론(AX)과 외부 동작(UX) 모두에 대한 관찰 가능성, 프롬프트, 툴, 메모리를 위한 모듈식 인터페이스를 제공하여 재현성, ablation, 디버깅, 빠른 반복을 가능하게 한다.
Confucius SDK는 이러한 철학을 바탕으로 네 가지 핵심 메커니즘을 제공한다:
- F1: Context Management (C1; AX):
- Hierarchical Working Memory: 각 에이전트 인스턴스는
session,entry,runnable과 같은 구성 가능한 가시성 범위(visibility scopes)를 가진 계층적 워킹 메모리를 지원한다. 이 계층 구조는 컨텍스트가 pruning될 때 중요한 통찰력과 중간 아티팩트를 효율적으로 저장하고 검색할 수 있도록 한다. - Adaptive Context Compression:
Architect라는 planner agent에 의해 구동된다. 유효 프롬프트 길이가 임계값에 도달하면, Architect는 별도의 LLM 호출로 대화 이력을 분석하여,task goals,decisions made,open TODOs,critical error traces와 같은 핵심 정보 범주를 명시적으로 보존하는 구조화된 요약(structured summary)을 구성한다. 시스템은 이 압축된 요약으로 표시된 과거 메시지를 대체하고, 최근 메시지들의 rolling window는 원본 형태로 유지한다. 요약은 새로운 AI 메시지로 삽입되며, 이후 모든 turn에서 압축된 요약과 최근 원본 이력을 모두 참조한다. 이를 통해 컨텍스트 한계를 초과하지 않고도 긴 궤적에 걸쳐 다단계 추론을 유지할 수 있다.
- F2: Note-Taking Agent (C2; AX, UX):
- 모든 상호작용은 사용자 메시지, 툴 호출, LLM 출력, 시스템 이벤트 등을 포함하는 구조화된 세션 'trajectory'로 기록된다.
- 전용 note-taking agent는 이러한 trajectory를 컴팩트한 노트로 distillation한다.
- 영구 노트는 파일 시스템과 유사한 계층적 Markdown 파일로 저장되며, 각 세션은 고유 디렉토리를 가진다. 이 디렉토리 아래에
project/architecture.md,research/findings.md,solutions/bug_fix.md등과 같은 경로를 생성할 수 있다. - 가장 중요한 점은 hindsight notes for failures에 중점을 둔다는 것이다. 성공적인 해결책뿐만 아니라 컴파일 에러, 런타임 예외, 비생산적인 전략, 그리고 최종 해결책이나 포기 이유 등을 기록한다. 이는 에러 메시지, stack trace, affected components로 색인화된 실패 사례 코퍼스를 구축하여, 유사한 실패 발생 시 기존 해결책이나 workaround를 즉시 참조할 수 있게 한다.
- F3: Extensions (C1; AX, DX):
Extension은 오케스트레이터에 부착되고 루프의 각 iteration에 참여하는 모듈식 구성요소이다.
on_input_messages,on_plain_text,on_tag,on_llm_output등과 같은 콜백(callbacks)을 등록하는 typed configuration object이다.- 오케스트레이터의 각 단계에서 이 콜백들이 고정된 순서로 호출되며, I/O 인터페이스, 세션 전체 스토리지, 계층적 메모리, 아티팩트 스토어를 노출하는 공유
run context에 접근할 수 있다. - 이를 통해 확장 기능은 LLM에 도달하기 전 프롬프트를 형성하고, 모델 출력(XML 스타일 태그 또는 네이티브 툴 호출 포함)을 해석하며, 대화 이력에 메시지를 삽입하거나 필터링할 수 있다.
Perception extensions(예: file-edit, command-line),Reasoning extensions(예: planning, "thinking" modules),Action extensions(예: shell commands, file edits, function calls, code search) 등 다양한 유형의 확장이 존재한다.- 모든 툴 사용과 프롬프트 형성(prompt shaping)을 확장 기능을 통해 라우팅함으로써, Confucius SDK는 코어 오케스트레이션 루프와 에이전트 기능을 명확히 분리한다. 이는 재사용성, 관찰 가능성, ablation 용이성을 높인다. CCA는 file-editing, CLI, code search, planning, prompt-caching 등 특정 확장 번들로 오케스트레이터를 인스턴스화한 것이다.
- F4: Meta-agent (DX):
- Confucius SDK 내에서 Meta-agent는 Confucius Orchestrator를 기반으로 구축된 추가 에이전트이다.
- 사용자가 자연어로 대상 에이전트의 동작과 제약 조건을 설명하면, Meta-agent는
repository scope,latency/safety constraints, 어떤 기존 확장 기능을 연결할지(file editing,Bash,code search,internal tools), 어떤 평가 태스크나 테스트 스위트를 사용할지 등 구체적인 요구사항을 묻는 구조화된 구성 양식(structured configuration form)을 생성한다. - 사용자 확인 후, Meta-agent는 에이전트의
configuration및prompts를 자동으로 합성하고, 선택된 확장 기능 및 메모리 정책을 연결한다. - 가장 중요한 점은, Meta-agent가 새로 생성된 에이전트의 테스트 및 디버깅을 자동화한다는 것이다. 동일한 SDK 런타임을 사용하여 후보 에이전트를 로컬에서 실행하고,
regression tasks(예: 대표적인 GitHub issues) 스위트에서 구동하며, 에이전트의 출력, 로그, 툴 추적을 관찰한다. - brittle tool selection, incorrect file-edit patterns, poor recovery from compiler errors와 같은 실패나 바람직하지 않은 동작이 감지되면, Meta-agent는 프롬프트, 확장 구성 또는 새로운 툴 래퍼(tool wrappers)에 대한 구체적인 수정을 제안한다. 이러한 패치는 에이전트에 적용되며, 테스트 루프가 재실행되어, 목표 metric이 충족될 때까지 에이전트를 점진적으로 개선하는 "build-test-improve" 프로세스를 생성한다.
이러한 메커니즘을 통해 CCA는 SWE-Bench-Pro에서 Resolve@1 54.3%의 성능을 달성하여, 동일한 저장소, 모델 백엔드, 툴 접근 환경에서 기존 연구 baseline을 능가하고 상업적 결과와 비교하여도 우수한 성과를 보인다. 이는 에이전트 scaffolding이 모델 기능만큼이나 에이전트 성능의 주요 결정 요인임을 입증한다.