2026-10-06

linetta 1.3.0 인물 비주얼 시트 추가

linetta로 연재 회차마다 삽화나 4컷만화를 붙이다 보면 이미지 모델에 매번 외형을 새로 설명해야 해서 같은 인물이 그림마다 다른 사람처럼 나온다. 2026-10-05에 낸 v1.3.0은 인물의 외형을 원고 옆에 한 번 적어 두고, 에이전트가 그걸 그대로 읽어 프롬프트를 만들게 했다. 작업은 #155에 있다.

비주얼 시트와 화풍

인물 시트에 “비주얼 시트” 섹션이 생겼다. 나이대, 체형, 머리, 복장, 대표 표정이나 소품, 색상 팔레트, 고정 프롬프트 메모까지 일곱 칸이고, 기존 저장 버튼으로 함께 저장된다. 설정집 패널 위에는 작품 단위로 화풍과 네거티브 프롬프트를 적는 “일러스트 화풍” 섹션을 접어 두었다.

참조 이미지는 인물당 여덟 장, 장당 5 MiB까지 붙인다. PNG, JPEG, WebP, GIF만 받고, 선언한 형식과 실제 바이트가 다르면 거절한다. 일일 백업이 DB 한 파일을 복사하는 방식이라 바깥에 둔 파일은 백업과 복원에서 빠져서 이미지는 파일로 따로 두지 않고 라이브러리 DB 안에 넣었다. 병합 복원도 시트·이미지·화풍을 새 작품과 인물에 다시 연결해서 가져온다.

프롬프트는 작가가 쓴 문장 그대로

MCP 읽기 툴이 두 개 늘었다. linetta_get_character_visuals는 화풍과 인물별 시트, 참조 이미지 목록을 돌려주고, 원하면 이미지 자체도 함께 보낸다. linetta_build_illustration_prompt는 등장인물 이름(별칭 포함)과 장면 설명, 한 컷인지 4컷인지를 받아 프롬프트와 네거티브 프롬프트, 써야 할 참조 이미지, 시트가 비어 있는 인물을 알려 준다.

프롬프트 조립에는 LLM을 쓰지 않는다. 각 칸에 hair:, outfit: 같은 고정 라벨을 붙여 작가가 쓴 문장을 그대로 넣고, 빈 칸은 빼고, 작가가 쓰지 않은 네거티브 프롬프트는 지어내지 않는다. 같은 시트면 늘 같은 프롬프트가 나와야 인물이 흔들리지 않는다고 봤다. 그 장면에 나오지 않는 인물이 그림에 끼어들지 않게 인물을 하나도 지정하지 않으면 거절한다.

에이전트가 시트 채우기

1.3.0의 시트는 작가가 직접 채워야 했다. 같은 날 저녁 #158에서 쓰기 툴 네 개를 main에 합쳤다. linetta_set_character_visuals와 linetta_set_art_style은 바꿀 칸만 고치고, linetta_add_reference_image와 linetta_delete_reference_image는 참조 이미지를 붙이거나 뗀다. 네 개 모두 기존 되돌리기 창에 묶여 있어서, 에이전트가 시트를 잘못 고쳐도 도구 줄에서 되돌릴 수 있다. MCP 서버가 알리는 버전도 이제 앱 버전과 같은 값을 쓴다. 이 변경은 다음 릴리스에 들어간다.

두 PR 모두 엔진 Go 테스트(go test -race)와 데스크톱 테스트를 통과한 뒤 합쳤다. 회차별 컷 계획 저장, 의상 변형, 장소·소품 비주얼 시트는 아직 뒤에 남겨 두었다. App Store에서 받거나 brew install --cask devlikebear/tap/linetta로 설치한다.

같은 작업대에서 나온 이웃 도구입니다.