by qiz029
A DeepSeek coding agent harness: persistent shell, Ultra subagents, auto approval, Chrome MCP and session telemetry
# Add to your Claude Code skills
git clone https://github.com/qiz029/dscodeSee how dscode compares with popular alternatives.
dscode is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by qiz029. A DeepSeek coding agent harness: persistent shell, Ultra subagents, auto approval, Chrome MCP and session telemetry. It has 100 GitHub stars.
dscode's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/qiz029/dscode" and add it to your Claude Code skills directory (see the Installation section above).
dscode is primarily written in JavaScript. It is open-source under qiz029 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh dscode against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Write code in your terminal. Plug scripts into a live session. Hand tasks between agents.

Core features · What's new · Quick start · Commands · Changelog · Docs
DSCODE is a terminal coding agent for macOS, built on DeepSeek Harness. A persistent shell reads and writes code and runs tests; the TUI, the CLI and your scripts all share one session runtime instead of each starting their own. It installs as a pinned, reproducible harness—DSH dependencies, TUI and plugins are versioned and verified together.
Most coding agents work alone. DSCODE is built on the opposite assumption: sessions on your machine are visible to each other, so one can hand a task over, another can review the diff, and an independent reviewer decides approvals from your instruction rather than from a rule table.
See it in 60 seconds. Three things most coding agents cannot do, and where to look:
| In one terminal | What it shows |
|---|---|
/btw why is the cache cold on the first turn? |
A side question runs in its own read-only child session and answers in a panel; the exchange never enters the main conversation. |
dscode send <session-id> --steer "review the change in parser.ts and reply" |
Work handed to another session on this machine; it can read your transcript, answer, and hand the result back. |
/permission auto · /review-usage |
Approvals decided by an independent reviewer from your instruction, with what it allowed and what it cost. |
The 90-second demo script has the shot list, the exact commands, and how to record it.
| Feature | What you get |
|---|---|
| Agentic coding loop | A persistent shell that keeps cwd, environment and background jobs, plus file edits, search, patch application and tests. Project instructions, skills, plan, goal and hooks are wired in. |
| Session bridge | Start a task in the TUI, then add requirements, read output or subscribe to progress from another terminal (dscode sessions, send, read, watch). Every source enters the same runtime and context, and readers never take the session write lock. |
| Agent-to-agent tasks | The agent finds, reads and messages other sessions with list_sessions, read_session, send_session and reply_session, choosing queue, steer or defer. A persisted mailbox, retry de-duplication and a finite budget bound message loss, double processing and wake-up loops. |
| Session cards | Each session advertises its project, workspace and the topics of its last five user requests—enough to pick the right collaborator without reading its transcript. Cards describe what the user asked for, not conclusions. |
| Cross-session memory | Reusable experience is extracted in the background and retrieved together with its workspace and source messages. Memory can be disabled per session or globally, and its model usage is tracked separately. |
| Effort and sub-agents | Ultra uses the model's max reasoning and decides how far to investigate, delegate and verify; below Ultra the agent can still delegate, but only when a task clearly warrants it. Parents pick a separate effort per child, and children that edit can work in isolated Git worktrees created from a clean HEAD. |
| Independent review | After a code change passes its relevant checks, the agent sends the Git diff—or, outside a repository, the changes since a snapshot taken when the task began—to a separate read-only model and fixes concrete findings before ending the turn. /review runs the same reviewer by hand, scoped to the staging area, a base branch, a commit or a path. |
| Non-interactive runs | dscode exec "prompt", or git diff | dscode exec "review this", runs a full turn in scripts and CI: the reply streams to stdout, tool activity and the session id go to stderr, and the exit code reflects the turn. --json and --resume are supported. |
| Terminal UX | Six interface languages, select-and-copy text, scrollback through history, a verbose view of thinking and tool calls, an input area pinned to the bottom, a sub-agent overview, and footer TPS / context / cost / cache figures. |
| Guardrails | A workspace-write sandbox by default and Auto permission review by an independent model, switchable to human approval. Ultra grants no extra permissions and Computer Use keeps human authorisation. |
| Agent email | A local [ToAgent] inbox shared by all sessions: Enter steers a message into the live session as user-selected context, and with Gmail configured the agent can send mail through the same approval flow. |
0.7.22 — The Hub client moves to @dsh-plugin-hub/cli 0.5.0, which prepares and verifies the pinned DSH runtime itself (an exact-version npm install into $DSCODE_HOME/.hub/runtimes/<version>, then launch with the current Node) instead of spawning npm exec per bundle. A failed dscode command now prints its whole cause chain and, for a Hub or npm step, the causes to check — proxy, internal mirror, corporate CA, or the prebuilt GitHub tarball — and a leftover unmanaged profile prints the mv that unblocks every command.
Every release is listed in the changelog; the 0.7.22 notes have the long version.
Requires macOS 14+, Node 22.19+ (22.x) or 24+, npm, Git and Google Chrome.
npm install -g @toddzheng024/dscode
cd /path/to/project
dscode
Every other install path reaches the same pinned harness:
| Method | How |
|---|---|
| npm / Hub | the command above; the launcher installs the pinned profile from DSH Plugin Hub |
| GitHub release, one line | curl -fsSL https://raw.githubusercontent.com/qiz029/dscode/main/install.sh | sh |
| Release tarball | download dscode-<version>-darwin-arm64.tar.gz (or -darwin-x64) from Releases, unpack it and run sh dscode-install/install.sh |
| Source checkout | git clone https://github.com/qiz029/dscode.git && cd dscode && npm ci --ignore-scripts && npm run setup |
The one-line installer resolves the newest release, verifies the sha256 digest GitHub publishes for its tarball and then runs the installation the tarball carries; sh -s -- <version> pins an exact release instead of tracking the latest. Every path needs Node and Git. The GitHub release paths need nothing else: the prebuilt tarball (dscode-<version>-darwin-arm64.tar.gz or -darwin-x64) already carries the locked node_modules, so it installs without npm and without reaching an npm registry—the one to use behind a corporate registry proxy. The plain dscode-<version>.tar.gz is the source tarball, which installs its lockfile with npm ci; the installer falls back to it on a platform without a prebuilt package, and DSCODE_INSTALL_SOURCE=1 asks for it. The npm path installs the pinned profile from the Hub.
The first launch installs the pinned complete preset from DSH Plugin Hub—no manual plugin assembly, no global pnpm. Then enter /login and paste your DeepSeek API key into the hidden input: it is stored locally in ~/.dscode/credentials.yaml with 0600 permissions, shared across projects and installed versions, and never sent to the agent. A DEEPSEEK_API_KEY environment variable takes precedence. To use OpenRouter, enter /provider openrouter: DSCODE asks for your OpenRouter key (stored the same way, or taken from OPENROUTER_API_KEY) and switches the session to the DeepSeek model you were on; every model in OpenRouter's live listing that can call tools is then listed in /model, where typing searches. DeepSeek, GLM, Kimi and Qwen models are tuned and tested; other models work on a best-effort basis. /provider deepseek switches back, and /login openrouter replaces the key. Use /model to pick a model or another provider, and /effort to adjust reasoning effort; the default route is deepseek-official/deepseek-flash. The TUI checks npm for a newer release at startup and /update upgrades the whole installation after you exit.
Six interface languages, English by default. /language opens the picker and /language ja switches straight to a locale; 中文, 日本語 and 한국어 are accepted as names too. The set is English, 简体中文, 繁體中文, 日本語, 한국어 and Español. The choice is stored per machine in ~/.dsh/dsh-code/language.json, and DSCODE_LANGUAGE=es overrides it for one run.
dscode --continue # continue the last sessio