> ## Documentation Index
> Fetch the complete documentation index at: https://manual.seahorse.dnotitia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> Memory Facts — Agent Chat 의 장기 기억 저장소. Current Session / All Sessions / Compacted / Statistics 4 탭

# Memory facts

# Memory Facts

**경로**: 좌측 사이드바 상단 **⋯ 메뉴** → **Memory Facts**

에이전트가 **세션을 넘어 기억하는 사용자 컨텍스트(Facts)** 를 관리합니다. 세션 중 대화에서 추출되거나 사용자가 직접 추가한 선호·배경 정보를 저장해 두면, 이후 세션에서 자동으로 프롬프트에 주입되어 일관된 답변을 생성합니다.

<Frame>
  <img src="https://mintcdn.com/dnotitia-328335e7/3mgjFAVO5t1rKplH/images/image-46.png?fit=max&auto=format&n=3mgjFAVO5t1rKplH&q=85&s=453b31d2f7ae5c72abe201a3fc961102" alt="Image" width="1169" height="487" data-path="images/image-46.png" />
</Frame>

## 동작 원리 — 3 단계 파이프라인

Memory Facts 는 **Extraction → Compaction → Injection** 세 단계로 동작합니다.

<Steps>
  <Step title="1. Fact Extraction (자동 추출)">
    백그라운드에서 **세션별로 자동 팩트 추출**. 사용자가 채팅 중 흘린 단서에서 장기 기억 후보를 뽑습니다.

    * 예) `"나는 홍길동이야"` · `"나는 Dnotitia 에 다녀"` → `profile: name = 홍길동 `· `profile: company = Dnotitia` 로 Fact 생성
    * 사용자가 명시적으로 요청하지 않아도 자동으로 진행
    * 세션별 Facts 로 `Current Session` 탭에 누적
  </Step>

  <Step title="2. Fact Compaction (통합 압축)">
    **전체 세션의 Facts + 기존 Compacted Facts 를 머지** 해 새로운 Compacted Facts 를 생성합니다. 이 과정에서 **원본 세션 Facts 는 제거** 되고 통합본만 남습니다.

    * 중복 제거·모순 해소·요약 통합
    * `All Sessions` → `Compacted` 로 이동
    * 장기 기억의 단일 소스가 Compacted 로 일원화
  </Step>

  <Step title="3. Fact Injection (응답 주입)">
    **Compacted Facts 중 원하는 타입을 켜두면** 이후 대화의 프롬프트에 자동 주입되어 응답을 보강합니다.

    * 예) Injection ON + `profile` 타입 활성 → 사용자가 `"내가 누구야?"` 질문 → `"박수연입니다"` 답변
    * **Injection 을 꺼두면 Compacted Facts 가 있어도 실제 답변에 반영되지 않습니다** — 저장만 되는 상태
    * 타입(category) 별로 on/off 제어 가능하므로 `profile` 은 켜고 `preferences` 는 끄는 식의 선택적 활성화 가능
  </Step>
</Steps>

<Info>
  **핵심 이해**

  * **대화 → 자동 Extraction** → `Current Session` 탭
  * **Compaction 실행** → 원본 제거 + `Compacted` 탭에 통합 결과 남음
  * **Injection ON** → Compacted 가 실제 답변에 사용됨 (OFF 면 저장만 됨)

  즉, Injection 을 켜야 에이전트가 "당신은 박수연이야" 같은 장기 기억 기반 답변을 할 수 있습니다.
</Info>

## 탭 구성

| 탭                   | 내용                                                                          |
| ------------------- | --------------------------------------------------------------------------- |
| **Current Session** | 현재 선택된 세션에서 추출·저장된 Facts — 세션 미선택 시 `Select a session to view its facts` 안내 |
| **All Sessions**    | 계정의 **모든 세션** 에 걸쳐 누적된 전체 Facts — 카테고리 또는 토픽별 그룹                            |
| **Compacted**       | 중복·유사 Fact 를 **압축(Compact)** 한 결과. Topic view ↔ Category view 토글 가능         |
| **Statistics**      | 카테고리별 Fact 수·저장 용량·압축 효과 등 통계                                               |

하단 **Refresh** 버튼으로 데이터 재조회.

## 카테고리 구조

Facts 는 카테고리로 분류되어 저장됩니다.

| 대표 카테고리         | 예시                                                          |
| --------------- | ----------------------------------------------------------- |
| **profile**     | `timezone: Asia/Seoul` / `language: ko`                     |
| **preferences** | `code style: prefer TypeScript` / `report format: Markdown` |
| **team**        | `team uses Slack` / `team size: 5`                          |
| **projects**    | `working on Seahorse Cloud` / `repo: seahorse-saas-web`     |
| **tools**       | `preferred IDE: VSCode`                                     |

카테고리별 아이콘·라벨·색상은 UI 에서 자동 매핑됩니다.

## Current Session 탭

현재 세션이 **생성·수정한** Facts 만 표시. 카테고리별 아코디언으로 그룹핑.

* **세션 미선택** → 안내 메시지
* **Facts 없음** → 빈 상태 안내 (대화 중 점진적으로 자동 수집)

## All Sessions 탭

계정 전체의 누적 Facts. 세션을 거듭할수록 축적됩니다.

* **카테고리별 확장/축소** — 각 카테고리 옆 카운트 표시
* **Source 구분** — `auto` (에이전트 자동 추출) vs `manual` (사용자 입력)
* 개별 Fact 의 **수정·삭제** 가능

## Compacted 탭

중복·유사 Facts 를 **통합 압축** 한 결과. LLM 컨텍스트 절약과 일관성 유지가 목적.

| View         | 설명                                       |
| ------------ | ---------------------------------------- |
| **Topic**    | 주제별 — 같은 주제(예: 프로젝트 이름, 팀 구성)로 합쳐진 Facts |
| **Category** | 카테고리별 — 공식 카테고리 기준 정렬                    |

**Compact 실행**

* 상단 버튼으로 수동 실행 또는 정기적으로 자동 수행
* 압축 전/후 Fact 수, 절감률이 `compactResult` 로 표시

<Info>
  **Compact 가 필요한 이유**: 세션이 누적되면 `timezone: Asia/Seoul` 같은 동일 Fact 가 여러 세션에서 중복 생성됩니다. Compact 는 중복을 병합하고 모순되는 Fact(`language: ko` vs `language: en`)를 최신으로 정리합니다.
</Info>

## Statistics 탭

| 지표              | 의미             |
| --------------- | -------------- |
| **Total Facts** | 전체 저장 Fact 수   |
| **Category 분포** | 카테고리별 카운트·비율   |
| **세션별 생성량**     | 세션당 평균 Fact 수  |
| **Compact 효과**  | 압축 전/후 수량 절감률  |
| **Source 비율**   | auto vs manual |

## Fact 적용 시점

에이전트 응답 생성 직전, **관련 Fact 가 프롬프트에 자동 주입** 됩니다.

예) 사용자가 `보고서 작성해줘` 라고 하면:

1. `preferences: report format = Markdown` 가 주입
2. `profile: language = ko` 가 주입
3. 에이전트가 한국어 Markdown 보고서를 생성

## 운영 주의

<Warning>
  * **민감 정보 저장 금지** — 비밀번호·API 키·주민번호·신용카드 번호는 Fact 로 저장하지 마세요. Facts 는 평문에 가깝게 저장됩니다.
  * **자동 수집 리뷰** — 에이전트가 임의로 `auto` 로 저장한 Fact 중 잘못된 것(오해·오탈자)이 있을 수 있으니 정기 점검.
  * **세션 격리가 필요한 경우** — 각 세션이 서로 영향받지 않아야 하는 민감 작업(법무 검토 등)은 해당 세션의 Facts 를 삭제하거나 새 계정/워크스페이스 사용.
  * **컨텍스트 비용** — 너무 많은 Fact 가 누적되면 모든 호출에 주입되어 토큰 비용 증가. 정기 Compact + 불필요 Fact 삭제. 한도·요금: [Billing](/billing)
</Warning>

## 관련 문서

* [Prompt Settings](/agent-chat/user-menu/prompt-settings) — 시스템 프롬프트 (Facts 보다 상위 계층)
* [Display Settings](/agent-chat/user-menu/display-settings) — 화면 테마·블록 표시
* [Language Settings](/agent-chat/user-menu/language-settings) — 언어 목록
