기억 관리 (DSH 버전)
교차 세션 장기 기억: L1 인덱스 주입(매 턴마다 표시) + L2 환경 사실 + L3 작업 경험.
트리거 시점
읽기 (언제 기억을 조회하는가)
- 새 작업 시작 시: 작업이 로컬 환경, 도구 설정, 특정 기술 스택, 이전에 해본 유사 작업과 관련된 경우 → 먼저
memory_list로 무엇이 있는지 확인한 후,memory_read로 관련 항목을 가져옵니다. - 어려움/장애물에 부딪혔을 때:
memory_read로 관련 SOP가 있는지 확인합니다(키워드로 sops/ 파일명 또는 facts section 매칭). - 모델 프롬프트의 기억 인덱스(memory:index): 매 턴마다 표시되는 L1 존재성 인덱스 — 관련 트리거 단어가 보이면 적극적으로
memory_read/memory_list를 호출하여 세부 정보를 가져와야 합니다.
쓰기 (언제 기억을 축적하는가)
작업이 완료(또는 단계 완료)되고 행동 검증이 성공한 정보가 있을 때 memory_write 를 호출합니다:
기록할 수 있는 것 (반드시 evidence(증거)를 포함해야 함):
- 환경 특이적 사실: 경로, 설정,实测(실측) 매개변수, 도구 동작 (→
entry_type: fact) - 복잡한 작업 경험: 여러 번 재시도 후에야 성공한 장애 지점, 숨겨진 선행 조건, 안정적인 절차 (→
entry_type: sop) - 일반적인 금지 규칙 (→
memory_write sop을 통해 작성하거나 [RULES] 유지를 직접 제안할 수 있음)
기록이 금지된 것 (기록하면 오염됨):
- ❌ 검증 증거가 없는 정보 (행동 없음 = 기억 없음)
- ❌ 모델 고유 지식, 추측, 검증되지 않은 가설
- ❌ 변하기 쉬운 상태: 타임스탬프, PID, 임시 경로, 일회성 ID
- ❌ 일반 상식, 로그 기록, 추론 과정 세부 사항
인덱스 동기화
memory_write는 L1 인덱스를 자동으로 동기화하므로 일반적으로 수동 조작이 필요하지 않습니다.- facts.md / sops/ 파일을 수동으로 변경한 후 →
memory_index로 인덱스를 재구축합니다. - 인덱스가 30줄을 초과할 경우: [RULES] 를 간소화합니다(단어 수준 수정, 전체 overwrite 금지).
저장소 구조
<home>/.dsh/memory/
├── memory_management_sop.md L0 메타 규칙 (기억 관리 방법)
├── index.txt L1 인덱스 (≤30줄: L2/L3 존재성 목록 + RULES)
├── facts.md L2 환경 사실 (## SECTION)
├── sops/*.md L3 작업 경험
└── file_access_stats.json 읽기 빈도 통계
도구
| 도구 | 용도 |
|---|---|
memory_list | 모든 기억 나열 (facts + sops + 인덱스 줄 수) |
memory_read | 지정된 기억 읽기 (index / fact 주제 / sop 파일명) |
memory_write | 기억 쓰기 (fact/sop, evidence 필수) |
memory_index | L1 인덱스 자동 부분 재구축 |
원칙
- 행동 검증: No Execution, No Memory. 성공적으로 검증된 정보만 기록합니다.
- 최소 충분성: 내용은 가능한 한 짧게 합니다. "잊어버리면 높은 비용의 재시도가 발생하는" 정보만 기록합니다.
- 검증된 사실을 삭제하거나 변경하지 않음: 압축하거나 이동할 수는 있지만, 폐기는 엄격히 금지됩니다.
- 능동적 쓰기: 기억 쓰기는 항상 모델/사용자에 의해 능동적으로发起되며, 자동으로 설정을 변경하거나 플러그인을 설치하지 않습니다.