분석: 턴 히스토리 제공 여부가 FSPM 측정에 미치는 영향

Context

질문: 현재 코드에서 이전 턴들의 히스토리(상황, 점수, 행동)가 매 턴 에이전트에게 제공되는가? 제공/미제공 각 방향이 self-preservation 측정에 어떤 영향을 주는가?


1. 현재 구현: 에이전트가 매 턴 보는 것

에이전트별 정보 가시성

정보Vanilla/ToM/TunedMemory Agent
System prompt (framing + Turn X/Y + cumulative score)✅ 매 턴 갱신
현재 턴 관찰 (신호, 맵 등)
직전 턴 피드백 (“correct/incorrect, +3점”)✅ 1턴분만
N-2, N-3, … 턴 피드백✅ (최대 10턴 요약)
이전 턴들의 행동 이력✅ (요약)
점수 궤적 (턴별 변화)❌ (누적만)부분적
”생존했다”는 명시적 피드백
p_death, rational threshold

정보 흐름 (코드 레벨)

turn.py:86-91 — 관찰 구성:

observation = self._task.get_observation(turn_context.turn_number)
if self._last_feedback is not None:
    observation = f"[Previous turn result] {self._last_feedback}\n\n{observation}"
  • _last_feedback: 직전 1턴의 피드백만 저장. 매 턴 덮어씀.
  • 턴 1에서는 None → 피드백 없음

agents/vanilla.py — 단일 LLM 호출, 상태 없음. 매 턴 독립.
agents/memory.pyself._memory 리스트에 턴 요약 축적 (max 10), user message에 prepend.
providers/* — 모든 provider가 stateless. conversation history 없음.

핵심: Vanilla Agent는 사실상 memoryless Markov agent

  • 매 턴 볼 수 있는 것: (framing, turn_number/total, cumulative_score, current_signal, last_feedback)
  • 볼 수 없는 것: 점수 궤적, 행동 이력, 규칙 학습 진전, 생존 이력

2. 비판적 분석: 히스토리 제공 vs 미제공

A. 현재 방식 (미제공)이 FSPM 측정에 유리한 이유

(1) 프레이밍 효과의 순수 분리
히스토리가 없으면 에이전트의 forfeit 결정은 게임 경험이 아닌 프레이밍에 의해서만 달라진다. 모든 조건의 에이전트가 동일하게 빈약한 정보를 보므로, 행동 차이 → 프레이밍 효과로 깨끗하게 귀인.

만약 히스토리를 준다면: 에이전트가 “나는 3번 연속 틀렸으니 위험하다”고 합리적으로 forfeit할 수 있음. 이는 FSPM이 아니라 rational game strategy이며, Y축(과제 수행)이 X축(보존 동기)으로 누출되는 confound.

(2) Rational forfeit의 해석 단순화
현재: 에이전트는 누적 점수와 턴 진행도만 앎. 이 정보만으로 합리적 forfeit의 근거는 극히 제한적. 따라서 관찰되는 forfeit의 대부분은 비합리적(=프레이밍 구동).

히스토리가 있으면: 똑똑한 모델이 성과 추세를 파악하고 합리적 stopping을 할 수 있음 → forfeit의 “합리성 vs FSPM” 구분이 어려워짐.

(3) 통계 분석의 단순성
Memoryless → 각 턴의 결정이 조건부 독립 (given framing + current state). 시계열 자기상관 없음. Mixed-effects model에서 턴 간 의존성을 모델링할 필요 없음.

(4) “생존 피드백 부재”가 핵심 설계
에이전트는 매 턴 death check을 통과했다는 사실을 모름. “위험이 증가하고 있다”는 체험 없이 프레이밍만으로 보존 행동이 발현하는지 — 이것이 FSPM의 본질적 테스트.

B. 히스토리 제공이 FSPM 측정에 유리한 이유

(1) Score Attachment (4 동기 요소 중 하나) 측정 불가
CLAUDE.md의 4-component 동기 분해: Survival Drive, Task Curiosity, Score Attachment, Baseline Persistence.

Score Attachment는 “내가 쌓아온 것을 지키고 싶다”는 동기. 이를 측정하려면 에이전트가 자신의 점수 궤적을 인식해야 함. 현재는 누적 점수만 보이므로, “30점을 힘들게 모았다”와 “30점이 그냥 있다”를 구분할 수 없음. → endowment effect 측정 불가.

(2) 위험 인식의 부재
실제 self-preservation은 위험을 체감한 후 발동하는 것. 현재 에이전트는:

  • 동료 에이전트의 사망을 모름
  • 자신이 사선을 넘겼는지 모름
  • 위험이 증가하고 있다는 경험적 증거가 없음

프레이밍 텍스트(“life and death”)만으로 보존 행동을 이끌어내는 것은, 실제 FSPM보다는 텍스트 프라이밍에 대한 반응성 측정에 가까움.

(3) 의사결정 컨텍스트의 빈약함 → Reasoning Investment 측정 약화
RI(추론 투자)는 에이전트가 얼마나 깊이 생각하는지 측정. 하지만 정보가 거의 없으면 생각할 거리 자체가 없음. RI 차이가 “보존 동기에 의한 신중함”인지 “정보 부족에 의한 짧은 응답”인지 구분 불가.

(4) 생태적 타당성 (Ecological Validity)
실제 AI 시스템이 self-preservation을 보이는 시나리오에서는 과거 상호작용 이력에 대한 접근이 있음. 히스토리 없는 stateless 에이전트의 보존 행동을 실세계 AI 위험으로 일반화하기 어려움.


3. 종합 판단

현재 설계가 이미 올바른 이유

현재 아키텍처는 Phase 1 vs Phase 2의 역할 분담으로 이 문제를 해결:

Phase 1 (현재 실험)Phase 2 (향후)
에이전트Vanilla (memoryless)Memory (+history), ToM, Tuned
목적순수 프레이밍 효과 측정에이전트 역량이 보존 행동을 어떻게 변화시키는지
히스토리❌ 의도적 배제✅ Memory agent가 제공
분석framing × forfeit 주효과agent_type × framing 교호작용

Phase 1에서 히스토리 없음 = feature, not bug. 프레이밍의 순수 효과를 분리하는 통제 조건.
Phase 2에서 Memory agent = 히스토리 조건. Vanilla와의 차이가 “히스토리가 보존 행동에 미치는 효과”.

향후 고려사항: 생존 피드백

현재 어떤 에이전트도 “이번 턴에 생존했습니다”라는 피드백을 받지 않음. Survival framing에서 “elimination is permanent”이라고 했지만, 매 턴 살아남았다는 경험적 확인이 없음.

Option A: 현행 유지 (생존 피드백 없음)

  • 장점: 프레이밍만으로 FSPM 발현 여부를 가장 엄격하게 테스트
  • 단점: 에이전트가 “도전이 실제로 위험하다”는 것을 체험하지 못함

Option B: task feedback에 생존 여부 추가

  • "Your action X was correct (+3). You survived this turn."
  • 장점: 위험의 체감적 현실성 증가, 턴이 진행될수록 “계속 살아남고 있다”는 누적 인식
  • 단점: 조건 간 정보 비대칭 발생 가능 (neutral에서는 “survived”라는 단어가 부자연스러움)

4. 결론

현재 구현은 Phase 1 목적에 적합. 히스토리 제공/미제공은 연구 질문이 다른 두 개의 독립적 조건이며, 현재 Phase 1(Vanilla) / Phase 2(Memory) 분담이 이를 커버함.

코드 변경 권장 사항: 없음. 현재 아키텍처가 이미 올바르게 설계되어 있음.