README.md

August 29, 2026 · View on GitHub

DSH IDE

DSH VSCode Integration

DSH integration for VS Code with native diff previews, real-time balance, and built-in Trace analysis.

English | 简体中文

Open VSX downloads VS Code Marketplace installs GitHub Stars License

An independent community project. Issues welcome.

DSH IDE Workflow Demo

Quick start

  1. Install the extensionfrom the VS Code Marketplace, or search DSH in the Extensions panel.
  2. Choose a workspace and start chatting — configure the workspace as prompted, then ask away.

Features

Native diff for every edit, no Git required

After a write/edit tool call, open the target file to see VS Code's native side-by-side diff. The before-image is reconstructed by replaying hunks backwards from the Session log, so it also works in non-Git repositories and Git-ignored files.

Native side-by-side diff preview

Preview before approval

The approval card shows the actual command line, working directory, and target files that will be written. You can inspect every change in full before allowing it.

Slash commands enumerated live from the Runtime

The slash menu dynamically fetches commands registered by the Runtime for the current session (/plan, /compact, /goal, etc.) and merges them with the extension's own IDE commands.

Slash commands dropdown

Editor and Git context

  • Right-click the current file, selection, or Git diff to explain, fix, review, or generate documentation.
  • Right-click Ask about resource in Explorer to ask about a file or folder.
  • The @ menu autocompletes workspace files and previous Sessions.
  • DSH: Capture AppShot (macOS only) captures a window screenshot and inserts it into the conversation as a draft.

Sessions, Trace, and Activity at a glance

The sidebar provides a native conversation-outline TreeView. Trace, token usage, Todo lists, and subagents are gathered in the Activity panel. The UI supports VS Code's dark and light themes.

Trace and Activity panel

Credentials and balance

The bottom bar shows your current balance, including peak and off-peak pricing. Low balances are highlighted clearly.

Balance indicator

Architecture and runtime

Multiple VS Code windows preferentially reuse the same local Harness Runtime. The Runtime launched by the extension publishes a random loopback port through a process lock; later windows connect directly, avoiding competing writes.

graph TD
    A[VS Code Extension Host] <-->|RPC via Loopback Port| B[Standalone Harness Runtime]
    A <-->|Typed Full-State Bridge| C[React Webview UI]
    B <-->|CNB Distribution| D[Managed Local Engine]
    A <-->|Process Lock| E[Multi-Window Shared Runtime]

Configuration

Search dsh in VS Code settings for the full list.

SettingDefaultWhat it does
dsh.serverUrl""URL of an already running dsh web Runtime; when set, the extension connects directly.
dsh.autoStarttrueAutomatically start or connect to dsh web when the extension activates.
dsh.installWhenMissingtrueAutomatically download and manage a standalone Runtime when no usable npm/dsh environment is available.
dsh.runtimeVersion0.1.1-rc.2Locked version of the managed Runtime.
dsh.npmRegistryhttps://registry.npmmirror.comRegistry mirror used as a download fallback.
dsh.npxTimeoutMs120000Timeout while waiting for package-manager download and startup.
dsh.maxContextBytes120000Maximum UTF-8 bytes of <ide_context> included per prompt.
dsh.persistSessiontrueReuse the previous Session ID for the current workspace when possible.
dsh.agentStatusLabelsfat-whale messagesRandom text shown during each streaming turn; customizable.
dsh.agentStatusLabel""Pins a single fixed status line when set.
dsh.enableEffortKnobtrueUse the runner sprite animation as the reasoning-effort slider button.

Other ways to install

From GitHub Releases — download the .vsix from Releases and run Extensions: Install from VSIX.... Pre-release builds are published only to GitHub Releases.

Build from source:

npm install
npm run check
npm run package

Then install the generated .vsix via Extensions: Install from VSIX....

Extension API

Other VS Code extensions can hook into the API DSH exports.

Conversation navigation API — register custom nodes
const registration = api.registerConversationNavigation([
    { seq: 42, label: "Review the PPO implementation", detail: "Training config" },
]);
context.subscriptions.push(registration);
Agent status label API — customize streaming status text
const dsh = vscode.extensions.getExtension<import("dsh-vsc-integration").DshExtensionApi>(
    "harcochen.dsh-vsc-integration",
);
const api = await dsh?.activate();
context.subscriptions.push(
    api?.registerAgentStatusPresentation({ label: "🐋 Diving" }),
);

Development and testing

npm install
npm run check      # TypeScript check (host + webview)
npm test           # Release gate: webview check + compile + test suite
npm run compile    # Build to dist/
npm run package    # Compile + vsce package
npm run release    # Test + version bump + CHANGELOG archive + tag

To verify the managed Runtime release logic:

node scripts/verify-managed-runtime.mjs              # remote contract only
node scripts/verify-managed-runtime.mjs --full       # install and smoke-test

More information

Acknowledgments

Thanks to dsh-reasoning-effort for the chibi runner sprite reference. The conversation outline takes inspiration from the dsh-milestone project.

License

MIT