DeepSeek Harness Plugin

MichengAI/dsh-automation

Stars ★ 21 Downloads (30d) 119,305 Category Workflow & Automation Added 2026-08-18 npm @michengai/dsh-automation

Runs scheduled coding tasks in isolated DeepSeek Harness sessions, managed from Settings or the agent.

Install

# from npm (prebuilt)

dsh plugin --profile web add @michengai/dsh-automation

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

dsh plugin --profile web add github:MichengAI/dsh-automation

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

DSH Automation

Run standalone coding tasks on a schedule in DeepSeek Harness

简体中文 · Changelog · Apache-2.0

DSH Automation is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.

Features

Let DSH handle work on a schedule. Set up tasks in Settings or describe the timing and requirements in a conversation, then review each run.

  • Run once or repeat: choose intervals, hourly, daily, weekly, monthly, or every N days.
  • Choose the working environment: set the directory, model, skills, and permissions.
  • Adjust the schedule anytime: create, pause, resume, run immediately, or delete tasks.
  • Review results: browse task conversations by name and run time in the Scheduled tab, or filter run history in Settings.
  • Keep each run independent: each run uses the saved task instructions and does not inherit the conversation that created it.

Interface

Scheduled tasks live in the workspace Scheduled tab, next to Tasks and Channels:

Scheduled sidebar

Open Settings → Scheduled Tasks to search, create, pause, and inspect rules:

Scheduled tasks settings

Describe the job in chat. DSH handles approval according to the selected permission mode:

Create a scheduled task from chat

Official approval for automation_create

After approval, the rule is saved and summarized in the conversation:

Scheduled task created

Run history stays in Settings and can be filtered by day, week, month, task, or status:

Run history

DSH product ecosystem

For a desktop workbench, download DSH Codex Desktop. Existing DeepSeek Harness installations can add plugins as needed by following each project's README. Below are 11 first-party plugins; consult the corresponding desktop release notes and bundled catalog for what that version includes.

Plugin What you can do
Codex UI Organize projects and conversations, search tasks, and navigate chat turns
Agency Agents Choose and summon specialists for your task
Skills Manager Find, enable, create, and import local skills
Archive Manager Search, restore, or clean up archived conversations
IM Connect Send tasks and receive replies through messaging platforms
Automation Schedule tasks and review each run
BTW Ask side questions without interrupting the main task
Simplify Use /simplify to improve code within your Git changes
PUA Guide the Agent to try new approaches after failures, investigate causes, and verify results before completion
Code Review Use /review to request an independent Agent code review and receive the report in the current conversation
Codex Pet View conversation notifications and respond to tool approvals and questions through a desktop pet

Prerequisites

  • The current source uses DSH 0.2.0-rc.2 for development and real Host compatibility tests, and declares support through 0.2.0-rc.2. Back up automation storage and sessions in the Profile before upgrading the Host. 0.1.7 and 0.2.0 write V4 sessions, and V4 sessions cannot be read after downgrading.
  • Official DSH peerDependencies are exactly 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2. The 0.1.6 line is absent because it will not get a release candidate; hosts still on 0.1.6-alpha.1 or 0.1.6-alpha.2 need 0.1.7-rc.1 or later for the next plugin release. @deepseek-ai/dsh-agent-presets and @deepseek-ai/dsh-agent-preset-registry are not peers: the host install gate checks every @deepseek-ai/dsh-* peer against the running version and ignores optional. The old package has no 0.1.7 or 0.2.0 release, and the renamed package does not exist on older hosts. Scheduled tasks still use the host agentPresets service. Development dependencies are pinned to 0.2.0-rc.2. Use one consistent official package version within each Host.
  • Other versions are outside the declared compatibility range. Installers may warn, and strict peer validation rejects them. Extend and pass the version matrix before adding a new rc.
  • The Connection patch replaces the Web bundle's configured injection list with [webServer, webRuntime]; Loader still merges dependencies declared by the plugin source. Custom Hosts with additional configured injections must retain these two entries and their extra dependencies in a later Profile patch. This patch does not automatically merge other bundles' lists.
  • A working DeepSeek Harness Web installation with dsh available in PowerShell.
  • Examples use the web profile; replace it with the target profile.
  • Source installation and development require Node.js 22.19+. npm installation does not require running npm install in an arbitrary directory.

Installation

The installation commands below use the official npm registry.

Ask an agent to install it (recommended)

Send the prompt below to any agent that can run terminal commands on your computer. Replace web with your actual profile. Once installed, use the plugin in DSH.

Install the DSH plugin @michengai/dsh-automation into my local web profile by running: dsh plugin --profile web add @michengai/dsh-automation@latest --registry=https://registry.npmjs.org/. Then run dsh --profile web --dump-config, confirm the configuration includes dsh-automation, and explain how to reload DSH and start using the plugin.

Install from npm

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
dsh plugin --profile web add @michengai/dsh-automation@latest --registry=https://registry.npmjs.org/
dsh --profile web --dump-config

Restart DSH Web and hard-refresh the browser. Pin a version with @0.1.5 instead of @latest when needed.

Updates

The settings title shows the installed version and a Check for updates button. When a newer release is available, Update automatically runs only when the DSH CLI or Desktop update service is available; otherwise, the dialog provides a profile-specific manual command to copy and run.

Usage

Open Settings → Scheduled Tasks, then use the panel as follows:

Goal Action Scope
Create a rule Select New scheduled task, then set name, schedule, prompt, workspace, model, skills, and permission. Host-wide
Create from chat Describe the schedule in any conversation, or select Create in chat. Current conversation
Pause or resume Use the switch on a task card. One rule
Run now Open the card menu and select Run now. One rule
Delete Open the card menu and select Delete task. Run history is kept. Definition only
Inspect runs Open Run history, then filter by day, week, month, task, or status. Host-wide

Each dispatched run uses the saved prompt, workspace, model, and permission boundary. It does not reuse approvals from the source chat.

Safety boundary

Item Behavior
Permission Options and the default come directly from the Host permissionPresets service, including custom presets.
Tool calls Follow Host tool availability, permission, and approval checks without an additional fixed tool allowlist or a background-shell ban. The Host manages background processes.
Full access The official danger-full-access option uses the same risk confirmation and orange warning as Chat.
Approval Chat create follows the session policy. Full access (never) proceeds; Workspace Write / Read Only (ask) shows the official card. Unattended runs stay fail-closed never.
Retry No automatic retry after a started run.
Host restart Leftover queued / running records become failed(host_interrupted).
Concurrency Different automations have no plugin-level global concurrency cap, including those in the same directory. The legacy plugin-level global concurrency setting (maxConcurrentRuns in plugin config) no longer takes effect; it is separate from the per-task field below.
Minimum interval Since 0.1.40, interval schedules accept whole minutes starting at 1. Missed triggers are not replayed individually; only the latest due occurrence is considered within the recovery window.
Per-task concurrency Available since 0.1.40. Set Concurrency in the create/edit dialog (positive integer, default 1). Queued and running executions share this limit. When full, scheduled triggers become skipped(overlap) and manual runs return a limit error. Lowering the limit does not cancel existing runs. Agent create/update tools accept max_concurrent_runs; Web RPC accepts maxConcurrentRuns. Existing tasks default to 1.

A schedule stores future intent. It is not a cached permission grant.

Development

Install from source

Use this for debugging or unpublished changes. The cloned directory becomes the plugin source path:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
Set-Location D:\Repository\deepseek-harness-plugin
git clone https://github.com/MichengAI/dsh-automation.git
Set-Location .\dsh-automation
pnpm install
pnpm test
pnpm build
dsh plugin --profile web add .
dsh --profile web --dump-config

Restart DSH Web and hard-refresh the browser. Local installation reads and applies cordis.patch.yml; do not copy lib files manually.

Current sources live in src and build into lib:

  • src\index.ts: Host plugin, tools, and RPC.
  • src\service.ts: Durable definitions, clock, and run admission.
  • src\client\index.ts: Settings page and chat prefill.
  • tests\*.test.ts: Domain, recurrence, service, client, and package-contract tests.

After changing files, run tests, rebuild, and reinstall from the local directory:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm check
dsh plugin --profile web add .

Keep the at-most-once dispatch policy, workspace scoping for Agent tools, and fail-closed unattended approval when changing execution code.

Verification

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm test
pnpm build

pnpm check runs typecheck, unit tests, real Host compatibility tests, and build. pnpm test:host bypasses runtime stubs and uses the official AgentLoop, Session V3, and permission service with a fixed local model adapter; it makes no external model calls. Browser interactions and real model calls require separate acceptance testing.

Cross-plugin sidebar regressions run with pnpm test:composition <dsh-im-connect checkout>. Build the IM checkout first; the script reads its lib/client.js. It executes the composition logic and tab registries of both repositories, covering registration order, delayed notifications, and uninstall handover across the archive, IM, scheduled, and Codex UI plugins; slots and timers use a simulated environment, so it does not install any plugin or replace Desktop rendering acceptance testing. This separate check requires an external checkout and is not included in pnpm check; use a fixed IM revision for reproducible results.

pnpm test:matrix builds the package, then creates separate temporary npm environments for every declared Host version using network access. It checks strict peer installation, every official dependency version, the packaged entry point, real AgentLoop execution, and service regressions. All declared versions pass. Persistence enumeration in service regressions uses in-memory fixtures for both cold-session formats; it does not validate on-disk migration of a real Profile. The printed evidence directory retains installation lockfiles, test logs, and results.json. The matrix does not modify development dependencies or connect to the user's Profile.

License

Additional notices are in NOTICE.

This project uses Apache License 2.0.

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.