DeepSeek Harness Exposes the Agent Assembly Line That Codex Keeps Hidden
I ran DeepSeek Harness and finally understood where it differs from Codex
Author: 子昕AI编程 Tags: AI Programming
"Codex hands you a pre-assembled Agent; DeepSeek Harness also hands you the assembly method."
— 子昕
DeepSeek Harness has been out for a few days, and I first dove straight into the source code.
I opened the official site, looked at the architecture reference, then went to the tutorial for developing "your first plugin." Cordis, events, plugins, configuration layers — one after another. I spent a long time without even writing down what it is, and I was already about to start drawing its architecture diagram.
If you've also clicked through those two pages, you probably know what I'm talking about.
Later I realized: one page is for architecture developers, the other is for plugin authors. When using Harness for the first time, you don't need to start there at all.
If you've used Codex, separate them first
The model itself doesn't actually open a terminal or modify files. It can understand context, generate responses, and propose tool-calling requests.
What reads files and runs commands is the Agent program outside the model.
The official homepage expresses this relationship with a very short formula.
Agent = Model + Harness
DeepSeek, GPT, Claude — these are models. Products like Codex and Claude Code have already combined the model, file I/O, terminal, permissions, sessions, and interface. Pick a project, and you can start working.
DeepSeek Harness can also run a coding Agent, but it exposes these components. You can swap models, change tools, modify permissions, or even reassemble an entirely new Agent.
It also comes with a ready-to-use local Web interface, so it's not just an SDK for research.
This is where it's easiest to confuse with Codex, and also most worth distinguishing.
"Codex delivers a pre-assembled coding workflow; Harness also hands you the assembly method."
Harness is currently still a developer preview, and compatibility will continue to change. For first-time use, try a small task first — it's more effective than reading through the entire architecture upfront.
Run it once first, then look at creating sessions
If you have Node.js on your computer, run this command.
npx @deepseek-ai/dsh web
The terminal will start a local service, defaulting to http://127.0.0.1:3080.
After entering the page, fill in your DeepSeek API Key under "Settings → Model," then select a workspace — the project directory you want the Agent to read and modify.
The input box is disabled until a workspace is selected. This small detail says a lot about Harness's positioning. It needs to work with a local directory; it's not a project-detached chat window.
The first task can be very small. Ask it to read through the project structure, find the entry point, or explain an error that has already appeared. Seeing how it reads files and explains its reasoning first makes it easier to judge than immediately asking it to refactor the project.
What really confuses people are the four modes that appear when creating a new session. They are essentially four pre-assembled Agent presets.
💡 Think of a preset as a checklist, pre-defining which tools this Agent can see, which prompts it receives, and how tools are presented. What changes here is not the model, nor the "intelligence level."
What the four modes actually change
Standard mode is the full coding Agent, carrying common capabilities like file editing, Shell, search, planning, and workflows. For first-time use, just pick this one.
PTC mode is easily mistaken for a new algorithm. What it actually changes is the method of calling tools.
In normal mode, the model searches once, reads once, counts once — each step sends a tool request.
PTC gives it an additional run_code entry point. The model can temporarily write a small piece of TypeScript, loop through tool calls within this program, filter results, and return the aggregated value.
For example, let it check TODOs across hundreds of files. You don't need to write TypeScript, and selecting PTC doesn't swap the model. The Agent writes the program itself, aiming to hand repetitive traversal and statistics over to code organization.
To see the difference clearly, I gave Standard and PTC the same read-only task: scan package.json files in the Harness repository, count internal dependencies, and list the packages with the most dependencies.
Standard's process is easy to understand. It first used Bash to complete the scan, got results for 248 files, then read the top-ranked packages one by one. The model judged each time, then decided which tool to call next.
PTC's page showed something distinctly different. It first generated a piece of TypeScript, writing exclusion directories, workspace reading, dependency counting, and sorting into the code, then executed it via run_code. The long string of Read dispatch records below is the log left by the program internally scheduling tools.
This time Standard had 10 top-level tool calls, PTC had 6, including run_code.
However, PTC still generated a large amount of internal tool scheduling, and the first scan even included node_modules, which was filtered out later.
The final results from both modes were basically consistent.
"From testing, what can be confirmed is that PTC mode puts some mechanical operations into a program, changing how tool calls are organized; it doesn't magically compress all the work into a single call."
Minimal mode only keeps persistent Bash and a text replacement editor. It suits people who want to observe the smallest toolset or specifically test a simple Agent; it's generally not needed for daily project work.
Creative mode is aimed at people preparing to modify Harness itself. It retains Standard mode's capabilities and adds runtime inspection, plugin experimentation, and preset creation guidance. For first-time use, you can leave it for later.
Standard is the full assembly, PTC uses code to organize multi-step tool operations, Minimal actively removes most tools, Creative is for making new assemblies.
Viewed this way, the four options are no longer four "personalities."
You can see how the Agent works in "Traces"
Every Harness session has two pages: "Chat" and "Traces."
The Chat page shows the final process and answers for humans; the Traces page lays out inputs, model requests, tool calls, and return results chronologically.
Orange is tool calls, purple is model output, green is injected context.
Click on a row to see what command Bash received, which file was read, and what the tool returned. When comparing Standard and PTC, this is also where I confirmed that the calling processes of the two modes are indeed different.
The "traces" here are not the model's complete inner monologue. They record the session events that Harness can observe, such as model output, context injection, tool parameters, and execution results.
When a task gets stuck, this makes it easier to find which step went wrong than just looking at the last error message.
Permissions are a separate set of settings
People who have used Codex should already be familiar with read-only, workspace-write, and danger-full-access. They determine where files and commands can be modified, and when approval is required.
For the first try of Harness, keeping workspace-write is enough. It mainly constrains the write location, but doesn't mean the entire computer is isolated; read scope, network access, and process visibility are not automatically shrunk to the workspace.
💡 Plan mode is also just a workflow state, letting the Agent investigate and submit a plan first before entering execution; it doesn't replace permission settings.
How to connect models
The shortest path is to directly fill in a DeepSeek API Key.
To connect other models, select built-in providers like Anthropic or OpenAI under "Add Provider" and fill in the corresponding credentials.
For corporate gateways or self-hosted services, use "Add Custom Provider," filling in the base URL, API protocol, credentials, and model name.
! Pitfall Alert 🕳
Custom integration isn't just pasting a URL and calling it done; the server side must support the corresponding protocol, and the authentication method must match.
What's the relationship between plugins and Harness?
Plugins are the basic unit of Harness's assembly capability. A plugin can add model adapters, tools, interfaces, or workflows, and the four Agent presets above are essentially different plugin combinations.
Regarding plugins, there will be further discussion later, including how to develop your own plugins and how to install excellent community plugins.
What layer is the desktop client?
What the official repository currently releases is still the CLI and local Web UI; there is no official Electron or Tauri desktop application.
The "DeepSeek Harness Desktop" seen recently:
is mainly a community project, and there's more than one project with the same name.
What they do is typically wrap Node, the CLI, and the local Web UI into a desktop program that can be launched with a double-click, making things a bit more convenient.
Should you try it now?
If you just want to get coding tasks done as quickly as possible, finished products like Codex and Claude Code will be more hassle-free. They've already organized common tools, permissions, and workflows neatly, and they're currently quite smooth and powerful to use.
But if you want to know how an Agent pieces together a model, tools, and permissions, Harness provides a very direct entry point, and it really can run locally.
DeepSeek Harness is currently only a developer preview, with versions still changing rapidly. It's suitable for developers who have the time, energy, and willingness to tinker. As for everyone else, for now, it's better to stick with mature products like Codex and Claude Code.
"After reading this far, you only need to remember one sentence. Codex hands you a pre-assembled Agent; DeepSeek Harness also hands you the assembly method."
I am 子昕, focused on sharing about AI tools, AI programming, AI efficiency, and related technologies.
If you found today's piece rewarding, welcome to like, share, and follow — see you in the next one.
Top 1 from juejin.cn, machine-translated. The original thread is authoritative.
CC and Codex are still very mature right now.