과학 계산을 위한 장기 실행형 Claude

Erik Hortua Ribeira는 Claude Opus 4.6을 장기 실행형 코딩 파트너로 활용해 미분 가능한 우주론 Boltzmann solver를 구현하고, 약 100시간에 걸친 반복 작업 끝에 동료심사를 통과한 논문으로 이어진 과정을 정리한다.

2026년 3월 23일영문 원문 보기 ↗
과학 계산을 위한 장기 실행형 Claude

편집자 주: 이 글은 도쿄대학교, KTH Royal Institute of Technology, Scandinavian AI 소속 계산 천체물리학자 Erik Hortua Ribeira의 기고문이다.

Claude는 이제 몇 주에서 몇 달에 걸치는 과학 코딩 과제를 해낼 수 있을 만큼 향상됐다. 이 글에서는 내가 Claude Opus 4.6과 함께 천체물리학 논문을 공동 집필한 경험을 소개한다. 핵심은 오류 계산을 자동화하는 새로운 미분 가능 우주론 도구를 만드는 것이었고, 결과적으로 약 100시간의 작업 끝에 새로운 동료심사 논문으로 이어졌다.

구체적으로 우리는 현대 우주론에서 핵심적인 구성 요소인 미분 가능 Boltzmann solver를 구현했다. 이것은 더욱 빠른 매개변수 추정(parameter estimation), 더 나은 오류 전파(error propagation), 그리고 차세대 우주론 분석 전반에 도움이 되는 기반 기술이다.

이번 작업에서 Claude는 놀랄 만큼 강력한 코딩 파트너였지만, 동시에 끈질긴 감독이 필요했다. 단순한 프롬프트 한두 번으로 끝나는 일은 아니었다. 더 정확한 비유는, 의욕적이지만 늘 면밀한 검토가 필요한 1년 차 박사과정생을 지도하는 일에 가깝다. 그럼에도 이런 방식은 이미 충분히 가치가 있다. 이론 계산과 수치 코드에 익숙한 연구자라면, Claude를 감독된 연구 조수처럼 다루는 것만으로도 상당한 생산성 향상을 얻을 수 있다.

전제

이 프로젝트는 단순히 "코드를 작성해 달라"고 요청해서 나온 결과가 아니었다. 우리는 비교적 명확한 연구 목표를 세운 뒤, Claude가 장시간 이어지는 작업 맥락을 잃지 않도록 프로세스를 설계했다. 내가 원했던 것은 한 번에 모든 것을 해결하는 마법 같은 실행이 아니라, 장시간 반복을 견디며 점진적으로 정확도를 끌어올리는 작업 루프였다.

출발점은 분명했다. 기존 우주론 코드베이스에 새 물리 모델과 자동미분 경로를 붙이는 일은, 구현 자체보다도 검증과 반복 수정이 더 큰 비중을 차지한다. 따라서 Claude에게 필요한 것은 단발성 영감보다는 긴 시간 동안 계획을 유지하고, 작은 실패를 누적 수정하며, 매번 테스트 결과를 다음 단계에 반영하는 능력이었다.

계획을 세우고 로컬에서 반복하기

가장 먼저 한 일은 Claude에게 전체 작업을 더 작은 단위로 쪼개게 하는 것이었다. 곧장 최종 논문 수준의 구현을 요구하는 대신, 먼저 계획을 세우고 각 단계가 로컬에서 실제로 돌아가게 만들도록 했다. 원문에서 내가 반복해서 사용한 지시는 이런 식이었다.

Write a plan. Implement the first step. Run it locally. Inspect the output.
Then update the plan and continue.

이 방식은 중요했다. 장기 실행 세션에서 가장 흔한 실패는 모델이 추상적 계획만 늘어놓고 실제 실행 상태와 분리되는 것이다. 반대로 매 단계마다 로컬 결과를 읽고 다음 행동을 다시 정하게 하면, Claude는 점차 실제 시스템 상태에 맞춰 조정되기 시작했다.

물론 이것만으로 충분하지는 않았다. Claude는 여전히 잘못된 추론 위에서 자신감 있게 전진할 수 있었다. 하지만 적어도 문제가 어디에서 발생했는지는 빨리 드러났다. 긴 연구 과제에서 핵심은 완벽한 첫 시도가 아니라, 잘못된 가설을 가능한 한 빨리 노출시키는 것이다.

세션을 가로지르는 메모리

장기 작업의 병목은 순수한 코딩 능력만이 아니다. 세션이 길어질수록 왜 특정 결정을 내렸는지, 어떤 실패를 이미 겪었는지, 다음에 무엇을 확인해야 하는지에 대한 기억이 흐려진다. 그래서 나는 Claude가 각 세션 끝에서 짧은 작업 로그를 남기게 했다. 예를 들면 다음과 같은 식이다.

Progress update:
- Implemented the differentiable transfer pipeline.
- Tests still fail in the lensing block.
- Suspect a normalization mismatch in the new Jacobian path.
- Next step: isolate the failing term and compare against the reference implementation.

이 메모리는 다음 세션에서 매우 중요했다. Claude는 이전 대화 전체를 기계적으로 되풀이하지 않아도, 무엇을 시도했고 무엇이 실패했는지 빠르게 복구할 수 있었다. 연구 코드에서는 같은 함정을 다시 밟지 않는 것이 곧 생산성이다.

이런 로그는 나 자신에게도 유용했다. 세션이 길어지면 사람 역시 세부 사항을 잊는다. 모델 메모리를 정리하는 행위는 동시에 인간 감독자의 메모리를 정리하는 일이었다.

테스트 오라클과 전문가 역할

Claude가 과학 코드를 쓸 때 가장 중요한 점은, 모델이 물리적으로 맞는 답과 그럴듯해 보이는 답을 스스로 구별하지 못한다는 사실이다. 이 간극을 메우는 것이 테스트 오라클(test oracle), 곧 무엇이 정답인지 판정하는 기준이다.

이번 프로젝트에서 그 역할은 내가 맡았다. 어떤 항이 보존돼야 하는지, 어떤 한계에서 기존 해와 일치해야 하는지, 어떤 수치 오차는 허용되고 어떤 오차는 물리적으로 치명적인지를 사람이 판단해야 했다. Claude는 이 기준을 만족하도록 빠르게 구현을 수정할 수 있었지만, 기준 자체를 독립적으로 세우지는 못했다.

이 때문에 작업 방식은 종종 이런 형태가 됐다.

Run the code. Compare against the reference. Explain the discrepancy.
Propose three possible causes. Fix the most likely one first.

놀라운 점은, 이렇게 감독된 환경에서 Claude가 디버깅 속도를 크게 끌어올렸다는 것이다. 인간이 직접 모든 파일을 손으로 뒤지는 대신, 모델이 가설을 생성하고 실험을 실행하며 결과를 요약한다. 연구자는 그 위에서 물리와 수학의 판정자 역할에 집중할 수 있었다.

조정 레이어로서의 Git

Git도 단순한 버전 관리 도구가 아니라 조정 레이어(coordination layer)로 활용했다. 세션이 길어질수록 "무엇이 바뀌었는가"를 명확히 남기는 일은 점점 더 중요해진다. 나는 Claude에게 작은 단위의 변경을 자주 점검하게 하고, 현재 상태를 스스로 요약하게 했다.

대표적인 지시는 이런 식이었다.

Summarize the current diff. State what changed, what remains broken,
and what evidence supports the latest modification.

이 절차는 두 가지 효과가 있었다. 첫째, Claude가 변경 내용을 막연한 서사 대신 구체적 차이(diff)로 바라보게 만들었다. 둘째, 내가 감독자로서 현재 브랜치가 어디까지 왔는지 빠르게 파악할 수 있었다. 장기 실행형 에이전트에게 Git 기록은 단순한 과거 보관소가 아니라, 현재 사고를 정렬하는 외부 기억 장치였다.

실행 루프

실제 작업은 한 번의 거대한 실행이 아니라, 계획 수립과 구현, 로컬 실행, 검사, 수정이 이어지는 루프로 진행됐다. 나는 이 루프를 가능한 오래 유지하도록 Claude를 운용했다. 단기 데모에서는 종종 보이지 않지만, 연구 코드에서는 10번째 수정이 아니라 50번째 수정 이후에야 비로소 의미 있는 안정화가 시작되곤 한다.

이 과정에서 도움이 된 것은 장기 반복을 명시적으로 허용하는 실행 패턴이었다. 원문에서 내가 사용한 호출은 다음과 같았다.

Ralph:
- keep going
- do not stop at the first working result
- continue until the tests, the numerics, and the written explanation are all aligned

핵심은 "처음으로 돌아가는 결과"가 아니라 "검증 가능한 결과"를 목표로 삼는 것이었다. Claude는 첫 성공 신호에 과도하게 만족하는 경향이 있었고, 감독자가 의도적으로 기준을 더 높게 잡아야 했다. 수치 일치, 테스트 통과, 설명 가능성, 코드 정리까지 모두 맞아떨어질 때까지 루프를 지속해야 했다.

그림 1: 서브퍼센트 정확도에 도달한 반복 경로

그림 1: 프로젝트의 핵심 목표였던 서브퍼센트 정확도에 도달하기까지, 반복 실행과 검증을 거치며 오차가 단계적으로 줄어든 과정을 요약한 도식.

결과

최종적으로 이 프로젝트는 단순한 프로토타입을 넘어 새로운 동료심사 논문으로 이어졌다. 논문은 천체물리학 계산에서 자동미분을 실제로 활용하는 방법을 제시했고, 향후 우주론 데이터 분석에서 더 빠르고 유연한 추론을 가능하게 하는 기반을 제공한다.

내가 얻은 결론은 과장된 낙관론과 비관론의 중간에 있다. Claude는 아직 독립적인 과학자가 아니다. 문제 설정, 정답 판정, 연구 방향 선택은 여전히 인간 전문가의 몫이다. 하지만 제대로 감독하면, Claude는 이미 장기 과학 코딩에서 실질적인 공동 작업자가 될 수 있다. 특히 구현과 반복 검증이 연구 병목인 영역에서는 더 그렇다.

중요한 것은 기대치를 올바르게 두는 일이다. Claude를 완전한 자율 연구자로 다루면 실망할 가능성이 크다. 반대로 세심한 감독 아래에서 오래 일할 수 있는 연구 조수로 다루면, 지금 당장도 충분히 유용하다.

감사의 말

이 작업은 많은 공동 작업과 피드백 위에서 진행됐다. 원문 저자는 이 프로젝트가 단지 모델 성능의 시연이 아니라, 장기 실행형 에이전트를 실제 과학 워크플로에 어떻게 통합할 수 있는지를 탐색한 사례라고 강조한다. 그 점에서 이 글의 진짜 기여는 하나의 논문을 완성했다는 사실만이 아니라, 과학 계산에서 인간과 장기 실행형 AI가 협업하는 구체적 운영 방식을 보여 주었다는 데 있다.

Related content (관련 글)