DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Better Dsh — DeepSeek Harness 插件(DSH Plugin)
← Plugins

better-dsh

Better Dsh

让你的 dsh 为严肃的编码任务做好准备。(Tools x Schemas)^REPL。`skill://`、`ctx://`、`agent://`、`dvc://`、`dsh://`、Python REPL、将上下文作为变量、可跨压缩召回、完整上下文恢复。`hash-edit`、`dvc://browser`、将子代理作为函数使用

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

npx -y @deepseek-ai/dsh plugin --profile web add better-dsh@0.3.1-a
README兼容性版本

兼容性与来源证明

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

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

版本

0.3.1-aprerelease
2026/10/12
0.3.1stable
2026/10/12
0.3.0stable
2026/10/7
0.2.5stable
2026/10/2
查看其余 26 个版本收起版本
0.3.0-rprerelease
2026/10/11
0.3.0-gprerelease
2026/10/10
0.3.0-fprerelease
2026/10/9
0.3.0-eprerelease
2026/10/9
0.3.0-dprerelease
2026/10/9
0.3.0-cprerelease
2026/10/8
0.3.0-aprerelease
2026/10/8
0.2.5-eprerelease
2026/10/6
0.2.5-dprerelease
2026/10/4
0.2.5-cprerelease
2026/10/3
0.2.5-bprerelease
2026/10/2
0.2.5-aprerelease
2026/10/2
0.2.4-cprerelease
2026/9/27
0.2.4-bprerelease
2026/9/23
0.2.4-aprerelease
2026/9/21
0.2.4stable
2026/9/14
0.2.3-gprerelease
2026/9/14
0.2.3-fprerelease
2026/9/12
0.2.3-eprerelease
2026/9/12
0.2.3-dprerelease
2026/9/11
0.2.3-cprerelease
2026/9/10
0.2.3-bprerelease
2026/9/8
0.2.2-cprerelease
2026/9/6
0.2.2-bprerelease
2026/9/3
0.2.2-aprerelease
2026/9/3
0.2.3stable
2026/9/3
最新版
0.3.1-a
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
26.3 MB
文件数
767
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
1,778
安全扫描
✓ v0.3.1-a 扫描通过
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

Part of Super D. better-dsh is an independently installable native DSH bundle. Super Dash installs it through the native Plugin Manager; both packages use synchronized versions and independent enable/disable controls. Canonical shared specifications are in root docs/.

Better Dash — Dashr

Better provides a stateful ctx.replRuntime and the model-facing eval tool. Each DSH session has its own persistent Python child: variables, imports and definitions survive across cells, while sessions remain isolated. DashrRuntime owns the children and their lifecycle; the presentation layer exposes the Python SDK and bridges calls to the current session's host tools.

The execution path is Node → JSON lines → an unchanged, pinned OMP Python runner → Python. Better adapts the host interfaces and packages the runner resources with compiled JavaScript. No OMP package, Bun, IPython, Jupyter or ZeroMQ is required by this path. Host modules remain optional peers and keep their runtime identity; Better's own JavaScript dependencies are bundled at build time.

Native Web policies

The bundle owns independently toggleable WebTrust, mobile behavior, password-page and onboarding contributions through native DSH interfaces. Native WebServer/HMR and CLI listener policy remain in place. dashr-welcome-notice shadows the native welcome entry and calls its public completion callback; disabling that component restores the native welcome item.

Super Dash installs Better as a separate native bundle. ../dev-webmcp is a development-only test bundle and is not shipped in either product tarball.

Install and interpreter

npm install better-dsh

Better uses an existing Python interpreter. An explicit python setting (or DASHR_KERNEL_PYTHON) takes precedence; otherwise discovery checks the active virtual/Conda environment, an existing workspace .venv or venv, then PATH python3 and python. Candidates are actually probed, and a broken automatically discovered candidate does not hide a working fallback. Relative explicit paths resolve against the session workspace. No CPython implementation or Python3.11 version is selected. The packaged dill0.4.1 checkpoint helper requires Python >=3.9.

Better does not install Python, invoke uv/pip, or create a virtual environment. When none of the existing candidates works, the error lists the attempts and asks for an existing interpreter or a Python installation. checks availability without changing the environment. The runner and dill sources ship in the package; runtime checkpoints belong under the native profile home, and package upgrades do not require rebuilding a package-local Python environment.

npm run kernel:check

The old kernelEnvDir, kernelPythonVersion and kernelAutoInstall provisioning fields and kernel:venv command are removed. Existing package-local .venv-kernel / .uv-cache directories are no longer selected automatically or modified; an existing interpreter can still be selected explicitly. A checkpoint made with another interpreter/environment may be incompatible and produces the usual explicit recovery notice; it is never replayed into a new environment.

The original OMP runner's source commit/hash and MIT license, and dill's source hashes/version and BSD-3-Clause license, accompany the packaged resources. Better's integration code is separate from these original files. OMP-specific Agent helpers are not exposed as DSH features.

Configuration

Runtime fields remain configurable through the ordinary Cordis row. The implementation's schema is authoritative; the principal controls are:

FieldDefaultMeaning
pythonautomatic discoveryExisting executable name/path; explicit selection bypasses discovery.
startupTimeoutMs30000Budget for child startup and initialization.
runTimeoutMs120000Wall budget per user cell.
interruptGraceMs2000Grace after an interrupt before terminating an unresponsive child.
interruptConfirmMs250Delay before confirming an interrupt that has not finished the cell.
disposeTimeoutMs5000Bound on graceful child teardown before forced cleanup.
snapshotTimeoutMs30000Budget for internal save/restore operations.
maxOutputBytes67108864Cap for serialized logs, completion and error output; overflow is reported.
snapshotDirnative profile checkpoint directoryExplicit directory overrides the native profile default; "" disables persistence and retains only live process state. Standalone runtimes must explicitly configure persistence.
snapshotSizeCapBytes268435456Checkpoint payload cap; failed or over-cap saves preserve the previous committed generation.
usernamedashrRetained compatibility field.

Cells and recovery

One eval call runs one Python cell. Top-level await works and top-level return is invalid. The final expression supplies the completion value; a final None or statement produces no value. Non-JSON completions return repr text. Printed stdout/stderr become logs. Tools use await tool.<name>({...}) and failures raise ToolCallError.

Operations for one session serialize, including initialization, user cells, checkpointing, variable access and reset. Different sessions can execute concurrently; one cell can fan out independent asynchronous host tool calls.

Completed cells attempt a checkpoint, including cells that raise after changing state. The helper saves an admitted user object graph, preserving shared references among retained values. Serialization failures, resource exclusions and partial coverage are reported to the model. A complete generation is committed atomically; a failed attempt before commit retains the previous valid checkpoint. If interruption prevents confirmation of the commit, Better reports that uncertainty.

On a fresh child, Better validates and attempts restoration once before admitting user code. The notice identifies the saved cell and any omissions. A damaged or incompatible checkpoint starts empty and reports why. Runner plumbing, tool bindings and OS resources are excluded. Current tools are recreated from the host; files, sockets, subprocesses, threads, locks, connections, environment mutations and external side effects are not restored as a Python process.

A dying or interrupted cell may already have performed side effects. Better never automatically retries it or blindly replays historical cells. Read the recovery notice and inspect real state before deciding which work to repeat. reset: true clears the session's memory and disk checkpoints.

For the full boundary and source provenance contract, see the runtime guide and spec.

Testing

npm run typecheck
DASHR_TEST_PYTHON=python3 npm test

Tests create real Python children and dispose their contexts. Stdlib-only interpreter coverage verifies that external kernel packages are unnecessary. Consumer acceptance additionally requires the root dual-tarball launcher and dev3 installed behavior; source tests and process liveness alone are insufficient.


Presentation half (eval transport, SDK, bindings)

The DASHR agent-plane presentation (blueprint §7.4): the plugin half that presents the persistent-kernel runtime to the model as cells on one persistent Python runner. It contributes:

  • eval — the cell transport tool: one call = one cell on the calling session's kernel (the ctx.replRuntime service). Variables, imports, and definitions survive across calls. Nested tool calls ride the host registry's native scheduling pipeline as await tool.name({...}) inside the cell — one positional arguments object per call, keyword arguments rejected. Every registry-visible tool is bound as a member; the send_message bridge callable joins them in the same catalog block.
  • dashr:tool-catalog — a generated Python SDK prompt section: one async def name(args) -> Output per visible tool (flat tool.* shape) plus the cell contract (persistent namespace, completion-value rules, ToolCallError, sub-call concurrency).
  • The model-direct collapse — an assembly filter leaves eval the only contributed tool schema, and a monotonic guard denies a model-direct call naming anything else with the route back into a cell. Both are scoped to the mounting composition, so a PTC (native Code Mode) preset in the same process keeps its own presentation.
  • Masking (ADR-0002) — exactly two upstream tool names are displaced from the model's surface (send_message and the child-scoped report), collapsed into the single dual-direction send_message bridge. Every other delegation tool (subagent, subagent_fork, list_agents, interrupt_agent, workflow, ralph) stays directly exposed as a native tool.* binding — the model calls it exactly as the host ships it. Masking is presentation-only: the registry is never touched.

Removed in v0.1.8b: the refine Continual Harness and the compact REPL bridge (harness/refine became third-party territory; context compaction is the host runtime's business, not the REPL's).

Install

Install this package independently with the native plugin command. Use Super Dash instead when you also want the Foreign Agent Hub:

# 1. plugin — the pnpm registry-metadata cache can lag a fresh npm publish
#    by minutes-to-hours, so drop it first, or `@latest` resolves the OLD
#    version right after a release:
rm -rf ~/.cache/pnpm
dsh plugin --profile web add --config.auto-install-peers=false better-dsh@latest

# 2. restart the running instance:  systemctl --user restart dsh

Notes: --config.auto-install-peers=false is MANDATORY — the profile already resolves @deepseek-ai/* peers through the harness install; letting the package manager auto-install them adds a second, divergent copy of cordis and friends. The version is deliberately unpinned (@latest).

Coexistence with a PTC Code-Mode session

eval is our own transport name (the registry reserves run_code), so a Code-Mode preset (@deepseek-ai/dsh-agent-tool-presentation with mode: code over the host-plane worker-thread codeRuntime) composes beside a DASHR session in one process: the PTC agent's assembly shows run_code plus the TS tools:sdk section, the DASHR agent's shows eval plus the Python dashr:tool-catalog, and neither execution path touches the other's runtime.

Composition

import dashr from 'better-dsh'

ctx.plugin(dashr, { maxParallelSubCalls: 10 })

One plugin, one row: apply mounts DashrRuntime first (providing ctx.replRuntime), then the presentation half injects on replRuntime — a composition without the runtime fails AT MOUNT, named in the preset's activation audit, instead of at the first prompt. The dashr bundle patch mounts the row on the HOST plane, so every agent in every preset sees the eval tool (agent → preset → global).

Delegation and messaging

The upstream delegation tools stay REGISTERED, EXECUTABLE, and directly bound — subagent, subagent_fork, list_agents, interrupt_agent, workflow, ralph are ordinary tool.* members the model calls exactly as the host ships them. Two names are displaced by the single send_message bridge (ADR-0001): upstream send_message (the parent→child downlink) and the child-scoped report (the child→parent uplink) collapse into one dual-direction channel:

  • await tool.send_message({"receiver": "child", "message": ..., "subagent_id": ...}) delivers down through the tool layer;
  • await tool.send_message({"receiver": "parent", "message": ...}) reports up through the SERVICE layer (ctx.subagents.reportFrom(...)) — live continuable children only; a root agent gets a structured UNAUTHORIZED.

Every binding returns structured JSON; errors are a FIELD on the result, never a host crash — a missing ctx.subagents service, a depth cap, an unknown id, or an infrastructure rejection all map to an error string.

Config

FieldDefaultMeaning
maxParallelSubCalls10Cap on one cell's overlapping sub-calls (native scheduler contract; 1 = strictly serial).
(runtime keys)—The runtime slice (python, snapshotDir, timeouts, caps, kernel-env knobs) is documented in the Configuration table above.

Tests

npm install
export DASHR_TEST_PYTHON=python3  # or an explicit supported interpreter
npm run typecheck
npm test                # vitest --run

The suite needs a supported Python interpreter; the runner and checkpoint serializer are supplied by Better. DASHR_TEST_PYTHON selects the test interpreter.

Relationship to upstream

Structure mirrors @deepseek-ai/dsh-agent-tool-presentation and the Code Mode half of @deepseek-ai/dsh-tools (0.1.1-rc.2), re-pointed at the vendored replRuntime Service Definition. See the module docs in src/index.ts for the deliberate deltas (eval vs run_code, ordinary scoped registration, guard-based collapse, mirrored tools/code-dispatch-log waterfall).