The project's README from github.com/skymecode/deepseek-harness-for-vscode. As one markdown file: README.md.
English | 简体中文
A native VS Code coding-agent extension powered by DeepSeek Harness. Install the platform-specific VSIX and start working—there is no upstream repository to clone, no Node/npm setup, and no local Harness deployment to manage.
This is the community-maintained
0.6.0release. DeepSeek Harness is currently a Developer Preview, and this extension pins the official@deepseek-ai/[email protected]package (Typert Remote protocol).
Runtime upgrade: Harness now uses session format V3. Supported older logs are migrated on resume into a new generation while their original files are preserved. Old runtimes cannot read the new V3 generation; back up
~/.dsh/vscode/harness-homebefore upgrading, and do not downgrade an active profile. Third-party plugins using the removedctx.agentor runtimeInboxAPIs need their own compatibility updates. The extension keeps its native VS Code interface rather than embedding the official Web UI.
Older installations can leave ordinary package directories where Harness expects managed links. Startup and plugin installation now recover these shared profiles/node_modules conflicts automatically: incompatible entries move into module-fallback-backup-* inside the Harness home, then Harness rebuilds its links. Backup paths appear in the output log. Existing links/proxies, profiles/web plugins, conversation history and credentials are preserved; no terminal cleanup is required for this conflict. Permission or sharing errors stop recovery without deleting the original data.
dsh-chat-import); changing the DSH mode opens a fresh session in the new mode and carries the previous context as a hidden digest attached to your next message.@ to fuzzy-search and attach workspace files without leaving the composer./model, /reasoning, and /preset extension commands.off / low / high / max reasoning effort, and four official Agent Presets.dsh, pnpm, and standalone Node 22.22.3 are bundled in each platform VSIX and managed by the extension.Open the workbench with Ctrl+Alt+H on Windows/Linux or Cmd+Alt+H on macOS.
Screenshots use the 0.5.9 workbench UI with a demonstration conversation and no private account data. This README shows the English interface; the Chinese README shows the localized interface. Select an image to view it at full resolution.
|
|
| 0.5.9 workbench — compact turn process, final answer and per-turn file changes | Flash / Pro, four DSH modes and the effort slider |
Cmd/Ctrl+Shift+X).... → Install from VSIX... and choose the downloaded file.For example, an Apple Silicon Mac requires the darwin-arm64 package.
DeepSeek Harness: Set API Key for the official source.No Harness install or start command is required.
The extension still ships and starts its own tested Harness/Node runtime. A separately installed CLI is not required and is not substituted automatically. On the same machine and OS user account, both backends use the official history location by default:
| Platform | Shared history home |
|---|---|
| Windows | %USERPROFILE%\.dsh |
| macOS | ~/.dsh |
| Linux | ~/.dsh |
An inherited DSH_HOME takes precedence. If official DSH uses another home, set the application-level deepseekHarness.historyHome to that same absolute path. Only sessions/ and attachments/ are shared. The extension's credentials, plugin profile and caches remain under ~/.dsh/vscode/harness-home; archive/pin state and UI filters remain separate. VS Code uninstall does not remove the shared history.
Old private/globalStorage histories are migrated through the official session codecs, with the original logs retained. Equal records are not duplicated; a strictly newer compatible prefix is appended only with write ownership. Diverged histories, or newer copies whose destination is busy, become separately named “VS Code history” forks. Completed imports are journaled, so reopening the extension does not keep duplicating them. In-use old sources are deferred; if migration fails, the extension keeps its previous private history for that launch and shows a warning instead of silently starting with an empty migrated store.
Open the VS Code history panel to refresh its list; refresh the official Web UI page to discover externally created history. VS Code filters by the current project, while official DSH may show worktree sessions under their own workspace or as ungrouped sessions. This shares saved history, not another process's transient token stream. Kernel locks prevent simultaneous writes to one session: close the owning backend before continuing on the other side, or create a fork. Model credentials and installed plugins are configured independently.
Both runtimes must support the same log format (this build uses V3, DSH 0.1.5-alpha.1). An older official CLI cannot read new V3 logs and must be updated to use this sharing feature; original V2 files are retained, but are not a downgrade-sync mechanism. This is not cloud, cross-device, or Windows/WSL cross-kernel synchronization; do not run live shared stores through a network/sync drive. Back up both the shared home and the old private home before a major runtime upgrade.
Open the ⊞ Plugins button in the workbench header to browse repositories read directly from the dsh-plugin GitHub topic. Results are merged with Awesome DSH Plugin metadata for curated categories, localized descriptions, and npm install specs. The Installed tab also accepts one package spec directly, including an npm package, github:owner/repository, a local path without shell metacharacters, or a tarball URL.
0.5.9 plugin center — built-in catalog example, not the complete live GitHub marketplace
The extension uses the official dsh plugin --profile web add/remove workflow. Plugin profile files live under ~/.dsh/vscode/harness-home/profiles/web; Harness is stopped while pnpm changes that profile and is then restarted automatically. The bundled pnpm means no system package manager is required.
Host tools, policies, and runtime services contributed by a plugin work in this extension. A plugin may also contain client UI designed specifically for the upstream DSH browser application; those UI contributions cannot be rendered generically by this native VS Code workbench and are marked Official Web UI.
Marketplace cards classify known entries as Agent compatible, Agent works · Web UI unavailable, or Official Web UI only. UI-only themes and layout extensions cannot affect the native workbench, so their install button is disabled. GitHub-only entries without curated metadata are marked Compatibility unknown until their installed manifest can be inspected.
| Setting | Default | Description |
|---|---|---|
deepseekHarness.model |
deepseek-v4-flash |
Default model for new sessions |
deepseekHarness.reasoningEffort |
high |
off / low / high / max |
deepseekHarness.agentPreset |
standard |
Default Agent Preset for new sessions |
deepseekHarness.provider |
deepseek-official |
Default source selected from the extension's Connection settings panel |
deepseekHarness.permissionMode |
workspace-write |
read-only / workspace-write / danger-full-access |
deepseekHarness.autoAttachSelection |
true |
Automatically attach the active editor selection when sending |
Provider endpoints and write-only credential references are managed through the bundled Harness settings and credentials services. API keys are stored in the extension's private Harness home, are never returned to the webview, and are not written to project-level .vscode/settings.json. Legacy deepseekHarness.apiKey, baseUrl, and providers values are imported once and then removed.
Use the Connection settings panel to add, edit, test, or remove DeepSeek relay sources. Custom sources are registered live through the upstream llm-pi-ai adapter and expose the same Flash/Pro choices in the model panel.
Automatically attached selections are limited to 16 KB and are truncated when necessary. If the same file selection is already embedded manually, the host will not attach it again.
| Command | Description |
|---|---|
DeepSeek Harness: Open Workbench |
Open the sidebar workbench |
DeepSeek Harness: Open Workbench in New Window |
Open the detachable editor-area workbench |
DeepSeek Harness: Reload Workbench |
Restart the runtime and reconnect |
DeepSeek Harness: Set API Key |
Save the API Key |
DeepSeek Harness: Clear API Key |
Clear the API Key |
DeepSeek Harness: Show Logs |
Open diagnostic logs |
DeepSeek Harness: Import Sessions |
Import a DSH ZIP, ChatGPT ZIP, or other agent transcripts |
Completed foreground and background work now uses native Windows/macOS notifications, not VS Code's in-window completion popup. Duplicate idle events, child-agent completions and Stop actions from this extension do not generate extra alerts. Queued prompts notify when the agent becomes idle after finishing the queue; opening old history does not replay notifications. Approval/question prompts remain unchanged.
User settings (effective immediately, without restarting Harness):
"deepseekHarness.systemNotifications.enabled": true,
"deepseekHarness.systemNotifications.sound": false,
"deepseekHarness.systemNotifications.includeConversationTitle": false
Run DeepSeek Harness: Test System Notification from the Command Palette to test without an API request. Errors are recorded under DeepSeek Harness: Show Logs; there is no in-window fallback. Notifications never contain reply text or detailed errors; enabling titles may expose them on the lock screen.
English is the default language, and a Simplified Chinese language pack is included. Manifest contributions, settings, extension-host prompts, errors, and the full chat workbench follow the VS Code display language. After changing the display language, run Developer: Reload Window.
127.0.0.1 port.textContent.permissionMode and Harness approval policies.There is one extension ID and one Marketplace product. Platform-specific VSIX files are required because the bundled Node, PTY, and sandbox packages contain native binaries:
darwin-arm64, darwin-x64linux-arm64, linux-x64win32-arm64, win32-x64The current hosted GitHub Actions matrix builds darwin-arm64, linux-arm64, linux-x64, and win32-x64. Other architectures require a self-hosted runner or local packaging.
npm install
npm run check-types
npm run lint
npm test
npm run compile
npm run package
npm run package creates a VSIX for the current operating system and CPU architecture. npm ci executes lifecycle scripts required by native dependencies, so build only trusted commits and lockfiles.
All project commit messages use English. See docs/ARCHITECTURE.md for the architecture and security boundaries.
Extension code is licensed under the MIT License. Licensing details for DeepSeek Harness, Node.js, and other dependencies are available in THIRD_PARTY_NOTICES.md and the license files shipped with each dependency.