第二十四节 升级、备份与同步

24.1 升级

  • 应用内升级(推荐):托盘菜单 → 检查更新 → 一键替换。升级包带签名校验,验签失败会自动回滚。
  • 手动升级:从官网下载页下载新版本构建,直接替换旧的运行(免安装),配置目录不动。
  • 升级缓存目录干净化:升级时的临时安装包改放到隐藏的 cache 目录,不再在可见目录里留中间文件;升级失败 / 中断遗留的孤儿暂存文件会被自动清理,不需要你手动收拾。
  • 升级弹窗的「发布说明」直接取自 RELEASE_NOTES.md(不再用 git 日志),只呈现面向用户的版本说明,不泄露提交元数据。
  • 定期纳入组件安全更新:随版本升级第三方依赖(如 Go 的 x/crypto / x/net、MCP SDK 等)以纳入安全修复。

24.1.1 配置目录迁移到 avlcode(自动)

内部标识由 zcode 统一迁移为 avlcode:全局配置目录(如 ~/.config/avlcode/)、工作区内的 .avlcode 目录、AVLCODE_… 环境变量,以及相关 YAML 与 frontmatter 字段,都改用 avlcode 命名(SSH 远程工作区一并处理)。

  • 自动且安全:在启动打开工作区时自动迁移,过程有 toast 提示,不影响既有数据。
  • 保留旧名双读回退:迁移期间仍能读到旧的 zcode / .zcode / ZCODE_…,老配置不会突然失效。
  • 界面与对外输出里残留的「zCode」字样统一为「AVL Code」。
  • 你一般无需任何操作;若曾在脚本里写死 .zcode/ 路径或 ZCODE_… 变量,建议改用 .avlcode/ / AVLCODE_…

24.2 备份 v2 — .zbk 加密备份

设置 → 数据 Tab 内置三个对话框:创建备份 / 恢复 / 历史快照

  • .zbk 加密备份文件(AES-GCM)— 覆盖 14 类应用数据(含 plugins/ / ~/.avlcode/trust/ / 可选的 hook-outputs/)。
  • 创建备份:选择类别 → 输入密码 → 落地 .zbk 文件。plugins / trust 默认勾选,跨机迁移不用重装;hook-outputs 默认不勾选,仅按需带走调试历史。
  • 恢复:选择 .zbk → 输入密码 → 预览要还原的类别 → 确认。

旧 / 新备份双向兼容,.zbk 格式版本号不变。

24.3 历史快照(自动)

所有"破坏性操作"(单类清理 / 批量清理 / 全量重置)触发前都会自动落一个清理前快照(命名形如 auto-clean-<ts>auto-fullreset-<ts>)。

  • 历史快照面板支持深链定位:从某条破坏性操作的成功 toast 直接跳到对应快照行。
  • 每个快照行都有「就近回滚」按钮,几乎不留痕。

24.4 存储占用与按类清理

设置 → 数据 → 存储占用 视图按 14 个备份类别 + 6 项非备份项(缓存 / 快照 / 元数据)展示真实占盘大小。聚合条与 du 字节级对齐:

  • 单项 / 批量清理 — 含敏感数据的类别(plugins / providers / trust 等)操作前自动落 auto-clean-<ts> 快照可一键回滚。
  • 「全量重置」会深度清 14 类应用数据 + 重置默认配置 + 自动落 auto-fullreset-<ts> 快照。

24.4.1 工作区菜单的「清除工作区全部文件」

工作区菜单的「清除数据」入口下新增了 「清除工作区全部文件」 危险选项 — 不仅删 AVL Code 自管的元数据(会话、todo、设置等),还真的把工作区目录里的全部文件清空。和其它破坏性按钮一样,inline 倒计时 + 武装确认不可撤销,请确认这是一个临时 / 可重建的工作区再用。

24.5 破坏性操作的 inline 倒计时

所有破坏性按钮不再弹原生 confirm 弹窗,而是 GitHub 风格的"武装 → 倒计时 → 确认"两步式:

  1. 第一次点击 — 按钮变红 + 显示 3 秒(全量重置 5 秒)倒计时。
  2. 第二次点击 — 才真正执行。

全局只允许一个按钮处于武装态(点新的会自动解除旧的),点击空白处或 Esc 取消。成功反馈就近显示在原行 — ✓ 已释放 N · 回滚 · 关闭,不再弹全局 Toast。

设置内删除统一行内确认:设置面板里删技能 / 插件 / 账号 / Provider / 例行程序等的删除按钮全部统一为「就地行内二次确认」。修了之前点了删除毫无反应的根因 — 系统原生确认弹窗被应用内嵌的网页视图静默吞掉、直接当成「取消」;现在点了就有反馈,删得掉。

24.6 同步(实验性)

AVL Code 提供基于云端的数据同步能力(实验性):在 设置 → 数据 → 同步 中开启后,登录账号下的多台设备可自动同步工作区与会话。同步只发生在你登录账号关联的设备之间。

24.7 数据脱敏

设置 → 数据脱敏 是一个外发场景的数据保护引擎 — 在内容离开本机之前对敏感字段自动做替换 / 遮掩。默认关闭(opt-in),配置落到 ~/.config/avlcode/redaction.yaml,主程序与子进程共用同一规则编译。

作用范围(按场景独立开关)

场景 默认 说明
export_html 开(总开关启用后) 把会话导出为 HTML 时套用脱敏
export_session 开(总开关启用后) .zsession 导出时套用脱敏
write_md AI 写 .md 等文档类文件落盘时做脱敏(Phase 2,慎用 — 可能改变你期望的写入内容)

规则类型

类型 说明
keyword 字面串全替换;Pattern 自动转义、Replacement 当字面量
regex RE2 正则;Replacement 支持 $1 / ${name} 捕获模板,用于部分遮掩
ipv4_mask 结构化 IPv4 遮掩Octets(1-based,1..4,任意段含中间都可)或回退 Segments(掩前 N 段,兼容旧配置);MaskChar 默认 *
domain_mask 域名遮掩 — KeepLast 保留末尾几段(默认 1,只留 TLD),其余标签替为 MaskChar

内置 secrets 预设presets.secrets,可选开)— 高置信度、低误报的常见凭据格式:

  • AWS Access Key(AKIA…
  • GitHub PAT(ghp_…) / 其它 Token(gho_… / ghs_… / ghu_…
  • Slack Token(xox[baprs]-…
  • Stripe Live Key(sk_live_…
  • GCP API Key(AIza…
  • OpenAI Key(sk-…
  • PEM 私钥整块-----BEGIN … PRIVATE KEY----------END …,跨行)

命中反馈:触发脱敏的导出 / 写盘会弹一条 toast,告诉你命中了多少条、哪条规则,便于审计;每条替换都带规则 Label,可追溯不漏值。

导出脱敏覆盖代码块行首 IP 与嵌套 JSON:会话导出的脱敏改为对解码后的 JSON 文本值套用规则,修复了代码块中受 JSON 转义影响、行首 IP 未被遮掩漏脱敏的问题;并会递归下钻嵌套的 JSON 结构,覆盖工具调用的参数与结果里的敏感信息,避免深层字段被遗漏。

规则总开关关闭时所有场景一律放行原文,避免「开了之后不知道哪里少东西」的困惑;建议先在「常规」组的 redaction.yaml 写好规则、跑一遍小规模导出确认效果再上正式数据。