DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-ban-wait

Ban Wait

拒绝会把智能体循环钉住的工具参数:阻塞等待、临场延长超时、以及(可选)同步长任务。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:baldovinmarques391-design/dsh-ban-wait#4580d47c6c5b729a59cfc81e312fab9065fe722f
README兼容性版本

兼容性与来源证明

Ban Wait 以 dsh-ban-wait 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.1stable
2026/10/17

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Headless@deepseek-ai/dsh-headlessdsh one-shot bundle:基于 dsh-base 的直接核心 Agent/Session 运行器,不包含 Host、HTTP 或浏览器层Experimental Agent Team Profile@deepseek-ai/dsh-experimental-agent-team-profile在一个实验性捆绑包中提供 Agent Teams 协作、工具和 Web UIExperimental Ralph Bundle@deepseek-ai/dsh-experimental-ralph-bundle使用全新代理执行明确请求的重复工作。Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-ban-wait

One Host plugin that refuses tool arguments which would park the DSH agent loop. The investigation that produced it — every blocking path in this composition, with file:line — is in FINDINGS.md.

It exists because the shell command timeout is not a ceiling. pwsh-sandbox's timeoutMs: 1000 promotes a long command to a background job, but the model can pass timeoutMs: 180000 on the call itself and the executor honors it up to maxTimeoutMs (600000 ms by default) — three minutes inside one tool call. The same class of leak is job_output { wait: true }, clamped only by a 10-minute default. This plugin makes "no single call parks the loop" a property of the tool registry instead of a property of the model's discipline.

Files

FileRole
index.jsthe plugin: policy + global ctx.tools.guard()
check.mjsoffline self-check of the policy (30 assertions, no DSH process)
bundle-check.mjspre-install check: replays what the plugin page inspects, with the harness's own patch loader
cordis.patch.ymlthe bundle's patch: inserts the Host-plane row
package.jsondsh.bundle.patch → cordis.patch.yml; no dependencies
FINDINGS.mdthe escape inventory and root-cause analysis
tools/wait-audit.mjsaudit every session on an instance for parked foreground time; tools/WAIT-AUDIT.md states the metric
tools/speed-audit.mjsper-conversation tok/s, actual vs with the parked time removed, plus the line chart; tools/SPEED-AUDIT.md states the metric

Policy

Config fieldDefaultMeaning
maxBlockingMs1000ceiling for any per-call blocking hint the model supplies
denyWaitTools["job_output"]tools whose wait: true is refused
timeoutHintTools["pwsh", "bash"]tools whose timeoutMs / timeout_ms is checked against maxBlockingMs
requireBackgroundTools[]tools that must be called with run_in_background: true

A refusal is a Error: … tool result that names the ban, clears the background job of blame, and states how to re-issue the call, so the model recovers in one step. An unusable config value is logged and replaced by its default rather than thrown: a typo here must not fail the instance's boot.

Install

Through the plugin page — the only channel that keeps the plugin visible in the inventory with its own toggle:

  1. 添加插件 → paste the absolute project directory D:\桌面\DSH与自动化\dsh-ban-wait. A local directory is recognised by isAbsolute() before any npm-spec parsing and never touches a registry, so the registry chooser in that dialog is irrelevant.
  2. The manager reads package.json, requires a name and a dsh.bundle, adds the dependency to the profile, then reconciles dsh.profile.bundles automatically ("new bundle dependencies activate automatically"). The plugin then appears under 已安装 with a toggle.
  3. If the result reports that a restart is required, restart the instance: a new Host module generation is not loaded into a running process.

Do not also add a raw loader row for this plugin to the profile patch. The bundle's cordis.patch.yml inserts row id ban-wait, and two rows sharing that id make id-targeted patches — the toggle, any override — reach only one of them.

Companion configuration, without which the guard is the only thing standing between the model and a three-minute call:

- id: pwsh-sandbox
  name: "@deepseek-ai/dsh-pwsh-sandbox"
  config:
    timeoutMs: 1000       # default for a command
    maxTimeoutMs: 1000    # ceiling for the model's timeoutMs argument — the line that matters
    maxOutputBytes: 10000

Verify

# the policy itself (30 assertions)
D:\dsh-v2\inst-3080\node\node.exe D:\桌面\DSH与自动化\dsh-ban-wait\check.mjs

# the package the plugin page will inspect: path, package.json, name, dsh.bundle,
# `files` coverage, and a real parse of cordis.patch.yml by the harness loader
D:\dsh-v2\inst-3080\node\node.exe D:\桌面\DSH与自动化\dsh-ban-wait\bundle-check.mjs

Neither proves activation — that happens when the profile mounts the bundle's layer, which the plugin page reports in its install result.

Live probes (each returns a refusal instead of executing):

job_output   { job_id: "pwsh-1", wait: true }        → Error: … (ban-wait): job_output was called with wait: true
pwsh         { command: "ok", timeoutMs: 180000 }    → Error: … caps how long one tool call may hold the agent loop at 1000 ms
pwsh         { command: "ok" }                       → runs normally
workflow     { script: "return 1" }                  → runs synchronously (not banned by default)

Verified on instance 3080: both refusals fire, plain calls and non-blocking job reads behave exactly as before, and the row mounts and unmounts live — no restart was needed for any of it.

Boundaries

  • The guard sees arguments, not duration. A tool with no blocking argument that simply runs long is out of its reach; that is what requireBackgroundTools is for, and what the shell maxTimeoutMs cap already handles for commands.
  • ask_user_question is deliberately never banned: blocking on a human is the feature.
  • workflow and a synchronous subagent are not banned by default. They do real work inside the call, so backgrounding them changes how the result is consumed. Enable per tool when that trade is wanted:
    requireBackgroundTools: [workflow, subagent]
    

Superseded

D:\dsh-v2\inst-3080\plugins\no-blocking-job-wait\ was the first, single-rule version of this ban (it refused only job_output { wait: true }). This project replaces it; the profile patch no longer references it and its files are inert.