数据、留存与删除
本页是 Anyy 数据存放位置、运行时高容量记录留存策略,以及哪些命令会创建、导出、 清理或删除本地数据的权威地图。其他页面应链接到这里,而不是重复描述存储布局。
Anyy 是本地优先的:权威状态存放在当前 profile 的一个 Anyy home 目录下。 模型和服务 provider 只会收到你配置的具体操作所需的 prompt、上下文、工具结果、媒体摘要 或凭据。
如果你删除了本地数据,并不存在一个隐藏云账号可以帮你恢复。执行破坏性清理前,请先创建 备份,并确认目标 profile/home。
删除前先做这些
-
确认目标 home。
anyy status --home ~/.anyy -
除非你明确要丢弃数据,否则先创建备份。
anyy backup create --home ~/.anyy -
如果要删除 profile 或 uninstall 目标 home,先停止该 profile 的 resident gateway。
anyy gateway stop --home ~/.anyy
/compress、/compact、gateway stop 和切换 profile 都不是隐私删除操作。它们改变的是上下文
形状、显示方式、runtime state 或 active selection,本身不会删除已存本地数据。
数据存放位置
home 目录的解析顺序是:显式 --home PATH、显式 --profile NAME、ANYY_HOME、
当前激活的 profile,然后是默认安装 home。实际布局由 internal/workspace.Paths 表示。
常见路径:
| 路径 | 用途 |
|---|---|
config.yaml | Profile 配置:providers、models、gateway、channels、toolsets、MCP、media、retention 和 storage policy。 |
state.db | SQLite 状态数据库,保存 sessions、messages、roles、memory indexes、audit records、cron state、channel bindings、artifacts 和运行时元数据。 |
secrets/ | 由 secret: 引用访问的 profile 本地 secret 文件。 |
memory/ | 文件形式的记忆材料,例如 MEMORY.md、USER.md、daily notes、topic notes 和 archive。 |
workspace/ | 用户可见的工作区和导出工件。 |
logs/ | 本地诊断可读取的运行时日志。 |
raw/ | 每个 session 的原始 JSONL 记录,用于留存、摘要和恢复流程。 |
backups/ | 备份归档和恢复前快照。 |
cache/ | 运行时缓存和临时 staged media。 |
skills/ | 已安装的 skill 包。 |
roles/ 和 SOUL.md | Role 人设文件。 |
cron/ 和 channels/ | 运行时拥有的渠道和定时工作状态。 |
anyy.sock | 本地 gateway 的默认 Unix socket。 |
runtime.json | 运行时元数据,包括当前激活的备用 socket 路径。 |
状态数据库
state.db 是主要的持久化数据库。它保存 sessions、message parts、session summaries、
memory records 和 indexes、role metadata、approvals、ChangePlans、audit events、artifacts
metadata、cron jobs、channel bindings、background jobs、MCP/runtime metadata,以及维护相关
账本。
数据库打开期间可能出现 state.db-wal、state.db-shm 和 journal 等 SQLite sidecar 文件。
备份会跳过这些 sidecar,并对数据库本体使用 SQLite backup 路径。
Secrets
Secret 可以用四种形式引用:
| 引用 | 含义 |
|---|---|
env:NAME | 从环境变量 NAME 读取值。 |
file:/absolute/path | 从任意文件路径读取值。 |
secret:relative/name | 从 profile 本地 secrets/relative/name 文件读取值。 |
literal:value | 直接使用字面量。适合本地测试或非 secret 值。 |
secret: 引用被限制在 profile 的 secrets/ 目录下。解析器会拒绝绝对路径和 .. 逃逸。
Secret catalog 只按名称列出 secret;只有 provider、channel、MCP server 或 tool 真正需要
时才会解析值。
Memories
文件形式的 memory 位于 memory/ 下。当前实现的文件目标包括:
| 文件或目录 | 含义 |
|---|---|
memory/MEMORY.md | 核心长期记忆。 |
memory/USER.md | 用户 profile 记忆。 |
memory/daily/YYYY-MM-DD.md | 每日记忆笔记。 |
memory/topics/<slug>.md | 主题记忆笔记。 |
memory/archive/<slug>.md | 归档记忆笔记。 |
Memory 路径会被校验,确保相对路径不能逃出 memory 根目录。
Raw logs
Raw records 存在 raw/YYYY/MM/DD/<session>.jsonl 下。每条记录是一行完整 JSONL。raw log
实现会修复末尾撕裂行,并能按 segment/offset 读取记录,因此数据库可以保存紧凑引用,而
原始细节仍在磁盘上。
Raw storage 由 storage 和 retention policy 管理。当前默认值会保留一段 hot raw window,
在未配置总上限时使用 30 MiB 有效 raw quota,并让高容量 raw 数据的留存时间短于持久化
session summary。
Artifacts
Artifacts 由 state.db 中的 metadata record 加上 profile home 下由 Anyy 持有的文件
组成。生成输出和 channel attachments 使用类似
private/blobs/<artifact_id>/<filename> 的 scoped private blob 路径。可信本地文件和 skill
辅助文件也可以注册为 artifact,而不一定把所有 bytes 复制进 private blob store。
Artifact 文件使用私有权限写入;artifact record 会携带 source、storage class、content type、 size、checksum、status 和 scope metadata。
Backups
anyy backup create 会写出一个带 manifest.json 的 tar.gz 归档。备份包含 Anyy home 下的常规文件,跳过 SQLite sidecar,并默认排除 secrets/。
anyy backup create --home ~/.anyy --output ./anyy-backup.tar.gz
anyy backup create --home ~/.anyy --include-secrets --output ./full-backup.tar.gz
anyy backup list --home ~/.anyy
只有在归档会像密码库一样被保护时才使用 --include-secrets。备份文件会以私有权限创建。
留存与清理
留存是明确配置,不是云端策略。主要开关位于 storage 和 retention:
| 字段 | 默认值 / 行为 |
|---|---|
storage.hot_window_hours | 默认 72;影响最近 raw 数据保持活跃的窗口。 |
storage.preview_bytes | 默认 1024;作为 message preview/search text 大小,除非 legacy retention 字段覆盖。 |
storage.blob_threshold_bytes | 默认 4096;更大的 payload 可移动到 blob storage。 |
storage.raw_ttl_days | 默认 30;raw storage 生命周期策略。 |
storage.raw_quota_bytes | 0 会解析为计算出的 quota;默认有效 quota 为 30 MiB。 |
storage.state_db_soft_target_bytes | 数据库维护默认目标 8 MiB。 |
retention.enabled | 默认启用。 |
retention.short_term.raw_days | 默认从 storage.hot_window_hours 推导,除非显式设置。 |
retention.state_db.journal_size_limit_bytes | 默认来自 storage.state_db.journal_size_limit_bytes。 |
维护命令作用于这些本地状态:
anyy maintenance checkpoint-state --home ~/.anyy
anyy maintenance compact-state --home ~/.anyy --output ./state-compact.db
anyy maintenance prune-inactive-sessions --home ~/.anyy --raw-days 14 --execute
anyy maintenance cache-token-estimates --home ~/.anyy --execute
anyy maintenance migrate-lifecycle --home ~/.anyy --raw-days 14 --execute
支持预览的命令应先不带 --execute 运行,确认将要执行的工作。
导出数据
整个 profile 的导出使用备份归档。默认会导出 config、state、memory、skills、logs、 artifacts、channel state 和其他常规文件,同时排除 secrets:
anyy backup create --home ~/.anyy --output ./anyy-backup.tar.gz
如果需要包含 secrets 的敏感完整导出:
anyy backup create --home ~/.anyy --include-secrets --output ./anyy-full.tar.gz
对于单个交互式会话,使用 TUI 的 /save 命令。它会把当前 session transcript 导出到 profile
workspace 下配置的 export directory。
删除数据
选择与你意图最匹配的最窄删除路径:
| 目标 | 命令或操作 |
|---|---|
| 停用一个非默认 profile | anyy profile delete NAME --force |
| 删除一个包含 secrets 的非默认 profile | anyy profile delete NAME --force --purge-secrets |
| 移除代码但保留 profile 数据 | anyy uninstall --keep-data --yes |
| 移除代码和目标 profile 数据 | anyy uninstall --full --yes |
| 清理 inactive session raw data | anyy maintenance prune-inactive-sessions --execute |
profile delete 会拒绝删除当前激活 profile、默认 profile,以及 gateway 仍在运行的 profile。
请先切换 profile,并停止该 profile 的 gateway。
anyy uninstall --full --yes 是范围最广的本地删除命令。运行前确认有效 --home 路径,
尤其是在有多个 profile 或 service install 的主机上。
哪些数据会离开机器
Anyy 只通过你配置的 backend 和 integration 对外发送数据。常见出站路径包括:
- 模型 provider 请求:prompt、选中的 session context、tool results、media summaries,以及 当前 turn 所需的 system/developer instructions。
- Provider 或 channel 认证:API keys、OAuth credentials、bot tokens,或 config 引用的平台凭据。
- Messaging channels:入站和出站消息文本、附件、typing indicators,以及对应平台的 delivery metadata。
- MCP servers:你显式配置和暴露的 servers 会收到 prompts、resources、tool arguments 和 tool outputs。
- Browser/computer-use integrations:这些可选能力所需的本地自动化状态。
Anyy 在每个 surface 中都仍然是 Anyy。Provider 名称和 channel 名称描述的是已配置 backend;它们不会变成助理的身份。