用途
DeepChat Data Import 技能用于帮助开发者设计或实现 DeepChat 本地数据的导入器。它把 DeepChat 的 SQLite 模式当作内部但可记录的契约:在精度重要时检查当前模式,优先使用只读快照,并避免写入正在使用的用户配置。
主要能力
该技能覆盖识别数据来源、定位 agent.db 与 sidecar 文件及加密元数据、判断数据库加密状态、参考 provider 配置与会话消息表关系,以及编写提取器代码或创建兼容导入等环节。
工作流程
- 识别来源:实时 DeepChat 配置、复制的配置、同步备份、导出的 agent.db,或旧版 chat.db。
- 阅读 references/data-locations.md 以定位 agent.db、sidecar 文件、加密元数据和备份路径。
- 在打开 SQLite 前阅读 references/sqlite-access.md,判断数据库是未加密、可通过 Electron safeStorage 解锁,还是必须向用户索取 SQLite 密码。
- 阅读 references/schema-reference.md,了解 provider 配置、设置、会话、消息及旧版表关系。
- 在编写提取器代码、将 DeepChat 数据映射到其他应用或创建兼容导入时,阅读 references/import-recipes.md。
安全规则
- 读取本地 DeepChat 数据前必须获得用户明确同意。Provider 密钥、OAuth 令牌、MCP 环境变量、提示文本、消息轨迹和聊天内容都可能敏感。
- 第三方工具绝不能以读写方式打开正在使用的 agent.db。应复制 agent.db、agent.db-wal 和 agent.db-shm,或通过 DeepChat 自身使用 SQLite 备份 API。
- 如果 DeepChat 正在运行,请用户退出,或在导入前创建 WAL 感知的快照。
- 对 SQLCipher 密码优先使用参数化的 key API,不要把密码插入 SQL 字符串。
- 默认在日志、遥测、预览和生成的样本输出中脱敏。
- 当模式发生变化时,在假设列可用之前,先检查 schema_versions、sqlite_master 以及 src/main/presenter/sqlitePresenter/tables/ 下的表类。
源文件
更新技能或回答版本敏感问题时,以下仓库文件是当前的真实来源:
- src/main/presenter/sqlitePresenter/index.ts
- src/main/presenter/sqlitePresenter/connectionConfig.ts
- src/main/presenter/databaseSecurityPresenter/index.ts
- src/main/presenter/sqlitePresenter/tables/*.ts
- src/main/presenter/agentRuntimePresenter/messageStore.ts
- src/main/presenter/agentRuntimePresenter/sessionStore.ts
- src/main/presenter/configPresenter/**
适用场景
适用于构建第三方数据导入、检查、迁移或分析工具的开发者,以及需要与 DeepChat 本地 SQLite 数据(会话、消息、provider 配置、设置等)交互的场景。
限制
使用前需获得用户明确同意;不得以读写方式打开运行中的 agent.db;涉及加密数据库时需通过 Electron safeStorage 解锁或向用户索取密码;模式变化时需先检查当前模式,不能假设列始终可用。