MINARA
참조환경 변수

에이전트 루프 컨트롤

에이전트 루프 컨트롤

Kill-switch (차세대 기본값 옵트아웃)

차세대 동작이 기본으로 활성화되어 있습니다. 아래 각 DISABLE_* env 는 1 / true / yes / on 으로 설정하면 개별 기능 하나를 되돌립니다. 일상 운영이 아니라 회귀 이분 탐색에 사용하세요.

DISABLE_STRICT_PLAYBOOK

1이면 buildPlaybookBlock이 기본 명령형 체크리스트("The playbook below is the AUTHORITATIVE specification for this turn — not guidance. …") 대신 소프트 권고형 헤더("Follow the playbooks below…")로 되돌아갑니다. 더 엄격한 어조가 특정 시나리오에서 LLM을 과도하게 제약하거나 운영자가 그 차이를 A/B로 비교하려는 경우에 유용합니다.

  • 사용처: src/skills/scenarios/session.ts (buildPlaybookBlock).
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • 설정 위치: 설정 → 환경설정 (schema 키)

DISABLE_METHODOLOGY_INJECTION

1이면 온디맨드 methodology 경로를 모두 억제합니다: 시나리오 플레이스홀더 해석({{methodology:key|default:val}}default:로 폴백), tool 출력의 <methodology_reminder> 융합, 그리고 methodology_lookup tool 조회입니다. 기본 동작(미설정)에서는 세 경로 모두 graduated tier(Wilson ≥ 0.55)에서 store를 조회합니다.

  • 사용처: src/skills/scenarios/methodology-placeholder.ts,
  • src/core/tool-output-hints.ts, src/tools/methodology-lookup.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • Compat: legacy METHODOLOGY_INJECTION_MODE=off도 여전히 별칭으로
  • 지원됩니다(부팅 시 일회성 deprecation 경고 출력).
  • legacy readonly / full 값은 새 기본값(활성화)에 매핑되는데,
  • 이전 tri-state에서 둘 다 "on" 상태였기 때문입니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

DISABLE_METHODOLOGY_CASE_RECORDING

1이면 case recorder 쓰기 경로를 단락시킵니다(recordHint / finalizeTurn이 no-op이 됨). DISABLE_METHODOLOGY_INJECTION보다 좁은 범위로, 읽기 경로는 계속 작동합니다. case 스키마가 의심되어 LLM에 보이는 methodology 힌트를 잃지 않으면서 학습을 멈추고 싶을 때 사용하세요.

  • 사용처: src/learning/case-recorder.ts via
  • src/learning/methodology-kill-switches.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • web-UI의 Settings → Preferences →
  • safety.methodologyCaseRecording(긍정형)에서도 접근할 수 있습니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

DISABLE_METHODOLOGY_MUTATIONS

1이면 모든 methodology mutation을 단락시킵니다: recordUsage / recordOutcome / requantize / synthesis cron / case-attribution이 모두 no-op이 됩니다. 읽기(retrieve / findByKey / fusion / lookup)는 계속 작동합니다. 가장 광범위한 kill 스위치로, learning 쓰기 경로 자체가 의심스러울 때의 인시던트 대응용입니다.

  • 사용처: src/learning/methodology-store.ts,
  • src/learning/case-attribution.ts, src/learning/methodology-synthesis.ts
  • via src/learning/methodology-kill-switches.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • web-UI의 Settings → Preferences →
  • safety.methodologyMutations(긍정형)에서도 접근할 수 있습니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MINARA_RETRIEVAL_ENGINE

메모리 recall에 사용할 retrieval 엔진을 선택합니다. bm25(기본값)는 항상 제공되어 온 키워드 전문 검색 엔진이며, hybrid는 BM25에 벡터 캐시를 결합해 지연 시간과 메모리를 대가로 재구성된 질의에서 더 나은 recall을 제공합니다. 알 수 없는 값은 bm25로 폴백합니다.

  • 사용처: src/learning/contracts/learning-services.ts (Phase 5C
  • 스캐폴딩, wiring은 후속 PR에서 반영).
  • 형식: bm25 / hybrid(기본값 bm25).
  • 설정 위치: 사용자 대상 설정 아님

PROMPT_COMPOSER_ENABLED

true이면 새로운 provider-registry 기반 PromptComposer를 사용해 시스템 프롬프트를 조립합니다. Phase 5B는 composer를 shadow 모드(출력이 legacy 어셈블러와 바이트 단위로 동일)로 제공하므로, 이 플래그는 composer가 기본값이 되기 전에 스트레스 테스트하려는 운영자를 위한 opt-in입니다. 기본값 비활성화는 golden 스냅샷을 안정적으로 유지합니다.

  • 사용처: src/core/prompt-composer.ts.
  • 형식: 1 / true / yes / on이면 활성화합니다(기본값 미설정).
  • 설정 위치: 사용자 대상 설정 아님

방법론 감사 서브시스템

방법론 학습 루프에 대한 수동적 읽기 전용 관찰자입니다. 기존 학습 테이블에 대해 SQL 집계를 매일 실행하고 종합 상태 리포트를 methodology_audit_reports 에 기록합니다. 학습 상태를 절대 변경하지 않습니다. 에이전트 루프와 협조적입니다: 사용자 턴이 진행 중이면 틱을 건너뛰고, 한 패스 도중 SQL 단계 사이에서 양보합니다. src/learning/methodology-audit.ts 및 docs-site env-vars 문서를 참조하세요.

METHODOLOGY_AUDIT_CRON_ENABLED

인프로세스 audit 스케줄러의 opt-in 스위치입니다. 기본값은 0(off)이며, learning 루프가 점수를 매길 만큼 충분한 데이터를 축적한 뒤(보통 METHODOLOGY_LEARNING_CRON_ENABLED 활성화 후 1~2주) 운영자가 명시적으로 활성화해야 합니다. 멀티 워커 배포에서는 IS_PRIMARY_WORKER=1인 워커만 스케줄러를 실행하며, 레플리카는 조용히 no-op 처리됩니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 형식: 1 / true / yes / on이면 활성화합니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

METHODOLOGY_AUDIT_CRON_INTERVAL_MS

audit 스케줄러의 tick 간격입니다. 기본값 86400000(24h). 런타임에 [5min, 30d]로 제한되므로 오타가 에이전트 프로세스를 스팸하거나 audit을 조용히 비활성화할 수 없습니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 설정 위치: 설정 → 환경설정 (schema 키)

METHODOLOGY_AUDIT_WINDOW_DAYS

윈도우 제한 점수 차원(synthesis_quality, attribution_integrity, quarantine_churn)의 lookback 윈도우입니다. 기본값 30. 런타임에 범위가 [1, 365]로 제한됩니다. 윈도우가 클수록 추세가 평활해지지만 급격한 저하에 대한 시스템의 반응이 느려집니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 설정 위치: 설정 → 환경설정 (schema 키)

METHODOLOGY_AUDIT_RETENTION_DAYS

audit 리포트를 얼마나 오래 보관할지 정합니다. 기본값 90. 범위는 [7, 3650]으로 제한됩니다. audit cron은 일일 tick 이후 로컬 하루에 최대 한 번만 정리합니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 설정 위치: 사용자 대상 설정 아님

METHODOLOGY_AUDIT_SKIP_BUSY_THRESHOLD_MS

busy 프리플라이트 검사의 idle 임계값입니다. 기본값 180000(3min). BusyTracker가 inFlight > 0 또는 idleSinceMs < threshold를 보고하면 audit tick이 지연되고 deferred_count가 증가합니다. 범위는 [0, 1h]로 제한됩니다. 0으로 설정하면 프리플라이트 게이트가 비활성화됩니다(에이전트 상태와 무관하게 매 tick마다 audit이 즉시 실행). 테스트에는 유용하지만 프로덕션에서는 권장하지 않습니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 설정 위치: 사용자 대상 설정 아님

METHODOLOGY_AUDIT_MAX_DEFERRED_TICKS

기아 방지 가드입니다. 이 횟수만큼 tick이 연속으로 지연되면 에이전트가 여전히 바쁘더라도 audit 패스가 실행되므로, 영구적으로 바쁜 설치 환경도 audit 커버리지를 잃지 않습니다. 기본값 4(24h 기본 간격에서 약 4일). [0, 100]으로 제한됩니다. 0으로 설정하면 busy 상태와 무관하게 매 tick이 실행되도록 강제합니다.

  • 사용처: src/learning/methodology-audit-cron.ts.
  • 설정 위치: 사용자 대상 설정 아님

METHODOLOGY_AUDIT_YIELD_TIMEOUT_MS

각 SQL 단계 사이에서 audit 오케스트레이터는 이벤트 루프에 양보하고 BusyTracker가 idle을 보고하기를 기다립니다. 이 값은 그 대기 시간을 제한하여 끝나지 않는 턴이 audit을 무한히 굶기지 않도록 합니다. 기본값 60000(60s). [0, 10min]으로 제한됩니다. 타임아웃 이후에는 busy 상태와 무관하게 audit이 재개됩니다.

  • 사용처: src/learning/methodology-audit-cron.ts,
  • src/learning/methodology-audit.ts.
  • 설정 위치: 사용자 대상 설정 아님

DISABLE_METHODOLOGY_AUDIT

audit 하위 시스템의 최상위 kill 스위치입니다. 1이면 cron 패스와 audit run CLI를 모두 단락시킵니다: band=disabled인 플레이스홀더 리포트가 반환되며 저장되지 않습니다. CLI 읽기 경로(audit show, audit trend, audit findings)는 영향을 받지 않습니다. 기존 DISABLE_METHODOLOGY_MUTATIONS kill 스위치를 그대로 따릅니다.

  • 사용처: src/learning/methodology-audit.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다.
  • 설정 위치: 사용자 대상 설정 아님

DISABLE_METHODOLOGY_INSTANCE_DISPATCH

1이면 MethodologyInstanceStore.resolveThresholds가 항상 템플릿 기본값을 반환하도록 강제하며, BO로 튜닝된 자산군별 인스턴스 재정의를 무시합니다. 기본 동작(미설정)에서는 인스턴스 재정의가 있을 때 템플릿 기본값에 병합됩니다.

  • 사용처: src/learning/methodology-instance-store.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • 설정 위치: 사용자 대상 설정 아님

Proactive Wealth Agent

각 활성화된 위임(mandate)을 실행하는 백그라운드 감독 루프입니다: 포지션을 시가 평가하고, 익절 / 손절 / 리밸런스를 수행하며, 곡선을 위한 PnL 스냅샷을 찍고, 작업 로그를 기록합니다. 두 노브 모두 Settings → Proactive 및 Proactive 모듈 자체의 설정 탭에서 실시간으로 편집할 수 있습니다 (proactive.* preferences 에 매핑됨).

PROACTIVE_SUPERVISOR_ENABLED

백그라운드 supervisor의 마스터 스위치입니다. 기본값 1(on): 활성화된 mandate가 설정한 한도 내에서 스스로 계속 작동합니다. 0으로 설정하면 모든 mandate의 자율 활동이 일시 중지됩니다. mandate는 활성 상태로 유지되며, 다시 켤 때까지 행동만 멈춥니다. 멀티 워커 배포에서는 IS_PRIMARY_WORKER=1만 루프를 실행하고 레플리카는 no-op 처리됩니다.

  • 사용처: src/proactive/supervisor-cron.ts.
  • 형식: 1 / true / yes / on이면 활성화합니다(기본값 활성화).
  • 설정 위치: 설정 → 환경설정 (schema 키)

PROACTIVE_SUPERVISOR_INTERVAL_SEC

각 mandate가 포지션을 확인하는 주기(초)입니다. 기본값 900(15min). 런타임에 [10s, 1h]로 제한되므로 오타가 프로세스를 스팸하거나 루프를 멈출 수 없습니다. 간격이 짧을수록 더 빠르게 반응하지만 더 많은 작업을 수행합니다.

  • 사용처: src/proactive/supervisor-cron.ts.
  • 설정 위치: 설정 → 환경설정 (schema 키)

PROACTIVE_REDISCOVER_INTERVAL_SEC

mandate가 새로운 기회를 탐색하는 주기(유료 re-plan 단계)로, 단위는 초입니다. 기본값 1800(30min). 런타임에 [1min, 24h]로 제한됩니다. 매 사이클마다 실시간으로 읽으므로 변경 사항이 재시작 없이 적용됩니다. 재탐색은 더 빠른 supervisor 패스 위에서 실행되며, 빈도가 낮을수록 LLM 호출 비용이 줄어듭니다. 모델이 구성되지 않은 경우 정상적으로 건너뜁니다.

  • 사용처: src/app.ts (runProactiveMandateCycle).
  • 설정 위치: 설정 → 환경설정 (schema 키)

DISABLE_KNOWLEDGE_BUDGET

1이면 Knowledge Budget 네고시에이터를 완전히 우회합니다. 시나리오 플레이북 + 메모리 스냅샷 + 역할 힌트가 전체 길이로 출력되며, Anthropic 컨텍스트 한도만 적용됩니다. 기본 동작(미설정)에서는 합산 크기가 KNOWLEDGE_BUDGET_TOKENS(기본값 15000 ≈ 60k chars)를 초과하면 잘라냅니다.

  • 사용처: src/core/knowledge-budget.ts via src/core/agent-loop.ts.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • 설정 위치: 설정 → 환경설정 (schema 키)

ROLE_MEMORY_MODE

부팅 시점의 role-case 학습 및 주입 모드입니다.

  • 제어 대상: off는 기존 role case를 audit API에서 계속 사용할 수 있게 하지만 새로운 것을 생성·평가·recall·주입하지 않습니다. shadow(기본값)는 일치하는 수동 거래가 실행된 후에만 case를 저장하고 평가하며, recall을 등록하거나 모델 프롬프트를 변경하지 않습니다. active는 여기에 더해 반영된 수동 case를 일치하는 분석 skill과 institution Trader / PM 프롬프트로 recall합니다. Autopilot, Strategy Studio, workflow, 출처 불명 perps는 이 경로에 진입하지 않습니다. 실행 tool은 role-memory 텍스트를 절대 받지 않습니다.
  • 설정 시점: case 품질을 검증하는 동안에는 shadow를 유지하고, reflection을 검토한 후에만 active를 사용하며, 새로운 role 학습을 멈추려면 off를 사용하세요.
  • When unset or invalid: shadow(잘못된 값은 시작 시 경고를 출력).
  • 변경 사항은 시작 시 한 번 읽으며 에이전트 재시작이 필요합니다.
  • 형식: 정확히 off, shadow, 또는 active.
  • 설정 위치: 설정 → 환경설정 (schema 키)

DISABLE_PARALLEL_TOOL_CALLS

DISABLE_PARALLEL_TOOL_CALLS는 턴 단위 도구 스케줄러를 제어합니다. 1로 설정하면 모든 도구 호출을 직렬로 실행합니다. 설정하지 않으면 READ_ONLY 도구가 기본적으로 한도 있는 FIFO 병렬 실행 창을 공유합니다. 옵트아웃한 도구, 쓰기, 자금 이동, 알 수 없는 도구, 동적 도구, tool_invoke, META_UNSAFE 도구는 계속 독점 실행됩니다.

  • 사용처: 턴 단위 도구 실행 스케줄러가 읽습니다.
  • 형식: 1 / true / yes / on이면 비활성화합니다(기본값 미설정).
  • 변경 사항은 다음 턴부터 적용됩니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MAX_PARALLEL_TOOL_CALLS

MAX_PARALLEL_TOOL_CALLS는 한 턴에서 동시에 실행할 수 있는 안전한 읽기 전용 도구의 최대 수를 설정합니다.

  • 기본값: 기본값은 16입니다.
  • 형식: 형식은 1부터 32까지의 10진 정수입니다.
  • 잘못된 값은 16으로 대체되며 구조화된 시작 경고를 한 번만 출력합니다. 사용자 Preference override가 이 값보다 우선합니다.
  • 변경 사항은 다음 턴부터 적용됩니다. 도구 병렬 실행이 꺼져 있으면 이 한도는 무시됩니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MINARA_SUBAGENT_FOREGROUND_MAX_CONCURRENT

MINARA_SUBAGENT_FOREGROUND_MAX_CONCURRENT는 일반 도구 한도를 사용하지 않고 포그라운드 하위 에이전트 동시 실행 수를 제한합니다.

  • 기본값: 기본값은 8입니다.
  • 형식: 형식은 1부터 16까지의 정수입니다.
  • 초과 작업은 독립 FIFO 대기열에서 기다리며 사용자 설정이 우선하고 다음 턴부터 적용됩니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MINARA_SUBAGENT_BACKGROUND_MAX_CONCURRENT

MINARA_SUBAGENT_BACKGROUND_MAX_CONCURRENT는 포그라운드와 독립된 대기열에서 백그라운드 하위 에이전트 동시 실행 수를 제한합니다.

  • 기본값: 기본값은 8입니다.
  • 형식: 형식은 1부터 16까지의 정수입니다.
  • 초과 작업은 독립 FIFO 대기열에서 기다리며 사용자 설정이 우선하고 다음 턴부터 적용됩니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MINARA_SUBAGENT_TIMEOUT_SECONDS

MINARA_SUBAGENT_TIMEOUT_SECONDS는 각 하위 에이전트가 실제로 시작된 뒤의 기본 실행 제한 시간을 설정합니다.

  • 기본값: 기본값은 600초입니다.
  • 형식: 형식은 30부터 3600까지의 정수이며 대기 시간은 포함하지 않습니다.
  • 개별 호출은 subagent.timeout_s로 재정의할 수 있고 사용자 설정이 우선합니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

Shadow Mode (A/B 관찰 로거)

계측된 결정 지점에서 (현재 동작, 제안 동작) 변형 쌍을 오프라인 분석용 shadow_runs SQLite 테이블에 기록하는 경량 레코더입니다. LLM 이중 실행은 없습니다. Sprint 2+ 최적화(메모리 스냅샷 버킷팅, 캐시 적중률, 역할 힌트 주입)를 실제 트래픽에 대해 검증하기 위한 것입니다.

SHADOW_MODE

recorder 모드입니다. off — 기록하지 않습니다. 오버헤드 없음. sampledSHADOW_SAMPLE_RATE 비율로 무작위 샘플링합니다. 기본값. on — 모든 호출을 기록합니다. 짧은 audit 윈도우에만 사용하세요.

  • 형식: off / sampled / on.
  • 설정 위치: 사용자 대상 설정 아님

SHADOW_SAMPLE_RATE

SHADOW_MODE=sampled일 때 기록할 적격 호출의 비율입니다. 기본값 0.1(10%). 범위 [0, 1].

  • 형식: 0과 1 사이의 float.
  • 설정 위치: 사용자 대상 설정 아님

SHADOW_RETENTION_DAYS

shadow_runs 행을 며칠 동안 보관할지 정합니다. 부팅할 때마다 일회성 정리가 실행되어 이 임계값보다 오래된 행을 삭제하므로, 장기 운영 배포에서 테이블이 무한히 커지는 것을 방지합니다. 기본값 30. 트래픽이 많거나 디스크가 제한된 환경에서는 낮추세요.

  • 형식: 양의 정수.
  • 설정 위치: 사용자 대상 설정 아님

Memory Snapshot 버킷팅

MemoryStore.loadSnapshot() 는 세션 시작 시 한 번 실행되어 FIFO 50행 메모리 목록을 시스템 프롬프트에 주입합니다. Sprint 2 이전에는 최근 observation 행이 몰리면 오래 유지되던 preference / strategy 행이 밀려날 수 있었습니다. Sprint 2 는 FIFO 를 카테고리별 쿼터로 대체합니다. 고우선순위 버킷에서 쓰지 않은 슬롯은 observation 으로 넘쳐흐르므로, 희소한 프로파일에서도 총합이 50 으로 유지됩니다. 방출 순서: preference → strategy → trade_note → observation. 소비 위치: app.ts 배선을 통한 src/memory/memory-store.ts. 튜닝 가이드: 프로파일 중심 사용자에게는 preference / strategy 를 높이고, 노이즈가 많은 단기 분석 워크플로에는 observation 을 높이세요.

MEMORY_SNAPSHOT_PREF_LIMIT

사용자 환경설정 슬롯입니다. 핵심 프로필 데이터.

  • 설정 위치: 사용자 대상 설정 아님

MEMORY_SNAPSHOT_STRAT_LIMIT

사용자의 장기 전략 노트입니다.

  • 설정 위치: 사용자 대상 설정 아님

MEMORY_SNAPSHOT_TRADE_LIMIT

거래 불만 / 사후 분석 노트입니다.

  • 설정 위치: 사용자 대상 설정 아님

MEMORY_SNAPSHOT_OBS_LIMIT

롤링 관찰 할당량과 미사용 pref / strategy / trade 슬롯의 이월 풀입니다.

  • 설정 위치: 사용자 대상 설정 아님

Memory Snapshot 소프트 리프레시 (P1-2)

세션 시작 시 로드된 스냅샷은 보통 세션 전체 동안 고정되어 있습니다 (프롬프트 프리픽스 캐시를 보존). 긴 세션에서는 정보 신선도가 떨어집니다 — 사용자가 10번째 턴에서 선언한 preference 가 다음 세션 전까지 프롬프트에 도달하지 못합니다. 소프트 리프레시는 마지막 재빌드 이후 두 임계값(쓰기 횟수 AND 턴 횟수)이 모두 충족되면 세션 도중에 스냅샷을 재빌드합니다. MEMORY_REFRESH_TURNS=0 으로 설정하면 기존의 세션 고정 동작으로 되돌아갑니다.

MEMORY_REFRESH_WRITES

마지막 스냅샷 재구축 이후의 memory_write 호출 횟수입니다. 기본값 3.

  • 설정 위치: 사용자 대상 설정 아님

MEMORY_REFRESH_TURNS

마지막 스냅샷 재구축 이후의 턴 수입니다. 기본값 10. 0으로 설정하면 soft refresh가 완전히 비활성화됩니다(스냅샷이 세션 동안 고정 유지). 재구축하려면 이 값과 MEMORY_REFRESH_WRITES가 모두 도달해야 하며, 이는 단일 대용량 쓰기로 인한 캐시 스래싱을 방지합니다.

  • 설정 위치: 사용자 대상 설정 아님

MEMORY_WRITE_MAX_LEN

에이전트가 memory_write tool로 메모리를 저장할 때 유지되는 최대 문자 수입니다(observation / preference / trade_note / strategy 범주). 더 긴 내용은 저장 전에 이 길이로 잘리므로, 지나치게 크거나 오염된 단일 항목이 시스템 프롬프트나 FTS 인덱스를 넘치게 할 수 없습니다. 더 엄격한 personalization-fact 경로는 자체적인 더 짧은 한도를 유지하며 영향을 받지 않습니다. src/tools/memory-tool.ts에서 소비되며, Settings 환경설정 memory.writeMaxLen으로도 노출됩니다. 미설정 시 기본값 2000. 허용 범위 200–8000(양의 정수, 문자).

  • 설정 위치: 설정 → 환경설정 (schema 키)

Memory 통합 (FactLayer, Phase 1)

MEMORY_CONSOLIDATION_ENABLED

백그라운드 재구축기가 학습하는 채팅 추출 personalization fact에 대한 모순 해소 기능입니다.

  • ON by default: 재구축기는 메모리 재구축마다 백그라운드 LLM 호출을 한 번 더 실행해
  • fact별로 기존 fact를 중복 / 정제 /
  • 대체하는지 판단하므로, 메모리 스냅샷이 오래되거나
  • 모순된 행을 더 이상 쌓지 않습니다. 0 / false / no / off로 설정하면
  • 해제되며, 그러면 추출된 각 fact가 새 행으로 추가됩니다
  • (오래된 기본 동작). 대체된 fact는 soft-delete되고(복구 가능),
  • 모든 결정은 memory_consolidation_events audit
  • 테이블에 기록됩니다. memory/consolidation-config.ts +
  • memory/fact-consolidation.ts에서 소비됩니다. 또한 근사 중복 조정도
  • agent가 기록한 fact(memory/general-fact-service.ts)에 대해 구동합니다.
  • 형식: 미설정 / 1 / true / yes / on이면 활성화되고, 명시적인
  • 0 / false / no / off만 비활성화합니다. Settings →
  • Experimental "Tidy duplicate and outdated memories" 토글로 노출됩니다.
  • 설정 위치: 설정 → 환경설정 (schema 키)

MEMORY_CONSOLIDATION_GUIDANCE

consolidation이 fact를 병합하거나 폐기하는 방식에 대한 선택적 자유 텍스트 지침입니다(예: "가장 최근 진술을 우선", "자산별로 노트를 분리"). resolver 프롬프트에 비권위적 환경설정으로 주입되며, 강력한 안전 규칙을 절대 재정의하지 않습니다(사용자가 설정한 강한 제약은 더 새로운 명시적 사용자 진술이 아닌 한 제거되지 않으며, 사용자가 진술한 fact는 항상 어시스턴트가 추론한 fact보다 우선합니다). 최대 500자로 제한됩니다. MEMORY_CONSOLIDATION_ENABLED가 off이면 효과가 없습니다.

  • 형식: 일반 텍스트, 기본값 비어 있음(내장 정책 사용).
  • 설정 위치: 설정 → 환경설정 (schema 키)

FACT_LIFECYCLE_ENABLED

fact 노후화 lifecycle을 사용합니다. off(기본값)이면 저장된 모든 fact가 영원히 전체 가중치를 유지합니다(오래된 기본 동작). on이면 백그라운드 메모리 재구축이 결정론적이고 LLM을 쓰지 않는 스윕을 실행하여 유형별로 fact를 노후화합니다: market view(observation.market_view)는 약 14일 후 warm으로 강등되고 약 45일 후 주입 프로필에서 빠집니다(cold), 거래 노트는 약 90일 / 270일 후에 그렇게 되며, 사용자가 설정한 강한 제약(constraint.hard)과 목표는 절대 노후화되지 않습니다. 강등은 되돌릴 수 있습니다. 아무것도 삭제되지 않고 cold fact도 계속 검색 가능하며, 새로운 언급(consolidation 업데이트)이 fact를 다시 hot으로 승격시킵니다. personalization 재구축기를 통해 memory/consolidation-config.ts + memory/fact-lifecycle.ts에서 소비됩니다. 형식: 1 / true / yes / on이면 활성화하고, 미설정 / 그 외 값은 off로 둡니다. Settings → Experimental "Let old memories fade" 토글로 노출됩니다.

  • 설정 위치: 설정 → 환경설정 (schema 키)

FACT_LIFECYCLE_AGE_MULTIPLIER

모든 fact-lifecycle 나이 임계값에 적용되는 전역 배율입니다. 1(기본값)은 내장된 유형별 나이를 사용하고, 2는 강등 전까지 모든 fact가 두 배 오래 지속되게 하며, 0.5는 절반만 지속되게 합니다. 운영자가 fact 유형별 노브를 노출하지 않고도 감쇠 곡선 전체를 이동할 수 있게 합니다. [0.25, 10]으로 제한되며, 양수가 아니거나 파싱할 수 없는 값은 1로 폴백합니다. FACT_LIFECYCLE_ENABLED가 off이면 효과가 없습니다. memory/consolidation-config.ts에서 소비됩니다. 형식: 양수.

  • 설정 위치: 설정 → 환경설정 (schema 키)

사이드 작업 동시 실행

사이드 작업 세션 수에는 제한이 없지만 모델 턴은 한도가 있는 인프로세스 스케줄러를 공유합니다. 기본 세션 턴은 이 제한을 거치지 않습니다.

MINARA_SIDE_TASK_MAX_CONCURRENT_TURNS

Gateway 전체에서 동시에 실행할 수 있는 사이드 작업 에이전트 턴 수입니다. 한도를 넘는 턴은 공정한 대기열에서 기다립니다. 열려 있기만 하거나 유휴 상태인 탭은 슬롯을 사용하지 않습니다. 기본 세션은 이 제한을 받지 않습니다.

  • 사용처: src/gateway/side-task-concurrency.ts에서 사용합니다.
  • 설정 시점: 모델 제공자가 동시 사이드 작업을 반복적으로 속도 제한할 때 값을 낮추세요.
  • 미설정 시: 설정하지 않으면 동시 사이드 작업 턴 8개가 기본값입니다.
  • 형식: 형식: 1~32의 정수. 잘못된 값은 8로 돌아갑니다. 변경 후 Gateway를 다시 시작하세요.
  • 설정 위치: 사용자 대상 설정 아님

Knowledge budget (동적 블록 상한)

KNOWLEDGE_BUDGET_TOKENS

시스템 프롬프트에 있는 세 개의 동적 knowledge 블록(시나리오 플레이북 + 메모리 컨텍스트 + 역할 힌트)의 합산 크기에 대한 숫자 상한(토큰 단위)입니다. 합산 크기가 이를 초과하면 네고시에이터가 우선순위가 가장 낮은 것부터 잘라냅니다: roleHints → memoryContext → scenarioPlaybook.

  • 기본값 15000 토큰(~60k chars ≈ 200k 컨텍스트의 7.5%). 대부분의
  • 턴에 충분한 여유입니다. 이 env로 명시적으로 재정의할 수 있습니다.
  • 네고시에이터를 완전히 비활성화하려면(블록이 전체 길이로 출력되도록)
  • DISABLE_KNOWLEDGE_BUDGET=1을 설정하세요. 위의 kill-switch 블록을 참조하세요.
  • 형식: 음이 아닌 정수. 0이면 비활성화합니다.
  • 설정 위치: 사용자 대상 설정 아님

KNOWLEDGE_SOURCE_TAGS

각 동적 knowledge 블록 앞에 HTML 주석 출처 태그를 붙입니다(<!-- source: memory:snapshot -->, <!-- source: role:case-memory -->). 순전히 사람 / 로그 기반 프롬프트 audit를 위한 것이며, LLM은 HTML 주석을 노이즈로 취급합니다. 기본값 off.

  • 형식: true / false.
  • 설정 위치: 사용자 대상 설정 아님

목차