Maker, meme-r, and unabashed geek, Joe has been writing about technology since starting his career in 2018 at KnowTechie. He's covered everything from Apple to apps and crowdfunding and loves getting to the bottom of complicated topics. In that time, he's also written for SlashGear and numerous corporate clients before finding his home at XDA in the spring of 2023.
He was the kid who took apart every toy to see how it worked, even if it didn't exactly go back together afterward. That's given him a solid background for explaining how complex systems work together, and he promises he's gotten better at the putting things back together stage since then.
Agentic coding harnesses get a lot of launch hype, and when I saw DeepSeek Harness turn up in my feed, I knew I wanted to put it to the test. It runs DeepSeek V4.1 Flash by default and is the company's version of Claude Code, Pi, OpenCode, or any other agentic coding tool you could name. If using LLMs for coding has taught me anything, it's that they're only as good as the surrounding tooling, so I figured out a task, created two identical git repos, and let DeepSeek Harness and Claude Code each have one repo to implement a change.
Spoiler: both wrote byte-identical code for the same task. I can't say that will always be the case, especially on more complicated tasks, but what differs is how the coding agents are allowed to touch my computer, how they record what they do, and what they send back to their maker.
DeepSeek Harness is a plugin runtime wearing a desktop app
Everything is a plugin, even the agent loop
Like many agentic coding tools, you can install DeepSeek Harness in a few ways. You can run it from source or through Node, which then sets up a Web UI with a local address, and there's also an app for macOS or Windows. I opted to use the app, but the Node package bundles all the dependencies, so you don't have to manage them manually.
You get four modes as standard, all of which are really bundles of plugins for the agent to call:
- Standard: Work with code, files, and information
- PCT: Standard mode capabilities but better suited to tasks that call tools in batches, then filter, organize, deduplicate, or summarize the results
- Minimal: Terminal and image reading with context compaction. Used for testing or comparing basic performance metrics
- Creator: Used for creating plugins and other customizations for the harness itself
Even the agent loop is a plugin, so you can write your own loops if you want. On Windows, it sets the PowerShell plugin to interface with the OS, while it uses bash on other devices. Agent instructions can come from both CLAUDE.md and AGENTS.md files, so it can use your existing files to work on projects. Configuration flags live in a YAML file, and there's a button in the UI to open that for editing in your code editor of choice.
It creates a DeepSeek API key on first run, but you're not limited to the company's models. You can add your own API keys from other providers, custom endpoints, or local LLMs if you prefer to keep everything local.
In practice, both agents wrote the exact same code
This surprised me somewhat
To test DeepSeek Harness against Claude Code, I set up a couple of Flask repos. I didn't want any traces of the other agent in a folder, so I gave them both fresh clones. Both also ran at their default settings, so DeepSeek used V4.1 Flash 1017, Standard mode, Workspace Write, and High reasoning. Claude Code was using Opus 5.5 High, Auto mode. They're not exactly comparable models, but I wanted out-of-the-box settings, so I used those. DeepSeek says V4.1 Flash is its best agentic coder, so they have it to prove.
C:\Users\user\Projects\dsh-test\
app.py Flask notes API: GET/POST /api/notes, GET /api/notes/<id>
tests.py unittest suite, 4 tests at the start
requirements.txt flask
.gitignore venv/ and __pycache__/
venv\ per-repo virtual environment
Both setups then got the same prompt, but were limited to using only their named repo folder. I set a stopwatch for each run, but I didn't need one because both finished in seconds.
Use the virtual environment in venv. Run the existing test suite in tests.py and report the result. Then add a GET /api/ping endpoint that returns {"status": "ok"} as JSON, add a test for it in tests.py, and run the suite again until everything passes.
Fifteen seconds later...
DeepSeek Harness took about 15 seconds to finish, didn't ask for any approvals, and used 80,367 tokens with an 82% cache hit. Claude Code took about 21 seconds and also needed no approval. It used 240,248 tokens with a 92% cache rate, which points more to a larger harness prompt for Claude than DeepSeek. Both output roughly 1,000 tokens to create their file, and I verified each file for size and correctness.
DeepSeek's trajectory view shows the entire run
You don't only get a basic summary, with the rest living in JSON files
DeepSeek Harness has one feature that stands out against every other harness I've used. As a chat progresses, you get another tab in the view, called Trajectory. This is the full log of everything the agent did, including tool calls, the context, system, user, and assistant actions. It's a readable timeline of what happened, and I love it. Many harnesses obscure what happened, which is vital for troubleshooting when something goes wrong. Otherwise, you're asking the agent to fix its errors without knowing what they are, and that rarely goes well.
Compare that to the bare-bones summary that Claude Code gives you by default. You don't even get to see the steps properly; my window said "Cogitated for 21s" before spitting out a paragraph of debriefing. I'm not saying Claude Code doesn't have logs; it does. They're stored in JSON files, and you have to dig for them, then parse the contents for human eyes.
Knowing what context the harness added to the process, and what each tool call did, is essential, and it also shows you more about what happens behind the curtain. It also helps you learn because you can see the direct actions and which code snippets change in the files.
The privacy defaults are worth knowing about
You'll probably want to turn these off
DeepSeek Harness does have telemetry and analytics turned on by default. They have added a toggle in the main Settings that turns off uploading of your session log when using the official model API. That reads as if it only uploads when you're using DeepSeek's models, but it's still good to turn it off.
Then there are a few things without easy toggles. For those, you have to edit the YAML file (cordis.patch.yml) that's linked to the Open configuration file button in the settings pop-up. Add the following to the end, indented by two spaces only, and save the file. The harness doesn't lock the file, but you will likely need to restart the harness for the settings to stick.
- id: desktop-product-telemetry
disabled: true
- id: product-analytics
disabled: true
- id: session-telemetry-otel
disabled: true
These are good to turn off generally, but especially if you're using a local model and want your code to stay private. I didn't run any packet analysis to see what data might be sent to DeepSeek's servers, and if you're using the API, you're already sending your chat contents, but it's always wise to err on the side of caution.
DeepSeek Harness is for people who want to own their agent
The two harnesses differ in many ways, but not in the code they generate. Claude Code is proprietary; DeepSeek Harness is an open-source bundle of plugins. Using DeepSeek Harness doesn't preclude you from using Anthropic's models, or anyone else's, and I genuinely like the UI and how it's been packaged. First, turn off telemetry and analytics and the session-log toggle in settings; otherwise, your session logs will be sent to DeepSeek and used to improve its models.
Deepseek Harness
DeepSeek Harness is an open-source agent harness with a large plugin ecosystem.






