현록

AI 도구에서 말하는 아티팩트의 의미

요즘 codex 같은 AI를 사용하다보면 아티팩트라는 단어가 자주 등장합니다.
코드를 수정할 때도, 문서나 이미지를 만들 때도, 빌드 결과를 확인할 때도 같은 단어가 쓰인다.
낯선 전문 용어처럼 보이지만 핵심은 의외로 단순하다.

이 글에서는 AI 작업의 아티팩트를 특정 과정에서 만들어지거나 그 과정의 증거로 남아, 이후 검토·전달할 수 있는 결과물로 이해한다.

아티팩트의 기본 의미

artifact의 원래 뜻은 사람이 만든 물건이나 흔적에 가깝다.
소프트웨어 작업에서는 의미가 조금 더 구체적이다.
작업 중에 생성되고, 정보를 담아 저장·검토·전달할 수 있는 산출물을 아티팩트라고 부른다.

NIST CSRC 용어집에는 문맥에 따른 여러 정의가 있다.
그중 시스템 엔지니어링 문맥에서는 아티팩트를 정보를 담고 전달하기 위해 프로젝트에서 만들고 사용하는 작업 산출물로 설명하며, 모델과 소스 코드를 예로 든다.
이 정의를 넓게 적용하면 계획서와 분석 보고서도 포함할 수 있고, GitHub Actions 문서에서는 로그·테스트 결과·스크린샷도 대표 아티팩트로 다룬다.
최종 납품물만을 가리키는 말이 아니라는 점이 중요하다.
초안이나 로그, 스크린샷처럼 작업의 흔적과 근거로 남는 파일도 아티팩트가 될 수 있다.

아티팩트 = 작업 과정이 남긴, 다시 확인할 수 있는 결과물

문맥에 따른 의미 차이

아티팩트가 어렵게 느껴지는 이유는 분야마다 가리키는 범위가 다르기 때문이다.

문맥주로 가리키는 것대표 예시
AI 에이전트대화를 통해 생성하거나 수정한 결과물코드, 문서, 스프레드시트, 이미지, HTML 파일
CI/CD워크플로가 실행되며 만든 파일빌드 번들, 바이너리, 테스트 보고서, 로그
소프트웨어 공급망불변 데이터 객체와 그 출처 정보파일, Git 커밋, 직렬화된 디렉터리, 컨테이너 이미지
영상·음향기술 처리 과정에서 생긴 원하지 않는 왜곡압축 블로킹, 스캔 얼룩, 음원 왜곡
AI 에이전트
주로 가리키는 것
대화를 통해 생성하거나 수정한 결과물
대표 예시
코드, 문서, 스프레드시트, 이미지, HTML 파일
CI/CD
주로 가리키는 것
워크플로가 실행되며 만든 파일
대표 예시
빌드 번들, 바이너리, 테스트 보고서, 로그
소프트웨어 공급망
주로 가리키는 것
불변 데이터 객체와 그 출처 정보
대표 예시
파일, Git 커밋, 직렬화된 디렉터리, 컨테이너 이미지
영상·음향
주로 가리키는 것
기술 처리 과정에서 생긴 원하지 않는 왜곡
대표 예시
압축 블로킹, 스캔 얼룩, 음원 왜곡

따라서 단어만 보고 의미를 고정하면 안 된다.
어떤 과정에서 무엇이 남았는지를 함께 봐야 한다.

AI 도구에서의 아티팩트

대화형 AI의 답변은 흔히 대화창 안의 텍스트로 제공된다.
Codex 같은 도구는 여기에 더해 파일을 만들고, 실제 프로젝트를 수정하고, 실행 결과를 보여준다.
이때 대화의 설명과 구분되는 구체적인 결과물을 아티팩트라고 부르는 경우가 많다.
다만 제품마다 이 용어를 쓰는 범위가 다르므로, 이 글에서는 대화와 구분해 검토할 수 있는 파일과 결과물을 중심으로 설명한다.

OpenAI 공식 문서에 따르면 ChatGPT 데스크톱 앱은 생성된 문서, 프레젠테이션, 스프레드시트, PDF를 대화 옆에서 미리 보여준다.
HTML 미리보기가 지원되는 환경에서는 렌더링 화면과 소스를 전환해 볼 수 있다.
반면 Codex CLI는 작업 디렉터리의 파일을 만들고 편집할 수 있지만 시각적 미리보기나 주석 인터페이스는 없다.
따라서 출력 경로와 실행한 검증을 보고하도록 요청하는 편이 좋다.
즉 AI 문맥의 아티팩트는 새로 생긴 완전히 별개의 개념이 아니다.
기존 소프트웨어 용어를 가져와 대화가 실제 작업물로 바뀐 부분을 가리키는 데 쓰는 것에 가깝다.

대화 응답과 아티팩트의 차이

대화 응답은 주로 무엇을 했는지 설명한다.
아티팩트는 실제로 열어 검토하고, 저장하거나 다음 작업에 넘길 수 있는 대상이다.
이 구분은 실무를 위한 기준이지 고정된 경계는 아니다.
아티팩트가 반드시 편집 가능해야 하는 것은 아니며, 대화 안의 보고서나 코드도 독립된 검토 결과로 다뤄지면 아티팩트가 될 수 있다.

예를 들어 AI가 “README.md를 수정했습니다”라고 말한 문장은 대화 응답이다.
실제로 바뀐 README.md는 작업의 주요 아티팩트고, 저장된 diff나 리뷰 기록은 검증 근거 아티팩트가 될 수 있다.
대화창의 코드 블록도 단순한 예시라면 설명의 일부일 수 있다.
반면 독립된 파일로 저장되고 미리보기나 다운로드 대상이 됐다면 아티팩트에 가깝다.
확장자보다 해당 결과물이 어떻게 다뤄지는지가 기준이 된다.

Codex 작업의 대표 예시

요청주요 아티팩트검증 근거
README 수정수정된 README.mddiff, 링크 검사
웹 화면 제작컴포넌트, CSS, HTML빌드 결과, 브라우저 미리보기·스크린샷
데이터 분석CSV, 스프레드시트, 차트원본 데이터, 수식 검사
이미지 제작PNG, JPG크기·형식 확인, 시각 검토
프로젝트 빌드out, dist, 실행 파일빌드 로그, 테스트 보고서
README 수정
주요 아티팩트
수정된 README.md
검증 근거
diff, 링크 검사
웹 화면 제작
주요 아티팩트
컴포넌트, CSS, HTML
검증 근거
빌드 결과, 브라우저 미리보기·스크린샷
데이터 분석
주요 아티팩트
CSV, 스프레드시트, 차트
검증 근거
원본 데이터, 수식 검사
이미지 제작
주요 아티팩트
PNG, JPG
검증 근거
크기·형식 확인, 시각 검토
프로젝트 빌드
주요 아티팩트
out, dist, 실행 파일
검증 근거
빌드 로그, 테스트 보고서

주요 아티팩트와 검증 근거는 구분해서 봐야 한다.
테스트 로그와 스크린샷도 넓은 의미에서는 아티팩트이지만, 사용자가 원한 결과물과 그 결과를 뒷받침하는 근거는 역할이 다르다.

소스와 아티팩트의 관계

한 번의 AI 작업만 놓고 보면 소스를 입력물로, 이번 작업이 새로 만들거나 수정한 결과를 아티팩트로 구분하면 이해하기 쉽다.
하지만 이 구분은 파일의 고정된 속성이 아니라 작업 문맥에서의 역할이다.

원본 README.md는 AI에게 제공한 소스다.
수정 작업이 끝난 뒤의 같은 README.md는 이번 작업의 아티팩트다.
그 파일을 다음 작업에 다시 입력으로 주면 소스가 된다.
SLSA에서는 Git 커밋처럼 사람이 직접 작성하거나 검토한 불변 소스 객체도 아티팩트의 한 종류로 다룬다.
중요한 것은 파일에 영원한 이름표를 붙이는 것이 아니라 현재 과정에서 무슨 역할을 하는지 파악하는 일이다.

빌드 아티팩트와 AI 아티팩트의 차이

빌드 아티팩트는 보통 컴파일, 번들링, 패키징 과정의 출력을 가리킨다.
JavaScript 프로젝트의 dist 디렉터리, Java의 JAR, 컨테이너 이미지가 대표적이다.

GitHub Actions가 말하는 워크플로 아티팩트는 이보다 범위가 넓다.
공식 문서는 이를 워크플로 실행 중에 만들어진 파일이나 파일 묶음으로 정의한다.
빌드 바이너리만이 아니라 로그, 테스트 결과, 실패 정보와 스크린샷, 코드 커버리지도 대표 예시로 든다.
업로드하면 작업이 끝난 뒤에도 저장하거나 같은 워크플로의 다른 작업으로 전달할 수 있다는 점이 핵심이다.

AI 아티팩트는 범위가 더 넓다.
빌드를 거치지 않은 Markdown 문서나 이미지, 차트, 프로토타입도 포함할 수 있다.
두 용례의 공통점은 “과정에서 만들어져 확인과 재사용의 대상이 된 결과물”이라는 점이다.

생성과 완료의 구분

아티팩트가 존재한다는 사실은 작업이 검증되거나 배포됐다는 뜻이 아니다.
파일을 만드는 단계와 실제로 쓸 수 있는 상태를 확인하는 단계는 다르다.

생성됨 ≠ 검증됨 ≠ 커밋됨 ≠ 배포됨

코드 파일이 생겼어도 테스트는 실패할 수 있다.
빌드 아티팩트가 있어도 Git에 커밋되지 않았을 수 있다.
커밋이 원격 저장소에 올라가도 운영 배포는 실패했을 수 있다.
이 상태를 하나로 묶어 “완료”라고 표현하면 AI 작업을 과신하기 쉽다.

아티팩트 확인 기준

AI가 아티팩트를 만들었다고 할 때는 다음 순서로 확인한다.

  1. 실제 파일 경로나 다운로드 링크를 확인한다.
  2. 파일을 열어 내용과 렌더링 상태를 직접 본다.
  3. 코드라면 diff와 테스트, 문서라면 레이아웃, 데이터라면 수식과 출처를 검증한다.
  4. 임시 초안과 최종 버전을 구분하고 가장 최신 결과인지 확인한다.
  5. 커밋, 푸시, 배포 여부를 각각 따로 확인한다.
  6. 비밀 키, 개인정보, 내부 경로가 결과물에 포함되지 않았는지 점검한다.

출력 경로와 검증 결과를 함께 요청하는 습관만 들여도 대화와 실제 작업물을 헷갈리는 일이 줄어든다.

결함을 뜻하는 아티팩트

이미지나 음향 문맥에서는 아티팩트가 기술 처리 과정에서 생긴 부산물이나 인위적인 특징을 뜻하며, 보통은 원하지 않는 왜곡으로 나타난다.
압축 이미지의 네모난 블록, 스캔 이미지의 반점, 과포화된 오디오의 왜곡이 예다.
AI 이미지의 어색한 손가락이나 무너진 문자 같은 오류도 시각적 아티팩트라고 부르기도 한다.

따라서 “AI 아티팩트”라는 표현을 보면 먼저 문맥을 확인해야 한다.
파일이나 미리보기를 말한다면 결과물이고, 화질과 음질을 말한다면 왜곡일 가능성이 높다.

아티팩트 문맥의 네 가지 기준

아티팩트라는 말을 만났을 때는 네 가지를 파악하면 된다.

  • 어떤 과정이 이 결과물을 만들었는지
  • 실제로 무엇이 생겼고 어디에 남았는지
  • 어떤 방법으로 검증했는지
  • 임시 결과인지, 커밋·배포된 최종 결과인지

결국 AI 문맥의 아티팩트는 거창한 개념이라기보다 대화가 실제 작업물로 바뀐 흔적에 가깝다.
용어를 외우는 것보다 무엇이 만들어졌고, 어디에 있으며, 검증과 배포가 어디까지 끝났는지 구분하는 일이 더 중요하다.

참고 자료

관련 포스트
npm ci --include=dev가 production 빌드에 필요했던 이유 thumbnail
npm ci --include=dev가 production 빌드에 필요했던 이유
PM2의 production 환경에서 npm ci 이후 Vite 빌드가 실패한 원인을 NODE_ENV 상속, omit 설정, 빌드와 런타임 의존성의 차이로 정리합니다.
HTTP Cache-Control no-cache와 no-store 차이 thumbnail
HTTP Cache-Control no-cache와 no-store 차이
HTTP Cache-Control의 no-cache와 no-store 차이를 저장 여부, 재검증, ETag와 304 응답, private와 max-age 조합 기준으로 정리합니다.
Git reset과 revert 차이 thumbnail
Git reset과 revert 차이
Git reset과 revert의 차이를 커밋 이력, staging area와 working tree, 공유 브랜치의 안전한 되돌리기 기준으로 정리합니다.
HTML disabled와 readonly 차이 thumbnail
HTML disabled와 readonly 차이
HTML disabled와 readonly의 차이를 사용자 입력, 포커스, 폼 제출, 유효성 검사, 적용 가능한 요소를 기준으로 정리합니다.
Git fetch와 pull 차이 thumbnail
Git fetch와 pull 차이
Git fetch와 pull이 원격 변경을 가져오고 현재 브랜치에 통합하는 방식을 정리합니다. remote-tracking branch, upstream, fast-forward, merge와 rebase 선택 기준을 함께 봅니다.
HTTP Content-Type과 Accept 차이 thumbnail
HTTP Content-Type과 Accept 차이
HTTP Content-Type과 Accept 헤더의 방향, JSON 요청과 응답 예제, 콘텐츠 협상과 406·415 상태 코드의 차이를 정리합니다.
HTTP PUT과 PATCH 차이 thumbnail
HTTP PUT과 PATCH 차이
HTTP PUT과 PATCH의 차이를 리소스 교체와 변경 명령, 멱등성, JSON Patch와 JSON Merge Patch, ETag를 이용한 동시 수정 방지 기준으로 정리합니다.
HTML label과 input 연결 방법 thumbnail
HTML label과 input 연결 방법
HTML label과 input을 for와 id로 연결하는 방법, 암시적 연결, 폼 그룹과 보조 설명, 접근성 오류 패턴을 정리합니다.
HTML section과 article 차이 thumbnail
HTML section과 article 차이
HTML section과 article의 의미, 독립성 판단 기준, 중첩 구조, 제목과 접근성을 고려한 선택 방법을 정리합니다.
HTML div와 span 차이 thumbnail
HTML div와 span 차이
HTML div와 span의 차이를 기본 display, 담을 수 있는 내용, 시맨틱 태그, CSS와 JavaScript에서 그룹화하는 기준으로 정리합니다.
HTTP 상태 코드 정리 thumbnail
HTTP 상태 코드 정리
HTTP 상태 코드의 2xx, 3xx, 4xx, 5xx 의미와 200, 201, 204, 301, 304, 400, 401, 403, 404, 500, 502, 503 차이를 정리합니다.
HTML id와 class 차이 thumbnail
HTML id와 class 차이
HTML id와 class의 차이를 문서 내 유일성, 여러 값 사용, CSS 선택자, JavaScript 탐색, fragment 링크와 이름 작성 기준으로 정리합니다.
HTML button과 a 태그 차이 thumbnail
HTML button과 a 태그 차이
HTML button과 a 태그의 차이를 이동과 동작의 의미, href, type 속성, 폼 제출, 키보드 접근성, 잘못된 사용 패턴으로 정리합니다.
HTTP GET과 POST 차이 thumbnail
HTTP GET과 POST 차이
HTTP GET과 POST의 차이를 초보자 기준으로 정리합니다. 조회와 변경, query string과 request body, 캐시, safe, idempotent, form과 fetch 사용 기준을 함께 봅니다.
npm outdated와 npm update 차이 thumbnail
npm outdated와 npm update 차이
npm outdated와 npm update의 차이를 초보자 기준으로 정리합니다. Current, Wanted, Latest의 의미와 semver 범위 안에서 업데이트되는 방식, package-lock.json 변화까지 함께 봅니다.
npm install -g와 npx 차이 thumbnail
npm install -g와 npx 차이
npm install -g와 npx의 차이를 초보자 기준으로 정리합니다. 전역 설치, 로컬 설치, 일회성 실행, 프로젝트 scripts에 넣는 기준까지 함께 봅니다.
package.json에서 ^와 ~ 차이 thumbnail
package.json에서 ^와 ~ 차이
package.json 의존성 버전 앞에 붙는 ^와 ~의 차이를 초보자 기준으로 정리합니다. semantic versioning, 버전 범위, 0.x 예외, package-lock.json과의 관계까지 함께 봅니다.
Git merge와 rebase 차이 thumbnail
Git merge와 rebase 차이
Git merge와 rebase가 커밋 그래프를 어떻게 바꾸는지 정리합니다. fast-forward, merge commit, rebase의 커밋 ID 변경, 충돌 처리, 공유 브랜치에서의 안전한 사용 기준까지 살펴봅니다.
npx와 npm exec 차이 thumbnail
npx와 npm exec 차이
npx와 npm exec가 어떤 명령어인지 초보자 기준으로 정리합니다. 로컬 패키지 실행, 원격 패키지 임시 실행, --package 옵션, -- 인자 전달 차이까지 함께 봅니다.
npm scripts와 npm run 정리 thumbnail
npm scripts와 npm run 정리
npm scripts란 무엇인지, package.json scripts와 npm run의 관계를 초보자 기준으로 정리합니다. npm run dev, npm start, npm test, node_modules/.bin, -- 인자 전달 방식까지 함께 봅니다.
dependencies와 devDependencies 차이 thumbnail
dependencies와 devDependencies 차이
package.json의 dependencies와 devDependencies 차이를 초보자 기준으로 정리합니다. npm install과 npm install -D, 배포 환경 설치, package-lock.json과의 관계까지 함께 봅니다.
npm ci와 npm install 차이 thumbnail
npm ci와 npm install 차이
npm ci와 npm install의 차이를 초보자 기준으로 정리합니다. clean install의 의미, package-lock.json 조건, CI에서 npm ci를 쓰는 이유, .npmrc 플래그 주의점까지 함께 봅니다.
.npmrc 파일이란? thumbnail
.npmrc 파일이란?
storybook을 사용해보려고 하다 마주한 이슈의 해결법을 알아보다가 등장한 .npmrc라는 파일에 대해 공부해보았다. .npmrc 파일이란? .npmrc 파일은 npm에 대한 config 파일이다. (npm에 대한 rc 파일) 프로젝트별 registry, install 옵션, 인증 토큰처럼 npm CLI가 읽는 설정을 관리할 때 사용한다.
스토리북이란? thumbnail
스토리북이란?
Storybook은 UI 컴포넌트를 독립적으로 개발하고, 문서화하고, 테스트하기 위한 프론트엔드 워크샵입니다. Storybook 10.4 기준 설치 흐름과 stories, 문서화, 테스트 활용 방식을 정리합니다.
TTV와 TTI 차이 thumbnail
TTV와 TTI 차이
TTV와 TTI의 차이를 초보자 기준으로 정리합니다. 사용자가 화면을 보는 시점, 상호작용 가능한 시점, FCP, LCP, INP, Core Web Vitals와의 관계까지 함께 봅니다.
Maria DB 외부 접속 설정하기 thumbnail
Maria DB 외부 접속 설정하기
안녕하세요. 오늘은 Maria DB 초기 세팅 시, 외부에서 접속이 안될 때 매뉴얼을 작성해보겠습니다. dotenv 패키지를 통해서 환경변수로 관리한다면, 별도의 추가 작업을 할 일이 없으실 겁니다.
package-lock.json 파일의 역할 thumbnail
package-lock.json 파일의 역할
안녕하세요. 오늘은 node 환경의 개발자라면 한번쯤 궁금했을만한 package-lock.json의 역할에 대해 알아보겠습니다. 우리는 node 환경에서 개발을 할 때 다양한 패키지들을 설치하여 활용하곤 합니다. 우리가 설치하는 패키지 또한 다른 npm 패키지를 활용하여 만든 패키지들이고 이들 또한 설치를 하게 됩니다. 이렇게 직간접적으로 설치된 패키지들은 대부분 호환성을 "^1.1.5"와 같이 표현하여, 범위로 지정해두고 있습니다.
Linux 환경 배포 자동화 체험해보기 thumbnail
Linux 환경 배포 자동화 체험해보기
안녕하세요. 요즘 포트폴리오를 만들면서 서버 상에 자주 반영할 일이 생겼는데, 매번 명령어들을 타이핑하는 것이 비효율적이라 생각이 들어 배포 자동화를 생각해보게 되었습니다. 현재 레벨에서는 단순히 명령어들만 단축시켜도 효율적이라 생각이 들어 간단한 쉘 스크립트만 작성하였습니다. 정말 간단하니 여러분도 도전해보시길 바랍니다.
협업 필수품. Prettier thumbnail
협업 필수품. Prettier
안녕하세요. 오늘은 Prettier이라는 도구에 대해 알려드리고자 합니다. 개발자는 각자의 코딩스타일이 존재합니다. 그러다보니 같은 프로젝트에서도 작성하는 소스마다 스타일이 제각기 다르기 일쑤입니다. 그럴 때 도입하면 좋은 것이 Prettier입니다. 프로젝트 root 폴더에 .prettierrc 라는 파일을 생성한 뒤, 위 예시와 같이 원하는 옵션을 JSON 형식으로 작성해주면 됩니다.