編集者注

Claude 迁移到 DSH

kirkchinese/Claudecode--DSH is a DeepSeek Harness ecosystem project for workflows and automation. Review its public README for features, setup, and usage details.

これは DeepSeek Harness(DSH)プラグインです。当サイトは GitHub README、インストール情報、メンテナンス状況、公開セキュリティシグナルをまとめています。

Claude → DSH

Claude → DSH

把 Claude Code 的用户数据无缝迁移到 DeepSeek Harness(DSH):会话、技能、插件、记忆与指令,一次迁移,全部可续、可查、可用。摆脱单一工具生态的限制。

tests: 76 passing license: MIT node: >=22 dsh-plugin

DSH 的架构遵循 Cordis 的《A Programming Paradigm for Spatiotemporal Composability》——万物皆插件,能力由 cordis.yml 组合,agent 能力由 agent preset 提供。本工具链完全按照这套约定构建。

只读原则~/.claude 永远只读;转换器绝不写入、删除或改动其中的任何文件(内置安全阀强制)。

它能做什么

Claude Code 里的东西迁移到 DSH 后
会话历史(projects/**/*.jsonlDSH 原生会话:可在会话列表打开、浏览、继续对话;按项目自动分组;标题带来源图标(🤖 Claude / 🧩 Codex)
Codex 会话(~/.codex/**/rollout-*.jsonl同上(🧩 图标、codex- 前缀,与 Claude 会话明确区分)
Skills(SKILL.md,含插件内置)DSH skills(~/.dsh/skills/,agent 可直接调用)
插件(plugin.json + skills/commands/agents/hooks)DSH agent preset~/.dsh/.agent-presets/,会话选择器里选用;subagent/hooks 归档不执行)
记忆(memory/*.md)与 CLAUDE.md每次请求实时注入的 prompt 段(项目优先)
全部历史可全文检索的上下文归档 + 语义召回

快速开始

# 1. 安装(一个命令)
dsh plugin --profile web add -w github:kirkchinese/Claudecode--DSH

# 2. 重启 DSH

# 3. 在任意会话里输入
/claude-import-all

刷新一次会话列表——所有 Claude(🤖)与 Codex(🧩)会话都在那里,按项目分组,点击即可继续。导入是幂等的:重跑只处理新增/变化的内容,已有数据绝不重复或覆盖。

会话内入口一览

入口作用
/claude-import-all一键全量迁移(幂等、即时生效、自动分组)
/resume-claude latest|<id>|<关键词>继续某个 Claude 会话(未导入先导入,摘要注入当前会话)
/claude-recall <主题>在历史归档中语义检索旧会话(本地 TF-IDF,无 API 调用)
/claude-watch on|off自动导入监听:Claude/Codex 目录变化自动增量导入(防抖 3 秒)
claude_scan只读扫描:项目×会话索引(标题、时间、消息数、来源图标)
import_claude按路径导入(支持 ~/.codexverify=true 导入后自检)
claude_plugins列出已装插件 / 插件转 agent preset(转换后自动挂载校验)
claude_health全部导入会话的健康自检(只读)
export_claude反向导出:DSH 会话 → Claude JSONL(claude --resume 可继续)
🖥 Web 面板右下角浮层:导入状态徽章、批量导入进度条、健康摘要

命令行模式(批量 / 无人值守)

node src/cli.js conversations            # Claude 会话 → DSH 会话(幂等)
node src/cli.js conversations --origin codex   # Codex 会话
node src/cli.js conversations --origin all     # 两者
node src/cli.js skills --all             # 技能迁移
node src/cli.js plugins --name <name>    # 插件 → preset
node src/cli.js history                  # 上下文归档 + 检索 skill
# 通用:--dry-run 只报告不写入;--force 覆盖前自动备份;--verbose 逐文件决策

工作原理

flowchart LR
    subgraph ClaudeCode["Claude Code / Codex(只读源)"]
        P[projects/**/*.jsonl]
        C[~/.codex rollout-*.jsonl]
        S[skills / plugins]
        M[memory / CLAUDE.md]
    end
    subgraph Core["claude2dsh 转换核心(纯函数)"]
        R{来源注册表<br/>🤖 claude · 🧩 codex}
        T1[会话解析 → DSH 事件流<br/>turn/step/tool 平衡结构]
        T2[skill 归一化]
        T3[插件 → agent.cordis.yml]
    end
    subgraph DSH["DeepSeek Harness"]
        D1[sessionPersistence<br/>可续聊会话 + 工作区分组]
        D2[~/.dsh/skills]
        D3[agent presets]
        D4[归档 + 语义召回]
        D5[Web 面板]
    end
    P --> R
    C --> R
    R --> T1 --> D1
    S --> T2 --> D2
    S --> T3 --> D3
    M --> D1
    T1 --> D4
    D1 --> D5
    D2 --> D5
sequenceDiagram
    participant U as 用户
    participant PL as 插件 /claude-import-all
    participant SR as 来源注册表
    participant SP as sessionPersistence
    participant WR as workspaceRegistry
    participant PT as 投影缓存(标题)
    U->>PL: /claude-import-all
    PL->>SR: 扫描源文件(只读,按路径判来源)
    SR-->>PL: claude 51 个 / codex 261 个
    loop 每个会话
        PL->>SP: create(header) + append(事件流 + session/title)
        SP-->>PL: 即时落盘
        PL->>WR: create(cwd) + attachSession(id)
    end
    WR-->>PL: 分组完成(不再"未分组")
    PT-->>U: 会话列表显示 🤖/🧩 图标标题,可续聊

安全与质量保证

  • 运行时级验证:导入的每个会话都经 DSH 官方 sessionPersistence.inspect 校验;preset 经 standingKeyFor 挂载校验。迁移报告就是健康证明(claude_health 实盘 51+261 会话 0 异常)。
  • 分叉防护:已在 DSH 端继续过的会话不会被增量同步覆盖(两端历史互不破坏)。
  • 回滚:CLI --force 覆盖前自动原子备份(.bak-<时间戳>)。
  • 幂等:源文件 sha256 + 输出格式版本双判定;重复运行零副作用。
  • 测试:74 项自动化测试(node --test),CI 随每次提交运行。

常见问题

会话标题里的 Claude · / Codex · 是什么? 来源文本标记;Web 迁移面板按 source 字段渲染对应 SVG 图标(assets/icons/),DSH 原生列表无自定义图标通道故用文本前缀。id 带 claude-/codex- 前缀供程序判别;新增其他 agent 的支持只需在来源注册表加一个条目。

导入会不会动我的 Claude 数据? 不会。源文件只读;两边数据物理隔离。导入后你依然可以在 Claude Code 里继续任何会话,两边互不崩溃(同一会话在两端同时继续会形成两条分支,插件会检测并跳过覆盖)。

为什么有些会话没有标题? 标题继承自 Claude 的会话命名(ai-title);Codex 不保存标题,回退为会话首条消息。无法继承标题的会话显示 id。

插件会默认启用吗? 不会。插件迁移生成 preset 后由你决定何时在哪个会话使用——DSH 的架构约束是"会话一旦开始,工具集不可中途更换",所以选择性启用正是正确姿势。

导入后标题/分组没出现? 重启 DSH 或刷新会话列表;标题由投影缓存折叠日志事件生成,新会话即时可见。

姊妹插件

  • dsh-remind:Claude 式提醒(/remind 10m 检查编译结果),可独立安装:dsh plugin --profile web add -w "github:kirkchinese/Claudecode--DSH#packages/dsh-remind"

开发

  • Node.js ≥ 22,ESM,无构建步骤;运行时依赖仅 js-yaml
  • 测试:npm testnode --test
  • 结构:src/lib/(纯函数转换核心)· src/plugin/(DSH 插件入口与工具)· src/cli.js(命令行)· client/(Web 面板)· tests/(74 项测试)
  • 贡献前请读 docs/ 下的设计与格式对照文档
REPOSITORY SIGNALS

セキュリティとインストールエビデンス

このスコアは公開リポジトリメタデータと当サイトに登録されたインストールエビデンスのみに基づくもので、コードセキュリティ監査とは異なります。

出所の追跡可能性

公開プラグインカタログから取得し、公開 GitHub リポジトリにリンクしています。

ライセンス

リポジトリは MIT ライセンスを宣言しています。

メンテナンス活動

過去180日以内にコードの更新があります。

インストールエビデンス

再現可能な正確なインストールメタデータはまだ登録されていません。リポジトリの説明に従って手動で確認してください。

インストールライフサイクルスクリプト

確認したパッケージメタデータにインストールライフサイクルスクリプトは宣言されていません。