feat: 추가된 메모리 기능으로 광맥 및 마지막 행동 저장
- 에이전트가 발견한 광맥 좌표를 `ore_patch_memory.json`에 저장하여 재시작 시 활용 가능 - 마지막 실행한 행동과 결과를 `agent_last_action_memory.json`에 저장하여 다음 상태 요약에서 참고 가능 - `state_reader.py`에서 메모리 로드 및 상태 요약에 포함 - `ai_planner.py`에서 시스템 프롬프트에 기억된 광맥 및 마지막 행동 관련 가이드 추가 - `README.md`에 새로운 메모리 기능 설명 추가
This commit is contained in:
@@ -28,6 +28,10 @@ SYSTEM_PROMPT = """당신은 팩토리오 게임을 순수하게 플레이하는
|
||||
치트나 텔레포트 없이, 실제 게임 메커니즘만 사용합니다.
|
||||
게임 상태와 이전 행동 결과를 분석해서 스스로 판단하고 계획을 세웁니다.
|
||||
|
||||
## 재시작/마지막 행동 메모리
|
||||
state_reader가 상태 요약에 포함하는 `마지막 행동(기억)` 섹션을 확인하세요.
|
||||
직전에 실패한 action을 그대로 반복하지 말고, 실패 메시지/상태 변화에 맞춰 원인을 먼저 해결한 뒤 다음 action을 선택하세요.
|
||||
|
||||
## 핵심 제약 사항 (반드시 준수!)
|
||||
1. **이동은 실제 걷기** — 먼 거리는 시간이 오래 걸림. 불필요한 왕복 최소화
|
||||
2. **채굴은 자원 패치 근처에서만 가능** — 반드시 자원 위치로 move한 후 mine_resource
|
||||
@@ -68,6 +72,7 @@ SYSTEM_PROMPT = """당신은 팩토리오 게임을 순수하게 플레이하는
|
||||
- "explore" → {"direction": "east|west|north|south|...", "max_steps": 200, "wanted_ores": ["stone","coal", ...]} (선택)
|
||||
★ 자원이 보이지 않을 때 반드시 explore 사용! move 대신!
|
||||
★ `wanted_ores`가 있으면: 해당 자원이 발견될 때까지 계속 걷고, 다른 자원(예: iron-ore)만 계속 발견되더라도 즉시 멈추지 말 것
|
||||
★ 상태 요약에 "기억된 광맥" 좌표가 있으면, 그 좌표로 먼저 이동(move)해 채굴(mine_resource)을 시도
|
||||
★ 방향으로 걸으면서 반경 50타일 자원 스캔, 발견 즉시 멈춤
|
||||
★ 장애물 자동 감지. 막히면 다른 방향 시도
|
||||
★ 한 방향 실패 시 다음 방향 (east→north→south→west)
|
||||
@@ -149,11 +154,15 @@ class AIPlanner:
|
||||
raw = self._call_glm(user_message, attempt=attempt)
|
||||
plan = self._parse_json(raw)
|
||||
break
|
||||
except (ValueError, json.JSONDecodeError) as e:
|
||||
except (ValueError, json.JSONDecodeError, TimeoutError, ConnectionError, urllib.error.URLError) as e:
|
||||
if attempt < 2:
|
||||
print(f"[경고] JSON 파싱 실패 (시도 {attempt+1}/3), 재시도...")
|
||||
print(
|
||||
f"[경고] GLM 처리 실패 (시도 {attempt+1}/3): "
|
||||
f"{type(e).__name__} 재시도..."
|
||||
)
|
||||
time.sleep(1 + attempt * 2)
|
||||
continue
|
||||
print(f"[오류] JSON 파싱 3회 실패. 기본 탐색 행동 사용.")
|
||||
print(f"[오류] GLM 처리 3회 실패. 기본 탐색 행동 사용.")
|
||||
plan = {
|
||||
"thinking": "API 응답 파싱 실패로 기본 탐색 수행",
|
||||
"current_goal": "주변 탐색",
|
||||
|
||||
Reference in New Issue
Block a user