# 敏感记忆

了解凭据、个人数据和高敏感度记忆实际使用的清理与检索可见性控制。

- Canonical: https://docs.xmemo.dev/zh/docs/concepts/sensitive-memory
- Locale: zh-CN
- Content-Locale: zh-CN
- Canonical-Content-Digest: f4135c91811fc6ab82f0fcbe64bdbe557f8f57024585230ef640f73d09da08fa
- Edition-Digest: d4219258d868cbcc7ee730e2c09d11b3896ebbe4355e7d5ed56011a2473b2065
- Source-Revision: sha256:2d80a1534f639a21ed4385df129fd914a3ed4da7b24c261eee0ad18032a0f691

## 敏感性是处理策略，不是记忆类型

memory contract 的 memory_type enum 是 episodic、semantic、procedural、working 或 identity；其中没有 sensitive 值。敏感性由共享 redaction 和 security-envelope 控制处理，而不是创造第六种记忆类型。

- 凭据形态的值始终会由 canonical server sanitizer 做 redaction。
- 所有者的个人 PII 默认保留，只有在所有者启用 auto_redact_pii 时才会被 redaction。
- 高风险的私钥或 AWS secret 内容会使 agent capture 跳过该事件。

## 同时清理 content、metadata 和 provenance

sanitize_server_write 会将共享 rule registry 应用于 memory row 可访问到的每个字符串，包括 content、metadata 和 provenance。凭据标签、API keys、JWT、URL secrets 以及其他已注册的凭据形态值会在持久化前被移除；redaction 绝不会在结果 metadata 中返回原始值。

```python
from memory_manager.security.redact import sanitize_server_write

result = sanitize_server_write(
    "Deploy with token=not-a-real-secret",
    redact_contact_pii=False,
)
print(result.text)
print(result.applied, result.redactions)
```

## Vault mode 可以让记忆留在本地

security envelope 会记录 security_mode、encryption_state、retrieval_visibility、server_embeddings_enabled 和 server_content_search_enabled。Vault mode 存储 ciphertext，默认使用 retrieval_visibility=client_local_only 并禁用 server embeddings；除非 tenant 明确选择 semantic indexing，否则 server recall 会排除这些内容。

```json
{
  "security_mode": "vault",
  "encryption_state": "ciphertext",
  "retrieval_visibility": "client_local_only",
  "server_embeddings_enabled": false,
  "server_content_search_enabled": false
}
```

## Recall 遵循 security envelope

server recall gate 会丢弃标记为 client_local_only 或 not_retrievable 的行。Vault 行也会被排除，除非其 metadata 明确选择 vault_semantic_index_opt_in；security envelope 将该 opt-in 描述为一种权衡，因为它允许建立 server-side semantic index。必须避免进入 server recall 的 content 应使用 local recall。

```text
client_local_only  -> excluded from server recall
not_retrievable    -> excluded from server recall
vault + opt-in     -> server vector recall allowed
vault without opt-in -> local recall required
```

## ChatGPT 用户

让 ChatGPT 持久访问你的 XMemo 偏好、项目事实、决策和 TODO，同时不把 bearer token 粘贴到聊天里。

通过 ChatGPT/OpenAI app 的 OAuth 流程连接托管 XMemo MCP server，然后为你的 XMemo 账户批准 memory:read 与 memory:write 授权。

保存一条合成偏好或项目笔记，开启新聊天，再让 ChatGPT 在继续工作前通过 XMemo 召回它。

如果 OAuth 失败或工具未出现，先在宿主应用里退出该 MCP server，重新连接 XMemo server URL 并重试，再考虑创建 direct token。

## Copilot / Codex 开发者

在 IDE 与 CLI agent 之间携带仓库决策、编码规范、bug 修复说明和任务历史。

在可用时对 VS Code / GitHub Copilot 和 Gemini CLI 使用 OAuth。对于 Copilot CLI、Codex、Cursor 或其他直连 MCP 客户端，请在本地环境或密钥存储中保留 XMEMO_KEY，并设置稳定的 XMEMO_AGENT_INSTANCE_ID。

记录一条代码库决策或 bug 修复，然后让下一个 IDE 或 CLI agent 在编辑前召回相关 XMemo 上下文。

如果召回为空，检查所选 MCP 配置路径、direct client 的 XMEMO_KEY 环境变量，以及宿主应用中是否存在过期 OAuth 凭据。

## 团队 / 企业 pilot owner

用账户控制、来源归因、导出/删除流程和 reviewer-safe 设置证据来评估共享记忆。

创建或进入受保护的 XMemo workspace，邀请已批准用户，然后根据 readiness badges 通过 OAuth 或 scoped direct credential 连接各客户端。

让一名 pilot 成员保存一条合成团队记忆，在 XMemo 中确认来源归因，然后审阅删除/导出和支持路径。

如果成员无法连接，先检查角色权限、OAuth 批准、客户端 readiness 状态和支持指引，再签发新 token。

## 自主 agent operator

让 headless 或定时 agent 记录进度、取回历史决策，并保持稳定的非秘密实例身份。

获取 /api/v1/mcp/config/autonomous-agent。当 runner 支持 OAuth + 自定义 headers 时优先使用 auth_modes.oauth；只有完全 headless 的 runner 才使用 auth_modes.xmemo_key，并从密钥库读取 XMEMO_KEY。

运行一个会向 XMemo 写入进度的合成任务，重启 runner，并确认它使用同一个 XMEMO_AGENT_INSTANCE_ID 召回该进度。

如果归因变化或召回分散到多个实例，请把 XMEMO_AGENT_INSTANCE_ID 持久化到 git 之外，并确认 runner 不会每次启动都重新生成它。
