前言¶
在 DSH(DeepSeek Harness)里让模型直接动手改代码、跑命令,常见失败并不是「不会做」,而是做完才发现和你要的不是一回事。口头需求往往缺目标、范围、约束或验收标准,模型会按自己的理解补全,事后返工成本高。
社区插件 dsh-grill-first(维护者 InoriMutsumi)把「先问清再开工」做成可配置的流程:新任务先判定是否要澄清,必要时多轮追问,整理成四段清单请你确认,确认后才放行主任务。目录页见 SkillHub,源码与说明在 GitHub(MIT,当前包版本 0.1.1)。
这是什么¶
dsh-grill-first 是 DSH 插件:在任意新任务开工前插入需求澄清环节,把模糊任务问成可执行、可验收的明确需求;你在对话里确认之后,本次任务才继续。
它与「全靠系统提示里写一句请先提问」不同:插件向系统提示注入中文协议段(约 600 字,可见标记 【开工前提问协议(grill-first)】),并注册 grill_start、grill_confirm 两个工具;在 gateMode: "strict" 下,需求未确认前可拦截写文件、跑命令等变更类操作。一句话能说清的小任务,或消息里带跳过关键词时,不会被打扰。
工作流程¶
装好后无需额外操作,模型接到新任务时应先调用 grill_start。下面按 README 描述的顺序说明。
- 判定:
grill_start根据任务原文判断是否需要澄清,并返回verdict、focus_hints(该问什么)、memory_context(已知偏好,减少重复问)。 - 追问:若任务模糊,按轮提问,默认每轮最多 3 个问题、最多 3 轮,每轮基于上一轮回答继续深挖(具体上限见配置)。
- 汇总确认:问清后整理为中文四段清单(目标 / 范围 / 约束 / 验收标准),通过
grill_confirm请你确认。 - 放行或修订:选「确认,按此开工」则本次任务放行,确认内容可写入记忆;选「要改」则按反馈修订后再确认。
- 跳过:消息含「直接做」「跳过提问」「不用问」「skip」之一时立刻开工;也可在配置里关闭插件或把
gateMode设为off。
严格档位下,未确认前模型无法执行变更类工具,从机制上保证「没问清就不许动手」。默认 gateMode 为 warn(仅日志记录),避免升级后突然卡住既有工作流;需要硬门禁需手动改为 strict。
安装与启用¶
安装前请先退出正在跑的任务。插件以当前 DSH 进程权限运行,安装前应自行查看仓库源码与 MIT 许可证。
方式一:DSH 插件市场(推荐)
在 DSH 设置 → 插件里搜索 dsh-grill-first 一键安装。
方式二:npm 命令行
dsh plugin --profile <你的 profile 名> add dsh-grill-first
方式三:本地包 / GitHub 仓库
dsh plugin --profile <你的 profile 名> add /绝对路径/dsh-grill-first-0.1.1.tgz
dsh plugin --profile <你的 profile 名> add github:InoriMutsumi/dsh-grill-first
装完即生效:本机实测 live profile 会热加载新插件,一般不需重启;若 profile 为启动式或列表未出现,可完全退出 DSH 后重开。改 包代码 后需重启 DSH;cordis.patch.yml 中的配置改动可热生效。当前运行版本可调用 grill_start,看返回里的 version 字段。
配置项¶
DSH 设置 → 插件 → dsh-grill-first 提供启用/停用;其余 7 项需编辑 profile 补丁层 cordis.patch.yml(客户端插件页不渲染第三方配置表单)。改完重启 DSH 生效,只写要改的项即可。
| 配置 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled |
布尔 | true |
总开关 |
gateMode |
off / warn / strict |
warn |
是否拦截未确认时的变更类工具 |
maxQuestionsPerRound |
1-6 | 3 |
每轮最多问几个问题 |
maxRounds |
1-10 | 3 |
最多追问几轮 |
intensity |
gentle / standard / grill |
standard |
追问力度 |
bypassKeywords |
字符串数组 | ["直接做","跳过提问","不用问","skip"] |
命中即跳过提问 |
memoryEnabled |
布尔 | true |
是否启用两层记忆 |
示例补丁:
# <profile 目录>/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]
两层记忆¶
只记录你确认过的内容,不记对话原文,也不会把需求清单写成文件。
| 层 | 位置 | 内容 |
|---|---|---|
| 全局层 | <profile 目录>/grill-first/global.json(不可写时退化到 ~/.dsh-grill-first/global.json) |
通用偏好 |
| 项目层 | <工作区>/.dsh/grill-first/memory.json |
项目背景、任务历史(任务名 + 需求摘要 + 日期) |
下次 grill_start 会把上述内容作为 memory_context 返回,避免重复追问。记忆为本地 JSON,无加密;删除对应文件即清空。
适用场景与注意¶
适合:需求经常口头带过、希望开工前有结构化确认清单的 DSH 用户;需要 strict 门禁防止模型抢先改仓库时。
已知限制(摘自 README):
- 门禁仅对根 agent 生效;子 agent / 团队成员不拦。委派类工具(如
subagent、workflow、spawn_teammate)在未确认前也会被拦,防止绕过门禁。 warn档位只能记录,无法在拦截同时给模型额外提示(受tools/pre-execute事件形态限制)。grill_confirm优先走 DSH 结构化提问通道;不可用时返回needs_user_confirmation: true,由模型用内置提问工具兜底。- 英文跳过词按词边界匹配(如
skip不命中skipList);中文按子串匹配。
宿主侧已验证版本包括 0.2.0-rc.2、0.2.1-rc.2。插件不声明 engines.dsh 或 @deepseek-ai/dsh peer,一般升 DSH 不需改插件代码;peer 仅 @deepseek-ai/schemastery(^3.18.1)。
结尾¶
dsh-grill-first 把「开工前先刨根问底」做成协议注入、双工具流程与可选 strict 门禁,默认温和、可跳过、可关。需要时把 gateMode 调到 strict,并善用两层记忆减少重复提问。
- 社区目录:https://www.skillhub.cn/plugins/InoriMutsumi/dsh-grill-first
- 仓库与完整文档:https://github.com/InoriMutsumi/dsh-grill-first
SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,可按需从市场或命令行安装第三方扩展。