README.md
August 28, 2026 · View on GitHub
DSH Codex UI
Rebuild the DeepSeek Harness Web sidebar, workspace tree, search, and turn navigation in a Codex-style layout
简体中文 · Changelog · Apache-2.0
DSH Codex UI is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product. It uses public DSH slots only and does not modify host source code or conversation data.
Features
- Replace the default sidebar through the official
sidebarslot and keepsidebar.workspaces,sidebar.settings, andsidebar.footer.action. - Provide a Codex-style header with brand wordmark, sidebar collapse, and global search.
- List workspaces and conversations with expand/collapse, drag reorder, project pinning, unread dots, and running-state indicators.
- Add project and conversation menus for rename, pin, unread, archive, fork, open folder, copy, and delete.
- Restyle the conversation column and composer card, and add a compact turn navigator on the current session.
- Show companion-plugin status in Settings → About, and install the missing pieces from npm.
Screenshots
Light theme: Codex-style sidebar, workspace tree, and conversation column.

Dark theme: the same layout with Codex dark tokens.

Conversation menu: rename, pin, unread, archive, fork, copy, and delete.

Settings → About lists the companion plugins and their install state.

Prerequisites
- A working DeepSeek Harness Web installation with
dshavailable in PowerShell. - Examples use the
webprofile; replace it with the target profile. - Source installation and development require Node.js 22+ and pnpm. Installing from npm does not require running
pnpm installin an arbitrary directory.
DSH product ecosystem
Codex UI can be installed independently or used through the desktop app. They share the same DSH core but serve different ways of working:
| Product | Relationship to Codex UI |
|---|---|
| DeepSeek Harness | The host runtime that provides models, sessions, tools, and the plugin system |
| DSH Codex Desktop | A ready-to-install desktop product with Codex UI and the other five feature products built in |
| Six feature products | Codex UI · IM Connect · Automation · Skills Manager · Archive Manager · Agency Agents |
Installation
dsh plugin add forwards to pnpm add in the profile directory. Without a version and official registry, a local mirror or minimum-release-age policy can leave you on an older build.
Ask another agent to install Codex UI
Copy the sentence below into DSH, Codex, or WorkBuddy and let that agent install Codex UI into your local web profile.
Install the latest DSH plugin @michengai/dsh-codex-ui into my local web profile using the official npm registry: dsh plugin --profile web add @michengai/dsh-codex-ui@latest --registry=https://registry.npmjs.org/. Then run dsh --profile web --dump-config, confirm codex-ui is mounted, and remind me to restart DSH Web and hard-refresh the browser.
| Product | How to use it |
|---|---|
| DSH | Send the sentence above to the current session. |
| Codex | Send the sentence above to Codex and let it install locally. |
| WorkBuddy | Send the sentence above to WorkBuddy. |
Install Codex UI only
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
dsh plugin --profile web add @michengai/dsh-codex-ui@latest --registry=https://registry.npmjs.org/
dsh --profile web --dump-config
The plugin takes over the default sidebar through cordis.patch.yml. Uninstalling restores the default sidebar.
Install from source
Use this for debugging or unpublished changes. The cloned directory becomes the plugin source path:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
Set-Location D:\Repository\deepseek-harness-plugin
git clone https://github.com/MichengAI/dsh-codex-ui.git
Set-Location .\dsh-codex-ui
pnpm install --frozen-lockfile
pnpm build
dsh plugin --profile web add .
dsh --profile web --dump-config
Restart DSH Web and hard-refresh the browser. Do not copy dist manually; local installation reads both package metadata and cordis.patch.yml.
Usage
Open DSH Web. The left navigation is rendered by this plugin.
| Goal | Action |
|---|---|
| Start a conversation | Select New task, or use a workspace + / New conversation action. |
| Find a conversation or setting | Use the header search field and choose a session, Settings page, or quick action. |
| Collapse the sidebar | Use the header panel button. The expand control stays on the collapsed rail. |
| Pin a workspace | Drag it into Pinned, or use Pin project in the project menu. |
| Manage a conversation | Open the conversation menu to rename, pin, mark unread, archive, fork, copy, or delete. |
| Jump between turns | Use the turn marks on the left of the current conversation. |
| Inspect connectors | Open Settings → Connectors. Addresses, commands, and credentials are never shown. |
| Check companion plugins | Open Settings → About to install or update individual companion plugins. |
Deleting a workspace registration does not delete its folder or conversation records. Pinned and unread state is stored only in the current browser.
Persistence and safety limits
| Data | Storage | Scope |
|---|---|---|
| Pinned workspaces | Host profile file with a localStorage cache | Survives DSH restarts and Desktop tray reloads |
| Pinned conversations | localStorage key dsh.session-pins.v1 | Current browser only |
| Unread conversations | localStorage key dsh.session-unread.v1 | Current browser only |
| Conversation records | DSH host services | Unchanged by this plugin |
- The plugin uses only public DSH slots and services.
- It does not modify host source code or the conversation data model.
- Permanent deletion of archived conversations is provided by
@michengai/dsh-archive-manager. - The Connectors directory never exposes addresses, commands, or credentials.
Secondary development
- src\index.ts: host entry and the non-sensitive Connectors directory endpoint.
- src\client\index.ts: client entry for sidebar, workspace tree, turn navigation, and Settings sections.
- src\client\CodexSidebar.tsx: sidebar shell, search panel, and visual styles.
- src\client\CodexWorkspaceBrowser.tsx: workspace and conversation interactions.
tests\*.assert.tsandtests\*.spec.ts: interaction, visual, and runtime integration checks.
After changing src, rebuild, test, and install from the local directory:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm build
pnpm test
dsh plugin --profile web add .
New features should reuse existing DSH slots and public services. Do not depend on private host DOM or write conversation records.
Verification
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm build
pnpm test
License
This project is licensed under Apache License 2.0. Conversation-management workflow is informed by Semidia/dsh-session-manager, but this plugin is implemented independently through public DSH slots and services.