掌握你的语音对话,保存你的本地记录。
面向 Windows 和 macOS Typeless 的隐私优先、只读备份与归档工具。 保存本地 SQLite 数据库及其关联的 OGG 录音,不向任何服务器上传你的对话内容。
由你创建的个人记录,应该尽可能继续对你可用。 先保存,再决定。
Typeless 会在本地保存语音对话记录。当产品价格、额度或服务策略发生变化时,用户仍然应该能够保留自己创建的对话和录音。
Typeless Backup 将这件事变成明确、可复现的本地流程:
- 以只读方式打开源数据库;
- 创建一致的 SQLite 快照;
- 复制数据库关联的 OGG 录音;
- 生成包含数量、大小和哈希值的机器可读清单;
- 可选地将对话记录导出为 JSONL,用于本地搜索和归档。
你的数据留在自己的设备上。本仓库只包含工具,不包含任何人的对话内容。
根目录的 SKILL.md 是跨 Agent 的 Skill 入口,不绑定某一家 Agent 厂商。只要 Agent 能读取 GitHub 仓库并运行本地命令,就可以直接使用它。
可以通过本仓库提供的 Claude Code 插件安装:
/plugin marketplace add https://github.com/NeoWeb3Nova/typeless-backup
/plugin install typeless-backup@typeless-backup
插件元数据位于 .claude-plugin/,打包后的 Skill 位于 plugins/typeless-backup/。
对于 Codex、Gemini CLI、Kimi Code、OpenCode、Hermes 或其他本地 Coding Agent,提供仓库地址,并要求 Agent 先读取 SKILL.md:
https://github.com/NeoWeb3Nova/typeless-backup
根目录 CLI 和 Claude 插件内的 scripts/typeless_backup.py 使用同一套标准库备份流程。Skill 定义安全边界,CLI 执行实际备份。
| Agent | 安装方式 | 支持形式 |
|---|---|---|
| Claude Code | 使用本仓库的 Marketplace 插件 | 已打包原生插件 |
| Codex、Gemini CLI、Kimi Code、OpenCode、Hermes | 读取根目录 SKILL.md,再执行仓库 CLI |
通用 Skill 流程 |
| 其他支持文件系统和 Shell 的 Agent | 读取根目录 SKILL.md 并执行其中命令 |
通用 Skill 流程 |
本项目不宣称为每一种 Agent 都提供厂商专属插件。不同 Agent 的原生安装机制可能不同;跨 Agent 的标准契约就是根目录 SKILL.md 加标准库 CLI。
语音对话不只是应用数据库里的几行记录。里面可能有你的想法、决定、记忆、工作笔记,以及某个时刻真实的思考过程。连同转写文本和录音,它们构成了很难重新创造的个人数字记录。
因此,保存数据也是一种知情和主动的控制:
- 知道自己留下了什么:了解哪些对话和录音正在本地保存。
- 保留自己能控制的副本:在卸载应用、更换设备,或服务的价格、额度和访问规则可能变化之前,先把重要记录保存下来。
- 把选择权留给未来的自己:备份并不要求你迁移到任何其他服务,只是保留之后继续选择的可能。
本项目不对数据权属作法律判断,也不创造取决于当地法律或服务条款的额外权利。它遵循一个实际原则:不应仅仅因为产品发生变化,个人记录就变得无法访问。如果这些对话由你创建,保留一份私密的本地副本,是对隐私、连续性和数据可携带性的合理保护。
先保存,再决定。
| 问题 | 答案 |
|---|---|
| 数据保存到哪里? | 保存到你自己选择的本地目录。 |
| 工具会上传数据吗? | 不会,备份流程只写入本地。 |
| 会修改 Typeless 吗? | 不会,源数据库以只读方式打开。 |
| 保存哪些内容? | SQLite 历史、关联 OGG 录音、manifest、JSONL 和可读 Markdown。 |
| 支持哪些平台? | Windows 和 macOS,Linux 不属于产品支持范围。 |
| 包含迁移功能吗? | 不包含,项目先保存你的选择权,不强迫你选择任何服务商。 |
| 能力 | 状态 |
|---|---|
备份 typeless.db |
支持 |
复制关联的 Recordings/*.ogg |
支持 |
| 保存一致的 SQLite 快照 | 支持 |
| 生成包含完整性信息的 manifest | 支持 |
| 将记录导出为 JSONL | 支持 |
| 导出普通人可读的 Markdown 历史 | 支持 |
| 向服务器上传数据 | 永不支持 |
| 修改或删除 Typeless 源数据 | 永不支持 |
| 导入豆包或其他语音软件 | 当前范围之外 |
| 转写或翻译音频 | 当前范围之外 |
flowchart LR
A[Typeless 本地目录\nWindows/macOS 动态发现] --> B[只读 SQLite 连接]
A --> C[Recordings\\*.ogg]
B --> D[SQLite 在线备份\ntypeless.db]
C --> E[逐字节复制\nRecordings\\]
D --> F[备份目录]
E --> F
F --> G[manifest.json\n数量 · 大小 · SHA-256]
F --> H[可选 JSONL 导出\n本地归档/搜索]
classDef source fill:#fff7ed,stroke:#c2410c,color:#7c2d12
classDef safe fill:#eff6ff,stroke:#2563eb,color:#1e3a8a
class A,B,C source
class D,E,F,G,H safe
- 已安装 Typeless 的 Windows 或 macOS 系统
- Python 3.10 或更高版本
- 对 Typeless 本地目录具有读取权限
- 一个空的目标目录,或一个尚不存在的目标路径
不需要安装第三方 Python 依赖。
在本仓库目录打开 PowerShell:
python .\typeless_backup.py backup `
--output "D:\TypelessBackups\typeless-2026-09-19"工具会在平台应用数据目录中搜索包含 typeless.db 和 Recordings/ 的候选目录,不依赖固定用户名或 WSL 路径。也可以显式指定源目录:
python .\typeless_backup.py backup `
--source "$env:APPDATA\Typeless.exe" `
--output "D:\TypelessBackups\typeless-2026-09-19"在 macOS 上:
python3 ./typeless_backup.py backup \
--output "$HOME/TypelessBackups/typeless-2026-09-19"备份成功后,目录结构如下:
D:\TypelessBackups\typeless-2026-09-19\
├── typeless.db
├── Recordings\
│ └── *.ogg
└── manifest.json
导出基于备份目录,而不是直接读取正在运行的应用数据:
python .\typeless_backup.py export-jsonl `
--backup "D:\TypelessBackups\typeless-2026-09-19" `
--output "D:\TypelessBackups\typeless-2026-09-19\history.jsonl"每一行对应一条对话记录。音频仍以独立 OGG 文件保存,并通过类似 Recordings/<file>.ogg 的相对路径引用。
history.jsonl 是面向程序的导出格式,在普通编辑器中会比较密集。要生成带时间、转写文本和音频引用的可读版本:
python .\typeless_backup.py export-markdown `
--backup "D:\TypelessBackups\typeless-2026-09-19" `
--output "D:\TypelessBackups\typeless-2026-09-19\history.md"然后用 VS Code、Typora、Obsidian 或其他 Markdown 阅读器打开 history.md。
备份结构保持简单、透明、易检查:
| 文件 | 用途 |
|---|---|
typeless.db |
Typeless 本地历史数据库的 SQLite 快照 |
Recordings/*.ogg |
原始本地语音录音,按字节复制 |
manifest.json |
备份格式、创建时间、数据库 SHA-256、文件数量、字节数和数据库统计 |
history.jsonl |
可选的 history_v2 记录逐行导出文件 |
history.md |
可选的普通人可读历史记录,包含时间和音频引用 |
源数据库以只读模式打开,并通过 SQLite Online Backup API 复制。目标数据库会执行 PRAGMA integrity_check 校验。目标目录非空时,工具会拒绝覆盖。
这个工具面向个人归档,而不是云端同步。它帮助你在不把数据交给其他服务的前提下,对真正重要的个人记录保留实际控制权。
- 不进行网络请求:备份命令不会上传或传输你的数据。
- 源数据只读:不会更新、删除、清理或迁移 Typeless 数据库。
- 目标留在本地:请使用自己控制的磁盘或目录。
- 输出属于私密数据:备份包含对话文本和音频,应按个人记录保护。
- 不要提交备份:不要把
typeless.db、Recordings、*.ogg或history.jsonl放入公开仓库。 - 加密由用户负责:必要时使用 BitLocker、加密压缩包或受访问控制的备份磁盘。
本项目不声称能够绕过操作系统权限、磁盘加密、Typeless 账号控制,或未来 Typeless 对本地存储格式的调整。
- 当前支持 Windows 和 macOS。工具会动态发现候选本地目录,并验证其中存在
typeless.db和Recordings/;如果你的 Typeless 版本使用其他位置,请通过--source指定。 - Linux 和 WSL 仅作为开发环境,备份 CLI 会明确拒绝 Linux 运行环境。
- 这是备份与归档工具,不是 Typeless 替代品。
- 不支持将记录导入豆包或其他语音软件。
- 不转换 OGG 音频,不运行语音识别,也不翻译转写文本。
- 应用运行期间可能继续写入新记录。SQLite 能提供一致的数据库快照;如果需要应用层面的严格冻结,请先关闭 Typeless。
- 在独立确认备份有效前,请始终保留原始数据和源目录。
运行自包含测试:
python -m unittest discover -s tests -v测试使用临时 SQLite 数据库和模拟音频字节,不会访问用户的 Typeless 目录。
欢迎提交 Issue 和聚焦明确的 Pull Request。
- 描述你观察到的存储布局、错误或改进建议。
- 不要上传真实对话数据库、音频、转写文本、凭证或 Token。
- 使用模拟数据,或提供只包含 schema 的复现样例。
- 提交 Pull Request 前运行测试和
git diff --check。
对于安全敏感问题,不要在公开 Issue 中发布私人数据。在专门的安全政策建立前,请通过 GitHub 私密联系渠道反馈,并只提供最小复现信息。
项目优先保证安全保存,再考虑迁移能力。
- 只读 SQLite 快照
- 录音文件保留
- manifest 与完整性校验
- JSONL 归档导出
- 版本化 schema 兼容说明
- 可选的加密归档流程
- Windows/macOS 候选目录发现
导入适配器、云同步和自动转写目前不在路线图中。
本项目采用 MIT License 开源。
本项目基于 Python 标准库和 SQLite Online Backup API 构建。依赖保持精简,是为了让备份路径更容易检查、理解和复现。