dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
一个「先确认、后执行」的 DSH Agent 预设:模型先把需求拆成子需求,用一次问卷逐题确认(选项、多选、手动填写、每题带通俗解释),你提交之后才开始执行。
这个包是一个组合包,包含两半:
@deepseek-ai/dsh-agent-preset,预设选择器里出现 需求确认。它同时通过 ./tool 注册 ask_user_question 工具,schema 多一个每题可选的 detail。目标客户端:DSH 桌面端 0.2.1-rc.1 / 0.2.1-rc.2。
用法:用这个模式新建会话 → 描述任务 → 回答模型发来的问卷并提交。模型只在提交后执行;需要授权的操作会在审批面板显示模型写的 justification。
dsh-preset-requirement-confirm@1.3.0(或选择本地源码目录)。ask_user_question:每题显示一段说明(detail)、若干选项(含 以上皆可)以及手动填写入口。justification。standard 预设的差异对齐 0.2.1-rc.1 / rc.2 的 standard 组合,只做两处改动:
prefix 增加四步工作流(拆解 → 问卷 → 等待确认 → 授权说明);@deepseek-ai/dsh-tool-ask-user 行,由本包的 ./tool 注册同名工具,schema 多一个可选的 detail 字段。其余行与 standard 完全一致(persona、agent-instructions、time-context、bash/pwsh、fs、jobs、schedule、skill、goal、计划模式、压缩、委派与 workflow-ptc、todo、web、present、plugin-manager、plugin-market)。
同名注册是刻意的:问卷卡片与工具行靠 ask_user_question 这个名字关联,改名会破坏「关闭卡片后从工具行重新打开」等集成。
出厂问卷卡片(dsh-client-ui-user-questions)把每题的 detail 渲染成卡片滚动区里第一个不带 role 的子元素,但样式只给它 margin: 0 2px 8px,没有左右内边距,于是说明文本贴着卡片边缘,而标题内缩了 24px。
浏览器半区注入一条规则:
[data-question-scroll] > div:first-child:not([role]) {
margin-inline: 0;
padding-inline: 24px;
color: var(--dsw-alias-label-tertiary);
}
选择器锚定结构而不是 class 名:CSS Module 的 class 名每次构建都会变,而 data-question-scroll、不带 role 的说明块、带 role 的选项块是稳定的。没有 detail 的题目,第一个子元素就是选项块(带 role),因此规则不会误伤。样式节点挂在插件 fiber 上,禁用或重载时自动移除。
data-question-scroll 或调整子元素顺序,样式会静默失效,但不会破坏布局。data-question-scroll。justification,不修改客户端。目标客户端 0.2.1-rc.2。全部 JavaScript 都不 import @deepseek-ai/*:host 半区只用 ctx.tools.register() 与 ctx.userQuestions.ask(),client 半区只用浏览器模块加载器与 DOM。
dsh-preset-requirement-confirm/
├── package.json # dsh.bundle.patch(host 补丁)+ dsh.client(浏览器半区)
├── cordis.patch.yml # 预设声明 + bundle 级行
├── lib/index.js # bundle 行 host 半区:惰性
├── lib/tool.js # 预设行:注册带 detail 的 ask_user_question
├── lib/client.js # 浏览器半区:说明文本对齐与配色
└── README.md
在 插件 里禁用或移除该组合包,然后重启客户端。
node --check lib/index.js
node --check lib/tool.js
node --check lib/client.js
node tools/validate.mjs
MIT。与 DeepSeek 官方无隶属关系。