DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-cuda

Cuda

通过 DeepSeek Harness 在本地 CUDA GPU 上运行 Python 任务:查看设备状态、执行前台和后台任务、保存持久化作业日志,并获取峰值显存数据。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Void-LifeStream/dsh-cuda#d7a7153da6445e24ecfc02016180019087ffbbc7
README兼容性版本

兼容性与来源证明

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

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

版本

0.1.0stable
2026/10/15

相关插件

正在加载相关插件…

最新版
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 →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

dsh-cuda

Run Python on your local NVIDIA GPU from DeepSeek Harness.

Three tools plus one skill, so an agent can do numerical work on the GPU instead of occupying the CPU: device status, foreground and detached runs, durable logs, and a measured peak-VRAM figure for every run.

中文说明见 README.zh.md.

What you get

NamePurpose
cuda_statusdevice memory, utilization, GPU processes, every CUDA-capable Python on the machine, recent jobs
cuda_runsubmit Python source (code=) or a .py file (script=, plus args=); foreground or background=true
cuda_jobfollow one job: logs / wait / kill / info, by exact id, unique prefix, or latest
skill cuda-computethe local terrain, how to write the code, the traps — loaded on demand by the model

Every run gets its own directory under ~/.dsh/gpu-runs/<job-id>/:

script.py        a copy of what actually ran
_runner.py       the wrapper that records resource facts
stdout.log       full stdout (the tool returns only a tail)
stderr.log       full stderr
job.json         the durable record: pid, cwd, argv, timestamps, status
result.json      written by the wrapper: ok, exit_code, elapsed_s, peak VRAM

peak_alloc_MB comes from torch.cuda.max_memory_allocated() inside the child, so the number is measured, not estimated. A program can read DSH_CUDA_JOB_DIR to write its own artifacts there — they are listed back to the model automatically.

Five design decisions worth knowing

  1. Exceeding the foreground budget promotes a run to background instead of killing it. A two-hour simulation should not die because the caller stopped waiting. The result comes back with status: running and a note; follow it with cuda_job. Only an explicit cancellation actually terminates.
  2. Background runs are detached and survive a harness restart — again on purpose, because long compute should not be tied to a UI lifecycle. The cost is that "leftover" jobs are found by asking, which is what cuda_status is for.
  3. A detached run's outcome is settled from result.json. No parent is left to record the exit code, so once the pid disappears the wrapper's own fact sheet decides done/failed; only its absence means lost.
  4. The skill is registered through a borrowed provider. The catalog keeps the summary and every load re-reads the file, so editing the skill body needs no restart. Skill registration is a soft dependency: a deployment without ctx.skills still gets the tools.
  5. lib/engine.js imports nothing from DSH, so the engine is driven directly by plain Node in the test suite — see below.

Install

The package lives in a workspace directory. Install it through the harness rather than by hand-editing the profile (the bundled cordis-plugin-development skill explains why):

plugin_manager  action: install_bundle  target: <absolute path to this directory>

Bundle code is only loaded at harness startup — restart DSH after installing or editing. (The installer's applied result means the config was written and the entry imports cleanly; it does not mean the tools are already visible to a running agent.)

Configure

Precedence for every setting: explicit plugin config → environment variable → ~/.dsh/cuda.json → built-in discovery.

Environment variableMeaningDefault
DSH_CUDA_PYTHONinterpreter to usediscovered
DSH_CUDA_RUNS_DIRwhere job directories live~/.dsh/gpu-runs
DSH_CUDA_TIMEOUT_MSforeground budget300000
DSH_CUDA_MAX_TIMEOUT_MSceiling for a caller-supplied budget1800000
DSH_CUDA_MAX_OUTPUT_CHARSoutput returned to the model per stream12000

~/.dsh/cuda.json is the convenient place for a machine-specific interpreter (an embedded Python, a conda env):

{
  "pythonPath": "C:\\path\\to\\python.exe",
  "pythonCandidates": ["C:\\path\\to\\python.exe"],
  "runsDir": "D:\\gpu-runs"
}

A malformed file is ignored rather than fatal.

Interpreter discovery

With nothing configured, the plugin probes every python/python3 on PATH and a few usual install locations, then picks the first candidate that exists. cuda_status reports what each one can actually do (torch version, CUDA availability, device name, bf16), and the probe result is cached for an hour.

An interpreter only counts if it has torch with CUDA. A system Python without torch is reported but never chosen. Embedded interpreters shipped with image-generation tools (ComfyUI, Stable Diffusion WebUI) work well — point DSH_CUDA_PYTHON at them.

Requirements

  • DeepSeek Harness, Node 22+
  • A CUDA-capable NVIDIA GPU with a driver new enough for the installed torch
  • A Python with torch + CUDA (the rest — numpy, numba, triton, scipy — is optional)

For writing custom kernels the plugin's skill documents what actually works: use triton if it is installed. numba.cuda needs libNVVM (shipped with the CUDA Toolkit) and fails with NvvmSupportError: libNVVM cannot be found when the Toolkit is absent — a common trap.

Tests

110 checks across three suites. All of them run with plain Node — no harness restart, no test framework:

node test/selftest.mjs    # 36  engine, against the real GPU
node test/harness.mjs     # 46  plugin: mock context drives apply(), then the tools run
node test/lossless.mjs    # 28  every tool value crosses the wire (see below)
  • selftest.mjs covers both run modes, promotion, cancellation, log tails, artifact collection and argument validation on real hardware.
  • harness.mjs builds a fake cordis context with exactly the surface the plugin uses, so apply() and every tool branch are exercised without the harness.
  • lossless.mjs deserves its own line: DSH refuses a tool value that is not lossless JSON (visitJsonValue in @deepseek-ai/dsh-api-gateway rejects undefined, NaN, -0, class instances, array holes and cycles). A single undefined field is enough to make a perfectly working tool answer value is not lossless JSON, and no mock-based test catches it. The suite reimplements that rule verbatim and adds six deliberately broken values to prove the check itself has teeth.

Known limits

  • Windows/WDDM: nvidia-smi reports no per-process VRAM and mixes graphics processes into the GPU process list. cuda_status says so rather than pretending otherwise.
  • Concurrency: cuda_run is registered as not concurrency-safe, so the harness will not overlap two runs; large concurrent jobs would compete for VRAM anyway.
  • No CUDA Toolkit integration: nvcc is never invoked. Everything runs through the interpreter, which keeps the plugin zero-install.

License

MIT — see LICENSE.