DEV Community

Cover image for DeepSeek Harness Got 4,000+ Plugins in a Week — All Eyes, No Hands
张洲诚(Zack.ZHANG)
张洲诚(Zack.ZHANG)

Posted on

DeepSeek Harness Got 4,000+ Plugins in a Week — All Eyes, No Hands

Everyone's reviewing the philosophy. I went through the plugin directory instead.

DeepSeek open-sourced DeepSeek Harness (DSH) on August 13. A week later: 160k stars, 4,000+ third-party plugins. The coverage has mostly been about the "everything is a plugin" pitch: model, tools, session, sandbox, even the UI is swappable.

Neat. But I had a more specific question: across those 4,000 plugins, what is everyone actually bolting onto this thing?

So I spent an evening going through the plugin directories. Found a pattern, found a gap, and filled the gap with a single command. Details below.

What people are actually installing

The category map as of mid-August:

Category What it does Representatives
Workbench VS Code-style sidebar workbench DSH-better-sidebar
Long-term memory Cross-session project memory dsh-memory-evolve, EverOS, dsh-persist
Vision (image reading) Give the text-only model sight ModLens, dsh-tool-describe-image
File references @-mention files in the input dsh-at-file
Multi-agent Spin up sub-agent teams dsh-agent-teams
Claude Code migration Move configs/skills/history over dsh-claude-move
Memes Virtual pets, mini-games deepseek-manners

Memory is a three-way race, vision has two clear leaders, and the long tail is everything else.

An easy-to-miss detail: one provider keeps showing up

DSH's chat models are text-only, so "reading images" was the first gap the ecosystem filled. The two leading vision plugins both default to Qwen-VL on Alibaba's Bailian (Model Studio) platform.

  • dsh-tool-describe-image has you set a DASHSCOPE_API_KEY in setup, default model qwen-vl-plus (one config line swaps to qwen-vl-max)
  • ModLens's OpenAI-compatible channel example uses Bailian's compatible-mode endpoint as the base URL, sample model qwen3-vl-plus

Two authors who don't know each other, same default choice. Meanwhile in the memory lane, EverOS (local-first memory layer) configures its LLM in standard OpenAI-compatible form and defaults to OpenRouter, but points at Bailian's endpoint just fine. And DSH itself doesn't lock the main model; custom providers and base URLs are first-class settings.

So inside DeepSeek's own ecosystem, the community has voted Bailian into three seats: the eyes, the memory engine, and the backup model slot. Nobody planned that. Config files did.

The gap: eyes everywhere, no hands

Here's what I did not find in the directory: a single plugin that lets the agent produce image, video, or audio files.

Every vision plugin solves "looking in." Nothing solves "making out."

This bit me personally. I had an agent in DSH build me a small Pomodoro timer web app. Code came out clean. But when I wanted to share it with friends (a decent card image, a short demo clip), the agent could only suggest tools for me to go use. The 90% was automated; the last 10% meant leaving the session, opening a design tool and a screen recorder.

Filling the spot without writing a plugin

Writing a DSH plugin is real dev work. Filling the "generation" seat isn't, for three architectural reasons:

  1. DSH's standard mode ships a shell tool: the agent can run commands, so any CLI is already its tool
  2. Bailian's CLI (bl) wraps image generation, image editing, and video generation as subcommands; the agent discovers flags via --help on its own
  3. bl reads the same DASHSCOPE_API_KEY environment variable as the vision plugins. If you've configured one for reading images, you're already done

If you haven't: grab a free API key from the Bailian console, install the CLI (npm install -g bailian-cli, Node.js 18+; full docs), and store the key once:

bl auth login --api-key sk-your-key
Enter fullscreen mode Exit fullscreen mode

Then tell the agent the ground rules once: every image, image edit, and video request in this project gets done with bl. That's the whole setup. Everything below: the prompts I typed were plain English; the commands are the agent's work.

Scenario 1: A share card for the finished project

What I said: "Make a share card for FocusTick. Dark background, a clean tomato-timer glyph in the center, the tool name below. Restrained, lots of whitespace."

What the agent ran:

bl image generate --prompt "product share card, dark background, flat-style tomato timer glyph at center, tool name FocusTick in clean type below, generous whitespace, restrained minimal design" --size 1280*720 --model qwen-image-3.0-pro --watermark false --out-dir ./assets --out-prefix focustick-card
Enter fullscreen mode Exit fullscreen mode

A 1280×720 PNG lands in assets/ as focustick-card.png. Two things I learned: my first prompt omitted "generous whitespace" and the render came out cluttered; two words and a rerun fixed it, and iterating on a prompt is much cheaper than iterating on a workflow. And --out-prefix is a habit worth teaching the agent; without it, outputs default to the name image and become indistinguishable after a few runs.

Where Bailian sits in the DeepSeek Harness plugin ecosystem

Scenario 2: Wrong vibe. Edit, don't regenerate.

Friends pointed out the app is light-themed; a dark card felt disjointed.

What I said: "Switch the card's background to off-white. Don't touch the glyph or layout."

What the agent ran:

bl image edit --image ./assets/focustick-card.png --prompt "replace the dark background with an off-white light background, keep the tomato glyph, text, and overall composition exactly unchanged" --out-dir ./assets --out-prefix focustick-card-light
Enter fullscreen mode Exit fullscreen mode

Key distinction: image edit is local modification. The composition you already liked survives. A fresh generate washes it away and redraws everything. Both files sit side by side (focustick-card / focustick-card-light), which is exactly what the prefix naming buys you. Bonus: --image can be passed multiple times for merges and composites, a rabbit hole for another post.

Scenario 3: "A static image doesn't show me how it works"

What I said: "Take the home screen screenshot and make a 5-second demo video. Slow push-in. Save it to assets."

What the agent ran:

bl video generate --image ./screenshots/home.png --prompt "camera slowly pushes toward the interface, cards gently appearing one by one, clean product-demo style, calm pacing" --duration 5 --download ./assets/focustick-demo.mp4
Enter fullscreen mode Exit fullscreen mode

Three technical notes: passing --image auto-switches to image-to-video mode; video is an async task, so the agent waiting is not the agent stuck; and --download writes the mp4 on completion. Without it you get a task ID and need a separate download command.

Three scenarios, one loop: plain-English request, agent-built command, output on disk

The meter is running

These are real billable calls, and the agent runs them automatically. Three images in a burst means three charges. Two commands to have in place before you start:

bl usage freetier --all   # auto-stop when the free tier runs out
bl usage free --expiring 30  # remaining quota per model (needs bl auth login --console once)
Enter fullscreen mode Exit fullscreen mode

Honest caveats on the free tier: it's valid for 90 days (not forever), and each model has its own quota. Running one dry doesn't auto-switch to another. Anyone claiming "permanent free quota" is misinformed.

Who should bother

If you build things inside DSH (small tools, personal sites, demos) and regularly hand something outward (cards, clips, illustrations), this closes the loop: code, assets, README, all in one session, no context-switching to a design app.

If your output is just code and text, skip it: running a bl command by hand when needed works fine; routing it through the agent isn't the point.

The takeaway I'd keep: 4,000+ plugins voted on what the ecosystem wants, and the "seeing" vote went to Qwen-VL. The "generating" seat is still empty, and filling it didn't take a new plugin, just one command already on the PATH.

To see what Bailian can do before committing, start from the console, more informative than any roundup, mine included.

Top comments (0)