DeepSeek Harness: first impression
DeepSeek Harness has been out for some time. Finally I just gave it my first try, and it looks pretty good.
Last week, I downloaded the Desktop version, and I tried it with a pretty vague prompt. The experiment is about this very blog site itself. Recently I am rewriting this blog with Astro. I have written the layout for the home page manually. I haven’t done anything else for the posts list and post detail layouts. In the prompt, I didn’t explain what needs to be done in detail. Just an ambiguous hugo to Astro migration instruction was given. On top of that, I gave it an extra task, which looks a bit confusing, to not write a single line of CSS because I wanted to write Tailwind CSS later by hand later. Basically there is a lot I want the harness to figure out by itself.
When running this prompt, there are three modes: workspace read, workspace write and full access. Workspace write is the default option. I kept this mode, and the experience was quite similar to Claude Code auto mode. I haven’t checked its architecture yet, still not sure if there is also a classifier behind the scene.
During the run (and after the run), there is a trajectory tab to audit every request and response DeepSeek Harness made with the LLM provider. The experience is a similar to inspecting network request in Chrome DevTools. This is more convenient to audit those AI requests, which appears to be timely in relation to Claude Code’s recent news about leaking user email in the user agent header .
In terms of the outcome, the quality is quite high. I would say it matches my expectation. The whole task took around 15 minutes, and cost about 20 millions token (approximately 1.04 CNY in off-peak hours). The generated site truthfully replicated the structure of my current website, including unspoken RSS feature too. I briefly read the generated code. It is also quite clean and structured.
It also exhibits some optimisation opportunities; for example, my carousel (the
image slider above) is a custom hugo shortcode, and comparably in the new
version it should be a reusable Astro component. However, the new carousel is
hardcoded in every content markdown as div with special class. This is a
reasonable trade-off with pure markdown files. In my eventual design in reality,
I am most likely to choose MDX + Astro component. This decision consideration is
not in my initial prompt, so I think it’s reasonable that the outcome doesn’t
align to it. In contrast, Claude Code might ask if I would like to choose MDX +
Astro component, according to my experience. Perhaps this is a gap of the
harness memory as I just started using DeepSeek Harness. It could also be a
technical gap too. At this moment I don’t have real insights about this.
Since the trial result is pretty decent, now I am interested in figuring out its design principles. In the same time, even though there is no easy free tier so I will spend some money with it, I am going to start using it more extensively and move away from OpenCode.