DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-auto-answer

Auto Answer

DSH 插件:使用 LLM 回答 ask_user_question 提示。仅支持选项问题,失败时回退到人工界面。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Samuel-Ku/dsh-auto-answer#908d70d1dab5f5dc27b4b81362f586169965edd4
README兼容性版本

兼容性与来源证明

Auto Answer 以 dsh-auto-answer 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/29

版本

0.1.0stable
2026/9/29

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片Client Ui Model Capabilities@linxin666/dsh-client-ui-model-capabilities为自定义 pi-ai 提供商声明每个模型的能力(图像输入和推理力度),可直接在 Models 设置卡片中编辑;写入官方 llm-pi-ai 设置命名空间,不更改 DSH 源代码。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式Commandcode Provider@mars-sea/dsh-commandcode-provider适用于 Command Code 的非官方 DeepSeek Harness LLM 提供商插件,移植自 pi-commandcode-provider(MIT)。注册“commandcode”提供商路由,并在 Models 页面添加卡片和实时模型目录。

README

dsh-auto-answer

A DeepSeek Harness plugin that answers ask_user_question prompts with an LLM, so option-style clarifying questions stop interrupting the operator.

When an agent calls ask_user_question, DSH pauses the turn and shows a popup. This plugin steps in front of that popup and picks an option itself — but only when it is confident, and only for questions that actually offer options. Everything else falls through to the normal popup, unchanged.

Why this is not dsh-yolo-mode

Both plugins auto-answer, but they sit on different seams:

dsh-yolo-modedsh-auto-answer (this)
Seamctx.approval → approval/requestctx.userQuestions → user-questions/request
Triggera sandbox escalation (escalate sandbox to <mode>: …)the ask_user_question tool
Default answererthe host approval answererdsh-api-remotes → browser popup
When it firesonly from a mode strictly narrower than the targetin any mode, including danger-full-access

A danger-full-access session produces no sandbox escalations at all: WIDER_MODES in @deepseek-ai/dsh-sandbox has no entry for danger-full-access, so an escalation throws before the approval seam is ever reached. The popups an operator sees in full access are ask_user_question — which is exactly what this plugin handles.

Scope: option-only, and fail-closed

The plugin claims a request only when it can answer every question from that question's own option labels. Everything else calls next(), so the ordinary popup answers it:

  • any question without options — free text needs facts only the operator has (a path, a secret, a personal preference, a business decision);
  • no judge.provider / judge.model configured, or no llm service mounted;
  • a verdict that is not {"confident": true};
  • a reply that is not JSON, or a label that is not one of that question's options;
  • an unanswered question, or the wrong number of picks for a single-select question;
  • timeout, abort, stream error, or concurrency overflow.

There is deliberately no "guess anyway" path. An answer invented on the operator's behalf is worse than one extra popup.

How it hooks in

ctx.userQuestions.ask() runs a Cordis waterfall on user-questions/request, whose final fallback rejects with NO_PROVIDER. This plugin registers a listener with { prepend: true }, so it runs before the browser answerer:

ctx.effect(
  () => ctx.on('user-questions/request', handler, { prepend: true }),
  'auto-answer: user-questions answerer',
);

Returning { answers: [...] } claims the request; returning next() leaves it to the human.

Context

The decision uses the question text plus a truncated excerpt of the session's own user/message and assistant/message history (judge.contextChars, default 6000 characters, newest turns kept). Messages whose source is agent-instructions are skipped.

That excerpt is the only session data sent to the model provider — worth knowing when the provider is remote.

Configuration

All fields are optional. Set them as the plugin row config:

FieldTypeDefaultMeaning
enabledbooleantruefalse = never answer, always show the popup
judge.providerstring''LLM provider route; empty disables answering
judge.modelstring''model id; empty disables answering
judge.systemPromptstringbuilt-inoverride the answering prompt
judge.timeoutMsnumber60000per-request deadline
judge.maxTokensnumber4096output budget (reasoning models want headroom)
judge.concurrencynumber2in-flight answers; overflow delegates
judge.contextCharsnumber6000transcript budget sent to the model
auditFilestring~/.dsh/logs/auto-answer.jsonlJSONL trail

Example:

- id: auto-answer
  name: dsh-auto-answer
  config:
    enabled: true
    judge:
      provider: my-provider
      model: my-model
      timeoutMs: 60000
      maxTokens: 4096
      contextChars: 6000
    auditFile: /home/me/.dsh/logs/auto-answer.jsonl

Install

dsh plugin --profile web add /path/to/dsh-auto-answer

The bundle's cordis.patch.yml inserts the auto-answer entry; override its config by id in the profile's cordis.patch.yml (do not re-insert it — that fails with duplicate loader entry id).

For a path or link: install, keep the checkout under $DSH_HOME/profiles/ so Node resolves the @deepseek-ai/* peers from $DSH_HOME/profiles/node_modules.

A new plugin module only mounts on a DSH restart; afterwards config edits reload live under patchReload: live.

Audit trail

One JSONL line per request, at auditFile:

{"time":1790422374944,"sessionId":"session-…","questionIds":["preset"],"outcome":"answered","answers":[{"id":"preset","selected":["permissive"]}]}
{"time":1790422375001,"sessionId":"session-…","questionIds":["key"],"outcome":"delegate","error":"BAD_OUTPUT","message":"reply did not answer every question with valid option labels"}

outcome is answered or delegate; delegate carries the error code that sent the request to the human (BAD_OUTPUT, TIMEOUT, STREAM_ERROR, NO_ADAPTER, OVERLOAD).

Tests

npm install
npm test

30 tests in two layers:

  • test/logic.test.mjs — config normalization, tolerant JSON extraction, the strict option-label validator, transcript building.
  • test/probe.test.mjs — mounts the plugin on a real Cordis context and drives the actual user-questions/request waterfall. It asserts both halves of the contract: a confident verdict claims the request and the human answerer never runs, and every doubtful path delegates to it.

The devDependencies exist only so the tests run from a bare clone; at runtime the plugin resolves its @deepseek-ai peers from the DSH install. The suite is verified against both 0.1.5-rc.2 (the version shipped inside DSH 0.1.5) and the published 0.1.7-rc.2 peers.

License

MIT — see LICENSE.