DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Survey — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@jinhuang712/dsh-survey

Survey

面向 DeepSeek Harness 的问卷式调查插件:do_a_survey 工具可一次提出 1-10+ 个问题(单选/多选/是非/比较/开放题类型),支持四种呈现模式(紧凑/行内/覆盖层/网格),可逐题跳过,完整渲染 Markdown 和颜色,并在提交后以两栏形式回顾。B

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @jinhuang712/dsh-survey@1.1.4
README兼容性版本

说明

面向 DeepSeek Harness 的问卷式调查插件:do_a_survey 工具可一次提出 1-10+ 个问题(单选/多选/是非/比较/开放题类型),支持四种呈现模式(紧凑/行内/覆盖层/网格),可逐题跳过,完整渲染 Markdown 和颜色,并在提交后以两栏形式回顾。表单捆绑驻留于 Web profile;配套 skill 提供动态插件备用方案。

兼容性与来源证明

Survey 以 @jinhuang712/dsh-survey 发布,当前版本为 1.1.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/10/11

版本

1.1.4stable
2026/10/11

相关插件

正在加载相关插件…

最新版
1.1.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
375.2 kB
文件数
28
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 4
周下载
0
最近提交
2026/10/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-survey

Ask the user ten questions at once instead of ten times in a row.

do_a_survey is a tool plugin for DeepSeek Harness. The model sends a whole questionnaire; the user answers it in one card and submits once.

SingleMultiYes/NoCompareOpen
Numbered rowsCheckboxRadio pairSide-by-side blocksMulti-line input

When you'd want this

  • The agent needs five decisions before it can start. Without this it asks one, waits, asks the next — five round trips before any work happens. Here it asks once and you answer the lot in a single card.
  • You want the answers back as data, not prose. Each reply arrives as { id, selected, custom?, skipped? }, so the model never has to parse "yeah the first one, and skip the last question" out of a sentence.
  • Some of it you genuinely don't care about. Every question has a skip, so a survey that asks more than you want to answer costs you a click, not a negotiation.

When the model calls do_a_survey, the Web UI renders the survey by mode:

  • compact — single-question card
  • inline — embedded in the conversation column
  • overlay — fullscreen, for compare questions
  • grid — matrix of many simple questions

All text supports Markdown (code blocks, blockquotes, inline code, bold) and color ({color:red}text{/color}). A readable two-column recap follows the submit.

Preview

Screenshots of the real toolview, captured from the shipped bundle.

Grid matrix — fullscreen overlay for many simple questions, one card each:

Grid matrix mode

Inline — survey embedded in the conversation column, filled and submitted together:

Inline mode

Overlay compare — fullscreen side-by-side comparison with Markdown:

Overlay compare mode

Compact — single-question card with rich question types:

Compact mode

Install

From npm (the scoped name; the unscoped dsh-survey on the registry is not this package):

dsh plugin --profile web add @jinhuang712/dsh-survey
# restart dsh web, then refresh the page

Or pinned to a release — build artifacts are committed, so there is nothing to build:

dsh plugin --profile web add "github:jinhuang712/dsh-survey#v1.1.4"
# restart dsh web, then refresh the page

Or track main to pick up unreleased commits:

dsh plugin --profile web add "github:jinhuang712/dsh-survey#main"

Or from a local checkout, linked so edits show up on refresh:

git clone https://github.com/jinhuang712/dsh-survey.git
dsh plugin --profile web add "link:$PWD/dsh-survey"

If your dsh profile directory is a pnpm workspace, pnpm asks for -w before touching its root — pass it through: dsh plugin --profile web add -w ….

After install, the do_a_survey tool and its survey UI are available permanently.

The companion skill dsh-survey registers with the install (dsh.skills declaration):

  • a usage guide covering the four modes and five question types
  • a dynamic-plugin fallback recipe (references/dynamic-plugin-fallback.md) for environments without the bundle

Usage

Tell the model what you want to collect; it calls do_a_survey(mode, questions). mode is required:

modeWhenPresentation
"compact"Exactly 1 questionCompact single-question card
"inline"Multiple questions, no compareEmbedded in the conversation column
"overlay"Compare questions or wide canvasFullscreen overlay (1180px)
"grid"Many simple questions (yes/no, single)Fullscreen grid matrix, one card each

Example:

{
  "mode": "inline",
  "questions": [
    {
      "id": "q1",
      "header": "Runtime",
      "question": "Which runtime does this ship on?",
      "options": [
        { "label": "Node 20 LTS (recommended)", "description": "Matches the CI base image." },
        { "label": "Bun 1.1", "description": "Faster boot, fewer native addons." }
      ]
    },
    {
      "id": "q2",
      "header": "Scope",
      "question": "Which surfaces need the rewrite?",
      "multi_select": true,
      "options": [{ "label": "Web client" }, { "label": "CLI" }]
    },
    { "id": "q3", "kind": "boolean", "question": "Ship behind a flag first?" },
    { "id": "q4", "header": "Notes", "question": "Anything the changelog should call out?" }
  ]
}

header is an optional short heading shown beside the question number. A trailing (recommended) on a label becomes a badge.

Question types

TypeTriggerUIAnswer
Singleoptions + no multi_selectNumbered rows (1 / 2 / 3)The chosen option's label
Multioptions + multi_select: trueCheckboxEvery chosen label, in option order
Yes/Nokind: "boolean"Radio pair; segmented toggle in grid (omit options)"yes" or "no"
Comparekind: "compare" + compare: {left: {title,text}, right: {title,text}}Side-by-side blocks (overlay recommended)"left" or "right"
Openno options, not boolean/compareMulti-line inputEmpty selected, body in custom

Each answer is { id, selected, custom?, skipped? }. Question ids must be unique within one survey, and a survey nobody submits within 30 minutes fails on timeout rather than hanging the call.

Features

  • Full Markdown — question text, option labels/descriptions, compare blocks and recap all render through the official safe renderer
    • micromark + protocol allowlist + shiki highlighting
    • code blocks, blockquotes, inline code, bold
  • Color — {color:red}text{/color} (named / #hex / rgb()), usable in questions, options, compare blocks
  • Skip / restore — per-question ✕ grays out, ↺ restores; submitted as skipped: true
  • Fullscreen overlay — mode: "overlay" centers fullscreen (mask + 1180px), breaking past the 748px conversation column
  • Grid matrix — mode: "grid" fullscreen grid of many simple questions
    • every card is the same size, controls sit under the question, per-card skip
    • card text is inline-only: a fenced block collapses to inline code and hard breaks to spaces, so one long question cannot blow open the whole matrix
    • compare questions degrade to a left/right choice
  • Readable recap — strict two-column grid, one "question → answer" row each
  • Follows your language — card copy ships in English and Chinese, tracking the Web UI's language setting
    • falls back to the browser's language where that setting is unavailable
    • answers stay language-neutral, so switching never changes what the model receives
  • Accessibility — radio/checkbox semantics + keyboard focus rings

Architecture

  • Host half (lib/index.mjs): Cordis entry
    • defineTool registers do_a_survey with a 30-minute timeoutMs
    • webServer.register serves /api/dsh-survey/submit|cancel
    • execute suspends on the answer, correlated by exec.callId; submit, cancel, abort, timeout and unload each release it
  • Client half (src/ → lib/client.js): __ModuleLoader__.load bundle registering tool.call.toolview key=do_a_survey
    • runtime.js binds the host's React and UI primitives from the loader's require — they are never bundled, so the plugin shares the host's React instance
    • styles.css the stylesheet, injected once per page
    • i18n.js zh/en copy, markdown.js Markdown and colour, answers.js pick ↔ answer mapping
    • controls.js the answer controls, model.js draft state and submit/cancel
    • modes/ one file per presentation: compact, survey (inline + overlay), grid, recap
  • Skill (skills/dsh-survey/SKILL.md): usage guide + dynamic-plugin fallback recipe (references/dynamic-plugin-fallback.md)

Develop

lib/client.js and its source map are build output, committed so the GitHub install stays one line. Edit src/, then:

pnpm install
pnpm build      # esbuild src/index.js -> lib/client.js + lib/client.js.map

The host serves the map at /plugins/dsh-survey/client.js.map, so breakpoints land in src/.

Verify

It loaded at all:

  • __DSH_BOOT__ includes the dsh-survey client row, and /plugins/dsh-survey/client.js returns 200
  • cordis_inspect_query (Tool.listTools) lists do_a_survey

Then run a survey covering all four modes and check what the card does:

Look atExpect
a single-choice questionnumbered seats 1 2, not radio dots — dots appear only on yes/no
mode: "grid"every card the same size, skip ✕ in each corner, a fenced code block flattened to inline rather than inflating the card
a compare questionboth sides carry a panel; the chosen one lifts with a brighter border and an inverted number
a (recommended) optionrenders as a badge, and the marker is gone from the label — including in the recap after submit
Markdown and {color:…}bold, inline code and fenced blocks render; a coloured run stays on the same line as the text around it
the interface languagefollows the Web UI's language setting, and switching it re-renders the card immediately

Uninstall

  • Remove the dsh-survey insert row from the web profile's cordis.patch.yml
  • Remove the dsh-survey dependency from the web profile's dsh.profile.bundles and run pnpm remove

License

MIT