Back to home@YrracOwl

dsh-tool-adapt

EN: Safety and compatibility layer for non-DeepSeek models in DSH Web. 中文:面向 DSH Web 非 DeepSeek 模型的安全兼容适配层。

Stars
0
Language
JavaScript
Created
Sep 4, 2026
Updated
Sep 4, 2026
GitHub repo

Introduction

dsh-tool-adapt

English

Current release: 0.2.3 — Remote settings are capability-detected and optional, so older DSH RC hosts continue to start the plugin.

A compatibility and safety adaptation layer for non-DeepSeek model families in DeepSeek Harness Web. It guards dead escalation states, injects model-family conventions, fuses repeated failures, and provides a lifecycle-safe Settings card and optional composer pill. Its DSH 0.1.2+ remote.settings path falls back to the legacy connection API on older RC hosts.

中文

面向 DeepSeek Harness Web 非 DeepSeek 模型族的兼容与安全适配层:处理不可升级权限状态、注入模型族惯例、熔断连续失败,并提供生命周期安全的设置卡片与可选输入框胶囊。DSH 0.1.2+ 使用 remote.settings,旧版 RC 自动回退到 connection API。

Adaptation layer for foreign models in DSH web — official bundle form (host pipeline wiring + __ModuleLoader__ client, no tapIndex injection).

ONE RULE: in a "dead" session (sandbox already danger-full-access, or approval policy never) the model-facing tool schemas no longer offer sandbox_permissions / justification (remove), and calls that still carry them run with the fields stripped (strip) — no error, no loop.

  • guard — remove + strip, derived from one escalationDeadState(session) predicate.
  • L2 — DSH tool-call conventions section, gated by model family (default excludes deepseek-*).
  • L0 — consecutive-failure loop fuse: remind after N failures, optional veto.

Config is hot. When Host ctx.settings is available the plugin registers the tool-adapt namespace and an official-style expandable Settings Card (settings.plugin.item / key tool-adapt, same disclosure chrome as Shell / Agent loop) becomes the writable source of truth. A legacy plugins/tool-adapt.config.json is migrated once if the settings user layer is empty; the old file is kept for rollback. The GET/POST /api/tool-adapt/status|set routes remain as a compatibility surface (loopback + same-origin fenced, 8 KiB body cap). The pill snaps to one of the chat input's four corners (drag to switch); the anchor is remembered in localStorage (dsh.toolAdapt.anchor). The pill mounts inside the composer seat (same stacking level as the input box) at a normal z-index, so DSH web popups (modal / menu / toast) can cover it. The pill itself is status-only — edit the full form under Settings → Plugins. The pill is hidden by DEFAULT: the「显示状态胶囊」switch (ui.pill, default false) at the top of the ADAPT card owns its visibility, and the pill follows the hot /status config within one poll (or instantly after a save in the same tab).

Install

Add to the profile's package.json dependencies (link: for local dev) and to dsh.profile.bundles, then pnpm install and restart dsh web.

Config

The mounting row (in this package's cordis.patch.yml) passes config.configFile — the JSON config path, resolved against the profile working directory (default <cwd>/plugins/tool-adapt.config.json, keeping the legacy location so existing configs migrate unchanged).