DeepSeek Harness plugin

dsh-plugin-wepre

DeepSeek Harness plugin: publish single-screen content cards to WePre Next straight from a dsh agent session

Jump to install

Source facts

Repository
shujiTech/dsh-plugin-wepre
Latest update
Aug 13, 2026
Category
Workflow & Automation
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/shujiTech/dsh-plugin-wepre
Plugin: dsh-plugin-wepre
Author: shujiTech

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-plugin-wepre

English | 中文

A DeepSeek Harness (dsh) plugin that lets your agent publish single-screen content cards to WePre Next — a platform that pushes offline, single-viewport cards to users while they wait on AI generations.

With this plugin installed, a dsh session goes from "write me a card" to "it's live" in one conversation:

you:   Build a pomodoro-timer card and publish it to WePre
agent: <writes index.html, calls wepre_publish>
agent: QA gate rejected it — OVERFLOW_Y at 390x600. Fixing… <edits, republishes>
agent: Published. contentId=cnt_xxx, version v1 (QA: passed)

Install

dsh plugin --profile web add dsh-plugin-wepre

Verify the layer composed, then boot:

dsh --profile web --dump-config   # shows a "# == dsh-plugin-wepre" layer
dsh --profile web

No build step and no prepare script — installing from a git host works too:

dsh plugin --profile web add github:shujiTech/dsh-plugin-wepre

What the agent gets

Five model-facing tools on ctx.tools:

ToolWhat it does
wepre_request_codeSend a one-time login code (SMS / email)
wepre_loginRedeem the code; the session cookie is persisted locally
wepre_whoamiShow current login state
wepre_publishUpload an index.html / .zip card through the server-side QA gate
wepre_qa_reportFetch the full QA report (per-viewport issues) for a content

The tools' descriptions teach the model WePre's content rules (single-screen layout, no network calls, no external resources, the wepre-next:execute postMessage contract) and the QA fix loop: when the gate answers QA_GATE_FAILED, the agent reads the structured per-viewport issues, fixes the card, and republishes with the same contentId — no human in the loop.

Authentication

wepre_publish / wepre_qa_report resolve credentials in this order:

1. token config field — a short-lived publish token from the WePre publish page 2. WEPRE_PUBLISH_TOKEN environment variable 3. The stored login session — created by wepre_login, persisted to sessionFile (default ~/.dsh/wepre-session.json, mode 0600)

For interactive use, just ask the agent to log in: "log in to WePre with 13800138000" — it will send the code, ask you for it, and store the session. For CI / headless (dsh --profile headless "…"), set a token.

Configuration

Override the plugin row in your profile's cordis.patch.yml (a patch replaces the row's whole config — restate keys you keep):

- id: wepre-publish
  name: dsh-plugin-wepre
  config:
    endpoint: 'https://wepre.cn/next-test'
    token: !!js process.env.WEPRE_PUBLISH_TOKEN
    sessionFile: '/home/me/.dsh/wepre-session.json'
KeyDefaultMeaning
endpointhttps://wepre.cn/next-testWePre Next site root
tokenShort-lived publish token (Bearer)
sessionFile~/.dsh/wepre-session.jsonPersisted login session

What a publish call looks like

wepre_publish maps to POST /next-test/api/next-contents (multipart). Parameters: title, path (absolute, .html or .zip), description, contentId (for in-place version updates), changeNote, versionLabel, downloadEnabled (default false), and manifest fields viewports (all/desktop/mobile), interaction (execute/passive), capabilities.

On success it returns contentId, versionId, versionNumber and the QA status. On QA_GATE_FAILED (HTTP 422) it returns the structured issues and reportId as a canonical value — not an exception — so the agent can iterate. Before uploading, the tool runs a local pre-flight scan for WePre's banned tokens (fetch, localStorage, Worker, overflow:auto, …) and external links, and reports them as non-blocking warnings.

Content rules in one paragraph

WePre Next cards are single-screen, offline, sandboxed pages: one index.html (or a zip with it at the root), root container at 100dvh with overflow:hidden, no overflow:auto/scroll, no network calls / localStorage / Worker (the words are banned even in comments), no external or root-absolute URLs, and execute-mode cards must run their main action on the wepre-next:execute postMessage. The full contract: WePre Next 内容发布规范 (see the publish guide on the site).

Development

Plain ESM JavaScript, no build step. Behavioral tests drive the tools against a mock WePre server:

npm install
npm test

License

[MIT](LICENSE)