把 Codex 对话、MCP 与记忆双向迁移到 DSH
37.9/100
综合分
4
GitHub 星标
115
npm 周下载
—/5
用户评分
数据截至 2026/9/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-codex-migratenpm 源 · dsh-codex-migrate 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 40 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-codex-migrate @ 2.0.4
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 07:31:33
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 52 处,展示前 47 条)
- 写入剪贴板lib/client.js:663
await navigator.clipboard.writeText(mcpPrompt) - 读取本地文件lib/logic.js:163
const s = statSync(path) - 读取本地文件lib/logic.js:168
function readTextOf(path) { return readFileSync(path, 'utf8') } - 写入本地文件lib/logic.js:213
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件lib/logic.js:214
writeFileSync(path, content, 'utf8') - 删除本地文件lib/logic.js:217
try { rmSync(path, { force: true }) } catch (err) { - 读取本地文件lib/logic.js:251
const entries = readdirSync(usersRoot, { withFileTypes: true }) - 写入本地文件lib/logic.js:400
mkdirSync(fallback, { recursive: true }) - 读取本地文件lib/logic.js:1244
try { entries = readdirSync(dirPath, { withFileTypes: true }) } catch (err) { return } - 读取本地文件lib/logic.js:1372
item.parsed = parseSession(await readFileAsync(item.file.path, 'utf8'), config, item.file.name) - 读取本地文件lib/logic.js:1455
const entries = readdirSync(sessionsDir, { withFileTypes: true }) - 读取本地文件lib/bridge-server.js:54
const existing = readFileSync(path, 'utf8').trim() - 写入本地文件lib/bridge-server.js:57
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件lib/bridge-server.js:60
writeFileSync(temp, `${token}\n`, { encoding: 'utf8', mode: 0o600 }) - 写入本地文件lib/bridge-server.js:61
renameSync(temp, path) - 写入本地文件lib/bridge-server.js:62
try { chmodSync(path, 0o600) } catch (error) { } - 写入本地文件lib/bridge/event-store.js:20
mkdirSync(path, { recursive: true }) - 写入本地文件lib/bridge/event-store.js:33
renameSync(temp, path) - 读取本地文件lib/bridge/event-store.js:47
if (!existsSync(path)) return [] - 读取本地文件lib/bridge/event-store.js:48
const body = readFileSync(path, 'utf8') - 读取本地文件lib/bridge/event-store.js:90
if (existsSync(statePath)) { - 读取本地文件lib/bridge/event-store.js:92
current = JSON.parse(readFileSync(statePath, 'utf8')) - 读取本地文件lib/bridge/memory/embedded-jsonl.js:13
if (!existsSync(path)) return [] - 读取本地文件lib/bridge/memory/embedded-jsonl.js:14
const lines = readFileSync(path, 'utf8').split(/ ? /) - 写入本地文件lib/bridge/memory/embedded-jsonl.js:27
mkdirSync(dirname(path), { recursive: true }) - 读取本地文件lib/inventory/indexer.js:6
if (!existsSync(path)) return { schemaVersion: 1, entries: {} } - 读取本地文件lib/inventory/indexer.js:8
const parsed = JSON.parse(readFileSync(path, 'utf8')) - 写入本地文件lib/inventory/indexer.js:16
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件lib/inventory/indexer.js:18
writeFileSync(temp, JSON.stringify(cache), 'utf8') - 写入本地文件lib/inventory/indexer.js:19
renameSync(temp, path) - 读取本地文件lib/inventory/indexer.js:29
const readText = typeof read === 'function' ? read : (path) => readFileSync(path, 'utf8') - 读取本地文件lib/inventory/indexer.js:44
const stat = statSync(path) - 读取本地文件lib/bridge/codex-app-server.js:63
for (const entry of readdirSync(binRoot, { withFileTypes: true })) { - 读取本地文件lib/bridge/codex-app-server.js:66
if (existsSync(path)) installed.push({ path, mtimeMs: statSync(path).mtimeMs }) - 读取本地文件lib/bridge/codex-app-server.js:66
if (existsSync(path)) installed.push({ path, mtimeMs: statSync(path).mtimeMs }) - 读取本地文件lib/bridge/codex-app-server.js:77
return executableCandidates().find((candidate) => !candidate.includes('/') && !candidate.includes('\\') || existsSync(candidate)) || 'codex' - 删除本地文件递归lib/bridge/codex-app-server.js:163
rmSync(directory, { recursive: true, force: true, maxRetries: 20, retryDelay: 100 }) - 删除本地文件递归lib/bridge/codex-app-server.js:170
try { rmSync(directory, { recursive: true, force: true, maxRetries: 20, retryDelay: 100 }) } catch (ignored) { } - 执行外部命令来自配置/变量lib/bridge/codex-app-server.js:185
this.child = spawn(executable, ['app-server'], { stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true, env }) - 发起网络请求lib/bridge/codex-app-server.js:250
await rpc.request('initialize', { - 写入本地文件lib/bridge/codex-app-server.js:274
mkdirSync(projectDir, { recursive: true }) - 写入本地文件lib/bridge/codex-app-server.js:277
writeFileSync(sessionPath, claudeSessionJsonl({ ...seed, workspace: cwd }), 'utf8') - 发起网络请求lib/bridge/codex-app-server.js:284
const detected = await rpc.request('externalAgentConfig/detect', { - 发起网络请求lib/bridge/codex-app-server.js:296
const started = await rpc.request('externalAgentConfig/import', { - 发起网络请求lib/bridge/codex-app-server.js:304
const histories = await rpc.request('externalAgentConfig/import/readHistories') - 发起网络请求lib/bridge/codex-app-server.js:329
await rpc.request('thread/name/set', { threadId: id, name: item.seed.title.trim().slice(0, 240) }) - 发起网络请求lib/bridge/codex-app-server.js:362
await rpc.request('thread/inject_items', { threadId, items })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 迁移对话记录
- 迁移MCP服务
- 迁移记忆数据
把 Codex CLI 的对话、MCP 服务、记忆迁移到 DeepSeek Harness
最近更新
在 GitHub 查看全部 →latest2026-09-24
按照约定更新了兼容性,抱歉拖了这么久qwq
下次我会在一周内更新
更新方式:
npm i dsh-codex-migrate
由于这次稳定版本更新只影响了session id的导入策略,mcp组件不需要更新
old_version2026-08-15
安装地址:
首次安装:
dsh plugin --profile web add dsh-codex-migrate
新版本dsh更新:
dsh plugin --profile web update dsh-codex-migrate
codex相关组件请参考readme安装
更新内容:
1.优化了ui风格,保护你的眼睛
2.优化了对话的搜索策略,现在你可以导入codex中不在项目内的对话
3.优化了刷新清单的策略,现在可以更快的显示(尽力了)
4.设计了伴生mcp,在codex中你可以使用continue in dsh skill直接导入
5.增加了mcp的记忆共享能力,仍在测试中
6.现在可以反向导入对话到codex中了,方便你使用tibo刷新的额度
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-codex-migrate
在 Codex 与 DeepSeek Harness 之间进行可预测的单向结构化迁移 English · 中文
v2.0 将插件从“导出工具”升级为双端迁移桥:既可以把 Codex 对话导入 DSH,也可以从 DSH 把单个对话或整个项目的对话批量导入 Codex。每次操作都是明确的一次性迁移,不在后台修改源对话。
v2.0.4 兼容性更新
dsh-codex-migrate@2.0.4 延续了 v2.0.3 已实现的兼容修复,并针对公开 npm 的 @deepseek-ai/dsh@0.1.5-rc.2 验证(截至 2026-09-23 为 latest)。这些修复解决了 DSH 新版会话持久化与 Web 客户端模块变化带来的兼容问题:
- Codex → DSH:通过具有生命周期的 SessionHandle API 写入有效的 Session V3 事件,并正确执行 flush/close;旧版持久化服务仍有兼容回退。
- DSH Web 界面:更新客户端注入模块;“在 Codex 继续”改用当前对话的 session ID;限制清单扫描的元数据读取量,并异步读取完整对话,减少大历史记录造成的卡顿。
- DSH → Codex:浏览器拦截 codex:// 时,通过操作系统打开已导入的任务,同时保留浏览器跳转作为回退。
展开完整文档(README 剩余 1 节)
dsh-codex-migrate 在 Codex 与 DeepSeek Harness 之间进行可预测的单向结构化迁移 English · 中文 v2.0 将插件从“导出工具”升级为双端迁移桥:既可以把 Codex 对话导入 DSH,也可以从 DSH 把单个对话或整个项目的对话批量导入 Codex。每次操作都是明确的一次性迁移,不在后台修改源对话。 v2.0.4 兼容性更新 dsh-codex-migrate@2.0.4 延续了 v2.0.3 已实现的兼容修复,并针对公开 npm 的 @deepseek-ai/dsh@0.1.5-rc.2 验证(截至 2026-09-23 为 latest)。这些修复解决了 DSH 新版会话持久化与 Web 客户端模块变化带来的兼容问题: - Codex → DSH:通过具有生命周期的 SessionHandle API 写入有效的 Session V3 事件,并正确执行 flush/close;旧版持久化服务仍有兼容回退。 - DSH Web 界面:更新客户端注入模块;“在 Codex 继续”改用当前对话的 session ID;限制清单扫描的元数据读取量,并异步读取完整对话,减少大历史记录造成的卡顿。 - DSH → Codex:浏览器拦截 codex:// 时,通过操作系统打开已导入的任务,同时保留浏览器跳转作为回退。 本版本不声明支持 DSH 的 npm next 或 alpha 渠道。版本记录见变更日志。 v2.0 新增内容 - 双向单次导入:Codex → DSH 与 DSH → Codex 都会转换为目标端支持的结构化会话格式,而不是简单拼接纯文本。 - 在 Codex 继续:DSH 回复下方新增原生 Codex 图标;点击后导入当前对话,并自动打开新建的 Codex 任务。 - 在 DSH 继续:安装配套 MCP 与 continue-in-dsh Skill 后,在 Codex 里说“在 DSH 继续”即可导入当前任务并打开 DSH。 - 按照项目批量迁移:一次导入某个 DSH 项目内的全部未归档对话,并为每个 Codex 任务沿用原工作区路径。 - 无项目对话支持:Codex 中没有项目归属的对话也能导入 DSH,统一显示在 (no project) / codex-unprojected 工作区。 - MCP 记忆 Beta:新增 remember_memory、search_memory、forget_memory,支持全局、项目和单对话范围的本地持久记忆。 - 三类记忆导入:可以分别选择 Codex Markdown 记忆、桥接 MCP 记忆和 Memory Skill 存储。 - 更快的清单刷新:会话清单使用增量缓存,只重新解析新增或发生变化的文件;损坏文件会被单独隔离。 - 重新设计的设置界面:简化卡片层级、列表和状态信息,修复语言切换,并统一按钮、徽标与深浅色样式。 功能入口 在 DSH 的助手回复下方,Codex 图标与复制、点赞等原生操作位于同一行: - 点击 Codex 图标:将这一条 DSH 对话导入 Codex 并跳转。 - 打开 设置 → Codex 迁移 → 按照项目批量迁移:批量导入项目内全部未归档对话。 - 在 Codex 中说 “在 DSH 继续”:将当前 Codex 任务导入 DSH 并跳转。 v2.0 不提供共享对话、后台双向同步、冲突合并或 Codex 内联监视面板。目标是让每次迁移可检查、可重复、不会在两端静默改写同一段历史。 安装:两端都需要配置 完整功能由两个本地组件组成: | 组件 | 安装位置 | 作用 | | dsh-codex-migrate | DSH | 读取、转换和创建 DSH/Codex 会话;提供仅监听本机的一次性交接服务 | | dsh-codex-bridge MCP + Skill | Codex | 提供“在 DSH 继续”、MCP 记忆工具和触发规则 | 只安装 DSH 插件仍可使用设置页导入以及 DSH → Codex 按钮;若要从 Codex 发起迁移或使用 MCP 记忆,必须继续完成 Codex 侧安装。 前置要求 - 已安装并可启动 DeepSeek Harness(DSH)。 - 已安装 Codex 桌面端、Codex CLI 或 IDE 扩展。 - node 可在终端运行;建议 Node.js 18 或更高版本。 - 以下命令默认使用 DSH 的 web profile;如你的 profile 名称不同,请替换 web。 第 1 步:安装 DSH 插件 首次安装: dsh plugin --profile web add dsh-codex-migrate 从旧版升级: dsh plugin --profile web update dsh-codex-migrate 完成后重启 DSH,打开 设置 → Codex 迁移。确认能看到 已导入的对话、按照项目批量迁移 和 记忆导入。 第 2 步:取得 Codex 配套组件 Codex MCP 与 Skill 位于同一个仓库中,因此需要保留本地仓库目录: git clone https://github.com/polarskicpl/dsh-codex-migrate.git cd dsh-codex-migrate 如果你已经克隆了仓库,执行 git pull 更新即可。 第 3 步:在 Codex 注册 MCP Windows PowerShell: $bridge = (Resolve-Path ".\codex\dsh-codex-bridge\mcp\server.mjs").Path codex mcp add dshCodexBridge -- node $bridge --stdio macOS / Linux: bridge="$(pwd)/codex/dsh-codex-bridge/mcp/server.mjs" codex mcp add dshCodexBridge -- node "$bridge" --stdio 如果此前已用其他路径注册过同名 MCP,先执行: codex mcp remove dshCodexBridge 然后重新运行上面的 add 命令。可用以下命令确认注册结果: codex mcp list Codex 官方也允许直接编辑 ~/.codex/config.toml;CLI 注册方式更不容易出现路径和 TOML 转义问题。参见 Codex MCP 文档。 第 4 步:安装 continue-in-dsh Skill Windows PowerShell: $skills = Join-Path $HOME ".agents\skills" New-Item -ItemType Directory -Force -Path $skills | Out-Null Copy-Item -Recurse -Force ".\codex\dsh-codex-bridge\skills\continue-in-dsh" $skills macOS / Linux: mkdir -p ~/.agents/skills cp -R ./codex/dsh-codex-bridge/skills/continue-in-dsh ~/.agents/skills/ Codex 会从 ~/.agents/skills 读取用户级 Skill。若更新后没有立即出现,重启 Codex。参见 Codex Skill 文档。 第 5 步:重启并验证 1. 启动 DSH,并保持迁移插件启用。 2. 重启 Codex,在 /mcp 中确认 dshCodexBridge 已连接。 3. 在 /skills 中确认可以看到 continue-in-dsh。 4. 新建一个 Codex 测试任务,输入:在 DSH 继续。 5. 成功时会打开对应的 DSH 对话,Agent 固定回复:已同步对话到 DSH。 MCP 应暴露四个工具: | 工具 | 作用 | | continue_in_dsh | 一次性导入当前 Codex 任务并打开 DSH | | remember_memory | 保存本地持久记忆 | | search_memory | 检索指定范围内的记忆 | | forget_memory | 按 ID 删除记忆 | 快速测试 MCP 记忆 Beta 1. 在一个 Codex 任务中输入:请通过 DSH MCP 记住:我的测试代号是海蓝-728。 2. 新建另一个 Codex 任务,输入:请搜索 DSH MCP 记忆,告诉我测试代号。 3. 确认回答为 海蓝-728 后,输入:请从 DSH MCP 记忆中删除海蓝-728。 记忆默认保存在 ~/.codex/dsh-codex-bridge/memory.jsonl,不会上传到远端,也不会恢复已经废弃的共享会话功能。 迁移内容 | 内容 | Codex → DSH | DSH → Codex | | 用户与助手消息 | ✓ | ✓ | | 工具调用与工具结果 | ✓ | ✓ | | 最新一次重新生成的回复 | ✓ | ✓ | | 单个对话 | ✓ | ✓ | | 无项目对话 | ✓ | — | | 按项目批量导入 | ✓ | ✓ | | AGENTS.md 与项目文本 | 可选 | — | | Codex / MCP / Memory Skill 记忆 | 可选 | — | DSH → Codex 使用 Codex 支持的外部 Agent 会话导入路径。批量迁移会为每个任务使用同一个原始工作区路径,但 Codex 侧栏如何归类由 Codex 自身决定。 加载速度优化 首次刷新需要扫描现有 Codex 会话。之后的刷新会复用 size + mtime + hash 增量缓存,只解析新增或变化的 JSONL 文件,并从缓存移除已经删除的文件,因此大型会话目录的重复刷新更快、更稳定。 缓存位于迁移输出目录下的 inventory/,删除缓存只会触发一次完整重建,不会删除原始对话。 主要配置 | 键 | 默认 | 含义 | | codexDir | '' | Codex 数据目录;留空自动检测 ~/.codex | | outputDir | '' | 迁移产物目录;留空使用 /codex-sync | | language | en | en、zh 或跟随界面的 auto | | sessionMode | new | all、new 或 selected | | projectMode | all | all 或 selected | | includeMemories | true | 导入 Codex Markdown 记忆 | | includeMcpMemories | true | 导入桥接 MCP 持久记忆(Beta) | | includeMemorySkill | true | 导入 Memory Skill 存储 | | importAsDshSessions | true | 创建可在 DSH 侧栏打开的原生会话 | | bridgeEnabled | true | 启用仅监听 127.0.0.1 的一次性交接服务 | 安全边界 - DSH 交接服务仅监听 127.0.0.1。 - 写操作需要安装令牌;令牌不会写入 README 或仓库。 - 关闭 DSH 插件会同时关闭交接服务。 - MCP 记忆保存在本机;不会自动发送原始项目文件或完整对话到第三方服务。 - 插件只写配置的 outputDir、DSH 会话存储以及本地 MCP 记忆文件。 开发与发布检查 npm run build npm test npm run test:bridge npm pack --dry-run 更新历史见 CHANGELOG.md。 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
polarskicpl/dsh-codex-migrate
把 Codex 对话、MCP 与记忆双向迁移到 DSH
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目