DeepSeek Harness Plugin

recoluan/recowork#recowork-dsh

Stars ★ 6 Downloads (30d) 667 Category Workflow & Automation Added 2026-08-27 npm recowork-dsh

Creates and inspects RecoWork local-agent-project workspaces through two bounded DSH tools and a web workspace card.

Install

# from npm (prebuilt)

dsh plugin --profile web add recowork-dsh

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:recoluan/recowork#path:/packages/recowork-dsh

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

recowork-dsh is an experimental DSH Bundle that gives an agent three narrowly scoped tools:

  • recowork_init: initializes one new RecoWork local-agent-project workflow.
  • recowork_status: reads its manifest and a small, fixed set of current-work documents.
  • recowork_import: safely adds RecoWork to one existing non-empty project without overwriting existing paths.

It also contributes a model-facing workflow protocol: use initialization only on an explicit request, inspect a workspace before durable work, then read its AGENTS.md and localized working methods before planning or editing. It intentionally does not expose a shell, arbitrary file reads, upgrades, deletion, or renaming.

In DSH Web it adds a collapsible RecoWork project cockpit:

  • Selecting a recognized workspace automatically loads its authorized read-only status. The main dashboard shows a full-context continuation action, blocking decisions from open questions, the current project stage, and stable project-memory items extracted from the project brief.
  • A guarded action can be queued into the current DSH conversation or copied as the same task package for another conversation. The package includes the workspace path, status read, root AGENTS.md protocol, and the selected objective.
  • Technical metadata, document health, current-document names, and manual refresh live under Status & settings. Add project separates explicitly confirmed New workspace and Import existing project flows.

The cockpit does not maintain a second task database and cannot edit, delete, repair, or upgrade an initialized workspace. Its generated prompts instruct the agent to read AGENTS.md and the localized working methods, treat workspace documents as authoritative, and honor the project's confirmation rules before changing direction, scope, or files. New-workspace initialization rejects a non-empty destination. Existing-project import lists only non-empty direct children without rw-manifest.json, requires separate confirmation, adds only missing RecoWork files, preserves every matching path, and confines any existing root AGENTS.md change to its marker-bounded RecoWork block.

Its interface follows DSH's active zh or en preference live, including when the user changes the language in DSH Settings. Workspace document names and action text remain in the language of the selected workspace.

The Bundle has no runtime npm dependency on DSH internals. This keeps a locally linked checkout resolvable from its own source directory; DSH accepts the plugin's raw JSON-Schema tool definitions directly.

Install

  1. Install DeepSeek Harness and start its Web profile once so its profile exists.
  2. Install the published Bundle into the Web profile, then explicitly authorize one or more existing directories:
dsh plugin --profile web add recowork-dsh@latest
npx --yes recowork-dsh@latest setup --root /absolute/path/to/your/recowork-lab
dsh web

Repeat --root to authorize more than one directory. If your DSH home is not the default ~/.dsh, either set DSH_HOME or pass it explicitly:

DSH_HOME=/path/to/dsh-home npx --yes recowork-dsh@latest setup --root /absolute/path/to/your/recowork-lab

The setup command creates a timestamped backup of cordis.patch.yml, handles DSH's default [] placeholder as a single YAML document, and validates the resulting YAML after writing. If validation fails, it restores the original profile patch before reporting the error. If you previously configured recowork-dsh by hand, review that entry and rerun the command with --adopt-existing; it will back up the file before replacing only the old RecoWork entry. The default initializer and importer run npx --yes recowork@4.1.0.

For local development, replace the first command with dsh plugin --profile web add ./packages/recowork-dsh, then run node ./packages/recowork-dsh/bin/recowork-dsh.js setup --root /absolute/path/to/your/recowork-lab --dsh-home "$DSH_HOME".

Safety contract

  • root must exactly match an entry in allowedRoots; destination must be a descendant of that root.
  • Initialization requires a missing or empty directory and only permits the three supported templates and zh/en locales.
  • Import requires an existing non-empty project without rw-manifest.json, preserves same-name paths, and only permits the same templates and locales.
  • Status requires rw-manifest.json and reads only fixed, localized current-work files, capped at 12,000 characters each.
  • Existing RecoWork workspaces remain user-owned. Use rw status or rw upgrade directly for upgrade review.

The only DSH Web write actions are explicitly confirmed new-workspace initialization and safe existing-project import. Both stay under the approved-root boundary and delegate lifecycle behavior to the RecoWork CLI; neither can bypass existing confirmation gates or workspace-ownership rules.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.