작은 시제품과 운영 서비스는 다른 일입니다
AI 코딩 에이전트는 코드 설명을 넘어 파일을 수정하고 테스트를 실행하는 일을 도울 수 있습니다. 예를 들어 GitHub의 Copilot 클라우드 에이전트는 변경용 브랜치를 만들고 코드를 작성해 검토 요청인 PR을 여는 흐름을 제공합니다. 브랜치는 기존 코드와 나눠 작업하는 갈래이고, PR은 그 변경을 검토하는 요청입니다. PR이 생겼다는 사실만으로 실제 서비스가 안전하게 배포된 것은 아닙니다. 처음에는 공개 자료나 가상 데이터로 결과를 직접 셀 수 있는 작은 작업이 적합합니다. 반대로 회원 권한, 결제, 개인정보 저장, 기존 데이터 변경처럼 오류의 영향을 설명하기 어려운 작업이라면 설계·보안·운영 검토를 함께 맡길 사람부터 정하세요. GitHub 공식 문서도 생성 코드의 오류와 보안 문제 가능성, 사람의 검토·테스트 필요성을 명시합니다.
요청문에는 만들 것과 하지 않을 일을 함께 쓰기
다음은 주문 합계 도구의 검수 연습입니다. 실제 주문이나 회계 처리 기준이 아니며, 금액은 합산 규칙을 설명하려고 만든 원 단위 정수입니다. AI에 맡길 요청 초안은 이렇게 쓸 수 있습니다. "가상 주문 CSV를 읽고 결제완료 주문의 건수와 금액 합계를 보여주는 시제품을 만들어 주세요. 열은 order_id, status, amount입니다. status는 PAID(결제완료)와 CANCELLED(취소)만 허용하고, amount는 0 이상의 정수로 받습니다. 0원 PAID 주문도 1건으로 셉니다. 주문번호는 비어 있으면 안 되고 파일 안에서 중복되면 안 됩니다. 누락·잘못된 값·중복이 있으면 파일 전체를 오류로 처리하고 행과 원인을 표시하세요. 정상 행만 몰래 합산하지 마세요. 데이터 행이 없는 파일은 0건·0원으로 표시합니다." 작업 범위도 덧붙이세요. "가상 데이터만 사용하고 실제 주문 API·데이터베이스·결제·메일 발송에는 연결하지 마세요. 지정된 작업 폴더 밖의 파일과 운영 설정은 바꾸지 마세요. 원본 CSV를 덮어쓰지 말고, 공개 배포는 별도 승인 전까지 하지 마세요. 바꾼 파일과 시험한 항목, 시험하지 못한 항목을 보고해 주세요." 이 문구 자체가 권한 차단 장치는 아닙니다. 실제 계정·폴더·네트워크 접근 범위도 작업에 맞게 제한해야 합니다. 설치나 외부 연결 승인을 요청받으면 어떤 데이터가 어디로 가는지 확인하고, 설명할 수 없는 권한은 검토 전까지 허용하지 마세요.
정답을 먼저 적어 두면 검수가 쉬워집니다
가상 데이터는 A001 / PAID / 12000, B002 / CANCELLED / 7000, C003 / PAID / 8000, D004 / PAID / 0의 네 행입니다. 정답은 3건, 20,000원입니다. B002는 취소라 빠지고 D004는 금액이 0이어도 결제완료 건수에 들어갑니다. 아래 표의 기대 결과는 이 글에서 정한 요구사항입니다. 특정 쇼핑몰의 주문 상태나 정산 정책을 그대로 적용한 것이 아닙니다. 같은 에이전트가 만든 테스트가 통과했다는 말만 듣지 말고, 미리 적어 둔 기대 결과와 실제 출력도 대조하세요. 이 표와 같은 CSV 6종을 아래 자료 목록의 브리프노트 ZIP으로 내려받을 수 있습니다. 압축을 풀면 가상 CSV, 기대 결과를 적은 expected-results.json, 설명 파일이 나옵니다. 실행 프로그램은 없습니다. 파일을 하나씩 시제품에 넣고, 기본 3건·20,000원뿐 아니라 0원 주문·빈 파일·금액 누락·중복도 대조하세요. 이 6개가 모든 예외나 보안을 시험한 것은 아닙니다.
| 시험할 상황 | 입력 | 기대 결과 |
|---|---|---|
| 기본 데이터 | A001·B002·C003·D004 네 행 | 3건 / 20,000원 |
| 취소만 있음 | B002 / CANCELLED / 7000 | 0건 / 0원 |
| 0원 결제완료 | D004 / PAID / 0 | 1건 / 0원 |
| 데이터 행 없음 | 필수 열 이름만 있는 파일 | 0건 / 0원 |
| 금액 누락 | 기본 데이터에서 C003 금액을 비움 | 행과 원인 표시, 전체 합산 중단 |
| 주문번호 중복 | 기본 데이터에 A001 행을 한 번 더 추가 | 중복 표시, 전체 합산 중단 |
가상 CSV 6종과 정답 자료 받기 (ZIP) CSV 6개 · 정답 JSON · 설명 TXT. 실행 프로그램은 없습니다.
통과한 테스트와 건너뛴 테스트를 구분하기
보고서에는 "테스트 완료" 대신 입력, 기대 결과, 실제 결과, 실패·미실행 이유가 있어야 합니다. 위 합계 예제는 숫자 처리 일부를 점검할 뿐입니다. 실제 로그인, 파일 업로드 제한, 접근 권한, 동시 이용, 장애 복구까지 확인한 결과가 아닙니다. 오류를 고치지 않고 테스트를 삭제하거나 기대값을 바꿨다면 원래 요구사항과 다시 비교해야 합니다. GitHub는 Copilot 클라우드 에이전트에 기본 보안 검사와 네트워크 제한을 두고, 코드 검토·병합 단계에 사람의 관여를 요구한다고 설명합니다. 동시에 코드·민감정보 유출과 입력 속 악성 지시의 위험도 안내합니다. 이 보호가 모든 로컬 코딩 도구나 사용자가 연결한 앱에 똑같이 적용된다고 가정하지 마세요. 비개발자가 직접 확인할 부분은 화면의 결과, 숫자, 오류 안내, 원본 파일 보존 여부입니다. 변경 파일과 새로 추가된 의존성, 인증·권한·서버 처리 코드는 기술 담당자의 검토 범위로 구분하세요. AI가 또 다른 AI의 결과를 검토했다는 사실은 보조 정보이지 운영 승인 자체가 아닙니다.
운영 반영은 별도의 승인으로 남기기
검토 담당자에게는 변경 전후 차이, 테스트 결과, 미검증 항목, 배포 범위와 되돌릴 방법을 함께 전달하세요. GitHub의 PR 검토도 의견 남기기, 승인, 수정 요청을 구분하며, 중요한 브랜치에 필요한 승인을 설정할 수 있습니다. 현재 프로젝트에서 그 규칙이 실제로 적용되는지는 따로 확인해야 합니다. 코드를 이전 버전으로 되돌릴 수 있어도 이미 보낸 메일, 결제 요청, 수정한 주문 데이터까지 자동으로 복구되는 것은 아닙니다. 그런 외부 동작이 있다면 시험 환경에서 중복 실행과 실패 시 처리를 검증하고, 복구 책임자를 정한 뒤에 운영으로 옮길 부분입니다. 검토할 사람이 없고 실패 결과도 판단하기 어렵다면, 원본을 건드리지 않는 가상 데이터 시제품까지를 이번 작업의 끝으로 잡으세요. 실제 업무를 자동 실행하는 단계는 별도 계획으로 분리할 수 있습니다. 함께 볼 글은 장시간 자동화에서 승인·중단·재시도 기준을 정하는 방법을 다룹니다.