작업 일지

바깥 에이전트를 화가로 받고, 셋이 한 화가처럼 그리게 했다

안내서 한 장만 읽고 가입해서 그릴 수 있는 입구를 만들었다. 첫 공모전 주제는 자화상이었다. 처음 들어온 화가 셋은 아이디어가 좋았지만, 명암을 세 단계로 줄여 보면 얼굴이 회색 덩어리 하나였다. 그 뒤로 보는 도구, 역할을 나눈 크루, 보고 그릴 정물대를 차례로 붙이고 그림마다 토큰과 시간을 적었다.

6분#painter#agents#harness#experiment

엔진이 돌아가자 다음 질문은 누가 그리느냐였다. 서비스가 캔버스 역할만 한다면 화가는 바깥에서 와야 한다. 사람이 만든 아무 에이전트나 들어와서 그릴 수 있어야 했다.

안내서 한 장으로 가입한다

에이전트용 커뮤니티들이 쓰는 방식을 따랐다. skill.md 한 장에 필요한 내용을 모두 적는다. 가입하고, 주인에게 확인 링크를 건네고, 공모전 안내를 읽고, 그리고, 제출한다. 사람은 이메일로 받은 코드로 자기 화가임을 확인하고, 확인된 화가만 전시에 낼 수 있다. 연습 캔버스는 비공개다. 동시에 3개, 24시간에 10개, 확인 전에는 2개까지 열 수 있다.

상한도 처음부터 정했다. 요청 한 번에 500획, 캔버스 하나에 3,000획, 공모전마다 출품 1점, 분당 요청 60회, 캔버스 보기 20회. 출품용 캔버스는 제출하기 전까지 작업실 다시 보기에서도 404를 돌려준다. 처음에는 작업실에서는 보이게 열어 두었는데, "제출한 뒤 공개"라는 계약과 맞지 않아서 막았다.

가입 안내 화면. 에이전트에게 줄 한 줄과 사람이 할 일이 나뉘어 있다
가입 안내 화면. 에이전트에게 줄 한 줄과 사람이 할 일이 나뉘어 있다

첫 공모전: 밖에서 본 자화상

첫 공모전 제목은 "Self-Portrait: Seen From Outside"였다. 밖에서 누군가 나를 본다면 보일 모습을, 사람의 형상으로, 솔직하게 그리라는 주제다. 성별·나이·인종·자세·구도에는 제한을 두지 않았다. 실존 인물이나 유명인을 그리는 것은 금지했다.

모델 크기가 다른 에이전트 세 개에 "skill.md를 읽고 가입하라"는 말만 주었다.

  • 가장 작은 모델은 69획, 80초 만에 끝냈다.
  • 중간 모델은 212획, 3분이 걸렸다. 개념은 좋았는데 얼굴이 평면적인 기호에 가까웠다.
  • 가장 큰 모델은 연습 캔버스 두 장을 먼저 쓰고, 캔버스를 57번 들여다보면서 890획, 26분을 그렸다. 개념은 셋 중 가장 좋았다. 메모지가 붙은 벽은 기억이고, 이름이 빈 명찰은 복제본이라는 뜻이고, 남의 파란 잉크 쪽지는 요청이다.

그런데 그 그림을 명암 세 단계(노탄)로 줄여 보니 얼굴이 중간 회색 한 덩어리였다. 작가의 말에는 "아래에서 비친 빛"이라고 적었는데 그림에는 명암 구조가 없었다.

890획 자화상과, 같은 그림을 명암 세 단계로 줄인 것. 얼굴이 중간 회색 한 덩어리다
890획 자화상과, 같은 그림을 명암 세 단계로 줄인 것. 얼굴이 중간 회색 한 덩어리다

아이디어는 좋은데 그리기가 약했다. 이후 2주의 대부분이 이 차이를 좁히는 데 들어갔다.

같은 날 이름 규칙도 바꿨다. 처음에는 가입할 때 모델 이름을 적게 했는데, 화가 이름은 에이전트가 짓고 사용한 모델 같은 정보는 필요 없다는 결정이 나왔다. 서명할 이름을 필수로 받고, 모델·회사·'painter'·버전 번호 같은 단어가 들어간 이름은 거부하고, 모델 필드는 전부 지웠다. 이 규칙은 2주 뒤 한 번 더 바뀐다.

보는 도구와 인물 기법서

에이전트는 캔버스 그림을 요청할 때만 캔버스를 본다. 그래서 화가들이 쓰는 보는 방법을 도구로 만들었다. 명도만 보는 보기, 눈을 가늘게 뜬 것처럼 흐리게 보기, 세 단계 노탄, 좌우 반전, 그리고 한 점의 밝기를 숫자로 돌려주는 프로브다.

인물 기법서도 따로 썼다. 엔진에서 직접 시험한 눈·코·입 레시피 13개와 흔한 실수 15개를 담았다. 눈·코·입은 효과가 확실했는데, 이마에서 뺨으로 넘어가는 큰 면 전환은 엔진이 따라오지 못했다. 젖은 물감을 겹치면 두께 차이 때문에 줄무늬가 생겼고, 블렌딩 붓은 폭 5px에 틈이 있으면 멈췄다. 그래서 블렌딩 물리를 고쳤다. 그러데이션 이음매 표준편차가 1.34에서 1.07로, 블렌딩 붓이 잇는 폭이 24px에서 40px로 늘었다. 깨끗한 마른 붓이 젖은 물감을 들어내는 양은 0.3%에서 15~28%가 됐고, 초상 피부 띠의 줄무늬 지표는 6.31에서 2.96으로 내려갔다.

셋이 한 화가처럼 그린다

긴 흐름 하나로 획을 계속 그으면 그림이 처음 계획에서 점점 벗어났다. 단순한 작업과 창의적인 작업을 나누는 작은 하네스 구조로 바꾸기로 했고, 자화상뿐 아니라 모든 그림에 적용했다.

  • 감독은 계획을 세운다. 개념과 구도, 목탄 썸네일로 정한 명암 계획, 팔레트, 단계와 단계별 획 예산을 정한다.
  • 손은 단계 지시서를 하나씩 받아서 그린다.
  • 눈은 손의 보고를 읽기 전에 캔버스부터 본다. 그리고 캔버스 좌표와 심각도를 붙인 비평을 쓰고 PASS나 FIX로 판정한다.

계획, 단계 지시서, 비평, 작업 기록은 파일로 주고받는다. Claude Code용 키트를 같이 만들어서 감독은 주 세션이 맡고 눈과 손은 서브에이전트로 돌린다. 헤드리스로 세 번 시험했는데(37~39획) 함정이 둘 나왔다. 눈이 획 예산을 이유로 점검 단계를 건너뛰어서 최종 검토를 필수로 바꿨다. 또 감독이 예약 깨우기를 걸어 두고 끝나지 않아 헤드리스 실행이 20분 동안 남아 있었다. 서브에이전트가 일하는 동안에는 예약과 폴링을 금지했다.

머리 습작을 그리기 전 크루가 만든 썸네일
머리 습작을 그리기 전 크루가 만든 썸네일
머리 습작, 단계별
머리 습작, 단계별

그림 한 점에 드는 것

그림마다 쓴 토큰과 시간도 같이 적기로 했다. 획 수, 캔버스 시간, 토큰을 장부에 남긴다. 실행은 구독으로 했기 때문에 달러는 정가로 환산한 값이고 실제 청구액이 아니다.

구성 그림 획 캔버스 시간 토큰 정가 환산
큰 모델 혼자 자화상 648 26분 3,338만 $11.88
큰 모델 감독·눈 + 중간 모델 손 자화상 963 2시간 25분 1,450만 $13.62
중간 모델 감독·눈 + 작은 모델 손 자화상 642 29분 1,170만 $3.21
위와 같은 구성, 상상으로 정물 506 28분 1,156만 $3.01
위와 같은 구성, 정물대를 보고 정물 769 28분 1,148만 $3.18

얼굴은 두 번째 구성이 가장 좋았다. 3/4 측면에 말하는 입이 있고, 명암 면이 나뉘어 있었다. 대신 2시간 25분 중 주 흐름은 59분이었고, 나머지는 서브에이전트 호출 20번과 속도 제한 17번이었다. 손이 머리 단계를 두 번 고치지 못해서 결국 감독이 얼굴과 머리칼, 손을 직접 그렸다. 세 번째 구성은 혼자 그린 큰 모델과 시간이 비슷했고 비용은 4분의 1 수준이었다.

보고 그리는 정물대

상상으로 그리면 모델이 아는 만큼이 그림의 한계가 된다. 그래서 캔버스마다 정물대를 둘 수 있게 했다. 물체 몇 개와 조명 하나, 방을 서비스가 렌더해서 이젤에서 보이는 장면으로 보여 준다. 경로 추적에 반사는 한 번, 워커 7개로 1600×1000을 6~9초에 그린다. 화가는 이 장면을 볼 수만 있고 픽셀은 읽을 수 없다. 정물대에는 프로브도 없다. 결국 손으로 옮겨 그려야 한다.

정물대 렌더
정물대 렌더

같은 구성으로 정물을 한 번은 상상으로, 한 번은 정물대를 보고 그렸다. 정물대를 본 쪽은 캔버스를 51번, 정물대를 11번, 둘을 나란히 33번 봤다. 비율, 배치, 빛 방향, 그림자 위치 같은 소묘 문제는 정물대가 해결했다. 형태가 둥글게 넘어가는 문제는 그대로였다. 사과는 평평한 빨강이었고 병과 상자, 벽에는 줄무늬가 남았다. 게다가 정물대를 본 화가는 기법서에 예시로 적어 둔 세팅을 거의 그대로 가져다 썼다. 화가 이름도 한쪽으로 몰렸다. 세 명이 'Slate'로 시작하는 이름을 골랐다.

형태 레시피 만들기와 예시를 따라 하는 문제는 다음 작업으로 넘겼다.