Preface

In DSH (DeepSeek Harness), when letting models directly modify code or execute commands, common failures often stem not from the model “not knowing how to do it,” but from discovering after completion that the results don’t match your expectations. Verbal requirements often lack goals, scope, constraints, or acceptance criteria. The model fills in the gaps based on its own understanding, leading to high costs for subsequent rework.

The community plugin dsh-grill-first (maintainer InoriMutsumi) turns “clarify first, then start” into a configurable workflow: for new tasks, it first determines if clarification is needed, follows up with multiple rounds of questioning if necessary, organizes the requirements into a four-section checklist for your confirmation, and only proceeds with the main task after confirmation. See the directory page at SkillHub, and the source code and documentation at GitHub (MIT, current package version 0.1.1).

What is this

dsh-grill-first is a DSH plugin: it inserts a requirements clarification step before starting any new task, turning vague tasks into executable and acceptable clear requirements; only after you confirm in the conversation does the current task proceed.

Unlike relying solely on a prompt in the system message asking to “please ask questions first,” this plugin injects a Chinese protocol segment (approx. 600 characters, with the visible marker 【开工前提问协议(grill-first)】) into the system prompt and registers two tools: grill_start and grill_confirm. Under gateMode: "strict", it can intercept modification operations such as file writing and command execution before requirements are confirmed. Small tasks that can be explained in one sentence, or messages containing skip keywords, will not be interrupted.

Workflow

Once installed, no additional operation is required; the model should call grill_start first when receiving a new task. The steps below follow the order described in the README.

  1. Determination: grill_start judges whether clarification is needed based on the original task text and returns verdict, focus_hints (what to ask), and memory_context (known preferences to reduce redundant questions).
  2. Follow-up Questions: If the task is vague, it asks questions in rounds. By default, it asks a maximum of 3 questions per round and up to 3 rounds total, digging deeper based on the previous round’s answers (specific limits refer to configuration).
  3. Summary and Confirmation: After clarification, it organizes the requirements into a Chinese four-section checklist (Goals / Scope / Constraints / Acceptance Criteria) and asks for your confirmation via grill_confirm.
  4. Pass or Revise: Choosing “Confirmed, proceed accordingly” allows the current task to proceed, and the confirmed content can be written to memory; choosing “Needs changes” leads to revisions based on feedback followed by another confirmation.
  5. Skip: If the message contains any of “直接做” (do it directly), “跳过提问” (skip questions), “不用问” (no need to ask), or “skip”, the task starts immediately; you can also disable the plugin in configuration or set gateMode to off.

Under the strict mode, the model cannot execute modification tools before confirmation, mechanically guaranteeing “no action without clarification.” The default gateMode is warn (logs only) to avoid suddenly blocking existing workflows after an upgrade; for a hard gate, you must manually change it to strict.

Installation and Activation

Please exit any running tasks before installation. The plugin runs with the permissions of the current DSH process; you should review the repository source code and MIT license yourself before installing.

Method 1: DSH Plugin Market (Recommended)

Search for dsh-grill-first in DSH Settings → Plugins for one-click installation.

Method 2: npm Command Line

dsh plugin --profile <your profile name> add dsh-grill-first

Method 3: Local Package / GitHub Repository

dsh plugin --profile <your profile name> add /absolute/path/to/dsh-grill-first-0.1.1.tgz
dsh plugin --profile <your profile name> add github:InoriMutsumi/dsh-grill-first

Effective immediately after installation: Local testing shows that the live profile hot-loads new plugins, generally requiring no restart; if the profile is startup-type or the plugin doesn’t appear in the list, completely exit DSH and reopen it. Changes to package code require a DSH restart; configuration changes in cordis.patch.yml can take effect dynamically. The currently running version can be checked by calling grill_start and viewing the version field in the return.

Configuration

DSH Settings → Plugins → dsh-grill-first provides enable/disable options; the remaining 7 items require editing the profile patch layer cordis.patch.yml (the client plugin page does not render third-party configuration forms). Changes take effect after restarting DSH; you only need to write the items you intend to change.

Config Type Default Description
enabled Boolean true Master switch
gateMode off / warn / strict warn Whether to intercept modification tools when unconfirmed
maxQuestionsPerRound 1-6 3 Max questions per round
maxRounds 1-10 3 Max follow-up rounds
intensity gentle / standard / grill standard Follow-up intensity
bypassKeywords String Array ["直接做","跳过提问","不用问","skip"] Keywords to trigger question skip
memoryEnabled Boolean true Whether to enable two-layer memory

Example patch:

# <profile directory>/cordis.patch.yml
- id: dsh-grill-first
  name: dsh-grill-first
  config:
    gateMode: strict          # off | warn | strict
    maxQuestionsPerRound: 3   # 1-6
    maxRounds: 3              # 1-10
    intensity: standard       # gentle | standard | grill
    memoryEnabled: true
    bypassKeywords: [直接做, 跳过提问, 不用问, skip]

Two-Layer Memory

It only records content you have confirmed, does not record conversation raw text, and does not write the requirements checklist to a file.

Layer Location Content
Global Layer <profile directory>/grill-first/global.json (falls back to ~/.dsh-grill-first/global.json if not writable) General preferences
Project Layer <workspace>/.dsh/grill-first/memory.json Project background, task history (Task Name + Requirements Summary + Date)

The next grill_start will return the above content as memory_context to avoid redundant questioning. Memory is local JSON with no encryption; deleting the corresponding file clears it.

Use Cases and Notes

Suitable for: DSH users who often pass requirements verbally and want a structured confirmation checklist before starting; those who need strict gating to prevent the model from preemptively modifying the repository.

Known Limitations (Excerpted from README):

  • The gate only applies to the root agent; it does not intercept sub-agents or team members. Delegation tools (such as subagent, workflow, spawn_teammate) are also blocked before confirmation to prevent bypassing the gate.
  • The warn mode only logs; it cannot provide additional hints to the model while intercepting (limited by the tools/pre-execute event shape).
  • grill_confirm prioritizes the DSH structured questioning channel; if unavailable, it returns needs_user_confirmation: true, and the model falls back to using built-in questioning tools.
  • English skip words are matched by word boundaries (e.g., skip does not match skipList); Chinese is matched by substring.

Validated host versions include 0.2.0-rc.2, 0.2.1-rc.2. The plugin does not declare engines.dsh or @deepseek-ai/dsh peers; generally, upgrading DSH does not require changing plugin code; the only peer is @deepseek-ai/schemastery (^3.18.1).

Conclusion

dsh-grill-first turns “dig deep before starting” into protocol injection, a dual-tool workflow, and optional strict gating. It is gentle by default, skippable, and can be turned off. When needed, set gateMode to strict and utilize the two-layer memory to reduce redundant questioning.

SkillHub is a community plugin directory and has no official affiliation with DeepSeek / High-Flyer; the DSH ecosystem philosophy is “everything is a plugin,” allowing third-party extensions to be installed via the market or command line as needed.