DeepSeek Harness Chat (lcy)
English | 简体中文
A native VS Code coding-agent extension powered by the DeepSeek Harness runtime. 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.
Personal build (0.1.25). DeepSeek Harness is currently a Developer Preview, and this extension pins the official @deepseek-ai/dsh@0.1.0-rc.6 package.
Features
- Native VS Code workbench — all interaction happens in the sidebar or an editor tab; the official WebUI is never embedded.
- Complete session workflow — persistent history, create, switch, rename, fork, delete, and resume sessions, plus full-text search.
- Streaming Markdown — headings, lists, tables, code blocks, copy controls, safe external links, and clickable workspace file references (with fuzzy workspace resolution for abbreviated paths).
- Stable incremental rendering — streamed updates preserve disclosure state and the reader's scroll position.
- Official DSH Think row — reasoning renders as a one-line summary that follows the newest text while streaming, then collapses to the first line; click to expand the full text.
- Official DSH tool cards — one compact row per tool call with a live status (running sweep / success / error) and expandable output.
- Change review (keep / revert) — agent file changes appear in a review list; each hunk supports keep/revert with editor decorations and CodeLens; reverting agent-created files asks for confirmation before deletion.
- Editor context — selected code attaches to the composer as an inline chip (auto-attach supported); type
@ to fuzzy-search and attach workspace files; drag files from the OS.
- Terminal output attach — copy a terminal selection, then run "Attach Terminal Output to Chat" (terminal context menu or command palette) to send it as context.
- Do-not-disturb — one-click auto-approve toggle (red when active) for approval requests.
- Slash commands — official Harness commands plus
/model, /reasoning, and /preset.
- Harness-native capabilities — reasoning, tool calls, approvals, structured questions, Todos, Skills, Goals, Plan mode, background jobs, and sub-agents.
- Model and agent controls — DeepSeek V4 Flash / Pro,
off / high / max reasoning effort, and official Agent Presets.
- Token usage — current input and output token counts under the composer.
- Native DSH plugin center — search a curated catalog, filter by category, inspect installed plugins, or install an npm/GitHub/local/tarball package.
- Official DSH design language — colors, Think rows, capsule composer, and scrollbars aligned with the upstream client.
- Automatic localization — follows the VS Code display language with English and Simplified Chinese support.
- Zero-deployment runtime — official
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.
Installation
- Download the VSIX matching your platform from Releases, or build it yourself.
- Open the VS Code Extensions view (
Cmd/Ctrl+Shift+X).
- Select
... → Install from VSIX... and choose the downloaded file.
- Reload the VS Code window when prompted.
For example, an Apple Silicon Mac requires the darwin-arm64 package.
Quick start
Open the project you want to work on.
Add your DeepSeek API Key to the VS Code user settings.json:
{
"deepseekHarness.apiKey": "sk-your_DeepSeek_API_Key"
}
You can also run DeepSeek Harness: Set API Key; the extension writes to the same user setting.
Select the DeepSeek Harness Chat icon in the Activity Bar.
Describe your task in the composer and send it.
No Harness install or start command is required.
Configuration
| Setting |
Default |
Description |
deepseekHarness.apiKey |
empty |
DeepSeek API Key stored as plain text in user settings.json with machine scope |
deepseekHarness.model |
deepseek-v4-flash |
Default model for new sessions (deepseek-v4-flash / deepseek-v4-pro) |
deepseekHarness.reasoningEffort |
high |
off / high / max |
deepseekHarness.agentPreset |
standard |
Default Agent Preset for new sessions |
deepseekHarness.provider |
deepseek-official |
Harness model-provider route |
deepseekHarness.baseUrl |
empty |
Optional API base URL |
deepseekHarness.permissionMode |
workspace-write |
read-only / workspace-write / danger-full-access |
deepseekHarness.autoAttachSelection |
false |
Automatically attach the active editor selection as an inline chip |
deepseekHarness.autoApproveApprovals |
false |
Auto-approve every approval request (do-not-disturb) |
deepseekHarness.selectionCodeLens |
true |
Show "Attach to Chat" / "Copy" actions above selected code |
deepseekHarness.selectionContextMenu |
true |
Show "Attach to Chat" in the editor context menu |
deepseekHarness.chatLocation |
editor-tab |
Open the workbench in the sidebar or an editor tab |
The API Key is never written to project-level .vscode/settings.json, but it is stored as plain text in your local user settings. Do not commit or share a settings file containing the key.
Commands
| Command |
Description |
DeepSeek Harness: Open Workbench |
Open the workbench (sidebar or editor tab) |
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: Attach Selection to Chat |
Attach the current editor selection as an inline chip |
DeepSeek Harness: Attach File to Chat |
Attach a workspace file to the composer |
DeepSeek Harness: Attach Terminal Output to Chat |
Attach the copied terminal selection as context |
DSH plugins
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.
The extension uses the official dsh plugin --profile web add/remove workflow. Plugin profile files live under the extension's globalStorageUri/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.
Terminal output
Select output in the integrated terminal, copy it (Ctrl+C / right-click Copy), then either:
- right-click the terminal and choose DeepSeek Harness: Attach Terminal Output to Chat, or
- run the same command from the Command Palette.
A green Terminal output card appears above the composer and is sent to the agent as context (up to 100 KB, truncated with a notice). The clipboard is only read when you run the command.
Change review (keep / revert)
Files modified or created by the agent appear in the Agent modified N file(s) bar above the composer. Open the review panel to list them, then keep or revert per hunk from the editor's inline decorations and CodeLens, or use the global Keep all / Revert all actions. Reverting an agent-created file deletes it — a confirmation dialog protects against accidental data loss.
Localization
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.
Security and privacy
- The Harness Gateway listens only on a random
127.0.0.1 port.
- The Webview uses a strict CSP and loads no remote scripts or iframes.
- Plugin catalog JSON is fetched by the Extension Host, validated into a narrow UI data model, and rendered with
textContent.
- Raw Markdown HTML is disabled, and rendered markup is sanitized through a DOMPurify allowlist.
- Remote Markdown images are disabled; http(s) links are validated again by the extension host.
- File and command access is controlled by
permissionMode and Harness approval policies.
- The API Key is never sent to the Webview or written to extension logs.
- Third-party DSH plugins are trusted Extension Host dependencies: they run outside the Agent sandbox. Review their source before installation.
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:
- macOS:
darwin-arm64, darwin-x64
- Linux:
linux-arm64, linux-x64
- Windows:
win32-arm64, win32-x64
Development and 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.
License
Extension code is licensed under the MIT License. This extension is a fork built on top of deepseek-ai/deepseek-harness (MIT); the original copyright notice is retained in 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.