rapid-mlx-dsh-provider

DSH PLUGIN浏览器与联网

仓库 raullenchai/rapid-mlx-dsh-provider · npm @raullenchai/dsh-provider

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 提供原生 Rapid-MLX 模型提供商,自动从服务器读取模型事实,免去手写配置,并支持模型管理工具。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 70 复刻 19 · 未关闭 issue 未标注
最近更新 2026-08-19 创建于 2026-08-17
README 10.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @raullenchai/dsh-provider
兼容 DSH 版本0.2.0-rc.2 等 12 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@raullenchai/dsh-provider可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

rapid-mlx-dsh-provider:DeepSeek Harness 的原生 Rapid-MLX 模型提供插件

  • 自动读取模型信息
  • 无需手写配置
  • 真实推理能力显示
  • 基于实际容量压缩
  • 模型管理工具

上游标签

apple-siliconcoding-agentdeepseek-harnessdshdsh-pluginllmlocal-llmmlxopenai-apirapid-mlx

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方raullenchai仓库 rapid-mlx-dsh-provider · 默认分支 未标注
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证Apache-2.0商用或二次分发前请确认条款原文
星标 / 复刻 / issue70 / 19 / 未标注收录时的数值,非实时
创建 / 更新2026-08-17 · 2026-08-19最后推送 未标注
本站收录2026-08-17首次进入本站目录的时间

README 全文

10.9 KB
作者原文,中文版优先;只做安全转义,不改内容

@raullenchai/dsh-provider

A native Rapid-MLX provider for
DeepSeek Harness — so dsh
gets its model facts from the server instead of from whatever you typed into
settings.yaml.

> Status: published to npm as
> @raullenchai/dsh-provider.
> The end-to-end dsh run in Verified was on an M3 Ultra against
> dsh 0.1.0-rc.7; dsh 0.1.0-rc.8 is API-compatible — the LlmAdapter
> contract is byte-identical and the only changes are additive — and the
> adapter is re-verified against rc.8 at the protocol and unit-test level.
> DSH is still a developer preview that moves fast, so treat this as tracking
> a moving target, not a frozen compatibility promise.

What it does for you

DSH can already talk to a local Rapid-MLX server through its generic
openai-completions provider. That route works — but it knows nothing about
your model beyond what you hand-wrote:

# what the generic route makes you maintain, by hand, per model
llm-pi-ai:
providers:
rapid-mlx:
baseURL: http://localhost:8000/v1
defaultContextWindow: 262144      # you looked this up. is it still right?
models:
- id: qwen3.6-35b-8bit
contextWindow: 262144
reasoningEfforts: {off: none, low: low, medium: medium, high: high}

Rapid-MLX's /v1/models already publishes all of that and more. This adapter
reads it, so:

1. Nothing to hand-write, and nothing to re-write when you switch models.
Swap what rapid-mlx serve is running and dsh follows. No re-running setup,
no stale numbers.

2. The reasoning control tells the truth. Rapid-MLX reports whether a model
actually has a reasoning parser. A model that can't reason no longer shows an
off/low/medium/high selector that does nothing.

3. Compaction is timed with the capacity that actually fits this Mac, not a
number that drifted.
This is the one that quietly costs you.
dsh-compaction-basic asks the provider for the route's capacity and compacts
at thresholdRatio × capacity (0.8 by default). The provider prefers the
server's max_model_len — Rapid-MLX's memory-fitted ceiling (what fits in
unified memory: weights + KV cache), in the vLLM/SGLang-standard field — over
the native context_window, and falls back to context_window on an older
server that doesn't report it. So compaction is timed to what the machine can
actually hold, not the model's advertised window (which it may not have room
for) and not a hand-written number copied from another model.

Install

Needs Node ≥ 22.15 (dsh imports Node's Zstd stream API without declaring it)
and a running Rapid-MLX server.

# From npm:
dsh plugin --profile web add @raullenchai/dsh-provider

# …or straight from source — the package ships plain JS with no build step:
dsh plugin --profile web add github:raullenchai/rapid-mlx-dsh-provider

export RAPID_MLX_BASE_URL=http://localhost:8000/v1     # optional; this is the default
dsh web

Then point the agent at the route:

# $DSH_HOME/settings.yaml
agent-default-model:
provider: rapid-mlx
model: qwen3.6-35b-8bit

Verified: that command installs and activates as a profile layer against
dsh 0.1.0-rc.7. To hack on it locally instead, see
Local development.

Model management (v0.2.0)

Beyond the provider route, the plugin registers five tools and a /rapid-mlx
command so the agent can see and manage models without leaving the session.
The split follows which surface actually owns each fact: served-model facts
come from the structured HTTP /v1/models; the download cache and pull/remove
are CLI-only, so those — and only those — shell out to rapid-mlx through the
harness subprocess seam.

Tool Source What it does
rapid_mlx_serving HTTP /v1/models The model(s) served right now, deduped, with context window, reasoning/tool parsers, MoE/hybrid, and modalities.
rapid_mlx_cached rapid-mlx models --cached Downloaded models and their on-disk size.
rapid_mlx_pull rapid-mlx pull Download a model (alias or HF repo id). Cancellable; no fixed deadline.
rapid_mlx_remove rapid-mlx rm -y Delete a cached model to free disk.
rapid_mlx_health HTTP + rapid-mlx --version API up? CLI reachable? Reported as two independent facts.

/rapid-mlx prints a one-shot overview: health, the served model and its facts,
and total cache disk usage.

The CLI is resolved from the cliCommand config (default rapid-mlx on
PATH, or $RAPID_MLX_CLI); set it to an absolute path if the binary is not on
the harness's PATH. rapid_mlx_pull/rapid_mlx_remove are the only tools
that change anything on disk, and they run non-interactively (rm is forced
with -y because the subprocess seam ignores stdin).

Verified

Against dsh 0.1.0-rc.7 on an M3 Ultra:

  • Installs and activates as a profile layer (no "declares no dsh.bundle"
    warning; the entry shows up in dsh --profile headless --dump-config).
  • Registers the rapid-mlx route with ctx.llm and serves real queries.
  • Plain chat, a single tool call, and the multi-step bug-fix task that gates
    Rapid-MLX releases — the last one fixed the bug and made the target repo's own
    test pass, verified independently, in 36 s on qwen3.6-35b-8bit.

Not done yet

Being explicit, because the point of the adapter is to use what the server
says and some of it is still only read:

  • recommended_sampling — should be applied automatically per model.
  • tool_call_parser — should let dsh fail fast on a model that cannot emit
    tool_calls, instead of looping.
  • is_hybrid / is_moe / capabilities — read, not yet acted on.
  • Memory-aware capacity. Today resolveModel() reports the model's
    advertised context window. On a Mac the real ceiling is unified memory, and
    reporting that instead is the biggest remaining win — it needs Rapid-MLX to
    expose a usable-capacity figure first.
  • Images are not carried through stream() — but they now refuse with
    LlmError(..., 'UNSUPPORTED') rather than being dropped, per the cookbook.
    Text, reasoning and tool calls are carried.
  • The route is registered as rapid-mlx. If your settings.yaml also declares
    a rapid-mlx provider under llm-pi-ai, the two compete for one route name
    (registerAdapter owns provider exclusivity). Use one or rename ours.

Conformance with the official adapter contract

Built against
docs/cookbook/adding-an-llm-adapter.md
and its "protocol obligations" section. Each item has a test:

Obligation How it is met
usage before finish, nothing after finish usage is buffered and flushed at end-of-stream, so a trailing usage-only chunk cannot reorder it
Tool-call arguments are raw JSON strings end to end fragments stream as argumentsDelta and reassemble unparsed
Block indexes in first-seen order, reused per block verified across a reasoning-then-text response
Errors take exactly two sanctioned paths transport/protocol failures throw LlmError with a stable code; nothing ends the stream quietly
Honor options.signal passed to fetch and to the SSE reader; an AbortError is re-thrown unchanged, not reclassified
A field the provider cannot honor throws UNSUPPORTED image content refuses instead of being narrowed away
Config is a schemastery schema with env fallback export const Config, fed from cordis.patch.yml via !!js process.env.RAPID_MLX_BASE_URL

finish.replayState is not emitted: Rapid-MLX needs no native response ids
or signatures on follow-up calls, so there is nothing lossless to project.

Three things worth knowing before you edit this

Each of these cost real debugging time:

  1. dsh.bundle in package.json is what makes this a plugin. Without it
    the package installs as an inert dependency and dsh only warns. It is
    also what gets it appended to the profile's dsh.profile.bundles. CI fails
    if it goes missing.
  2. LlmReasoningEffortInfo.name is required. Returning {id} alone fails
    the whole model with INVALID_MODEL_REASONING — an error that names the
    model, not the missing field.
  3. DSH has no tool role. Message.role is only system|user|assistant; a
    tool result is a user-role message whose source.kind === 'tool'
    carries the callId and whose content holds a ToolResultBlock. Flatten
    those into plain user text and the model reissues the same call forever —
    the symptom is an empty answer and a non-zero exit, with nothing on
    stderr
    .

Local development

pnpm links a local path outside the profile tree, so Node's parent-walk
never reaches $DSH_HOME/profiles/node_modules and the peer deps fail to
resolve. Symlink them in — dev only, node_modules is gitignored and excluded
from the published files:

mkdir -p node_modules/@deepseek-ai
ln -sfn /node_modules/@deepseek-ai/dsh-llm node_modules/@deepseek-ai/dsh-llm
ln -sfn /node_modules/@deepseek-ai/cordis  node_modules/@deepseek-ai/cordis

export DSH_HOME=/tmp/dsh-dev          # never your real ~/.dsh
dsh plugin --profile headless add "$PWD"
export RAPID_MLX_BASE_URL=http://127.0.0.1:8000/v1
dsh --profile headless "say hello"

A real npm install needs none of this: the package lands inside the profile
tree, where the flat fallback resolves bare names normally.

When testing agent behaviour, use a strong 8-bit model. A multi-step task here
failed on qwen3.5-9b-4bit and passed on qwen3.6-35b-8bit — 4-bit confounds
"weak model" with "broken integration".

The engine side guards these fields

Living in its own repo means a rename in Rapid-MLX would break this package
silently — nothing there imports it and this CI does not run there. So the
fields are pinned on the side that owns them, by
tests/test_model_card_client_contract.py in
Rapid-MLX, which names this package
as its reason. It pins the wire shape: field names, nullability, and the fact
that ModelInfo does not set exclude_none — which is what makes
"reasoning_parser": null distinguishable from an older server that omits the
key entirely.

If you start reading a new /v1/models field here, add it there too.
Otherwise the guard silently stops covering what this package actually uses.

License

Apache-2.0, matching Rapid-MLX.

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
rapid-mlx-dsh-provider 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @raullenchai/dsh-provider` 即可。对应的 npm 包名是 `@raullenchai/dsh-provider`。

rapid-mlx-dsh-provider 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

rapid-mlx-dsh-provider 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

rapid-mlx-dsh-provider 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2。版本较多,只列出前 8 个。

rapid-mlx-dsh-provider 用的是什么许可证?

上游标注为 Apache-2.0。商用或二次分发前请到仓库确认许可证原文。

rapid-mlx-dsh-provider 有哪些功能?

自动读取模型信息、无需手写配置、真实推理能力显示、基于实际容量压缩、模型管理工具。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。