83 Commits

Author SHA1 Message Date
bc7bb4d1e6 fix: mine_resource 실패한 타일 좌표 기억 + Lua에서 제외
근본 원인: 매번 같은 타일(388,2)을 찾아서 무한 반복
수정:
1. Python에서 failed_positions set() 유지
2. Lua에 exclude 테이블 전달 → 실패한 좌표 건너뛰기
3. 접근 불가 타일은 즉시 제외 목록에 추가
4. 고갈된 타일도 제외
5. 최대 15개 다른 타일 순서대로 시도
6. ALL_EXCLUDED 시 명확한 메시지 반환
2026-03-25 20:59:03 +09:00
1c5c0e0a5a fix: mine_resource 근본 수정 — 광석 타일로 먼저 걸어간 뒤 채굴
근본 원인: mining_state는 2.7타일 이내만 채굴 가능
이전: 반경 50에서 찾고 제자리에서 채굴 시도 → 손이 안 닿아 실패
이후:
1. 반경 80에서 가장 가까운 광석 찾기
2. 그 광석 타일 좌표로 move (걸어가기)
3. 도착 후 mining_state로 채굴
4. 타일 고갈/접근불가 시 다음 가까운 타일로 자동 이동
5. 최대 10라운드(이동+채굴) 반복
2026-03-25 20:51:43 +09:00
d27aff2824 fix: mine_resource 접근 불가 시 광맥 주변 8방향 이동 후 재시도
이전: 같은 위치에서 5개 타일만 시도 → 절벽이면 전부 실패
이후:
1. 현재 위치에서 반경 50, 10개 타일 시도
2. 실패 → 광맥 중심 주변 8방향(±10~15칸)으로 이동
3. 새 위치에서 다시 10개 타일 시도
4. 총 9개 위치 × 10개 타일 = 최대 90번 시도
5. 부분 채굴도 성공으로 반환
2026-03-25 20:49:07 +09:00
8575cf4f76 fix: mine_resource 채굴 안 되면 다른 타일 자동 전환
- Lua에서 가장 가까운 광석 5개를 거리순으로 반환
- 매 10틱마다 진행 체크 (아이템 수 변화 확인)
- 3번 연속 진행 없으면 → 다음 타일로 자동 전환
- 최대 5개 타일 순서대로 시도
- 절벽/장애물 때문에 못 닿는 타일은 빠르게 스킵
2026-03-25 20:41:41 +09:00
b58e30d3f6 fix: /c → /silent-command (게임 콘솔 스팸 방지)
/c는 모든 명령을 게임 콘솔에 표시함
/silent-command는 동일하게 동작하되 콘솔에 표시 안 함
2026-03-25 20:36:25 +09:00
root
7953047212 fix: GLM 모델명 수정 2026-03-25 20:33:16 +09:00
63e9add1dd feat: explore 액션을 시스템 프롬프트에 추가
- explore를 최우선 탐색 액션으로 안내
- move는 "좌표를 알 때만" 사용하도록 변경
- fallback 행동도 move→explore로 변경
- 방향별 순서 안내 (east→north→south→west)
2026-03-25 20:27:27 +09:00
86af860267 feat: explore 액션 추가 - 걸으면서 자원 스캔, 발견 시 즉시 멈춤
- explore(direction, max_steps): 8방향 걷기 + 매 20틱마다 반경 50 자원 스캔
- 자원 발견 → 즉시 멈추고 위치 + 자원 종류/수량 반환
- 장애물 stuck 감지 → "다른 방향 시도" 메시지
- insert_to_entity: area 대신 position+radius (중괄호 충돌 방지)
2026-03-25 20:24:42 +09:00
47cc692d96 fix: f-string 제거 + position/radius + pcall + 인덱스 인벤토리
- _get_global_summary: position+radius, pcall
- _get_zone_summaries: f-string 제거, pcall
- _detect_problems: position+radius, pcall
- _get_player_info: get_contents() → 인덱스 접근 (Factorio 2.0 호환)
- 모든 함수 try/except + startswith 검증
2026-03-25 20:21:47 +09:00
ba013bf461 fix: f-string 완전 제거 + position/radius 방식 + pcall + try/except
근본 원인: f-string 안의 Lua {{}} 중괄호가 Python 이스케이프와 충돌
- scan_resources: area 대신 position+radius (중첩 중괄호 없음)
- 모든 Lua: f-string 제거, pcall 감싸기
- get_inventory: get_contents() 대신 인덱스 접근 (Factorio 2.0 호환)
- get_buildings: force="player"로 간결하게
- 모든 Python 파싱: try/except + startswith("{") 검증
2026-03-25 20:20:47 +09:00
12dba24965 fix: Factorio 2.0 호환 - type 기반 검색 + pcall 안전 감싸기
- _get_global_summary: name 기반→type 기반 검색 (filter-inserter 에러 해결)
- _get_zone_summaries: e.type 기반 분류
- _detect_problems: 전력 부족 체크 제거 (API 변경 대응)
- _get_player_info: 모든 아이템 표시 (하드코딩 목록 제거)
- 모든 검색에 pcall 적용
2026-03-25 20:09:58 +09:00
6ee4fef688 fix: Factorio 2.0 호환 + 자원 스캔 반경 500 + type 기반 검색
- scan_resources: radius 200→500, type="resource"로 검색 (이름 호환 문제 없음)
- get_buildings: name 대신 type 기반 + pcall 안전 감싸기
- summarize_for_ai: 자원 거리 표시 추가
2026-03-25 20:09:02 +09:00
37c71e85c5 fix: SyntaxError - f-string 안의 리터럴 중괄호 수정
f"...'{' 없음..." → "...'{' 없음..." + raw[:300]
f-string 안에서 { 리터럴은 구문 오류를 발생시킴
2026-03-25 15:18:11 +09:00
ce355a2678 fix: 시작 시 플레이어 접속 확인 + RCON 호환
- check_player() 추가: 30초 대기하며 플레이어 접속 안내
- game.players[1] 사용으로 RCON 호환
- 미접속 시 명확한 에러 메시지
2026-03-25 15:12:40 +09:00
954072bfdd fix: context_compressor game.player → game.players[1] 2026-03-25 15:12:07 +09:00
6f220bc3f5 fix: JSON 파싱 강화 + 3회 재시도 + 잘린 응답 복구
- max_tokens 1500→2000 (잘림 방지)
- 중첩 괄호 카운팅 기반 JSON 추출
- _repair_truncated_json() 잘린 응답 복구
- 3회 실패 시 기본 탐색 행동 반환 (크래시 방지)
- 시스템 프롬프트 강화 (순수 JSON 강조)
2026-03-25 15:11:00 +09:00
ea4be446bb fix: state_reader game.player → game.players[1] 2026-03-25 15:09:48 +09:00
ec418195ca fix: action_executor game.player → game.players[1]
- 모든 Lua 코드에 P(플레이어 참조 헬퍼) 적용
- NO_PLAYER/NO_CHARACTER 공통 에러 처리
- RCON 헤드리스 서버 호환
2026-03-25 15:09:17 +09:00
4756ef9624 fix: game.player → game.players[1] for RCON compatibility
RCON에서 game.player는 nil이므로 game.players[1] 사용.
- PLAYER_HELPER 상수 추가 (nil 체크 포함)
- check_player() 메서드 추가
- lua_with_player() 메서드 추가
2026-03-25 15:08:04 +09:00
149e66e9c9 README 순수 플레이 모드 설명으로 전체 업데이트 2026-03-25 12:49:14 +09:00
3458688f47 순수 플레이 전환: ACTION_DELAY 축소, 에러 트레이스백 추가, 타임스탬프 로깅 2026-03-25 12:48:38 +09:00
75195ece3e 순수 플레이 전환: AI 프롬프트에 이동거리/재료/건설거리 제약 반영 2026-03-25 12:48:11 +09:00
3d0f7c0517 순수 플레이 전환: 텔레포트→걷기, 무한자원→실제채굴, 직접지급→실제제작, create_entity→build_from_cursor 2026-03-25 12:47:04 +09:00
7288976a99 Update README.md - 전체 문서 업데이트 2026-03-25 10:26:57 +09:00
55c9657500 Update state_reader.py - 상태 읽기 모듈 최신 버전 2026-03-25 10:26:28 +09:00
051ea1f611 Update factorio_rcon.py - RCON 클라이언트 최신 버전 2026-03-25 10:25:58 +09:00
6c4b2b7c91 Add main.py - 메인 루프 (컨텍스트 압축 통합) 2026-03-25 10:25:39 +09:00
f053803f6f Add context_compressor.py - 계층적 컨텍스트 압축 모듈 2026-03-25 10:25:12 +09:00
7f7034bba2 Add ai_planner.py - AI 행동 계획 모듈 2026-03-25 10:24:02 +09:00
8858d52b1c Add action_executor.py - 완전 자율 에이전트용 실행기 2026-03-25 10:23:15 +09:00
d2d6f6ef17 Add state_reader.py - Game state reading module 2026-03-25 00:09:32 +09:00
76f98d2fe2 Add factorio_rcon.py - RCON connection module 2026-03-25 00:06:17 +09:00
6ce3e0c31f Initial commit 2026-03-25 00:04:59 +09:00