AI-Assisted Engineering Talk #3/27

레거시 코드의 심연을 항해하는 컨텍스트 엔진의 설계 철학

Apollo 11의 유도 컴퓨터 어셈블리 코드를 ‘궁극의 레거시 코드’로 두고, Augment Agent가 1202 알람을 조사하고 P65 착륙 알고리즘을 자율로 구현해 보인다. 핵심 메시지: 컨텍스트 엔진이 코드를 ‘텍스트가 아닌 코드로’ 다루어야 모델이 레거시를 이해할 수 있다.

핵심 주장

1. 코드베이스는 텍스트가 아니다

키워드 매칭이나 grep 기반 RAG로는 코드의 의미적 연결—아키텍처, 호출 관계, 활성/폐기 상태—을 옮길 수 없다. Augment는 2년간 독자적 컨텍스트 엔진을 만들어 ‘코드를 코드로 다루는 검색 시스템’을 구축했다.

2. 고품질 입력이 모델보다 중요하다

동일한 frontier 모델에 무엇을 어떻게 넣느냐가 레거시 코드 수술의 성패를 가른다. Augment는 자체 모델 학습을 1년 전에 중단하고 컨텍스트와 검색 레이어에 집중했다—모델이 빠르게 좋아지는 시기에 모델 레이어로 경쟁하는 것은 작은 회사에 패배하는 게임이라는 판단이다.

3. 자율성은 검증 가능성의 함수다

‘simulator.py를 통과시켜라. 단, simulator.py는 수정하지 마라.’ 에이전트가 손댈 수 없는 검증 표면이 고정되어 있기에 자율 실행이 폭주하지 않는다. 자율 에이전트에게 줄 수 있는 자유의 양은 검증할 수 있는 양과 정확히 비례한다.

4. 레거시 디버깅은 코드 안팎의 진실을 묶는 작업이다

1202 알람의 8진수 코드가 ‘core sets 고갈’을 의미한다는 것은 코드에서 보이지만, 그 원인이 ‘외부 레이더가 켜진 채였다’는 사실은 웹/역사적 컨텍스트에서 와야 한다. 코드 안의 진실과 코드 밖의 진실을 함께 수집하는 능력이 핵심이다.

5. Chat은 가설, Agent는 검증

Chat 모드에서 인간과 에이전트가 함께 가설을 적고, Agent 모드에서 그 가설을 검사하는 테스트를 작성·실행한다. 청중의 관찰 ‘What you showed was test driven development effectively’에 발표자도 동의했다. 사양 작성과 사양 검증의 자연스러운 분업이다.

Apollo 11 라이브 데모

  • 1. Understand — 코드베이스 이해 — 60년 된 AGC 어셈블리를 Chat 모드로 질의. ‘이 파일은 무엇을 하는가, 컨벤션은 무엇인가?‘를 에이전트에게 묻는다. 청중에게 ‘어셈블리를 프로덕션에서 써본 사람’을 물었을 때 손이 거의 올라오지 않았다.
  • 2. Debug — 1202 알람 조사 — 코드베이스 + 웹 검색을 결합해 30초 만에 ‘TLDR: 너무 많은 동시 작업을 추적할 메모리가 부족’이라는 진단에 도달. 코드 안의 사실과 코드 밖의 역사적 컨텍스트를 자동으로 묶었다.
  • 3. Translate — P65 착륙 알고리즘 구현 — Agent 모드가 어셈블리의 P65 routine을 읽고 의도를 보존한 Python 클래스 LunarDescentGuidance를 자율 작성. 시뮬레이터의 최종 위치 오차는 0~1미터.
  • 4. Recover — 자가 복구 — ‘python이 설치되어 있지 않다’는 오류를 12초 안에 감지하고 ‘python3로 대체 실행’하여 진행. 시도-관찰-수정 루프 자체가 의존성 매핑이다.

주요 인사이트

💡 [전략] IDE를 갈아치우게 하지 않는다

‘10년 된 Java 코드베이스를 가진 팀이 IDE를 바꿀 리 없다’는 현실을 인정하고 IntelliJ·VS Code 플러그인으로 진입 장벽을 낮춘다. 엔터프라이즈를 day zero부터 타겟하여 customer-managed encryption keys, ISO 42001(AI ISO 표준) 같은 보안 자산을 구비했다.

enterprise integration

💡 [설계] Chat / Agent / Remote의 책임 분담

Chat은 한 턴씩 사용자가 통제하는 Q&A. Agent는 권한 프롬프트 없이 코드를 쓰고 명령을 실행하는 자율 모드. Remote Agent는 노트북을 닫아도 백그라운드에서 병렬로 도는 모드—워크숍에서 ‘어떻게 저렇게 빨리 풀었지?‘의 비밀이 바로 이것이었다. 동일 엔진이지만 자율성 수준과 병렬성에 따라 도구를 나눈다.

agent-design modes

💡 [메타포] Mission Control — 컨텍스트의 동심원

코드베이스에 묻는 것은 ‘휴스턴에 무선 보고하는 것’과 같다. 웹 검색이 더해지면 mission control이 더 커지고, MCP 서버를 추가로 연결하면 ’even larger mission control’이 된다. 에이전트의 컨텍스트 풀은 단일 코드베이스가 아니라 외부 지식 소스의 동심원이며, MCP는 그 동심원을 확장하는 표준 인터페이스다.

mcp context-engine

💡 [방법론] 검증 표면이 에이전트를 안정시킨다

에이전트의 강점은 추론 자체가 아니라 추론-시도-검증의 루프이며, 그 루프를 닫는 것이 테스트, 시뮬레이터, 타입 체커, 컴파일러다. 검증 신호가 없는 환경에서 에이전트는 그럴듯한 코드를 쓰지만 진척을 만들 수 없다. 레거시를 ‘agent-ready’로 만드는 첫 투자는 빠른 검증 표면을 만드는 일이다.

verification feedback-loop

💡 [한계] 코드 밖의 도메인 지식은 인간의 자리

스케줄러 코드에서 ‘priority 0이 최고인지 최저인지’ 에이전트는 양방향으로 모두 설득될 수 있었다— 그 사실은 코드에 명시되어 있지 않았기 때문이다. 에이전트는 코드에 적힌 진실을 표면화하는 데에는 강하지만, 코드 밖에 있는 도메인 컨벤션과 역사적 결정을 보충하는 자리는 인간이 채워야 한다.

human-in-the-loop agent-limits

““In order to get high quality outputs from any of the models, they require high quality input. Doing that for codebases is not necessarily straightforward — it’s not just like text.” — Matt Ball, Augment Code” ## 교차 연결 포인트

  • [검증 표면 패턴] 12-Factor Agents — Dex Horthy — ‘Own your prompts’와 ‘Small, focused agents’가 Augment의 ‘검증 경계를 에이전트가 수정할 수 없게 고정한다’는 설계와 직접 대응한다. 자율성의 범위를 검증 가능성으로 한정하는 원칙은 두 발표 모두의 핵심이다.
  • [컨텍스트 엔진] 코드를 코드로 다루는 검색 — Augment가 ‘텍스트가 아닌 코드로’ 다루겠다는 컨텍스트 엔진 철학은 RAG의 한계를 지적하는 여러 발표와 공명한다. 키워드 매칭이 아닌 의미적 코드 그래프 구축이 차세대 코딩 도구의 분기점이 될 수 있다.
  • [TDD와 에이전트] Chat은 사양, Agent는 검증이라는 분업 — ‘Chat으로 가설을 적고 Agent로 테스트를 작성한다’는 패턴은 TDD의 Red-Green-Refactor 사이클을 인간-에이전트 분업으로 재해석한 것이다. 여러 발표에서 반복 등장하는 ‘에이전트에게 검증 수단을 쥐여줘라’의 구체적 실천 방안이다.
  • [MCP 확장성] Mission Control의 동심원 — 코드베이스 → 웹 검색 → MCP 서버로 확장되는 컨텍스트 동심원 비유는 Anthropic의 MCP 비전과 직접 연결된다. 에이전트의 능력은 모델 크기가 아니라 접근 가능한 컨텍스트의 반경에 비례한다는 주장이다.

60년 된 어셈블리 앞에서도 에이전트가 의미를 읽어낼 수 있다면, 우리가 마주하는 레거시는 정녕 ‘pretty small fry’인 것이겠지요. 다만 코드에 적히지 않은 진실—도메인의 맥락과 역사적 결정—을 채워 넣는 자리는 여전히 사람의 몫이옵니다.