Devin이 같은 오류를 다시 보고했을 때, 바로 “다시 고쳐줘”라고 보내기 전에 볼 것이 있습니다. 이번 시도에서 달라진 조건이 무엇인지입니다. 코드만 달라졌는지, 실행 환경도 달라졌는지, 아니면 같은 명령을 다시 돌렸는지부터 구분해야 해요.
2026-09-25 작성. Node.js v22.12.0에서 실행한 설명용 예제와 공식 문서를 바탕으로 정리했습니다. 세 번의 재실행은 직접 구성한 실습이며, 실제 Devin이 반복 실패한 사용 후기가 아닙니다. 도식도 실제 제품 화면이 아닙니다.
“또 실패”를 명령·위치·오류로 풀어 적습니다
화면에 같은 문구가 보여도 원인은 달라질 수 있습니다. 반대로 코드가 여러 번 바뀌었어도, 설정을 읽는 첫 단계에서 멈췄다면 고친 코드까지 실행되지 않았을 수 있어요.
우선 진행 중인 수정을 잠시 멈추고 아래 정보를 요청하겠습니다. 에러 메시지뿐 아니라 어디서 무엇을 실행했는지가 있어야 이전 시도와 비교할 수 있습니다.
지금은 추가 수정하지 말고 실패 지점을 정리해줘.
- 실행한 명령과 작업 폴더, 런타임 버전
- 실패를 설명하는 오류 부분과 종료 코드
- 직전 시도에서 바꾼 파일 또는 실행 조건
- 그 변경 뒤 새로 확인한 사실
사실과 원인 추정을 구분해줘. 비밀 값은 제외해줘.
예를 들어 “테스트 실패”와 “테스트 실행 도구를 찾지 못함”은 다음 행동이 다릅니다. 실행 자체가 안 됐다면 기능 구현을 다시 고치기 전에 설치·실행 경로부터 확인해야 합니다.
막힌 지점에 따라 다음 요청도 달라집니다

실행 환경에서 막혔다면, 먼저 실행 가능한 상태를 만듭니다
필요한 설정, 패키지, 실행 파일, 저장소 접근이 있는지 봅니다. “파일 없음”이라는 문구도 파일이 실제로 없는 것인지, 다른 폴더에서 실행한 것인지부터 확인해야 해요. 문구 하나로 설치 문제라고 단정하지 않습니다.
다음 요청: 기능 코드는 잠시 두고, 이 명령이 시작되는 데 필요한 조건을 확인해줘. 현재 작업 폴더와 런타임, 누락된 설정 이름을 정리하고 최소 실행부터 확인해줘. 비밀 값은 출력하지 마.
원하는 결과가 갈린다면, 사람이 기준을 정해야 합니다
“검색 오류를 없애줘”는 오류 안내를 없애라는 뜻으로도 읽힙니다. 검색 실패 시 재시도 안내를 보여줄 것인지, 이전 결과를 남길 것인지부터 정해야 해요. 실행이 성공해도 이 기준이 없으면 수정이 오갈 수 있습니다.
다음 요청: 검색 실패는 빈 결과로 처리하지 않아. 실패하면 오류 안내와 재시도 버튼을 보여주고, 성공했는데 결과가 0개일 때만 빈 결과 안내를 표시해줘. 이 둘을 구분해 검증해줘.
입력과 기준이 분명한데 실패한다면, 가설을 하나씩 확인합니다
같은 테스트에서 실패한다고 해서 시도마다 아무 진전이 없었던 것은 아닙니다. 한 원인을 배제한 것도 정보예요. 다만 “이번에는 다른 방식으로 수정”만 반복한다면, 어떤 가설을 확인했는지 알기 어렵습니다.
다음 요청: 가장 가능성 높은 원인 하나와 그 근거를 적어줘. 어떤 확인 결과가 나오면 그 가설을 배제할 수 있는지도 정하고, 그 확인부터 진행해줘. 관련 없는 리팩토링은 보류해줘.
이 세 가지는 완전히 분리된 원인 목록은 아닙니다. 환경이 정상인 것을 확인한 뒤에야 구현 결함이 드러날 수도 있어요. 지금 다음으로 확인할 지점을 고르기 위한 구분입니다.
작은 실습: 세 번 실행해도 빠진 설정은 생기지 않습니다
이번 예제는 보고서의 통화 코드를 환경변수로 받습니다. DEVPILOT_REPORT_CURRENCY가 없으면 시작 단계에서 종료하고, KRW나 USD이면 준비 완료 메시지를 출력해요. 실제 환전이나 외부 요청은 하지 않습니다.
// Explanatory startup check, not code produced by a Devin session.
const currency = process.env.DEVPILOT_REPORT_CURRENCY;
if (!currency) {
console.error('CONFIG_MISSING: DEVPILOT_REPORT_CURRENCY');
process.exit(2);
}
if (!['KRW', 'USD'].includes(currency)) {
console.error('CONFIG_INVALID: DEVPILOT_REPORT_CURRENCY');
process.exit(2);
}
// Fixed sample amount. This performs no conversion or external request.
console.log(`REPORT_READY currency=${currency} amount=12000`);
이 코드를 report.mjs로 저장합니다. 아래 명령은 macOS·Linux 셸용이며 Node.js가 필요합니다. 첫 명령은 실습 변수를 명시적으로 제외하고, 두 번째 명령은 그 실행에만 KRW를 전달합니다.
# report.mjs를 저장한 폴더에서 실행
# 설정 누락 재현: 종료 코드 2가 예상됩니다.
env -u DEVPILOT_REPORT_CURRENCY node report.mjs
# 예제의 정상 설정을 해당 실행에만 전달합니다.
DEVPILOT_REPORT_CURRENCY=KRW node report.mjs
별도 실행 스크립트로 설정 없는 실행을 세 번, 설정 있는 실행을 한 번 확인했습니다. 아래의 exit와 소스 변경 여부는 그 스크립트가 기록한 값이고, 대문자로 시작하는 두 메시지는 예제 프로그램의 출력입니다.
missing-config attempt 1: exit=2
CONFIG_MISSING: DEVPILOT_REPORT_CURRENCY
missing-config attempt 2: exit=2
CONFIG_MISSING: DEVPILOT_REPORT_CURRENCY
missing-config attempt 3: exit=2
CONFIG_MISSING: DEVPILOT_REPORT_CURRENCY
configured: exit=0
REPORT_READY currency=KRW amount=12000
report.mjs unchanged: true

설정이 없을 때는 세 번 모두 종료 코드 2였습니다. KRW를 전달한 실행은 0으로 끝났고, 실행 전후 파일의 SHA-256 값도 같았습니다. 코드 변경 없이 이 예제의 시작 조건을 충족한 것입니다.
여기서 종료 코드 2와 CONFIG_MISSING은 이 예제가 정한 값입니다. Node.js나 Devin의 공통 오류 규칙이 아니에요. 또 설정이 없으면 무조건 기본값을 넣는 것이 답도 아닙니다. 통화처럼 결과의 의미를 바꾸는 값은 의도한 설정을 먼저 확인해야 합니다.
현재 세션에서 고친 환경이 다음 세션에도 남는지 봅니다
Devin의 환경 설정 문서는 저장소·도구·의존성·환경변수 등을 준비한 스냅샷에서 세션을 시작한다고 설명합니다. 세션 안의 변경은 스냅샷으로 자동 반영되지 않는다고도 명시합니다.
따라서 세션에서 패키지를 한 번 설치하거나 변수를 지정해 해결했다면, 다음 세션의 환경에도 그 준비가 반영되는지 확인해야 합니다. 이번 실행이 성공했다는 것과 다음 실행도 같은 조건으로 시작한다는 것은 다른 확인이에요.
환경 수정 뒤 남길 것: 어떤 도구·버전·설정이 필요했는지, 어디에 반영했는지, 새 세션에서도 시작 명령이 실행되는지. 민감한 값은 문서나 대화에 복사하지 말고 공식 Secrets 설정으로 관리합니다.
위 실습의 명령 앞 변수 지정은 그 프로세스에 값을 전달하는 예시입니다. Devin 환경을 영구 설정하는 명령은 아닙니다. 실제 환경 구성 방식은 계정의 설정과 공식 문서를 확인해야 해요.
“다시 해줘” 대신 확인한 사실을 붙여 보냅니다
설정 누락 실습을 Devin 작업에 전달한다고 가정하면, 다음처럼 쓸 수 있습니다. 원인 추정과 확인된 사실을 구분하고, 다음 행동을 좁혔습니다.
현재 report.mjs 실행이 아래 오류로 끝납니다.
CONFIG_MISSING: DEVPILOT_REPORT_CURRENCY
확인한 사실
- 이 변수 없이 실행한 세 번 모두 종료 코드 2였습니다.
- 같은 소스에 KRW를 전달하면 REPORT_READY가 나오고 0으로 끝납니다.
- 외부 API 호출이나 환전 계산은 없는 예제입니다.
다음 확인
소스 수정은 보류하고, 실패한 실행 경로에서 이 변수가
어디서 전달돼야 하는지 확인해줘. 셸·실행 스크립트·환경 설정 중
어느 경로가 빠졌는지 근거로 설명해줘.
누락 검사를 지우거나 임의의 기본 통화를 넣지는 마.
완료 조건
의도한 설정 경로로 실행하고 출력과 종료 코드를 남겨줘.
현재 세션에만 적용한 것인지, 다음 세션에도 반영되는지 구분해줘.
추가 설정 변경이 필요하면 변경 위치와 이유를 먼저 알려줘.
요청서를 길게 만드는 것이 목적은 아닙니다. 이미 확인한 사실을 다시 뒤집지 않게 하고, 다음 시도에서 무엇을 알게 될지 분명하게 만드는 거예요. 공식 지시 가이드도 구체적인 범위·성공 조건과 검증 가능한 중간 단계를 권합니다.
횟수보다 새 근거가 생기는지를 보고 멈춥니다
이번 예제에서 세 번 실행한 것은 반복을 보여주기 위해서입니다. “세 번 실패하면 새 세션”이라는 기준을 제안하는 것은 아니에요. 저는 다음 상황이면 추가 구현을 멈추고 원인 확인부터 요청하겠습니다.
- 같은 가설과 같은 조건으로 재실행하면서 새 로그나 확인 결과가 생기지 않을 때.
- 요청한 기능 밖으로 수정 범위가 커지는데 이유를 설명하지 못할 때.
- 기대한 동작을 고치는 대신 오류나 테스트를 없애서 통과시키려 할 때.
- 필요한 접근 권한이나 정책 결정이 없는데 구현만 계속할 때.
반대로 오류는 같아도 원인 후보 하나를 배제했다면 다음 검증을 이어갈 근거가 있습니다. 외부 서비스의 일시적인 장애라면 잠시 뒤 재시도할 이유도 있고요. 재시도 자체보다 재시도의 이유를 보자는 이야기입니다.

작업이 너무 커졌거나 새 세션으로 나눠야 한다면, 실패한 명령과 오류, 확인한 사실, 배제한 가설, 다음 확인 하나를 남깁니다. 수정 중인 파일은 브랜치·커밋·변경 목록도 함께 기록해 작업 상태를 잃지 않게 합니다.
현재 작업: [한 문장으로]
작업 상태: [브랜치·커밋, 미커밋 변경 파일]
재현: [작업 폴더 / 명령 / 필요한 입력]
오류: [핵심 오류 / 종료 코드]
확인된 사실: [로그나 검사로 확인한 것]
배제한 가설: [무엇을 어떻게 확인했는지]
아직 모르는 것: [권한·정책·환경 차이 등]
다음 확인: [한 가지]
완료 조건: [어떤 결과가 나오면 이 단계를 끝낼지]
공식 작업 가이드에서도 작업 크기와 환경 설정을 점검하도록 안내합니다. 새 세션을 여는 것만으로 같은 누락 조건이 해결되지는 않으니, 넘길 상태와 실행 조건을 함께 준비해야 해요.
저라면 “이번엔 꼭 고쳐줘”보다 “이번에는 무엇이 달라졌는지 알려줘”를 보내겠습니다. 같은 오류를 보고도 다음 판단에 쓸 근거가 쌓이고 있다면, 그 시도는 이전 시도와 다릅니다.
자주 묻는 질문
같은 오류가 몇 번 나오면 Devin 작업을 멈춰야 하나요?
이 글은 횟수 기준을 정하지 않습니다. 같은 가설과 조건으로 반복하며 새 근거가 생기지 않거나, 필요한 권한·정책 결정이 빠져 있다면 구현을 멈추고 그 조건부터 확인하는 편을 권합니다.
새 세션을 열면 반복 오류가 해결되나요?
새 세션만으로 같은 환경 누락이나 불명확한 요구사항이 해결된다고 볼 수 없습니다. 확인한 사실과 작업 상태를 넘기고, 필요한 실행 조건도 준비해야 합니다.
이 글의 세 번 실패는 실제 Devin 실행 결과인가요?
아닙니다. 설정 누락을 의도적으로 만든 Node.js 예제를 별도 스크립트로 반복 실행했습니다. 실제 Devin의 실패율, 비용, 재시도 성능을 측정한 것은 아닙니다.
함께 보면 좋은 글
작업이 끝나 PR을 받았다면 테스트 통과 뒤에 확인할 PR 검토 기준으로 이어가세요. 작업을 시작하기 전에는 Devin 소개와 첫 요청 예제, 조사와 구현을 나누는 방법은 방향 주는 지시법에서 다뤘습니다.
참고 자료와 실행 범위
- Devin environment setup · 환경 구성, 스냅샷, 환경변수·Secrets.
- Instructing Devin Effectively · 범위·성공 조건·중간 검증.
- When to Use Devin · 작업 분할과 환경 점검.
- Node.js process.env · 예제의 환경변수 접근.
공식 자료 확인: 2026-09-25. 실습 환경: macOS, Node.js v22.12.0. 설정 누락과 정상 설정 전달 시의 출력·종료 코드·소스 동일성만 확인했습니다. 실제 Devin 세션, 클라우드 환경 구성, 외부 API, 비용, 브라우저·배포는 검증하지 않았습니다.
'Devin · Windsurf' 카테고리의 다른 글
| Devin에 큰 작업을 맡길 때, PR은 어디서 나눠야 할까? (0) | 2026.10.01 |
|---|---|
| Devin에 같은 설명을 반복한다면? AGENTS.md에 남길 것과 빼야 할 것 (0) | 2026.09.28 |
| Devin이 만든 PR, 테스트 통과만 보고 합쳐도 될까? (0) | 2026.09.24 |
| Devin에 실제 작업 4개 시켜본 한 달 실전기: ACU 비용, PR 품질, 삽질까지 (2026) (0) | 2026.09.13 |
| Devin 지시문 템플릿 7종 — 복붙해서 빈칸만 채우면 되는 프롬프트 모음 (2026) (0) | 2026.08.30 |