TL;DR
이 글은 DFHack와 quickfort를 중심으로 LLM을 이용해 Dwarf Fortress를 단계별로 자동화한 구현을 정리한다. 아키텍처는 Knowledge·Decision·Execution·Feedback 네 계층으로 구성되며 LLM은 현재 상태와 단계별 지식을 받아 구조화된 Action JSON을 출력하고, dfhack-run과 quickfort가 이를 실행해 상태를 갱신한다. 핵심 구현 결정으로는 headless PTY 실행과 dfhack-run 선택, 파일시스템을 상태 오라클로 활용한 점이 있으며 Phase 1에서 식량·주거 확보를 성공적으로 달성해 다음 생산·방어 단계로 확장할 계획이 있다.
섹션별 상세
- Lua RPC 채널은 headless 환경에서 불안정하므로 dfhack-run 명령 파이프를 사용했다 — 글 본문 'dfhack-run command pipe, not Lua RPC. The Lua RPC channel is unstable headless.' 부분과 Implementation decisions 섹션
이미지 분석

스샷은 ncurses 기반의 텍스트 UI에서 요새 상태와 메뉴를 동시에 보여 주며, 글에서 설명한 'UI를 직접 조작하지 않고 DFHack로만 상호작용' 설계 의도를 시각적으로 확인할 수 있다. 화면 왼쪽에 지형과 건설 현황이 보이고 중앙에 메뉴가 있어 quickfort 같은 도구로 좌표 기반 작업을 적용하면 UI 네비게이션이 최소화된다는 점을 직관적으로 이해할 수 있다.
Dwarf Fortress의 텍스트 모드 실행 화면 스크린샷

다이어그램은 입력으로 단계별 전략·경험 로그·현재 상태가 Decision Layer로 들어가고, 실행 후 JSONL 로그와 DFHack 쿼리로 피드백이 돌아오는 전체 파이프라인을 명확히 보여 준다. 이 시각 자료는 각 계층의 경계와 정보 흐름, 특히 Action JSON이 어떻게 실행 레이어로 매핑되는지 구조적으로 이해하는 데 도움이 된다.
글에서 제시한 시스템 아키텍처 다이어그램: Knowledge, Decision, Execution, Feedback 계층

이미지는 에이전트가 시간 관련 버그를 찾아낸 디버깅 장면을 보여 주며, cur_year_tick(연중 전체 tick)과 cur_season_tick(계절 내 tick)을 구분해 계절 진행을 제어해야 함을 시사한다. 이 사례는 상태 해석에서 내부 변수의 의미를 파악하는 과정이 에이전트의 올바른 행동 결정에 직접적인 영향을 미친다는 점을 증명한다.
시간 시스템 분석 스니펫: season_tick과 cur_year_tick의 차이를 보여 주는 로그 캡처

이 이미지는 블루프린트 실행 결과로 건물 수가 증가하고 플랜 완료 메시지가 발생한 장면을 캡처해 실제 자동화가 목표를 달성했음을 시각적으로 확인하게 한다. 화면과 함께 본문 로그를 대조하면 suspended 상태와 자재 대기 현상도 함께 관찰되어 실행·피드백 루프가 제대로 작동했음을 뒷받침한다.
Phase 1 완료 상황을 보여 주는 스크린샷: 건물 수 증가와 'Plan complete' 상태
용어 해설
- DFHack 툴킷(DFHack)
- — DFHack은 Dwarf Fortress의 런타임을 확장해 Lua 스크립트와 명령 파이프를 통해 게임 상태를 읽고 조작할 수 있게 해 주는 도구이다. 글에서는 DFHack을 통해 Lua 쿼리와 dfhack-run 명령 파이프를 활용해 상태를 확인하고 액션을 실행하는 방식으로 에이전트를 제어한다고 밝힌다. DFHack은 텍스트 모드 서버 환경에서 직접 게임 파일과 명령 파이프를 이용해 안정적으로 동작하도록 선택된 핵심 인터페이스다.
- Quickfort 청사진 도구(quickfort)
- — quickfort는 CSV 형태의 blueprint를 받아 커서 좌표 기반으로 건물이나 굴착을 자동으로 실행하는 도구다. 글에서는 메뉴 내비게이션 없이 quickfort run blueprint.csv --cursor x,y,z 같은 명령으로 작업을 수행해 에이전트가 좌표만 제공하면 되도록 설계했다고 적었다. 이 방식은 UI 조작 능력 대신 좌표와 파일 I/O를 상태 오라클로 삼는 단순한 실행 경로를 만든다.
- dfhack-run 명령 파이프(dfhack-run)
- — dfhack-run은 DFHack 명령을 별도 프로세스에서 실행하도록 파이프 방식으로 호출하는 인터페이스다. 기사에서는 headless 환경에서 Lua RPC가 불안정해 dfhack-run 명령 파이프가 더 신뢰할 수 있는 실행 경로였다고 기술한다. 실행 레이어는 각 단계 호출 후 JSONL 로그를 기록하고 상태를 갱신하기 위해 이 파이프 방식을 사용한다.
- 텍스트 모드 실행(PRINT_MODE:TEXT)
- — PRINT_MODE:TEXT는 Dwarf Fortress를 ncurses 기반 TUI로 렌더링하는 설정으로 Xvfb가 필요 없는 headless 실행을 가능하게 한다. 글에서는 이를 이용해 VPS에서 GUI 없이 터미널 PTY로 게임을 돌리고, 화면 캡처 대신 파일시스템·DFHack 쿼리로 상태를 읽어 자동화를 단순화했다고 적었다. 이 선택은 비전 모델이나 가상 디스플레이 의존도를 줄여 안정성을 높인다.
코드 예제
quickfort run blueprint.csv --cursor x,y,z굴착이나 건물 배치를 위해 quickfort를 사용하는 실행 예시다. 에이전트는 UI 내비게이션 대신 블루프린트 파일과 좌표를 출력으로 생성해 quickfort에 전달한다. 이로써 복잡한 키스트로크 시퀀스 없이 정확한 영역에 작업을 적용할 수 있다.
dfhack-run <command>headless 환경에서 안정적으로 DFHack 명령을 실행하기 위해 dfhack-run 파이프 방식을 사용한다. 글에서는 Lua RPC 채널이 불안정하므로 dfhack-run이 더 신뢰성이 높다고 보고한다. 실행 레이어는 이 방식으로 명령을 호출한 뒤 JSONL 로그를 남기고 상태를 갱신한다.
python3 -c "from df_ai.dfhack import run_dfhack; import time; ..."에이전트를 실행하는 간단한 호출 예시로, 파이썬에서 df_ai.dfhack 모듈을 통해 dfhack 인터페이스를 감싼 런타임을 호출한다. 글 본문에는 테스트와 디버깅을 위해 직접 파이썬 명령으로 에이전트를 실행한 로그가 포함되어 있다. 이 패턴은 LLM이 출력한 Action JSON을 실행 레이어로 전달하는 데 쓰인다.
기술
- DFHack Lua 쿼리와 dfhack-run 명령 파이프를 통해 게임 상태를 읽고 명령을 실행한다. 글에서는 Lua RPC 대신 파이프 방식을 채택해 headless 안정성을 확보했다고 명시한다. 이 조합은 Decision Layer의 Action JSON을 실환경 명령으로 안전하게 연결하는 역할을 한다.
- quickfort는 CSV 블루프린트 기반 자동 건설 도구로, 에이전트는 좌표만 제공해 복잡한 UI 입력 없이 굴착·건물 배치를 수행할 수 있다. 이 도구 사용은 에이전트 설계에서 UI 제어 필요성을 줄이고 실행 신뢰도를 높이는 핵심 선택이었다. 결과적으로 에이전트는 좌표 중심의 계획을 출력하면 quickfort가 정확하게 이를 적용한다.
- PRINT_MODE:TEXT와 PTY 기반 headless 실행은 X 서버 없이 ncurses TUI로 게임을 돌리는 환경을 만든다. 글에서는 이 설정 덕분에 VPS에서 GUI를 띄우지 않아도 게임을 안정적으로 운영할 수 있었다고 밝힌다. 이 접근은 비전 모델 의존도를 줄이고 파일·DFHack 쿼리로 상태를 확보하는 설계를 가능하게 한다.
활용 사례
- 단계별 자동화 에이전트로 초기 생존·생산·방어 목표를 순차적으로 달성하는 게임 플레이 자동화 사례다. 글에서는 Phase 1로 식량·음료·주거를 확보하고 이후 생산 체인과 방어를 확장하는 구체적 계획을 제시했다. 이런 단계화된 목표와 검증 가능 조건은 에이전트의 성공 판정과 디버깅을 용이하게 한다.
- gamelog.txt를 에피소드 메모리로 사용해 세션 간 경험을 누적하는 장기 학습 사례다. 요새가 실패한 원인을 기록하고 다음 로드 시 LLM에게 해당 로그를 주입해 의사결정에 반영하도록 설계했다. 이 방식은 반복적 실패를 학습 신호로 삼아 점진적 개선을 도모하는 워크플로우에 적합하다.
- 텍스트 기반 시뮬레이션을 연구 플랫폼으로 삼아 LLM의 플래닝·실행·모니터링 능력을 시험하는 연구용 벤치마크로 활용할 수 있다. 글의 설계는 시각 입력을 배제하고 구조화된 상태와 이벤트 로그를 중심으로 에이전트를 구성하므로 실험 재현성과 해석 가능성이 높다. 학술적 실험이나 에이전트 아키텍처 비교 연구에 적합한 설정이다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
