DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

AI8888-SHOP /

AI8888-SHOP/dsh-codex-sync

Verified

我们自己维护、适配 dsh 0.2.1-rc.2 的 Codex↔DSH 双向同步插件(派生自 Walvez/dsh-codex-sync,MIT,鸣谢上游)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@fd1eaaef

⚡ dsh-codex-sync

Two-way Codex↔DSH bridge: skills from ~/.codex/skills, session import with workspace attach, live MCP mirroring of mcp_servers, and a Codex-side reverse MCP installer.
2-way project chat sync · Live Skills mount · Auto MCP mirroring · Native modern UI

English • 简体中文

CI DSH Node License: MIT

This repository is our own build of the plugin, adapted to our DSH runtime. It is based on / forked from Walvez/dsh-codex-sync (MIT © 2026 Walvez) — see Credits & upstream attribution. What we changed and why: docs/LOCAL-ADAPTATION.md. Upstream npm package dsh-codex-sync belongs to the original author and is not this build.


🎛️ Native Sync Settings Modal
Codex Sync Settings modal: actions, switches, language
📍 Sidebar Workspace Trigger
Workspace header Codex quick entry button
📥 Import from Codex by Project
Import picker: projects, chats, and status tags
📤 Export DSH Chats to Codex
Export picker: smart workspace matching, source filter

🤔 Why dsh-codex-sync?

When using OpenAI Codex, developers build up significant workflow assets:

  1. Rich project chat histories with complete code contexts, architecture decisions, and debugging steps;
  2. Custom Skills libraries under ~/.codex/skills with tailored instructions and scripts;
  3. Configured MCP toolchains for databases, web searches, and browser automation.

When adopting or exploring DeepSeek Harness (DSH), developers typically face major friction:

  • Lost conversation history: Incompatible session formats prevent resuming past Codex tasks in DSH;
  • Configuration duplication and drift: Skills and MCP servers must be manually recreated and maintained in two separate tools;
  • One-way dead ends: Most migration scripts are one-time destructive copies that offer no clean way to safely bring DSH continuations back to Codex.

dsh-codex-sync eliminates this friction completely. It is not a throwaway migrator, but a production-grade, continuous two-way bridge between Codex and DSH.


✨ Key Highlights

1. 💬 Two-Way Safe Project Chat Portability (Codex ⇄ DSH)

  • Import from Codex:
    • Browse conversations grouped by workspace folder in an intuitive project tree;
    • Preserves user prompts, assistant outputs, reasoning traces, and tool-call trajectories;
    • Automatically attaches imported sessions to matching workspaces for seamless continuation;
    • Incremental re-import: Codex conversations continued after the initial import are marked as updated and append only new turns without creating duplicate sessions.
  • Export to Codex:
    • Export DSH native conversations or continuations back into Codex;
    • Automatically matches Codex's workspace catalog, gracefully locking unknown directories to prevent orphan threads;
    • Creates clean, standalone Codex rollouts (history_mode: legacy) and SQLite index entries without modifying or overwriting original Codex histories;
    • View and continue chats in Codex immediately after restarting the Codex app.
  • Sub-Agent Thread Filtering:
    • Hides internal sub-agent threads by default to keep the conversation list focused;
    • Easily expand and nest sub-agents under parent threads for selective, independent export.

2. ⚡ Live First-Class Skills Mounting

  • Mounts ~/.codex/skills/*/SKILL.md directly into DSH's native skill catalog;
  • Full support for nested directory resources and multi-file skill bundles;
  • Zero-restart updates: Edit a skill file on disk, and DSH recognizes the change on the next turn.

3. 🔌 Automated Bidirectional MCP Mirroring

  • Codex → DSH: Watches ~/.codex/config.toml live, dynamically mirroring [mcp_servers.*] to DSH with conflict avoidance and stderr silencing;
  • DSH → Codex (Reverse Bridge): Single-command setup (npx dsh-codex-sync codex-install) equips your Codex agent with tools to search, inspect, and install DSH plugins.

4. 🎨 Native Modern UI Experience

  • Adaptive Sidebar Trigger: Sits right beside the workspace header when expanded, and aligns below the search button when collapsed;
  • Centered Modal Panel: High-contrast, backdrop-blurred settings card with intuitive action cards, real-time switch feedback, and zero UI cutoff;
  • Polished Design Integration: Uses native DSH design tokens (--dsw-alias-*), pure CSS transitions with zero hover artifacts, and responsive text truncation.

🧭 Supported DSH versions

Version pinning lives in package.json → peerDependencies["@deepseek-ai/dsh-mcp-client"] = "^0.0.1-rc.1 || ^0.2.0-rc.2", which is what the DSH install gate (evaluatePluginCompatibility() in @deepseek-ai/dsh-app-boot) checks.

DSH runtime Status Evidence
0.2.1-rc.2 ✅ Verified on our machine (Linux, web profile) 61/61 tests; cold boot on an isolated DSH_HOME; client bundle served; 5 mirrored Codex MCP servers; 123-session import dry-run
0.2.0-rc.2 ✅ Verified by upstream v1.6.2 upstream CI host-boot smoke
other 0.2.x ⚠️ Allowed by the peer range, not re-verified here —
0.0.1-rc.1 … 0.0.x ⚠️ Legacy MCP-client peer, unmaintained path upstream 1.x legacy peer
  • Node.js: >=20. Node 20 needs the zstd CLI for checksummed compression; Node 22+/24 uses native Zstandard.
  • If a future DSH release is rejected by the install gate, update the peer range (or pin) here and re-run npm test.
  • Nuance: engines.dsh is not set, so the gate evaluates the peer range above; upstream used an exact 0.2.0-rc.2 pin, which is exactly why 0.2.1-rc.2 refused to install before this build.

📦 Quick Start

1. Install in DSH

From this repository (packed tarball — recommended, it is what scripts/install-local.sh does):

git clone https://github.com/AI8888-SHOP/dsh-codex-sync.git && cd dsh-codex-sync
npm test                                  # release gate: must be 61/61 green
npm pack                                  # → dsh-codex-sync-<version>.tgz
dsh plugin --profile web add ./dsh-codex-sync-<version>.tgz

Or straight from GitHub, or one-shot from the script:

dsh plugin --profile web add github:AI8888-SHOP/dsh-codex-sync
scripts/install-local.sh                  # pack + install + config row + self-check

Then override the row's config in your profile's cordis.patch.yml. dsh plugin add already lists the package in dsh.profile.bundles, so target the row by id (do not add an insert row for the same id — that collides with the bundle patch: duplicate loader entry id):

- id: codex-sync
  config:
    maxSkills: 30
    mcpMirrorDeny:
      - node_repl
    mcpMirrorSilent:
      - exa

2. Configure Codex Reverse MCP Bridge (Optional)

# Register [mcp_servers.dsh-plugins] in ~/.codex/config.toml
npx dsh-codex-sync codex-install

# Run diagnostic health check
dsh-codex-sync doctor

🎛️ Sync Settings & Toggles

Click the Codex Icon in the sidebar to open the centered control modal:

Section Item Command / Config Key Description
Actions Import from Codex /import-all Open project picker to import chats into DSH
Export to Codex /export-codex Export DSH chats into new Codex conversation copies
Repair sessions¹ /repair-sessions [--fix] Scan stored session logs for replay damage and heal them in place (see below)
Mirror status /mcp-status Modal overview of MCP servers, health, and statuses
Refresh states /codex-settings Re-sync all switch states from the host
Features Import commands enableImport Enable /import-codex slash command family
Auto import autoImport Automatically import new Codex chats on startup
Instructions enableInstructions Inject instructions.md / AGENTS.md into prompt
Config summary enableConfig Inject config.toml model settings summary into prompt
Skills enableSkills Register ~/.codex/skills as live DSH skills
MCP mirror mcpMirror Auto-mirror [mcp_servers.*] (applies immediately)
Language Language Switcher Language Toggle between 简体中文 / English

¹ A subtle hint at the bottom-left of the settings modal links imported-chat errors to this command.


🩺 Troubleshooting: token meter / replay errors on imported chats

Symptom — switching the model or running compaction on an (imported) conversation fails with:

command.execute failed: internal: token meter: assistant/message at seq N has no matching step/start event
corrupt session log: seq gap in committed region at line L

Why — DSH's token meter validates the whole event log via cold replay when the model changes (provider usage anchors become invalid). Logs written before v1.6.0 lacked paired step/start…step/end markers, and mixed logs can carry stale seq citations — both fail loud only during that replay.

Fix — run this in any DSH chat (or dsh-codex-sync repair-sessions --fix in a terminal):

/repair-sessions --fix

The repair merges seams, inserts missing step markers, remaps citations, renumbers sequences, validates every candidate with the real @deepseek-ai/dsh-token-meter, and keeps a .bak next to each repaired log. Imports created by v1.6.0+ are replay-safe by construction, so this should never trigger again.


🤖 Built-in Agent Skill (codex-sync)

This package bundles a first-class codex-sync skill. Your DSH AI Agent can operate synchronization tasks on your behalf:

  • "Dry-run importing my Codex conversations" → runs /import-codex --dry-run
  • "Check current MCP mirror status" → runs /mcp-status
  • "Turn on auto-import" → runs /auto-import on

🙏 Credits & upstream attribution

This build would not exist without the upstream work it is derived from. Credit where it is due:

  • Walvez/dsh-codex-sync — the original project (MIT © 2026 Walvez). Our repository is a derivative build: the entire host plugin, client bundle, CLI, skills and tests come from upstream v1.6.2 (commit 75bbca8). We only adapted the package metadata — DSH version compatibility, dsh.client.inject names, and the test runner's DSH lookup — plus the docs/scripts you see under docs/LOCAL-ADAPTATION.md and scripts/install-local.sh. Upstream npm package: npmjs.com/package/dsh-codex-sync.
  • YYTbit/dsh-plugin-codex-bridge (MIT © YYTbit) — basis for lib/bridge.js and the boot-fix notes.
  • Chang-Tong/dsh-import-agents (MIT © Chang-Tong / dongzhangust) — basis for lib/codex-reader.mjs, lib/convert.mjs, lib/dsh-writer.mjs, lib/attach-workspaces.mjs, the slash-command grammar, and lib/client.js.
  • bobleer/deepseek-harness-plugin-mcp (MIT © bobleer) — the reverse MCP server installed by codex-install.
  • DeepSeek Harness (dsh) — the host runtime this plugin plugs into.

The full third-party notice list is kept in NOTICE; adapted source files retain their original module headers. If you are the upstream author and want any attribution text changed, open an issue here and we will fix it.


📄 License

MIT License © 2026 Walvez (upstream) · adapted build © 2026 AI8888-SHOP, released under the same MIT terms.

—/ 5

No ratings yet

Verified DSH bundle

Commit fd1eaaeff865

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout