devmom/dsh-chat-import0

chat-import

DSH 跨工具会话迁移插件,支持高保真导入、继续对话、知识提取、双向导出及隐私脱敏。

AI 分析

核心用途是将 Codex、Claude Code 等外部工具的会话高保真导入为 DSH 会话。适合需要跨工具迁移历史对话、提取知识或进行隐私脱敏的用户。

套件
chat-import
版本
0.1.1
授權
MIT
最近更新
2026年8月14日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:devmom/dsh-chat-import

在 dsh 中的使用面

  1. Web 导入向导(多选勾选,浏览器 UI 插件) — 打开任意会话 → 顶部 Tab「会话导入」:
    • 完整候选列表:自动扫描发现所有已注册源(Codex / Claude Code / …),逐行显示会话名/消息数/大小/时间;
    • 多项勾选:checkbox 多选 + 全选/清空,确认后逐个导入为独立 dsh 会话;
    • 标题选项:勾选「无标题会话用首条消息生成标题」后,未命名的 Codex 会话标题取首条用户消息(近似 Codex 自动命名/桌面端预览),不勾选则用时间戳标题;
    • 导入结果即时展示(成功会话 id / 跳过原因),列表自动刷新。
    • 数据通道:浏览器直连宿主 webserver 的 /api/chat-import/scan-dir/api/chat-import/import-paths
  2. 对话式发现导入(模型工具) — 用户直接提要求,agent 自动完成「扫描 → 候选确认 → 导入」:
    • chat_import_discover:自动探测本机已知 agent 工具会话目录(注册表见下文),返回带编号的候选列表(会话名/路径/消息数/大小/时间),只读不写入;支持 titleFromFirstMessage 选项(同向导)。
    • chat_import_import:按用户确认的路径列表导入为新 dsh 会话(支持 redact / extractKnowledge / titleFromFirstMessage),失败文件跳过并说明;标题自动取源标题(Codex 线程名 / Claude Code ai-title),无标题的默认用可读时间回退,开启 titleFromFirstMessage 则取首条用户消息。
    • 对话示例:

      用户:帮我把最近的 Codex 会话导入进来 Agent:chat_import_discover → 列出候选 → 用户:导入 1、3、5 → Agent:chat_import_import → 汇总

    • 默认开启;bundle config enableModelTools: false 可关闭。
  3. /chat-import 斜杠命令(Web UI / 任何 commands 适配器):
    /chat-import C:\path\to\chatgpt\conversations.json          # 单文件
    /chat-import C:\Users\PC\.codex\sessions                    # 目录(递归扫描全部会话)
    /chat-import C:\Users\PC\.codex\sessions --source codex     # 只导 codex
    /chat-import 
    

--redact --extract-knowledge # 脱敏 + 知识抽取

目录导入返回汇总(`imported 21/21 session(s) (codex×21)`),坏文件跳过不中断(FR-16)。
3. **`chatImport` 服务**(其它插件 / 脚本):
```ts
const svc = ctx.get('chatImport') // { ingest, sources, detectSource, parseCount, scanDirectory, ingestDirectory }
const preview = await svc.scanDirectory('C:/Users/PC/.codex/sessions', { sourceFilter: ['codex'] })
const batch = await svc.ingestDirectory('C:/Users/PC/.codex/sessions', { sourceFilter: ['codex'], redact: true })
// batch: { dir, total, imported: ImportResult[], skipped: {path,reason}[], ignored: number }
  1. REST API(web profile,注册在宿主 webserver 上):
    • GET /api/chat-import/adapters — 已注册源列表
    • POST /api/chat-import/import{ fileName, text, options } 单文件导入
    • POST /api/chat-import/scan-dir{ sourceFilter?, maxFiles? } 发现式扫描(返回带编号/标题的候选组,不写入)
    • POST /api/chat-import/import-dir{ dir, options, sourceFilter?, maxFiles? } 目录批量导入
    • POST /api/chat-import/import-paths{ paths, options } 按确认路径逐个导入(向导/对话共用)
    • GET /api/chat-import/history — 导入历史
  2. 数据落点:会话本体 → dsh 官方 session-log($DSH_HOME/sessions,JSONL,绑定源 cwd 的 workspace 分组);原文归档/导入历史/本地记忆 → $DSH_HOME/chat-import/(可用 bundle config dataDir 覆盖)。