어제 글:
LLM 한테 팩토리오 가르치기 4일차이전글: LLM 한테 팩토리오 가르치기 3일차 - 팩토리오 마이너 갤러리이전글: https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=1092gall.dcinside.com오늘의 발전
구조를 궁금해하는 친구들이 있어서 대충 설명해줄게!
이 프로젝트는 LLM에 두 가지를 붙였어: (claude랑 무료모델 섞어쓰는중)
1. 도구(tool/function calling) — Claude가 글만 뱉는 게 아니라 build, diagnose, smelter_block 같은 함수를 직접 호출해서 게임 세계에 실제로 손을 댈 수 있음. (챗지피티가 "벨트 깔아"라고 글로 말하는 게 아니라, 실제로 벨트를 까는 명령을 실행하는 것)
2. 자기개선 루프 — 한 판 플레이가 끝나면 어디서 막혔나를 보고, 그 약점을 메우는 코드를 스스로 한 줄 고치고 커밋함. 다음 판이 그 수정을 검증함.
전체 구조
게임 ↔ mod ↔ MCP ↔ Claude, 그리고 이 전체를 도는 개선 루프 4층 구조다.
① 팩토리오(헤드리스 서버)가 실제 공장 세계를 굴린다.
② mod인 **control.lua**가 게임 안에 build·diagnose·repair·smelter_block 같은 "명령"을 만들어 RCON으로 노출한다.
③ MCP 서버가 그 명령들을 Claude가 부를 수 있는 도구로 변환해 다리를 놓는다. ④ 플레이어 Claude가 목표(과학팩 생산 등)를 받아 도구를 호출하며 직접 공장을 짓는다.
그 바깥에 오케스트레이터 루프가 있다: 게임 리셋 → 플레이어 Claude 한 판 실행 → 결과 디브리프 → 막힌 원인 하나만 골라 control.lua/문서를 고치고 테스트 → 커밋. 다음 판이 그 수정을 검증한다. 사람은 "go"만 치면 한 사이클이 돈다. 즉 Claude가 팩토리오를 플레이하면서, 자기 도구를 스스로 진화시키는 자가개선 봇이다.
그리고,
- mod이 노출한 도구는 게임 API 위에 얹은 고수준 건설 매크로라고 보면 됨. smelter_block 한 번 부르면 화로 배열+벨트+인서터가 통째로 깔림 (블루프린트 스탬프와 비슷하지만, AI가 좌표를 직접 계산해서 놓음).
- 가장 중요한 도구가 diagnose → repair → diagnose 루프야. "왜 이 화로가 멈췄지?"(연료 없음/광물 없음/전력 islanded)를 AI에게 알려줘서, 사람이 막힌 공장 디버깅하듯 고치게 함.
- harness/IMPROVEMENT_LOG.md가 일종의 패치노트. 지금 35번째 이터레이션쯤 돌고 있고, 매판 "멈춘 기계 수(stalled)"가 점수임 — 그걸 줄이는 게 목표.
diagnose→repair 피드백 루프 = LLM의 "눈" 보완
LLM의 근본 약점은 공장을 볼 수 없다는 것 (좌표 숫자 목록만 받음). 그래서 "왜 안 돌지?"를 머릿속으로 추측하다 멀쩡한 배선을 손으로 풀어 헤쳐 버림(34의 사고). 이 코드의 진짜 엔진은:
- diagnose가 멈춘 기계마다 기계가 읽을 수 있는 원인을 돌려줌: no_fuel / no_ingredients / no_power
- 이터레이션이 진행될수록 점점 더 구체적인 힌트로 진화: "이 벨트는 석탄만 나르고 광물이 없음 — 여기에 광물을 흘려라", "이 트렁크는 직접 깔지 말고 steam_bank에 좌표를 넘겨라"
- repair는 고칠 수 있는 것(전력 끊긴 셀)만 자동 수리하고, 나머지는 정직하게 원인+제안으로 돌려줌 (자원을 거짓으로 만들어내지 않음)
즉 "개방형 추론 문제"를 "가이드된 디버그 루프"로 바꾼 것. 그리고 메타 레벨에서, 매 이터레이션이 하는 일이 바로 이 diagnose 힌트를 한 줄 더 똑똑하게 다듬는 것이야 — 플레이어가 자주 misdiagnose하는 지점을 발견하면, 그 혼동을 없애는 힌트를 mod에 박아 넣음. (이게 셋째 비결인 자가개선 루프: 한 번에 한 가지만 고치고, 그 수정은 다음 런이 검증한다 — 내가 만든 변경을 절대 내가 믿지 않는다.)
---
아래 글에 다른 친구가 스크린샷 찍는 코드를 알려줘서, 이제 츄라이마다 스샷을 찍을 수 있게 되었음.
9번째 츄라이, 철판 만드는것도 힘듦.
과학팩 생산 및 연구까지 자동화된 28번쨰 츄라이
34번째 츄라이
llm이 눈이 안달려있다보니 벨트를 기존 빌드랑 섞이게 설치하는게 거의 모든 에러의 원인임... 빨간팩 자동화만 안정적으로 성공하면 초록팩까지는 금방갈꺼같은데 ㅎㅎ 며칠간 어렵네. 한달은 잡고 해야할듯.
클로드 토큰이 부족하다~
아직 2.0으로 하고 있으면 스샷찍는건
https://mods.factorio.com/mod/simple-area-screenshots
이 모드도 추천함
GUI로 범위지정 쉽게 스샷 찍을 수 있음
스크립트로 찍고 있는데 한번 읽어볼게 고마워~~
이거는 한번 생각한거고, 이마저도 ai가 판단하게 하는게 최종 목표가 되겠는데, 내가 생각한 ai의 개선 유도 방안은 특정 좌표 범위를 특정 공장 영역으로 ai가 정의하게끔 하고, 해당 영역은 외부에서는 그 영역 자체로만 보게끔 하고, 각 영역 단위가 오류가 발생했을 때만 해당 영역 내부를 자세히 파악하여 해당 영역에 대해서만 문제 원인 분석 및 해결을 시도하고, 해당 내용에 대해 기억하게끔 하면 어떤가를 생각해봤음. 일종의 우리가 말하는 모듈화 개념인데, 궁극적으로는 AI가 이런 개념 주입 없이 스스로 이런 규칙을 세우는게 목표가 될 수도 있을 거 같음
아하 scope limiting 얘기구나. 그거 진짜 좋은거같아. 사실 ai가 알아서 여기까지 고민하게 하고 싶었는데 그건 잘 못하는듯. (아니면 게임을 하는 에이전트를 2레이어로 나눠야하려나). 모듈화 개념 좋다. 이거 기록해둘게 고마워~~
@글쓴 팩붕이(211.44) 모듈화를 일단 프롬프트에 넣어봐야겠다. 지도의 특정 사각형 구역을 특정 공정에 할당하는 식으로 그치? 근데 이게 만들다보면 구역을 키우고 줄이고도 해야할텐데... 일단 할당만 해도 지랄은 안날듯. 지금 문제가 철화로에다가 구리벨트 죽 그어서 벨트끼리 섞이는게 문제라. 아이디어 좋다!!
예전에 포켓몬 진행하던 프로젝트랑 비슷하네. 막힐때마다 외부툴 이것저것 추가해주는
맞아~ 근데 이게 좀 더 어려운듯 ㅎㅎ
이 정도로 딥하게 한건 아니고 codex에 블루프린트 문자열 넣어서 병목이랑 목표 생산량 맞춰서 개선해달라고 했다가 일주일치 할당량 다 써서 포기 했었는데 대단하네 ㅋㅋ
거의 비슷해 ㅋㅋ