MINARA

역할 메모리

정산된 수동 거래 사례를 대상으로 하는 shadow-first 역할별 반성 시스템

Role Memory는 선언된 분석 역할의 성공 패턴과 실패 모드를 저장합니다. 통합 Trading Memory 아키텍처에서는 사례가 소비된 수동 거래 preview에 정확히 연결되고 해당 실행에 정산된 outcome이 있을 때만 학습 대상이 됩니다.

이는 일반 예측 로그나 계정 내역 미러가 아닙니다. Autopilot, Strategy Studio, XStrategy, workflow 실행 및 출처 불명 perps는 회상 가능한 role case를 만들 수 없습니다.

사용자 감사 화면은 Trading Memory를 참조하십시오.

허용 경계

Role case가 평가 대상이 되려면 다음을 모두 만족해야 합니다.

  1. role ID가 reasoning skill에 선언되고 role registry에 존재합니다.
  2. 수동 preview가 정확히 한 번 소비되었습니다.
  3. 사례와 실행의 decision ID, 자산, 방향, 계정, 시장이 일치합니다.
  4. 실행 출처가 manual_agent 또는 검증된 manual_external입니다.
  5. outcome이 정산되었고 충분한 평가 데이터가 있습니다.

자동 마커는 수동으로 보이는 증거보다 우선합니다. 알 수 없는 role이나 거래 출처는 generic role로 fallback하지 않고 격리됩니다. 이 fail-closed 경계는 자동 전략 동작이 사람의 선호도나 분석 역할의 교훈으로 재해석되는 것을 막습니다.

데이터 모델

role_cases는 role, 연결된 결정과 evaluation run, 상황, 결정 텍스트, outcome state, reflection, provenance, 평가 자격, timestamp를 저장합니다. FTS와 선택적 vector index는 검색용이며 관계형 결정/평가 연결이 source of truth입니다.

통합 체인은 다음과 같습니다.

trading_decisions
  → trade_executions / trade_fills
  → position_lifecycles
  → evaluation_runs / evaluation_components
  → methodology_observations and role_cases

사례는 자체적으로 거래가 발생했다고 주장할 수 없으며 연결된 실행 체인에서 그 사실을 상속합니다.

역할 선언

분석형 skill은 안정적인 role ID와 reflection policy를 선언합니다. Role registry가 시작 시 이를 검증하며 중복 또는 알 수 없는 ID를 generic role에 조용히 매핑하지 않습니다. 역할 정의는 failure mode, 성숙 기간, outcome probe, reflection prompt를 제어합니다.

Skill은 기능 bundle이고 role은 그 안의 결정 맥락입니다. 따라서 valuation, momentum, cycle analysis 교훈이 섞이지 않습니다.

반성

대상 사례가 성숙하면 reflector가 먼저 outcome을 분류합니다.

  • logic_error: 추론이 당시 이용 가능한 증거와 충돌합니다. 학습 가능.
  • missing_data: 가져왔어야 할 증거가 빠졌습니다. 학습 가능.
  • exogenous: 예측 불가능한 이벤트에 의존합니다. 감사용으로 유지하지만 guidance는 만들지 않습니다.
  • variance: 노이즈와 구분할 수 없습니다. guidance를 만들지 않습니다.

학습 가능한 분류만 간결한 역할별 lesson을 받습니다. 반성은 role별로 직렬화되어 중복 LLM 작업을 방지하고 budget gate를 거치며 fund-moving tool을 호출할 수 없습니다.

Runtime 모드

ROLE_MEMORY_MODE는 시작 시 읽고 해당 process에서 고정됩니다.

모드기록/평가회상/주입
off새 사례 없음. 기존 데이터는 감사용으로 유지비활성
shadow(기본값)대상 수동 사례 생성 및 반성비활성
activeshadow와 동일반성이 끝난 사례를 일치하는 분석 role 및 Institution Trader / PM prompt에 제공 가능

잘못된 값은 경고를 기록하고 shadow로 돌아갑니다. Active도 execution tool에 사례 텍스트를 주입하지 않습니다. SOUL, 정적 안전 규칙, permission gate, 명시적 사용자 제약은 항상 검색된 사례보다 우선합니다.

Recall과 수동 reflect tool은 active에서만 등록되고 shadow는 후보 사례 생성에 필요한 store path만 노출합니다. Shadow는 “모델이 사례를 무시할 수 있음”이 아니라 공식 결정 prompt에서 사례를 검색하거나 받을 수 없는 상태입니다.

검색 제약

Active 검색은 role을 정확히 일치시키고 제공된 경우 symbol과 scenario도 필터링합니다. 반성이 완료되고 격리되지 않았으며 평가 자격이 있는 수동 사례만 대상입니다. FTS 또는 embedding으로 순위를 정하더라도 출처, role, 결정 연결 제약은 완화되지 않습니다.

평가와의 관계

Role Memory는 버전이 지정된 evaluation run을 사용합니다. 같은 결정을 여러 benchmark profile로 평가할 수 있으며 replay는 새 run을 추가합니다. 명시적으로 promoted된 primary run만 하위 통계를 갱신할 수 있습니다. 요인 세부 정보와 누락 품질은 evaluation_components에 남으며 하나의 고정 score로 축약하지 않습니다.

마이그레이션

이전 role_memory 행은 role_cases로 이동합니다. 알려진 role은 원문과 provenance를 유지하고 알 수 없는 role은 격리됩니다. 이전 score는 감사 전용이며 새 방법론 또는 role 통계를 갱신할 수 없습니다. Trading Memory 전체와 같은 checksum backup 및 보존 보고서로 검증합니다.

운영 확인

  • 공식 주입 전에 ROLE_MEMORY_MODE=shadow로 생성과 평가를 검증합니다.
  • 모드 변경 후 재시작합니다. hot switch하지 않습니다.
  • doctor/audit 출력에서 오래된 pending, failed, 격리 사례를 확인합니다.
  • 사례가 없으면 reflection scheduler보다 먼저 소비된 수동 preview와 정확한 실행 연결을 확인합니다.
  • 자동 또는 불명 거래의 평가 자격을 수동으로 바꿔 “수리”하지 않습니다.

관련 구현:

  • apps/agent/src/memory/role-memory-mode.ts
  • apps/agent/src/memory/role-reflector.ts
  • apps/agent/src/memory/prompt-injection.ts
  • apps/agent/src/tools/role-memory.ts
  • apps/agent/src/memory/trading-memory-migration.ts

목차