限时活动:Claude 全系 1.1 倍,到 11 月 7 日 · 查看价格

首页 / 快速开始 / Codex 老用户迁移

Codex 老用户迁移

复制一段提示词发给 DSH,它会自己把线程、技能和偏好搬过来,全程不改动 Codex 的文件。

三步迁移

  1. 先按 DSH 一键配置 装好 DeepSeek Harness。
  2. 在 DSH 里新建一个会话,点下面的「复制提示词」,整段粘贴发送。也可以在桌面助手里点「Codex→Harness 迁移提示词」复制,内容一样。
  3. DSH 会自己读取你电脑上的 Codex 数据:导出最近的线程(密码、Key 自动打码)、补齐看图和操作浏览器等能力、迁移技能和偏好,最后列出线程让你选一个接着做。
全程只读 ~/.codex,不修改、不删除 Codex 的任何文件;DSH 里改动的文件会先备份,随时可以回退。补完能力后按它的提示新开一个会话即可生效。

迁移提示词

请帮我把 Codex 的历史线程、技能和偏好迁移到当前的 DeepSeek Harness,并补齐功能。我的电脑是 Windows,请用 PowerShell 自己写代码、自己执行,每一步做完都实际检查结果,不要只给建议。

重要说明:要迁移的是 Codex 留在我电脑上的**本地数据文件**,不是 Codex 软件本身。下面已经写明了这些文件的位置和格式,全部可以读取和转换,请不要回答"架构不同无法迁移"。如果某个文件和下面描述的不一致,先读几行看清实际格式再处理,不要放弃。

### 总规则
1. `~/.codex` 下的任何文件只读,不准修改、移动、删除。
2. 新文件统一放在 `~/.dsh/codex-migration/` 下;改动 `~/.dsh` 里已有的文件前先备份(文件名加时间戳)。
3. 对话里和导出的文件里**都不准出现密码、API Key、Token、卡密原文**。需要提到时写 `***`。
4. 中文内容一律按 UTF-8 读写。
5. 你自己写的处理脚本放在一个新建的临时目录里,用完删除。

### 第 1 步:导出 Codex 线程
**数据位置和格式(已确认):**
- 线程目录:`~/.codex/session_index.jsonl`,每行一个 JSON,字段 `id`(线程 ID)、`thread_name`(标题)、`updated_at`(最后活跃时间)。同一个 `id` 可能出现多次,以最后一行为准。
- 线程内容:`~/.codex/sessions/年/月/日/rollout-<时间>-<线程ID>.jsonl`,文件名结尾就是线程 ID。有的文件超过 300MB,**必须逐行读取**,不能整个读进内存;每行先判断是否包含 `"type":"message"`,包含才解析 JSON。
- 需要的行:`type` 为 `response_item`,且 `payload.type` 为 `message`,`payload.role` 为 `user`(我)或 `assistant`(Codex)。正文在 `payload.content` 数组里,取 `type` 为 `input_text` 或 `output_text` 的 `text` 拼起来。
- 要跳过的:`role` 为 `developer` 的行;正文以 `<` 加英文标签开头的(如 `<environment_context>`),这些是系统自动注入的,不是我说的话。

**要做的:**
1. 按 `updated_at` 取最近 30 个**能找到 rollout 文件**的线程。
2. 每个线程导出成一个 Markdown 文件:`~/.dsh/codex-migration/threads/<日期>-<完整线程ID>.md`。文件开头写标题、线程 ID、最后活跃时间,正文按顺序写「## 我」「## Codex」和对应内容。**文件名必须用完整线程 ID**,只用前几位会互相覆盖。
3. 写入前先打码:
   - `sk-` 开头的长串 → `sk-***`
   - 「密码 / 口令 / password / pass / pwd / token / api key / secret / 卡密」后面跟冒号(含中文冒号、可能夹着 `**` 或反引号)的值 → `***`
   - 40 位以上的十六进制串 → `***`
   - 反引号里 8 到 40 位、同时含大写、小写和数字的串(很像密码)→ `***`
4. 生成目录 `~/.dsh/codex-migration/INDEX.md`:一张表,列出日期、标题、文件名、我在该线程的最后一条话(截 60 字)、消息条数。
5. 自检:
   - 导出的文件数要等于目录表的行数;
   - 在全部导出文件里搜索 `sk-` 加 12 位以上字母数字,必须是 0 处;
   - 抽查 1 个文件,确认能看懂对话。

### 第 2 步:对比 Codex 和 DSH 的原生能力,补齐 DSH 缺的功能
这一步的目的是**让 DSH 能做 Codex 能做的事**,不是复制技能文件夹。

**2.1 先盘点 DSH 现在有什么**
- 列出你当前能调用的全部工具名(按前缀分组,如 `mcp__windows__*`、`mcp__playwright__*`、`bsk_*`、`web_*`、读图工具等)。
- 找到 DSH 配置文件:桌面版是 `~/.dsh/profiles/desktop/cordis.patch.yml`,已装插件在同目录 `package.json`。读一遍,看已经接了哪些 MCP(`name: '@deepseek-ai/dsh-mcp-client'` 的条目)、每个模型的 `input` 是否包含 `image`。
- 检查本机有没有 `node`/`npx`、`uv`/`uvx`、Microsoft Edge 或 Chrome(用 `Get-Command` 和常见安装路径)。

**2.2 逐项对比并补齐**(按下表,每一项都要写清:Codex 怎么做的 → DSH 现在有没有 → 你做了什么 → 实测结果)

| 能力 | Codex 原生 | DSH 补齐做法 |
|---|---|---|
| 看图片 / 传图片给模型 | 内置 `view_image` | 检查配置里每个模型的 `input` 是否含 `image`,缺就补 `image`。实测:截一张屏或找一张本地图片让自己读,说出图里内容。 |
| 看屏幕、截图、操作桌面软件、剪贴板 | 内置 computer-use | 如果没有 `mcp__windows__*` 工具,接入 Windows-MCP(见下方配置 A)。需要 `uvx`,没有就**先问我**再装 uv(`winget install --id=astral-sh.uv -e`)。 |
| 操作浏览器(打开网页、点击、填表、读页面) | 内置 browser / playwright | 如果没有浏览器类工具,接入 Playwright MCP(见下方配置 B)。需要 `npx`,没有就**先问我**再装 Node.js LTS(`winget install --id=OpenJS.NodeJS.LTS -e`)。用系统自带的 Edge,不需要另外下载浏览器。 |
| 联网搜索 / 抓网页 | 内置 web search | 检查有没有 `web_search`、`web_fetch` 类工具。DSH 的搜索要 DeepSeek 官方 API Key,没有就如实告诉我,抓网页可用 Playwright 代替。 |
| Word / Excel / PPT / PDF | 技能 | DSH 自带 office 系列技能,确认技能列表里有即可。 |
| 生图 | 内置 `imagegen`(调 OpenAI) | DSH 不自带。查本站 `/v1/models` 有没有图片模型;有就实际调一次 `/v1/images/generations` 生成测试图,成功才做成技能,失败就如实报错误码,不要反复重试。 |
| 定时任务 | automations | 用 DSH 的定时任务功能重建,**先问我**要不要、要哪些。 |

**配置 A:Windows-MCP**(加到配置文件的 `- insert:` 列表里;已有 `- insert:` 就加进去,没有就新建一个)
```yaml
- insert:
    - id: mcp-windows
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: windows
        transport: stdio
        command: '<uvx.exe 的完整路径>'
        args: ['--python', '3.13', 'windows-mcp', 'serve', '--transport', 'stdio', '--exclude-tools', 'PowerShell,FileSystem,Registry,Scrape']
        cwd: '<新建一个空目录,例如 ~/.dsh/mcp/windows-mcp 的完整路径>'
        toolCallTimeoutMs: 120000
```

**配置 B:Playwright 浏览器**
```yaml
    - id: mcp-playwright
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: playwright
        transport: stdio
        command: 'C:\Windows\System32\cmd.exe'
        args: ['/c', 'npx', '-y', '@playwright/mcp@latest', '--browser', 'msedge']
        cwd: '<新建一个空目录,例如 ~/.dsh/mcp/playwright 的完整路径>'
        toolCallTimeoutMs: 120000
```
注意:路径用完整绝对路径;改配置前先备份;改完用 YAML 解析检查格式。

**2.3 自检**:每个补上的能力都要**用 DSH 加载出来的工具实际调用一次**(`mcp__windows__Screenshot` 截一次屏;`mcp__playwright__browser_navigate` 打开 `https://example.com` 读出标题;读一张本地图片说出内容),不能只写进配置就说好了。
- **不要自己在终端里手动启动 uvx / npx 来测 MCP**:终端有沙箱限制,会报 EPERM、缓存目录无权限之类的假失败。MCP 由 DSH 自己启动,以工具是否出现、能否调用为准。
- 改了配置后,新工具和图片输入通常要**新开一个 DSH 会话**才生效。如果当前会话里看不到新工具,就在汇报里写「需新开会话验证」,并把要验证的三件事列给我,不要判定为失败。
- 生图检查用 DSH 配置里**当前模型的 baseURL 和 Key**,不要猜别的地址。

**2.4 顺带迁移自定义技能**
- Codex 技能在 `~/.codex/skills/`;DSH 从 `~/.dsh/skills/` 和 `~/.agents/skills/` 两处读技能,**两处都查**,文件夹名或 `SKILL.md` 里 `name:` 相同就算已有。
- 跳过没有 `SKILL.md` 的文件夹和 Codex 专用的 `imagegen`、`sora`、`screenshot`、`chatgpt-apps`。其余缺的复制到 `~/.dsh/skills/`,把里面写死的 `~/.codex/skills` 路径改成 `~/.dsh/skills`。
- 如果某个技能的核心步骤依赖 Codex 专有工具(如 `imagegen`、`js_repl`),告诉我它在 DSH 里能用到什么程度。

### 第 3 步:迁移偏好
1. 读取 `~/.codex/memories/MEMORY.md` 和 `~/.codex/AGENTS.md`(后者可能是空的)。
2. 只提炼**长期有效**的偏好和规则:写作格式、PPT 规范、常用流程、踩过的坑。一次性的任务细节、服务器地址、账号密码一律不要。
3. 备份 `~/.dsh/AGENTS.md`(没有就新建),在末尾追加一节「## 从 Codex 迁移的偏好」。原有内容不要删改。
4. 追加后重新读一遍,确认没有写进 IP、密码、Key。

### 第 4 步:汇报并接续工作
1. 汇报:
   - **能力对照表**(第 2 步那张表,每行填上:DSH 原来有没有 / 你做了什么 / 实测结果 / 还缺什么);
   - 导出了几个线程、复制了哪些技能;
   - `AGENTS.md` 加了哪些偏好、改过的配置文件和备份位置;
   - 需要我手动做的事(例如:同意安装某个软件、新开会话、提供某个 Key)。
2. 把 `INDEX.md` 里最近 10 个线程用表格列给我(编号、日期、标题、最后一条话),问我要接着做哪一个。
3. 我回复编号后,完整读取对应的线程文件,用几句话说明当时的目标、做到哪一步、还差什么,然后直接接着做。

会迁移什么

  • 历史线程:最近 30 个线程导出为 Markdown,放在 ~/.dsh/codex-migration/threads/,附目录表。
  • 能力:对照 Codex 的看图、看屏幕操作桌面、操作浏览器、联网、Office 等能力,缺的自动补上并实测。
  • 技能:~/.codex/skills/ 里 DSH 还没有的技能会复制过来。
  • 偏好:从 Codex 的记忆里提炼长期有效的规则,追加到 ~/.dsh/AGENTS.md。

迁移过程中遇到问题,把 DSH 的报错截图发给我们,联系方式见 联系我们。