dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
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
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-syncbelongs to the original author and is not this build.
🎛️ Native Sync Settings Modal
|
📍 Sidebar Workspace Trigger
|
📥 Import from Codex by Project
|
📤 Export DSH Chats to Codex
|
When using OpenAI Codex, developers build up significant workflow assets:
~/.codex/skills with tailored instructions and scripts;When adopting or exploring DeepSeek Harness (DSH), developers typically face major friction:
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.
updated and append only new turns without creating duplicate sessions.history_mode: legacy) and SQLite index entries without modifying or overwriting original Codex histories;~/.codex/skills/*/SKILL.md directly into DSH's native skill catalog;~/.codex/config.toml live, dynamically mirroring [mcp_servers.*] to DSH with conflict avoidance and stderr silencing;npx dsh-codex-sync codex-install) equips your Codex agent with tools to search, inspect, and install DSH plugins.--dsw-alias-*), pure CSS transitions with zero hover artifacts, and responsive text truncation.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 |
>=20. Node 20 needs the zstd CLI for checksummed compression; Node 22+/24 uses native Zstandard.npm test.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.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
# Register [mcp_servers.dsh-plugins] in ~/.codex/config.toml
npx dsh-codex-sync codex-install
# Run diagnostic health check
dsh-codex-sync doctor
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.
token meter / replay errors on imported chatsSymptom — 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.
codex-sync)This package bundles a first-class codex-sync skill. Your DSH AI Agent can operate synchronization tasks on your behalf:
/import-codex --dry-run/mcp-status/auto-import onThis build would not exist without the upstream work it is derived from. Credit where it is due:
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.lib/bridge.js and the boot-fix notes.lib/codex-reader.mjs, lib/convert.mjs, lib/dsh-writer.mjs, lib/attach-workspaces.mjs,
the slash-command grammar, and lib/client.js.codex-install.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.
MIT License © 2026 Walvez (upstream) · adapted build © 2026 AI8888-SHOP, released under the same MIT terms.