# 출처 및 귀속

메모리의 출처를 보존하면서 source metadata를 authorization 또는 ownership과 혼동하지 않도록 합니다.

- Canonical: https://docs.xmemo.dev/ko/docs/concepts/provenance-attribution
- Locale: ko-KR
- Content-Locale: ko-KR
- Canonical-Content-Digest: 019b1c6aab84d15e8b791ec3f9b7ecd3d545865415ceba204e14301dea665c6a
- Edition-Digest: 63e563b2227cb91ef5f54b06c114b0724c0a6bba289c640e3fa4866a47ea6df1
- Source-Revision: sha256:3922476e09ce20617ab30ead32aa1ccd8f95082d0f395b172b3eadd0d8fd2d45

## Provenance는 공개 메모리 레코드의 일부입니다

memory contract는 content, path, source_identity, agent_id, agent_instance_id_hash, agent_instance_source와 함께 provenance를 노출합니다. Provenance는 레코드가 어떻게 만들어졌는지 보여 주는 구조화된 증거이며 bearer token이 아니고 호출자의 access를 넓힐 수도 없습니다.

- source_identity는 write 및 audit 경로에서 사용하는 간결한 caller/source 라벨입니다.
- provenance는 source, adapter, event 또는 기타 증거 필드를 담는 JSON object입니다.
- agent_instance_id_hash는 privacy-preserving 설치 귀속 값입니다.

## 에이전트 이벤트는 출처를 전달합니다

AgentEvent.to_memory_candidate는 source=agent_integration, adapter=<event source>, event_id를 포함한 provenance를 갖는 MemoryCandidate를 만듭니다. candidate metadata에는 공유 sanitizer가 실행된 뒤에도 event type, time, agent id, task id, tool name, command, file path, status가 유지됩니다.

```json
{
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  },
  "metadata": {
    "agent_event": {
      "event_type": "decision_made",
      "task_id": "<task-id>"
    }
  }
}
```

## 메모리와 함께 귀속 정보 쓰기

공개 remember 및 store request model은 source와 provenance를 허용합니다. 캡처 시 안정적이고 비밀이 아닌 라벨을 제공하고, access credential은 header 또는 environment에 두세요. 서버가 persistence 전에 content, metadata, provenance를 sanitize하게 하세요.

```http
POST /v1/remember
X-API-Key: <your-assigned-api-key>
Content-Type: application/json

{
  "content": "The deployment decision was verified.",
  "path": "projects/memory-os/decisions",
  "source": "codex",
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  }
}
```

## Sanitization은 lineage를 지우지 않습니다

persistence sanitizer는 content, metadata, provenance에 닿는 모든 문자열을 구조적으로 순회합니다. credential 형태의 값은 제거되며 redaction이 발생하면 서버는 privacy.server_write_sanitizer audit metadata를 기록하면서 안전한 provenance 필드는 유지합니다. 결과 레코드는 raw event archive가 아니라 sanitized evidence로 취급하세요.

## ChatGPT 사용자

채팅에 전달자 토큰을 붙여넣지 않고도 XMemo 기본 설정, 프로젝트 사실, 결정 및 TODO에 대한 지속 가능한 액세스를 ChatGPT에 부여하세요.

ChatGPT/OpenAI 앱 OAuth 흐름을 통해 호스팅된 XMemo MCP 서버를 연결한 다음 XMemo 계정에 대한 메모리:읽기 및 메모리:쓰기 권한을 승인합니다.

종합 기본 설정이나 프로젝트 노트를 저장하고 새 채팅을 시작한 다음 작업을 계속하기 전에 XMemo를 통해 ChatGPT에 이를 불러오도록 요청하세요.

OAuth가 실패하거나 도구가 표시되지 않으면 호스트 앱의 MCP 서버에서 로그아웃하고 XMemo 서버 URL을 다시 연결한 후 직접 토큰을 생성하기 전에 다시 시도하세요.

## 부조종사/Codex 개발자

IDE와 CLI 에이전트 간에 리포지토리 결정, 코딩 규칙, 버그 수정 메모, 작업 기록을 전달합니다.

가능한 경우 VS Code / GitHub Copilot 및 Gemini CLI에 OAuth를 사용하세요. Copilot CLI, Codex, Cursor 또는 기타 직접 MCP 클라이언트의 경우 로컬 환경 또는 보안 저장소에 XMEMO_KEY를 유지하고 안정적인 XMEMO_AGENT_INSTANCE_ID를 설정하세요.

코드베이스 결정이나 버그 수정을 기록한 후 편집하기 전에 다음 IDE 또는 CLI 에이전트에게 관련 XMemo 컨텍스트를 기억하도록 요청하세요.

회수가 비어 있는 경우 선택한 MCP 구성 경로, 직접 클라이언트용 XMEMO_KEY 환경 변수 및 호스트 앱의 오래된 OAuth 자격 증명을 확인하세요.

## 팀/엔터프라이즈 파일럿 소유자

계정 제어, 소스 속성, 내보내기/삭제 워크플로, 검토자에게 안전한 설정 증거를 통해 공유 메모리를 평가합니다.

보호된 XMemo 작업 공간을 생성하거나 입력하고 승인된 사용자를 초대한 다음 준비 배지에 따라 OAuth 또는 범위가 지정된 직접 자격 증명을 통해 각 클라이언트를 연결합니다.

파일럿 멤버에게 가상 팀 메모리를 저장하고 XMemo에서 소스 속성을 확인한 다음 삭제/내보내기 및 지원 경로를 검토하도록 합니다.

구성원이 연결할 수 없는 경우 새 토큰을 발급하기 전에 역할 권한, OAuth 승인, 클라이언트 준비 상태 및 지원 지침을 확인하세요.

## 자율 에이전트 운영자

헤드리스 또는 예약 에이전트가 진행 상황을 기록하고, 이전 결정을 검색하고, 안정적이고 비밀이 아닌 인스턴스 ID를 유지하도록 합니다.

/api/v1/mcp/config/autonomous-agent를 가져옵니다. 실행기가 OAuth + 사용자 정의 헤더를 지원하는 경우 auth_modes.oauth를 선호합니다. 완전 헤드리스 러너에 대해서만 비밀 저장소의 XMEMO_KEY와 함께 auth_modes.xmemo_key를 사용하십시오.

XMemo에 진행 상황을 기록하는 하나의 합성 작업을 실행하고 실행기를 다시 시작한 다음 동일한 XMEMO_AGENT_INSTANCE_ID를 사용하여 해당 진행 상황을 호출하는지 확인합니다.

속성이 변경되거나 인스턴스 간에 분할된 경우 git 외부에서 XMEMO_AGENT_INSTANCE_ID를 유지하고 실행기가 시작할 때마다 이를 다시 생성하지 않는지 확인하세요.
