dsh-survey
by jinhuang712
DeepSeek Harness问卷式批量提问插件:一次性提问10+个问题(单选/多选/是/否切换/比较/开放),每题跳过,提交后全屏覆盖,两列总结
Questionnaire-style batch questioning plugin for DeepSeek Harness: 10+ questions at once (single/multi/yes-no toggle/compare/open), per-question skip, fullscreen overlay, two-column recap after submit
安装
dsh plugin --profile web add github:jinhuang712/dsh-surveyGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
问卷式提问与调查插件 for DeepSeek Harness — 通过 do_a_survey 工具一次性问 1 到 10+ 个问题,问卷式同屏呈现,填完统一提交。
| 单选 | 多选 | 是否 toggle | 对比题 | 开放题 |
|---|---|---|---|---|
| 编号行 1 / 2 / 3 | 方形 checkbox | 两行单选点 | 左右并排 Block | 多行输入框 |
什么时候用得上
- 模型动手之前要你拍五个板。 没有它就是问一个、等一个、再问下一个——五个来回才开始干活。有了它一次问完,你在一张卡里答完。
- 答案要的是结构化数据,不是一段话。 每题回传
{ id, selected, custom?, skipped? },模型不用从「嗯第一个吧,最后一题跳过」里猜你的意思。 - 有些问题你根本不在乎。 每题都能跳过,问多了的代价是点一下,而不是来回掰扯。
模型调用 do_a_survey 后,Web UI 按 mode 呈现问卷:单题紧凑卡 / 多题内嵌画幅 / 对比题全屏浮层 / 大量简单问题的网格矩阵。所有文本支持 Markdown(代码块、引用、行内代码、加粗)与颜色({color:red}文字{/color}),提交后以对半两列 recap 展示回答。
界面预览
以下截图取自实际渲染的工具视图。卡片文案跟随 Web UI 的语言设置,这里是中文界面。
网格矩阵 — 大量简单问题的全屏浮层,一题一张卡:
内嵌 — 问卷嵌在对话画幅里,填完统一提交:
全屏对比 — 左右并排对比,正文支持 Markdown:
紧凑卡 — 单题卡片,题型完整:
安装
钉在某个 release 上装。构建产物已入库,装的时候不编译、也不经过任何 registry:
dsh plugin --profile web add "github:jinhuang712/dsh-survey#v1.1.0"
# 重启 dsh web,刷新页面
想跟未发布的提交,就跟 main:
dsh plugin --profile web add "github:jinhuang712/dsh-survey#main"
或者从本地 checkout 以 link 方式装,改了代码刷新页面即可生效:
git clone https://github.com/jinhuang712/dsh-survey.git
dsh plugin --profile web add "link:$PWD/dsh-survey"
如果你的 dsh profile 目录是 pnpm workspace,pnpm 会要求往 root 加依赖时带 -w,透传即可:dsh plugin --profile web add -w …。
装好后 do_a_survey 工具与问卷 UI 常驻可用。配套 skill dsh-survey 随安装注册(dsh.skills 声明),说明用法并在 bundle 不可用时提供动态插件兜底配方(references/dynamic-plugin-fallback.md)。
怎么用
告诉模型你想收集什么,模型会调用 do_a_survey(mode, questions)。mode 必选:
| mode | 适用 | 呈现 |
|---|---|---|
"compact" |
只有 1 个问题 | 紧凑单题卡片 |
"inline" |
多题、无对比题 | 内嵌对话流固定画幅 |
"overlay" |
含对比题、或需要更宽画布 | 全屏浮层(1180px) |
"grid" |
大量简单问题(是否/单选为主) | 全屏网格矩阵,一个问题一张卡片 |
示例:
{
"mode": "inline",
"questions": [
{ "id": "q1", "question": "你用的**操作系统**?", "options": [{ "label": "macOS" }, { "label": "Linux" }] },
{ "id": "q2", "question": "希望支持哪些题型?", "multi_select": true, "options": [{ "label": "单选" }, { "label": "对比" }] },
{ "id": "q3", "kind": "boolean", "question": "需要自动保存进度吗?" },
{ "id": "q4", "question": "其他建议:" }
]
}
题型
| 题型 | 触发 | UI | 答案回传 |
|---|---|---|---|
| 单选 | options + 无 multi_select |
编号行(1 / 2 / 3) | 选中选项的 label |
| 多选 | options + multi_select: true |
方形 checkbox | 全部选中项的 label,按选项顺序 |
| 是否 | kind: "boolean" |
两行单选点;grid 里是分段开关(不要传 options) | "yes" 或 "no" |
| 对比 | kind: "compare" + compare: {left: {title,text}, right: {title,text}} |
左右并排 Block(建议 overlay) | "left" 或 "right" |
| 开放 | 无 options、非 boolean/compare |
多行输入框 | 空 selected,正文在 custom |
答案对象为 { id, selected, custom?, skipped? }。题目 id 在同一份问卷内必须唯一;30 分钟无人提交的问卷以超时失败,不会把调用挂死。
特性
- Markdown 全渲染:题目、选项 label/description、对比块、recap 均通过官方安全渲染器(micromark + 协议白名单 + shiki 高亮),支持代码块、引用、行内代码、加粗
- 颜色:
{color:red}文字{/color}(支持颜色名 /#hex/rgb()),在题目、选项、对比块中均可使用 - 跳过/恢复:每题 ✕ 灰化跳过,↺ 恢复;提交为
skipped: true - 全屏浮层:
mode: "overlay"全屏居中(遮罩 + 1180px),突破对话流 748px 列宽 - grid 矩阵:
mode: "grid"大量简单问题全屏网格,卡片等高、toggle 贴底、逐卡跳过;对比题自动降级为左右二选一 - 可读 recap:严格对半两列,逐行"题目 → 答案"
- 无障碍:radio/checkbox 语义 + 键盘焦点环
架构
- Host half(
lib/index.mjs):Cordis entrydefineTool注册do_a_survey,带 30 分钟timeoutMswebServer.register提供/api/dsh-survey/submit|cancelexecute按exec.callId挂起等待;提交、取消、中止、超时、卸载五条路径都会释放
- Client half(
lib/client.js):__ModuleLoader__.loadbundle,注册tool.call.toolviewkey=do_a_survey;四档模式(compact/inline/overlay/grid)+ Markdown 与颜色渲染 +fetch提交 - Skill(
skills/dsh-survey/SKILL.md):用法指南 + 动态插件兜底配方(references/dynamic-plugin-fallback.md)
验证
先确认装上了:
__DSH_BOOT__含dsh-surveyclient 行,/plugins/dsh-survey/client.js返回 200cordis_inspect_query(Tool.listTools)能看到do_a_survey
再发一轮覆盖四种 mode 的问卷,逐项对照卡片行为:
| 看哪 | 应该是什么样 |
|---|---|
| 单选题 | 前置是编号座 1 2,不是圆点——圆点只出现在是否题 |
mode: "grid" |
所有卡片同一尺寸,每张右上角都有跳过 ✕,代码块被压成行内而不是把卡片撑高 |
| 对比题 | 两侧都有底面;选中那侧浮起,描边更亮、序号反白 |
带 (推荐) 的选项 |
渲染成徽章,label 里不再残留该标记——提交后的 recap 里同样不该出现 |
Markdown 与 {color:…} |
加粗、行内代码、围栏代码块正常渲染;带颜色的词与前后文字在同一行 |
| 界面语言 | 跟随 Web UI 的语言设置,切换后卡片立即重新渲染 |
卸载
- 从 web profile 的
cordis.patch.yml移除dsh-surveyinsert 行 - 从 web profile 的
dsh.profile.bundles移除dsh-survey依赖并pnpm remove
License
MIT
原始 README: https://github.com/jinhuang712/dsh-survey/blob/main/README.zh.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。