deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English | 中文
dsh-enhanced-plugins is an all-in-one enhancement bundle for the DeepSeek Harness (DSH) Web profile. One installation adds native desktop alerts and a DeepSeek pet, a plugin community, MCP server management, model request-type declarations, workspace file references, last-message editing, and Claude Code / Codex subagent switches.
The package uses only public DSH plugin extension points and does not modify DSH core. Each of the seven features owns its applicable Host, Client, Settings, and runtime lifecycle, so an unavailable optional dependency does not prevent unrelated features from loading.
| Feature | Location | Purpose |
|---|---|---|
| Desktop alerts & pet | Settings → Desktop pet | Play default or custom task-state sounds and optionally show an animated native DeepSeek fish |
| Plugin Community | Settings → Plugin Community | Find, install, and remove community DSH plugins |
| MCP server manager | Settings → Plugins → Plugin configuration → MCP servers | Manage stdio and Streamable HTTP MCP servers |
| pi-ai model request types | Settings → Plugins → Plugin configuration → pi-ai model request types | Declare whether models accept text or image requests |
| Workspace file references | Type # in the session composer |
Search files and add a text snapshot to the next request |
| Edit last message | Latest user-message bubble | Revise a turn and regenerate in the current session |
| Product subagents | Settings → Subagents | Enable or disable Claude Code / Codex tools live |
0.1.0-rc.5 public ABI, using local baseline commit 47f943859bef60e4160492346772ded9b24f765a.DSH is still a developer preview. After upgrading DSH, check this project's supported ABI before upgrading the plugin if compatibility errors appear.
The installer handles dependency installation, package build, web profile installation, and load verification. Run the following commands from the dsh-enhanced-plugins repository root.
Use this directory layout:
<workspace>/
├── deepseek-harness/
└── dsh-enhanced-plugins/
The installer discovers the sibling deepseek-harness checkout automatically:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\migrate-to-enhanced-plugin.ps1
Pass the DSH source checkout explicitly with -DshCheckout:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\migrate-to-enhanced-plugin.ps1 -DshCheckout "E:\projects\deepseek-harness"
Restart DSH once after installation if it is already running.
The screenshots below use the Simplified Chinese locale; DSH translates labels according to the selected application language.
Location: Settings → Desktop pet. This is an independent entry in the left Settings navigation, not a card under Plugins.
The pet has three live states across all sessions: Idle gently floats and breathes, Working swims with bubbles and a rotating activity ring, and Needs attention hops, shakes, pulses, and displays an alert badge while an approval, plan review, or ask_user_question answer is pending. Needs-attention state has priority when other sessions are still running. Completion sounds fire only for top-level tasks, so completed subagents do not create duplicate chimes.
Settings apply live. Pet motion uses native WPF animations so the window remains responsive; hovering keeps the arrow cursor and dragging temporarily uses the move cursor. Turning the pet off closes and joins its managed PowerShell/WPF process; with the pet disabled, sound notifications use a short-lived process and leave no resident helper. The child receives only a fixed script path plus JSON control messages over stdin, and DSH's subprocess service owns tree cleanup.
Location: Settings → Plugin Community.
The bundled snapshot works without a GitHub token. If synchronization hits GitHub API limits, open Configure and store a read-only, short-lived fine-grained token. It is sent only to the local DSH Host and kept by the credentials service.

Location: Settings → Plugins → Plugin configuration → MCP servers.
stdio, provide the command, arguments, working directory, and environment variables. For Streamable HTTP, provide an HTTP(S) URL and request headers.When the browser reads an existing server, environment-variable and header values are masked. Unchanged secrets are not reconstructed or overwritten from the redacted view.

Location: Settings → Plugins → Plugin configuration → pi-ai model request types.
settings.yaml first.The card appears only while the official llm-pi-ai settings namespace is available. These are capability declarations, not endpoint probes. Confirm that the provider really accepts image requests before declaring Text and images.

Location: the session composer after selecting a workspace.
#, then continue with part of a file name or path to narrow the results.↑ / ↓ and Enter, or click a result, to insert the reference.Defaults allow up to 8 files, 128 KiB per file, and 512 KiB total. Binary, invalid UTF-8, oversized, non-regular, and outside-workspace files are rejected.

Location: beside Copy on the latest editable user-message bubble.
Ctrl/⌘ + Enter. Press Esc or select Cancel to leave edit mode.Resending stays in the current session. The plugin replaces the active model context from the edited user message onward and regenerates through the same AgentLoop. The underlying DSH Session log remains append-only audit history, and external side effects from tools that already ran are not rolled back. Messages containing images or other non-text blocks do not expose Edit, preventing silent content loss.

Location: Settings → Subagents.
Both switches default to off. Each update writes only its Boolean path under settings revision fencing, avoiding accidental overwrite of newer edits from another page or external writer.

The default composition is in cordis.patch.yml. A later profile patch replaces an entire Loader row's config; when overriding one, repeat every field that must be preserved.
| Field | Default | Purpose |
|---|---|---|
completionSound |
subtle |
off, subtle, prominent, or uploaded custom task-completion sound |
confirmationSound |
prominent |
off, subtle, prominent, or uploaded custom attention sound |
petEnabled |
false |
Show the native global desktop pet |
petSize |
112 |
Pet size: 80, 112, 144, or 176 device-independent pixels |
petPosition |
bottom-right |
Starting corner: top-left, top-right, bottom-left, or bottom-right |
The four *CustomSoundFile / *CustomSoundName settings fields are Host-owned upload metadata. Select custom sounds through the Settings page instead of editing those fields manually.
| Field | Default | Purpose |
|---|---|---|
profile |
web |
Target profile for installs and removals |
topic |
dsh-plugin |
GitHub discovery topic |
pageSize |
12 |
Plugins per catalog page |
operationTimeoutMs |
120000 |
Install and removal timeout |
githubTokenEnv |
GITHUB_TOKEN |
Credentials reference name |
cliPath |
empty | Optional absolute DSH executable path |
The bundled assets/plugins-cache.json is read-only. Synchronized cache data and marketplace install records are stored below the DSH home marketplace data directory.
| Field | Default |
|---|---|
maxCandidates |
20 |
maxScannedEntries |
5000 |
maxDepth |
12 |
maxReferences |
8 |
maxFileBytes |
131072 |
maxTotalBytes |
524288 |
indexTtlMs |
30000 |
maxCachedWorkspaces |
8 |
To expose product-subagent tools only to selected Agent presets, disable or remove the root subagent-product-toggle-tools row and mount dsh-enhanced-plugins/sub-agent/preset only inside those preset compositions. Do not mount both layouts in the same scope.
Repository rules use this read-only sibling checkout as the DSH API, type, and real Web assembly baseline:
D:\work\workspace\github\deepseek-harness
Run the standard checks with the package manager selected by the repository lockfile:
npm install
npm run typecheck
npm test
npm run build
npm pack --dry-run
git diff --check
The browser bundle uses CSS Modules and only DSH --dsw-alias-* semantic theme tokens, so it follows light, dark, and system appearance automatically.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。