Preface

When running long tasks in DeepSeek Harness (DSH), the model often emits a large number of consecutive tool calls with almost no user-facing text in between. The conversation history looks like “tens of steps executed silently,” making it difficult to tell what it’s doing or whether it’s stuck. Encoding discipline into AGENTS.md or the deployment’s personaSuffix isn’t always reliable: the former may be summarized away by conversation compaction, and the latter may be overridden by the same-named section in @deepseek-ai/dsh-persona under Standard / PTC / Minimal presets.

Below we introduce the community plugin dsh-progress-rules (maintainer Adamaik, categorized on GitHub as a workflow-related capability). It uses a two-layer mechanism—“an independent system-prompt section + a deterministic reminder before each step”—to turn “the process must have narration” from “hoping the model remembers the rules” into a harness-side executable behavior.

What is this

dsh-progress-rules is a DSH bundle plugin: adding one line to the profile’s bundle list mounts both layers of logic simultaneously.

  • One layer is a process-discipline system-prompt section (default name user:progress-rules, order 10150), re-rendered on every request and not summarized away by compaction.
  • The other layer is a deterministic nudge checked on agent/pre-step: if the previous assistant message contains only tool calls (or reasoning) and no text block, it’s counted as a “silent step”; once consecutive silence reaches the threshold, the plugin injects a reminder at the next step instead of waiting for the model to remember on its own.

The original description reads: process-discipline system-prompt section + deterministic progress nudge for silent tool steps.

Core Features

System-Prompt Section (Advisory Layer)

The plugin inserts a config row with id progress-rules via a Cordis patch. The default text is built-in Chinese process-discipline wording; order is 10150 (after WEB_SURFACE 10100, before persona suffix 10200). The section uses a unique name to avoid being blocked by presets where @deepseek-ai/dsh-persona overlays deployment:persona-suffix.

This layer is advisory for the model: it tells the model to prioritize following process discipline.

Deterministic Progress Nudge (Execution Layer)

Before each admitted step, the plugin checks whether the previous assistant message contains any text block:

  • If it has only tool calls (or reasoning), the step is recorded as silent.
  • When consecutive silent steps reach everySteps (default 5), a user-role reminder is injected at the next step (wording is configurable): essentially saying “you’ve been using tools continuously without reporting—explain in 1–3 sentences before continuing.”
  • The reminder appears as durable context, corresponding to the progress-rules context row, and is not a real message from the user.
  • Any assistant message with narration in any step resets the counter.

The README states: breaking patterns like “40 consecutive silent steps” relies on the harness itself inserting reminders, rather than only trusting the model to remember rules.

Comparison with AGENTS.md and personaSuffix

Method Limitation (per README)
AGENTS.md As a durable user message in the conversation, it may be summarized away by compaction during long tasks
system-prompt.personaSuffix The persona bundle mounted by presets may register a same-named section with empty text, overriding the deployment config

This plugin avoids the latter by using a uniquely named system-prompt section; it fills the gap that the former cannot enforce through pre-step injection.

Installation and Activation

DSH plugins are installed at the profile level ($DSH_HOME/profiles/<name>), not globally at once.

  1. Enter your profile directory (e.g., desktop / web / tui):
cd ~/.dsh/profiles/desktop
  1. Install the npm package:
npm install dsh-progress-rules
  1. Add the dependency in the profile’s package.json, and place it in dsh.profile.bundles after the base bundles (the list order is the composition order):
{
  "dependencies": {
    "dsh-progress-rules": "^0.2.1"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-progress-rules"
      ]
    }
  }
}
  1. Restart DSH. If your DSH build includes the dsh plugin command, the README states: adding the dependency and bundles entry is usually what that command does for you.

The package version in npm metadata is 0.2.1; license MIT.

Configuration

The default configuration is written in the package’s cordis.patch.yml. Override it in the profile’s cordis.patch.yml using the same row id progress-rules. Note that patch semantics replace the entire config of that row; any keys you want to keep must be written back in full.

Example: change the consecutive silent threshold to 3 and switch to English discipline wording:

- id: progress-rules
  name: dsh-progress-rules
  config:
    everySteps: 3
    text: |
      ## Process discipline
      1. Narrate progress after every step.
      2. Ask when uncertain instead of guessing.
Key Default Meaning
text Built-in Chinese rules Body of the system-prompt section; empty string removes the section
name user:progress-rules Section name
order 10150 Section order
enforce true When false, disables the per-step nudge, keeping only the prompt section
reminder Built-in English reminder sentence Text injected before silent steps; empty disables the nudge
everySteps 5 After how many consecutive silent steps to inject one reminder; 1 means reminder every step, larger means quieter

Typical Usage

Default out of the box: After installing, adding to bundles, and restarting, you get the Chinese process-discipline section + a reminder every 5 consecutive silent tool steps with no configuration changes needed.

Keep the prompt only, no automatic reminders: Set enforce: false in the profile patch, or set reminder to empty (the two effects are disabling the nudge logic or disabling the injected text, respectively—see the table above).

More frequent narration: Reduce everySteps, e.g., set to 1 so that after every silent step the next step receives a reminder.

Customize discipline and reminders: Rewrite both text and reminder (if changing only one, you still need to list the other keys you want to keep during the patch).

Use Cases and Caveats

Suitable for: running multi-step tool chains in DSH (reading files, modifying code, running commands), when you want continuous short narration in the terminal or Web interface rather than long stretches with only tool icons moving.

Compatibility (per README): Tested with DSH 0.2.1-rc.2, Standard preset, deepseek-v4.1-flash:1017-cloud. Implemented in pure ESM with no Cordis runtime dependency, using node:crypto.

Silent-detection limitation: The nudge determines whether there is “narration” based on a text block in the previous assistant message. If a provider places the assistant body text in a custom block type, it may not be recognized as narrated—the README suggests opening an issue for such cases.

Security and trust: The plugin runs with the current DSH profile’s local Node process permissions; before installing, you can review index.mjs, cordis.patch.yml, and the MIT license in the GitHub repository, then decide whether to include it in a production profile.

The community directory SkillHub plugin page and GitHub have no DeepSeek / High-Flyer official affiliation; they are third-party collections within the DSH ecosystem.

Conclusion

dsh-progress-rules places “process discipline” into a system-prompt section that won’t be eaten by compaction, and injects reminders via the harness after consecutive silent tool steps—two layers in one bundle, with configuration centralized in a single progress-rules row. If you’re troubled by “agents silently running dozens of tool steps in a row,” you can install ^0.2.1 via the profile method and experiment by adjusting everySteps and text.

  • Directory page: https://www.skillhub.cn/plugins/Adamaik/dsh-progress-rules
  • Source code and documentation: https://github.com/Adamaik/dsh-progress-rules