- 응답의 finish_reason이 'length'이고 비JSON 텍스트가 포함된 경우, 즉시 상태 기반 휴리스틱 폴백으로 전환하는 로직 추가
- AIPlanner 클래스에 _last_glm_finish_reason 속성을 추가하여 이전 finish_reason을 추적
- README.md에 변경 사항 반영
- JSON-only repair를 한 번 적용했음에도 비JSON 텍스트가 계속 오는 경우, 즉시 상태 기반 휴리스틱 폴백으로 전환하는 로직 추가
- LLM이 빈 actions를 반환할 경우에도 즉시 휴리스틱 플랜으로 대체하여 진행을 유지하도록 개선
- README.md에 변경 사항 반영
- GLM API에서 HTTP 429 (Rate limit) 오류 발생 시, 'Retry-After' 헤더를 확인하여 적절한 대기 시간을 설정하도록 로직 추가
- 재시도 시 기본 백오프 대신 'Retry-After' 값이 있을 경우 이를 우선 적용하여 대기 시간 조정
- README.md에 변경 사항 반영
- `_ensure_move_before_build_actions` 메서드를 추가하여, LLM이 "move" 후 "place_entity"/"insert_to_entity"/"set_recipe" 순서를 놓치는 경우를 방지
- 최근 이동 좌표와 비교하여 필요 시 자동으로 이동 액션을 삽입하는 로직 구현
- 관련 단위 테스트 추가 및 README.md에 변경 사항 반영
- `_parse_json()` 메서드에서 응답 내 여러 JSON 객체 중 `actions`를 포함한 계획 객체를 우선 선택하도록 로직 개선
- JSON 파싱 실패 시 잘림 복구 로직을 추가하여 안정성 향상
- 관련 단위 테스트 추가 및 README.md에 변경 사항 반영
- `_glm_debug_enabled()`가 활성화된 경우, content와 reasoning의 길이 및 JSON 유사성 여부를 포함한 디버그 정보를 출력하도록 로직 추가
- 디버깅을 위한 content 및 reasoning의 미리보기 문자열도 포함하여 문제 해결 시 유용한 정보 제공
- GLM 응답의 content가 비어있을 경우 reasoning_content를 대신 사용하도록 로직 개선
- 새로운 메서드 _extract_glm_assistant_text 추가하여 assistant 텍스트 추출을 명확히 함
- 관련 단위 테스트 추가 및 README.md에 변경 사항 반영
- `_parse_json()` 메서드에서 최상위 JSON 배열을 허용하고, 이를 `actions` 리스트로 래핑하여 정상적인 파이프라인으로 이어지도록 개선
- JSON 파싱 실패 시 원인 파악을 돕기 위해 오류 메시지에 첫 비공백 문자를 포함
- 새로운 단위 테스트를 추가하여 JSON 객체 및 배열 파서의 회귀 방지
- README.md 및 문서에 변경 사항 반영
- `mine_resource` 함수에서 채굴 상태를 매 루프마다 반복 설정하던 로직을 제거하여, 우클릭 유지와 유사한 동작으로 최적화
- GLM API 호출 실패 시 예외 처리 로직을 개선하여, 다양한 오류 원인을 로그로 출력하고 상태 요약 기반의 폴백 로직 추가
- 새로운 연결 검사 스크립트 추가 및 README.md에 GLM API 연결 문제 디버깅 섹션 추가
- 관련 문서 및 주의사항 업데이트
- 에이전트가 발견한 광맥 좌표를 `ore_patch_memory.json`에 저장하여 재시작 시 활용 가능
- 마지막 실행한 행동과 결과를 `agent_last_action_memory.json`에 저장하여 다음 상태 요약에서 참고 가능
- `state_reader.py`에서 메모리 로드 및 상태 요약에 포함
- `ai_planner.py`에서 시스템 프롬프트에 기억된 광맥 및 마지막 행동 관련 가이드 추가
- `README.md`에 새로운 메모리 기능 설명 추가
- 인벤토리 캐시 기능을 추가하여, RCON으로 인벤토리를 읽지 못할 경우 이전에 성공적으로 읽은 데이터를 활용
- Lua에서 JSON 인코딩을 위한 간단한 함수 추가, 일부 Factorio 버전에서 `game.table_to_json`이 없을 경우 대체
- `README.md`에 인벤토리 캐시 및 JSON 인코더 사용에 대한 설명 추가
- `scan_resources()`와 `mine_resource`의 반경을 확장하여 자원 탐색 실패를 줄임