Introduction

The plugin-based design of DeepSeek Harness (DSH) allows developers to extend its core functionality. To seamlessly use a locally installed Claude Code in the DSH environment, it needs to be integrated as a conversation provider while preserving its native agent loop and tooling capabilities. The @norman-else/dsh-claude plugin, maintained by Norman-else, treats the local Claude Code CLI as a first-class citizen in DSH. It does not rebuild the agent loop; instead, it lets Claude Code continue to manage its own tools, skills, hooks, and MCP servers, while DSH provides the conversation UI, approval surfaces, workflow management, and process lifecycle control.

Core Features

Native Conversation Support
Claude Code runs in DSH as the primary agent rather than being wrapped into a tool or a secondary chat. This ensures a full conversation context and a multi-turn interaction experience.

Model and Preset Management
The plugin adds a “Claude” Agent Preset and reads the Claude Code model catalog. When the catalog is unavailable, it supports default, opus[1m], fable, sonnet, and haiku as fallback options.

Thinking Effort Mapping
DSH’s model reasoning effort setting is mapped to Claude Code’s thinking modes (off, low, medium, high, xhigh, max, ultracode). This allows direct control over Claude’s depth of thought from DSH’s settings.

Local Environment Compatibility
The plugin fully preserves the user’s local Claude Code environment, including authenticated credentials, settings, CLAUDE.md, Skills, Hooks, Plugins, tool configurations, and MCP server configurations.

Real-time Streaming and Session Continuity
Conversation content is streamed to DSH in real time while preserving multi-turn context and persistent session recovery.

Permission and Question Routing
Claude Code tool permission requests are handled through DSH’s approval flow, while Claude clarification prompts are presented through DSH’s native question forms.

Permission Mode Control
The plugin supports Claude Code’s local permission modes (such as Plan, Default, Accept edits, and others) and provides corresponding controls in the DSH interface. This enables fine-grained, session-level control over permission behavior.

Plan Review
In read-only access mode, Claude’s plan is displayed in a plugin-owned sidebar panel. Users can review the plan, edit the text, and reject the plan, with these changes fed back to Claude as the rejection reason.

Command Bridge
The Claude Code command catalog is exposed in DSH’s command palette, with a retry mechanism to wait for Skills and Plugins to finish loading.

Prompt Snippets
The plugin reads Markdown files from the ~/.claude/prompts directory and exposes them as insertable prompt snippets in the command palette, making it easy to reuse unfinished drafts.

Installation and Enablement

Prerequisites
- DeepSeek Harness Desktop with a compatible host version. The plugin is currently developed against DSH 0.1.5-rc.2 (DSH Desktop 2.0.10). Plugin versions 0.1.37+ introduce symbols that do not exist in 0.1.1-rc.2; if the host is still on that version, pin @norman-else/dsh-claude@0.1.36.
- A locally installed and authenticated Claude Code.
- Node.js 20 or later is required when installing from source.

Installation Command
Use the DSH CLI to add the package to the desktop profile:

dsh plugin --profile desktop add @norman-else/dsh-claude

Enablement Process
1. Wait for the configuration rebuild to complete.
2. Fully quit DeepSeek Harness Desktop.
3. Reopen DSH Desktop.
4. Create a new conversation and select Claude in the “Agent Preset picker”.

Installation from Source

git clone https://github.com/Norman-else/dsh-claude.git
cd dsh-claude
pnpm install
pnpm check

If the checked-out code is linked to a running Desktop instance, run the build after the turn ends, because rebuilding can hot-reload the plugin. It is recommended to use a separate source copy for validation during active work.

Removing the Plugin
DSH currently does not expose a lifecycle hook for plugin uninstallation. Before removing the package, you must first remove the managed compatibility preset:

dsh plugin --profile desktop exec dsh-claude remove-preset
dsh plugin --profile desktop remove @norman-else/dsh-claude

If the package has already been removed before cleaning up the preset, run the cleanup command for the corresponding version:

pnpm dlx @norman-else/dsh-claude@<version> remove-preset

Typical Usage

  • Creating a session: After restarting DSH, select the Claude preset when creating a new conversation.
  • Validation workflow: During active development, you can use a separate source code copy for validation without frequently interrupting the current DSH session.
  • Build execution: Run builds only after DSH turns finish, because rebuilding can trigger automatic plugin hot-reloading.

Notes

  • The plugin never asks for or stores Claude credentials. Users must authenticate through the local Claude Code CLI.
  • If the DSH host version is too old (such as 0.1.1-rc.2), the plugin version must be pinned to 0.1.36 to avoid runtime errors.
  • For the first build or when linking from source, ensure that the Node.js version is 20 or higher.

Summary

The @norman-else/dsh-claude plugin addresses the integration challenge of using local Claude Code within DSH. By reusing Claude Code’s native capabilities while leveraging DSH’s management interface, it provides users with a workflow that is both familiar and efficient. For more details and source code, refer to its GitHub repository or Skill Hub directory.