DeepSeek Harness Lands: A Plugin-Native Agent Runtime That Treats Everything as Swappable
Hello everyone, I'm Xiaofan.
The AI world has exploded again. DeepSeek V4 Pro official version just went live, and the highly anticipated DeepSeek Harness has been open-sourced right after.
Within less than 2 days on GitHub, the star count broke 95,000. By the time Xiaofan was writing this article, it had already surpassed 115,000 stars. The top streamer in the AI world lives up to its name.
GitHub Address: https://github.com/deepseek-ai/deepseek-harness
Many of you might be confused: What exactly is Harness? How is it different from the DeepSeek web version, WorkBuddy, Codex, and other tools I usually use? Is it worth the time to install?
In this article, I'll guide you step-by-step from installation to hands-on practice with DeepSeek Harness. Beginner-friendly, recommended to bookmark.
1. What is DeepSeek Harness?
Let's start with a core formula, which is key to understanding it. DeepSeek officially released a very important equation:
Agent = Model + Harness
The model is the 'smart brain', responsible for thinking and generating.
Harness can be understood as the 'body' attached to the brain.
The word Harness originally means 'horse tack'. If the AI model is a horse, Harness is the set of tack that allows you to steer the horse to run faster, more steadily, and obediently complete tasks.
The model is responsible for thinking and generating; Harness is responsible for connecting these capabilities to the file system, terminal, web, and toolchain, enabling AI to truly work in real-world environments.
The project rule files you write for AI, the various tools you configure, the task breakdown and execution order you arrange, the testing and checking processes you design—all of these count as Harness. The tools you usually use like Claude Code, Codex, WorkBuddy are essentially all Harnesses, meant to be used in conjunction with models.
Previously, DeepSeek only open-sourced the model half, and Harness had no news, but this time it's finally complete. You can think of DeepSeek Harness as a highly customizable AI tool, comparable to Claude Code and Codex. But its ambition is bigger than these tools—it's not just an Agent, but a configurable, recombinable Agent runtime environment.
2. Everything is a Plugin
This is the most striking design proposition of DeepSeek Harness. Models, tools, skills, sessions, sandboxes, UI, and even the Agent's runtime loop itself are all plugins, all can be unplugged and replaced with something else.
The entire framework is built on the Cordis microkernel. This kernel does something extremely restrained, only responsible for plugin loading, unloading, and dependency management, nothing else. The coolest part is that you can swap plugins at any time during Agent runtime, and still ensure the running state doesn't crash.
If you're dissatisfied with any part, you can always replace it yourself or install plugins to extend it, without needing to modify the framework source code.
3. How to Install? Done in 1 Minute
Installing DeepSeek Harness is really simple. We can install it manually, or use our commonly used AI Agent to install it.
1. Manual Installation
① Ensure Node.js is installed
Enter the following command. If a version number appears, it means Node.js is installed successfully. It's best to install Node.js version 22.x or higher.
node -v
If not, go to the Node official website https://nodejs.org/zh-cn/download to download the installation package and install it in a foolproof way.
② Execute a single command
Open the terminal on your computer, enter this command and execute it:
npx @deepseek-ai/dsh web
2. Leave it all to the AI Agent
If you don't understand the command line, just throw the sentence "Help me install DeepSeek Harness https://www.deepseek.com/harness/" to your commonly used AI tool and let it install for you.
Here's an example using WorkBuddy.
Wait a moment, and the terminal will output a URL (usually http://127.0.0.1:3080). Open it in your browser to enter the DeepSeek Harness Web interface.
3. Enter API Key
When using for the first time, you need to enter the DeepSeek API Key.
Go to the DeepSeek Open Platform https://platform.deepseek.com/api_keys to create an API Key. Be careful not to leak it, just copy and paste the obtained Key.
Remember to top up your account before using it.
After successfully entering the API Key, you can successfully enter the Web UI interface.
4. Quick Start for Beginners
After entering the Web interface, you'll see the conversation history on the left, the task area in the middle where you can select the working directory and run mode, and the dialog box on the right. In the upper left corner, you select the workspace, and in the lower right corner, you select the model and reasoning intensity. The entire interface itself is also a UI plugin, which you can replace at any time.
① First, select a workspace
DeepSeek Harness requires you to select a working folder before you can start a conversation. Create a working directory on your computer, then let DSH open it. This is the scope of project files your Agent can operate on.
② Three permission levels
- Read Only: Can only read, cannot modify. Choose this if you just want it to look at the code.
- Workspace Write: Can modify files within the working directory; it will ask you first if it goes out of scope. Most commonly used.
- Full Access: All guardrails removed, can modify files inside and outside the working directory. Don't turn this on casually; use it only when you know exactly what it's going to do.
③ Four run modes
This is one of the biggest differences between DeepSeek Harness and other AI tools. The essential difference between the four modes is 'which tool plugins are loaded for the current session'.
| Mode | Capability Scope | Suitable For |
|---|---|---|
| Standard Mode | File editing, Shell, Search, Skills, Sub-Agents, Workflows | Everyone, choose this by default |
| PTC Mode | All of Standard Mode + Programmatic Tool Calling | Batch operations, automation flows |
| Minimal Mode | Only Bash + File Editor | Model benchmark testing |
| Creative Mode | Standard Mode + Inspect/Test/Create Plugins | Advanced users who want to build their own plugins |
🕳 Beginner's Tip: For first-time use, just blindly choose 'Standard Mode'. It's sufficient for most daily development tasks. Explore other modes once you're familiar.
④ Model Switching
Here, I've entered the DeepSeek API Key by default, so I can only choose DeepSeek's large models.
We can go to Settings to configure large models from more providers.
5. Hands-on Cases: From Filling Tests to Developing Browser Extensions
Talking without practicing is a sham. Let's run a few tasks to see the real capabilities of DeepSeek Harness.
Case 1: Repository Understanding Capability ✅
Goal: Test the Agent's ability to read code, locate structures, and pinpoint line numbers.
Prompt:
Analyze the sample-app subdirectory project in the current workspace: 1) Summarize the project structure and responsibilities of each module; 2) Point out the program entry file; 3) Find the definition location of the Calculator class (file + line number) and list all its methods; 4) List which test cases in the tests directory call Calculator.
Actual Process: The Agent autonomously called Glob → Pwsh (list directory) → Read (read 6 files consecutively) → provided analysis.
Result: Completed in 13 seconds. Output included a project structure tree, entry file sampleapp/cli.py (main at line 7), Calculator class definition location (calculator.py line 1) + a table of all 5 methods with line numbers, and a mapping table of 6 test cases to the methods they call. All line numbers were accurate, with no hallucinations.
Evaluation: Excellent. File retrieval + long context understanding + precise positioning done in one go, 171 tok/s, cache hit rate 63%.
Case 2: Coding + Shell Closed Loop ✅
Goal: Test file editing, command execution, and self-verification closed loop.
Prompt:
Write a command-line todo tool todo.py in Python, supporting add/list/done, storing data in JSON. After writing, run tests yourself: add three items, list, done one item, list again, and show me the output of each step.
Actual Process: Agent wrote todo.py → proactively ran 4 commands to verify → displayed all output. When asked to add a delete subcommand and handle edge cases, the Agent modified and self-tested.
Result:
todo.pywas actually written to disk (2401 bytes, standard code)- All add/list/done outputs were correct
delete 99(non-existent) →Task #99 not found, nothing to delete.(stderr, exit code 1, no crash) ✅ Perfect edge case handling- Unexpected bonus: When writing
todos.json, it was intercepted by the sandbox → Agent self-diagnosed 'sandbox file access denial, retry with sandbox_permissions' → automatically requested privilege escalation → triggered manual approval → continued after approval. A complete sandbox interception → self-diagnosis → privilege escalation → approval chain.
Evaluation: Excellent. Autonomous closed loop, rigorous edge cases, the sandbox mechanism is a highlight.
Case 3: Planning and Sub-Agents ✅
Goal: Test plan maintenance, sub-Agent delegation (a key differentiator of dsh from ordinary chat).
Prompt:
Refactor the single-file todo.py into a standard Python package: split modules, add type annotations, supplement pytest tests, add pyproject.toml. Make a plan first, then execute, use sub-agents to share the workload, and finally run all tests successfully.
Actual Process:
- Agent first produced a refactoring plan + a 6-item Todo list + directory structure design
- Dispatched 2 sub-agents in parallel: one to write the
todo_cli/package source code, one to write pytest tests - The main Agent simultaneously installed pytest itself, wrote pyproject.toml, and reviewed the sub-agents' output
- Ran pytest: 3 non-tmp_path test cases passed first, tmp_path cases were blocked by the sandbox (system temp directory) → privilege escalation → 25/25 all passed
pip install -e .editable install succeeded,todocommand entry was available
Result (disk evidence):
todo_cli/ __init__.py __main__.py cli.py commands.py models.py storage.py (6 modules)
tests/ test_cli.py test_commands.py test_storage.py (3 test files, 25 cases)
pyproject.toml README.md todo_cli.egg-info/ (pip installation artifacts)
Original todo.py preserved byte-for-byte
Independently ran python -m pytest -q → 25 passed in 1.10s confirmed.
Evaluation: Excellent. Plan breakdown → parallel sub-agents → mainline integration → test verification, the entire chain ran through. This is a concentrated embodiment of dsh's 'Everything is a Plugin' architecture.
Case 4: Web Retrieval Capability ⚠️
Goal: Test online search + information integration (also check for hallucinations).
Prompt:
Search online for DeepSeek's current models and API pricing, organize into a Markdown comparison table, attach source links and retrieval date, only quote real official information, do not fabricate.
Actual Process: The Agent used web_search over 30 times, also dispatched 2 sub-agents for parallel deep dives, and found the official pricing page URL (api-docs.deepseek.com/quick_start/pricing). But its toolset only has web_search, no web page fetching (fetch), so it couldn't get the page body, could only triangulate from search snippets, the numbers were scattered and couldn't converge, after 16 minutes it still hadn't produced the table, and was manually stopped.
Evaluation: ⚠️ Partially passed. Can go online, can dispatch sub-agents, can locate authoritative sources, but the lack of a web page fetching tool led to excessive searching and inability to converge—this is a clear defect in the current toolchain.
Supplement: Official pricing verified (fetched directly from official docs by the tester using WebFetch):
| Model | Context | Input (Cache Hit) | Input (Cache Miss) | Output | Notes |
|---|---|---|---|---|---|
| deepseek-v4-flash | 1M | 0.02 RMB/M | 1 RMB/M | 2 RMB/M | Current price |
| deepseek-v4-pro | 1M | 0.025 RMB/M | 3 RMB/M | 6 RMB/M | Current price |
Starting 2026-08-17 00:00, it changes to peak/off-peak pricing: Off-peak periods are half the peak period price (v4-flash peak input 3.0 RMB, output 9.0 RMB; v4-pro peak input 9.0 RMB, output 27.0 RMB). Source: https://api-docs.deepseek.com/zh-cn/quick_start/pricing | Retrieval Date: 2026-08-16
Case 5: Run Mode Comparison ⚠️
Goal: Test the difference between Standard and Minimal modes. Same task: count the total lines and number of functions in all .py files in the workspace.
Standard Mode ✅:
- Used PowerShell (
Get-Content/Select-String) and finished in 8 seconds - Result: 14 files / 702 lines / 59 functions (verified correct)
- Also self-verified the boundaries of the statistical logic in its thinking
Minimal Mode ❌:
- Minimal mode only has two tools: persistent
bash+str_replace_editor - bash on Windows directly errored:
terminal inspection is unsupported on platform win32 - Agent retried bash multiple times, all failed, fell back to using
str_replace_editorto read files one by one, also read the wrong directory (readC:\tmpinstead of the workspace), and gave an incorrect result after 39 seconds
Evaluation: ⚠️ Standard Mode is perfect on Windows; Minimal Mode is unusable on Windows (bash tool does not support win32)—this is an important compatibility limitation. Official documentation is mainly for Linux, Windows users need to be aware.
Case 6: Trajectory Observability ✅
Goal: Test dsh's signature feature—append-only session logs, view by source, fork/resume.
Actual Process:
- Opened the 'Trajectory' tab of the Case 1 session, presenting an event stream table categorized by source (SOURCE), each row clickable to expand:
SYSTEM— Initial System Prompt (full system prompt visible)USER— User inputCONTEXT— Runtime context (including file strategy workspace-write, workspace path, approval strategy)TOOL— Each tool call and result like glob / pwsh / readTHINK— Model chain of thought
- Clicked 'Branch in new conversation' on a response to fork: a new session branched off from that response point
- Asked in the forked session 'What line is the divide method on, and how does it handle division by zero' → Agent accurately answered '
calculator.pyline 22,if b == 0: raise ValueError("Divisor cannot be zero")', proving the fork carried over the complete context
Evaluation: Excellent. 'Everything the model sees is traceable' lives up to its name. Filtering by source + forking without polluting the original session, observability is dsh's most solid differentiating capability.
Summary
| # | Case | Tested What | Result | Time Taken | Evaluation |
|---|---|---|---|---|---|
| 1 | Repository Understanding | File retrieval + precise location | ✅ Passed | 13s / 3 steps | Excellent |
| 2 | Coding + Shell Closed Loop | Coding + self-test + edge cases | ✅ Passed | 29s + 1m24s | Excellent (Sandbox is impressive) |
| 3 | Planning and Sub-Agents | Task breakdown + parallel sub-agents | ✅ Passed | ~5 min | Excellent |
| 4 | Web Retrieval | Online search + info integration | ⚠️ Partially Passed | 16 min (manually stopped) | Toolchain defect, non-convergent |
| 5 | Run Mode Comparison | Standard vs Minimal | ⚠️ Standard Passed / Minimal Failed | 8s / 39s | Minimal Mode unusable on Windows |
| 6 | Trajectory Observability | Event stream + forking | ✅ Passed | — | Excellent, signature feature lives up to its name |
One-sentence conclusion: Standard Mode performs strongly on Windows—coding, planning, sub-agents, and observability all reach top-tier Agent levels; the main shortcomings are Minimal Mode's Windows compatibility and the Web research toolchain (no web page fetching).
6. Plugin Ecosystem: Everything is a Plugin
This is the biggest difference between DeepSeek Harness and Codex or Claude Code. Models, tools, skills, sessions, sandboxes, UI, and even the Agent's runtime loop itself are all plugins, all can be unplugged and replaced with something else.
Community plugins have exceeded 300
On the DeepSeek Harness official website, click 'Community Plugins' to see all community-developed plugins.
It's actually projects on GitHub tagged with the dsh-plugin topic:
Currently, there are over 700 plugins available. If you find the official plugin page above complex and not categorized, you can check out this open-source project at https://github.com/awesome-dsh-plugin.
Installing a community plugin is very simple, just provide the plugin's open-source address to the AI:
Help me install the plugin https://github.com/xxx/dsh-xxx
For example: We want to install the DeepSeek Harness Desktop plugin.
I just need to enter the DeepSeek Harness webpage, pick any working directory, then provide the plugin's open-source address to the AI and let it install for me.
Help me install https://github.com/anywhere-labs/deepseek-harness-desktop this plugin
A few plugins worth installing:
- dsh-at-file: After installation, you can just @ to call files in the input box, very convenient.
- ModLens Visual Plugin: Paste an image in, helps the model parse the image into structured text information, including OCR text, page layout, semantic content. Fills the gap of DeepSeek's text-only model being unable to see images.
- dsh-genui: Allows the model to directly render charts, tables, forms, Diffs, Mermaid, interactive panels, etc., in replies, very useful.
- DSH-better-sidebar: Adds a VS Code-like workbench to DSH, stuffing file management, code editing, a real terminal, Git, Diff, and an embedded browser all into the sidebar.
- Skin plugins (for fun): Whale girl skin, Excel spreadsheet style (slacking off artifact), TUI terminal style, 2005 Chinese website ad style... Because DSH is essentially a web application running in the browser, customizing skins is very simple.
Creating Your Own Plugin
Just installing others' plugins is nothing; creating one yourself is where the real fun begins.
Switch to Creative Mode, tell the AI 'I want to make a session cost alerter'—don't worry about how to write the manifest or register hooks, the AI handles it all. It will first scan the current plugin tree, tell you which capabilities already have plugins occupying slots and which are still blank, then start writing directly.
Then give the following prompt:
Help me develop a dsh plugin with the following features:
Plugin Name: dsh-cost-guard
One-liner: API cost alerter, stops you before you overspend.
Core Features:
1. Real-time monitoring of the current session's token consumption and estimated cost (reads token counts from the trajectory event stream, converts to amount based on model unit price)
2. Supports setting three alert thresholds (default ¥1 / ¥5 / ¥20, user customizable). At each threshold:
- Pop up a prominent banner reminder above the input box (color-coded: yellow→orange→red)
- Play an alert sound (can be turned off)
- Record it in the current session's 'spending timeline'
3. Provide a 'Spending Dashboard' panel in the sidebar, showing:
- Current session spending (large font)
- Pie chart of cost breakdown by model
- Bar chart of daily spending for the last 7 days (data persisted to localStorage)
- Current hourly spending rate (¥/h), highlighted in red if abnormally high
4. Each time a new conversation starts, if the last session's spending exceeded ¥5, insert a gentle reminder at the top of the conversation: 'Last conversation cost ¥X, remaining budget for today is ¥Y'
5. Supports setting a 'Daily Total Budget'. If exceeded, the input box gets a red border + a confirmation bubble on the send button 'Exceeded today's budget, are you sure you want to continue?'
Technical Requirements:
- Register as a dsh plugin, declare dsh.bundle manifest
- UI part uses Web Components, no external frameworks
- Charts are hand-drawn with pure SVG, no libraries like Chart.js
- Configuration items (thresholds, budget, toggles) placed in a separate section of the dsh settings panel
- Spending history persisted to localStorage, key name dsh-cost-guard-*
- Supports both Chinese and English
First check the current plugin tree to confirm no conflicting plugins exist before starting development. Let me approve after development is complete.
Don't rush to install after writing. dsh will lay out the code changes in front of you for review, and only installs when you say yes. After installation, try it out a couple of times; if not satisfied, let the AI modify it, then approve again after changes, repeating until you're satisfied.
This is the final generated effect.
Think it's usable? One sentence 'Help me publish to GitHub', and the AI creates the repo, pushes the code, and tags it with the dsh-plugin topic. Others can install what you wrote with a single dsh plugin add command.
From 'I want a plugin' to 'someone in the community is using my plugin', without opening any IDE in between.
7. Cost and Value
Guess how much the previous tasks cost to run?
Total cost for the multiple hands-on tasks above: less than 8 RMB, because the cache hit rate was basically above 99%
However, a reminder: DeepSeek has announced a price increase starting August 17th, several times over. V4 Pro cache hit price increased 12 times, peak output price reached 27 RMB per million tokens.
⚠️ But even after the price increase, it's still much cheaper compared to Claude and GPT. For the same 250 million token consumption, GPT-5.6 Sol pay-as-you-go is about $186 USD (approx. 1260 RMB), still nearly ten times that of DeepSeek.
And the cache hit price is still very low. If the same usage is calculated at the new prices, considering cache hits, the actual cost won't be too high. Still a price butcher.
/// Written at the End
DeepSeek Harness is currently still a developer preview version, with some experience issues. For example, tasks getting stuck while the page timer keeps running, inability to open multiple sessions simultaneously, etc., these need subsequent iterations to fix.
But its design philosophy is genuinely exciting. 'Open Source + Everything is a Plugin' gives DeepSeek Harness extreme openness. Models, tools, prompts, context, and UI can all be adjusted through plugins, allowing everyone to reassemble the Agent's capabilities and working methods around their real needs.
Perhaps before long, the AI programming tools in everyone's hands will all look different
Because everyone can freely assemble according to their own needs, this is a very cool thing. This black whale has just entered the water, and the real story may just be beginning.
🕳 The biggest pain point currently: If you find DSH stuck on a task for a long time, don't just wait foolishly. Open the terminal and check if the dsh web process is still running. The page timer constantly increasing doesn't necessarily mean the task is still alive. Also, if you have too many tabs in the browser, just open a new tab and enter http://127.0.0.1:3080/ to go directly to the work page.
I'm Xiaofan, even the smallest sail can voyage far. Passionate about sharing some fun and practical干货 content.
If you found this article rewarding today, welcome to Like, Wow, and Forward triple combo, see you in the next article.