Help Me Say / Say It For Me: Organize scattered requirements into directly executable agent prompts

Preface

When assigning tasks to AI agents, people often only write fragmented descriptions like “Make a weekly report tool that aggregates GitLab commits and sends them via Feishu.” What agents truly need are the goal, background, deliverables, constraints, acceptance criteria, output format, and a list of missing information explicitly stated. Doing this yourself requires repeated follow-up questions and rewriting, which is costly and prone to omissions. The plugin introduced below puts this step into the input box of DeepSeek Harness (DSH): it reads the draft, restates the intent, fills in deliverables and constraints, lists pending confirmation questions, and finally generates a directly executable Prompt to write back into the input box, allowing the user to decide whether to send it.

The plugin is maintained by coreyleung-art, with the repository at coreyleung-art/dsh-requirement-copilot, and is categorized as a “Workflow” in the community directory. The display name is “帮我说 / Say It For Me”, but the technical package name, bundle ID, command, and tool identifier remain the requirement-copilot series to ensure compatibility with existing installations and calls. As of 2026-11-05, the repository tag is v1.8.0, has 0 GitHub stars, and is licensed under MIT.

What is it

It is a DSH Profile Bundle, divided into a Host side (generation core, commands, Agent tools, skills) and a Client side (Web GUI panel, the ✨ button next to the input box). The runtime configuration is empty (config: {}), the plugin itself has no npm dependencies, and no build steps are required; the Client only requires require('react') from the host module.

It performs four main functions:

  1. Collect: Treats text in the input box, chat history, and verbal requirements as raw material.
  2. Analyze and Complement: Restates the true intent, extracts deliverables, constraints, and assumptions, and lists gaps that need user input.
  3. Translate to Task: Uses a fixed template to generate a directly executable Prompt and provides a version in another language.
  4. Write back to Input Box: One-click insertion or replacement; it does not automatically send.

It is not a chatbot and does not send messages on behalf of the user; it does not manage a requirements or version library; it does not include a built-in local model and does not bypass DSH’s model and credential configuration; it does not modify the host UI structure outside of Composer.

Core Features

  • Send-side Trigger Button: Clicking it when the input box has content is equivalent to one-click organization; if there are no pending confirmation questions, it writes back directly to the input box; if there are gaps, it opens the “Pre-start Confirmation” gate. If the input box is empty, clicking it opens a floating panel.
  • Floating Panel: Paste or read a draft, select the purpose, level of detail, language, and target environment, and view the result via three tabs: “Parse / Prompt / Translation”. The panel title bar is draggable, and double-clicking restores the default position.
  • Three Insertion Methods: Insert at cursor (undoable), replace the entire draft (requires secondary confirmation if draft is not empty), or copy the current tab content.
  • Restore Original Draft: After one-click organization overwrites the input box, the original text before organization can be restored.
  • Strict Output Contract: The model only outputs structured fields; the final Markdown is assembled by the Host’s fixed template, ensuring stable formatting.
  • One-time Self-repair: If structured validation fails, the error is fed back to the model for a retry; if it still fails, an error is reported, and nothing is written back to the input box.
  • Fail Not Overwrite: Truncation, invalid JSON, or model/channel failures will not overwrite user input; the floating layer provides a local template fallback, requiring manual insertion.
  • One Operation, Two Callers: The /refine-prompt command (called by the panel) and the refine_requirement Agent tool share the same generation core and validation logic.
  • Clarification Confirmation Gate: It presents one question at a time, allowing the user to select from candidate answers provided by the model or add supplementary explanations; the answer is used to regenerate clarifications without overwriting the original description.
  • Quality Self-check: The Host uses fixed rules to score 0–100 on structure, checking structure, requirement items, acceptance criteria, constraints, gaps, Chinese-English alignment, and target environment, without calling the model.
  • Scenario Presets: General / Coding / Writing / Research / Data / Automation; apply recommended purposes and detail levels with one click, and write the scenario prompt into the model message.
  • History Versions: Retains up to 10 generation results in browser localStorage per session, which can be loaded, cleared, or compared line-by-line via diff.
  • Continue Optimization: Add the next requirement to the result, up to 5 rounds; the Host uses the previous Prompt as the input for incremental modification rather than rewriting from scratch.
  • Background Generation: Starting from 1.8.0, generation tasks run in the Host background; the panel can be closed, the session switched, or the page refreshed, and the task can be queried later via jobId; at most 1 task per session and 2 globally.

Options

Option Value Description
Purpose mode agent / spec agent provides the task instruction for the agent to execute; spec is the structured requirement specification; they use different fixed section titles.
Detail detail concise / standard / detailed Controls the number of array items and Prompt length; concise has a lower output limit.
Language language auto / zh / en auto determines based on the ratio of Chinese/English in the input text; once the primary language is determined, the other language is automatically generated as the translation.
Target target generic / claude-code / codex / cursor generic is standard Markdown; the latter three add a fixed target environment prompt line after the title without changing content fields.
Scenario scenario general / coding / writing / research / data / automation Only affects content emphasis, not the output structure.

Installation and Enablement

The public release package is dsh-requirement-copilot, published to npm (latest public version 1.6.1, 1.8.0 is built and pending release). The installation command is:

dsh plugin add dsh-requirement-copilot

You can also use install_bundle in the Plugin Manager, passing dsh-requirement-copilot as the target. When installing from a local directory, first put the repository in a fixed path, e.g., D:\dsh-plugins\requirement-copilot, then in the Plugin Manager select “Install from Local Directory” and pass the absolute path of the directory as target.

Environment requirements: DSH Desktop (Web GUI) profile, with commands Remote and llm service mounted in the combination; the plugin itself has no npm dependencies and requires no build; running tests requires Node ≥ 20. The development and verification environment recorded in the README is Windows + DSH 0.2.1-rc.5 desktop profile + Node 24.

After installation, verify by the following items:

node --test
node evals/run-eval.mjs

You can see “帮我说 / Say It For Me” in Settings → Plugins; the ✨ button appears in the input box toolbar; clicking ✨ when the input box is empty opens the floating layer; the / command directory contains refine-prompt; all 27 test cases from node --test in the repository pass, and node evals/run-eval.mjs validates 20 quality evaluation sets. The uninstall method is to disable or remove the bundle dsh-requirement-copilot in the Plugin Manager.

Typical Usage

The most direct path: write a colloquial requirement in the input box, keep the original wording and do not summarize first, then click ✨. If there are no pending confirmation questions, the Prompt will be written back to the input box, and the floating layer will automatically close; if there are gaps, it will not write back but instead open “Pre-start Confirmation”, answering one question at a time by selecting candidate answers or adding explanations. The button for the last question becomes “Regenerate with Answer”, or you can “Skip and use current result directly”. Afterward, check the written-back content, edit and send it yourself; the plugin will not auto-send. If the input box is cleared during the organization process, the plugin will abort the current generation and clean up the panel state; if the input box content is changed again after generation, the plugin will not overwrite it but will prompt “Input box content has changed”.

The floating panel is suitable for manual organization: click ✨ when the input box is empty to open it; you can manually input/paste requirements, or click “Read Input Box” to fill the current draft into the panel. Switch purpose/detail/language and click “Generate Prompt”. The three tabs in the result area are Parse (requirements restatement, intent, deliverables, constraints, assumptions, pending questions), Prompt (final fixed format), and Translation (another language version). If the input box already contains the same content during insertion, the plugin will judge it as “Already exists” and skip it to avoid duplicate appending.

When you need to delegate the organization capability to the model, use the Agent tool refine_requirement. The only required parameter is rough (original requirement description); the rest are context, previousPrompt, revisionNote, clarifications, mode, scenario, target, detail, and language. For example, to ask the model to organize a one-sentence requirement into a coding task:

/refine-prompt {"rough":"给设置页加深色模式开关","mode":"agent","scenario":"coding","target":"generic","detail":"standard","language":"auto"}

/refine-prompt is a human-machine command specific to the panel; input is not written to the command log, and it returns {ok:true, data} or {ok:false, code, error}. When continuing from a previous result, pass the previous Prompt and a continuation requirement (e.g., “Make acceptance criteria stricter, add failure handling”) to the model; the Host will perform incremental modification rather than rewriting, up to 5 rounds.

How it works

The data flow enters the same generation core via two paths: the ✨ button when there is text in the input box, and the floating panel when the input box is empty. The Client side is responsible for assembling the request JSON and interacting with the panel, while the Host side is responsible for calling the model, validating structured output, assembling the final Markdown, performing quality self-check, and returning to the Client to pop up the confirmation gate when gaps occur. Validation allows only one self-repair retry; if it fails, it reports an error and does not write back to the input box.

On the model side, there is an additional layer of requirement-refine runtime skill (registered via ctx.skills.register(...), not relying on the file system skill provider), with modelInvocable: true and userInvocable: false. It guides the model on when to call refine_requirement, how to fill parameters, and how to handle gaps and failures; the user-side entry remains the ✨ panel and /refine-prompt.

Suitable Scenarios and Notes

Suitable for developers doing requirement organization in DSH: turning verbal requirements, chat history, and half-finished drafts into executable task instructions or requirement specifications, especially in scenarios requiring bilingual output or explicit listing of pending confirmation assumptions. It only runs within the permissions of the current DSH process; its capability boundary is “organize and write back Prompt”, it does not modify the requirements library, nor does it send messages on behalf of humans.

Points to note:

  • Check the source code and license (MIT) before installing; the source code and distribution package share the same name, but the remote repository is the Gitee private repository coreyleung/requirement-copilot, while the npm package is its primary distribution channel;
  • It depends on the host’s commands Remote and llm service; models, credentials, and costs still follow DSH’s existing configuration; the plugin does not include a built-in model;
  • Quality self-check only performs structural checks without calling the model, nor does it represent manual review; for detailed scoring criteria, see the repository evals/rubric.md;
  • History versions exist in browser localStorage (key prefix rcp-history:), retaining at most 10 entries locally, not synchronized or uploaded; background task results are cached in Host memory for 30 minutes; task results are lost after DSH process restart, but completed results are written to session history and can be loaded from there.

Summary

It solves a focused problem: bridging the gap between “give me a rough idea” and “model-stable executable task definition”, and intercepting unconfirmed assumptions with a confirmation gate before writing back. The command, tool, and skill three entry points share the same generation core and validation; the panel completes organization and validation next to the input box without auto-sending.

Directory page: https://www.skillhub.cn/plugins/coreyleung-art/dsh-requirement-copilot
Repository: https://github.com/coreyleung-art/dsh-requirement-copilot

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye