← 返回列表
⚠ 装前注意
dsh.so risk · dsh.so install · dsh 0.1.6-alpha.2 · dsh.so…
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/23 · 已提供中文文档
DeepSeek Harness QoL plugin for the local Qwen3.8 line (27B/Flash-Next): per-request thinking budgets, a compaction backend that stops burning the output cap on thinking, and a settings tab. 本地 Qwen3.8 线的 DSH QoL 插件:逐请求 thinking 预算、不再把输出帽烧在 thinking 上的压缩后端、设置 tab。
综合分
37.9
GitHub 分
37.9
用户评分
—
★ Stars
9
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Yunado/dsh-qwen38-local-qol未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 3 天前真实安装成功(L4 · 真实安装)
- 是什么
- dsh 原生插件 · other
- 装得上吗
- 本站已真实安装成功(L4 · 真实安装,非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 2 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-qwen38-local-qol(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.14 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 08:26:52
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-compaction-basic@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-timeout@deepseek-ai/schemastery用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-qwen38-local-qol
English · 中文
Awesome DSH Plugin · Listed on dsh-plugin.org · dshfind · License: MIT
dsh.so risk · dsh.so install · dsh 0.1.6-alpha.2 · dsh.so install · dsh 0.1.5-rc.2
一个面向 DeepSeek Harness(DSH)的 QoL 插件,用于在本地运行 Qwen3.8(llama.cpp llama-server、NInfer、TabbyAPI(ExLlamaV3 后端服务器)或 oMLX(Apple Silicon MLX 推理服务器);它们都提供 OpenAI 兼容的 /v1 API;在配置层面也支持 Qwen3.8-Flash-Next)。无需修改核心,无需 pi-ai 补丁文件。
安装
dsh plugin --profile web add github:Yunado/dsh-qwen38-local-qol
重启 dsh web:启动时,插件会基于标准预设的组成生成 qwen38 用户预设,并在未配置默认预设时将其设为默认 agent 预设。新会话会自动使用它;已有会话则保留其创建时所用的预设。
你也可以固定到某个特定发布版本:在 spec 中添加标签(#v0.2.0 或任意历史发布版本)。每个标签固定了什么内容以及如何从该版本升级,请参见 Releases。
Agent presets 页面上生成的 qwen38 预设
支持的功能
- 按请求设置思考预算。 llama.cpp 线路会在每个请求中发送所选 effort 对应的预算(reasoning_effort + reasoning_budget_tokens,覆盖服务器的 --reasoning-budget);NInfer 引擎从服务器启动标志(--default-thinking-budget)读取其单一的思考预算;设置标签页会在 NInfer 行上将其显示为一条说明(无输入框),而 defaultThinkingBudget 作为无头/环境变量配置字段仍然有效;TabbyAPI 线路原生支持两者;oMLX 线路(Apple Silicon MLX)接受原生顶层 thinking_budget 和 chat_template_kwargs.enable_thinking,因此按 effort 设置的预算会随每个请求传递。
- 一个压缩后端。 摘要器的预填充会被裁剪(仅保留最近的推理内容,图像降级为文本占位符,工具结果被限制长度),并且压缩调用以关闭思考模式、按该线路的完整输出上限运行,因此检查点不会再在 token 上限处被截断。
- 工具结果中的视觉内容。 嵌套在工具结果中的图像块(例如 read_image 输出)会随请求传输,而不是被丢弃:已解析的图像会以多模态工具消息的形式传输(一个包含 image_url 条目的内容数组);无法读取的图像会降级为用户侧相同的文本占位符,因此模型能看到那里曾有一张图像,但其像素内容并未传入。
- 一个设置选项卡,可实时配置所有线路。
设置选项卡
DSH 设置 → Qwen3.8 Local:
服务器线路选择器:llama.cpp / NInfer / TabbyAPI / oMLX
Qwen3.8 Local 设置选项卡
按线路的内存(连接、窗口数值、预算、裁剪开关)。当 qwen38 是默认预设时状态点为绿色,当其他预设为默认时为琥珀色,当预设缺失时为灰色。更改会实时生效并持久化到 settings.yaml(热重载)。
可调项
设置选项卡是主要入口;无头配置文件和 patch/env 接受相同的字段(按 id 作用域的 patch 会替换整个配置;env 覆盖 patch 未设置的项):
| 区域 | 字段(环境变量) | 默认值 |
|---|---|---|
| 服务器 | baseURL、model、displayName、apiKey(DSH_QWEN38_BASE_URL / _MODEL / _DISPLAY_NAME / _API_KEY) | http://localhost:8080/v1(llama)/ 8082(ninfer)/ 8083(tabbyapi)/ 8000(omlx),模型别名,与 model 相同,无 |
| 方言 | dialect(DSH_QWEN38_DIALECT) | llamacpp(选项:ninfer、tabbyapi、omlx) |
| 窗口 | contextWindow、maxTokens(DSH_QWEN38_CONTEXT_WINDOW / _MAX_TOKENS) | 262144、52428(输出上限 ≈ 窗口的 20%,为 0.8× 处的压缩触发留出余量) |
| 思考 | thinkingBudgets(llamacpp + tabbyapi + omlx,按努力程度)、defaultThinkingBudget(ninfer,仅无头/env;选项卡显示启动标志)、defaultEffort(DSH_QWEN38_DEFAULT_EFFORT) | { low: 4096, medium: 8192, xhigh: 16384 }、16384、medium |
| 预填充裁剪 | DSH_QWEN38_SUMMARIZE_IMAGES、DSH_QWEN38_SUMMARIZE_KEEP_TURNS、DSH_QWEN38_SUMMARIZE_TOOL_CHARS(仅 env) | strip、5、2000 |
设置与字段说明
1. 服务器连接与方言
- 方言(dialect):运行本地模型的后端引擎:
- llamacpp:标准 llama.cpp 服务器(llama-server)。按请求动态设置思考预算。
- omlx:Apple Silicon MLX 推理服务器。通过原生 thinking_budget 按请求发送思考预算。
- tabbyapi:ExLlamaV3 后端。EXL3 量化的快速路径,原生接受按请求的预算。
- ninfer:高性能 TensorRT-LLM 引擎。思考预算在服务器启动时配置。
- 基础 URL(baseURL):你的本地服务器正在监听的地址(必须包含 /v1)。默认端口:llama.cpp 为 8080,oMLX 为 8000,NInfer 为 8082,TabbyAPI 为 8083。
- 模型(model):你的服务器所识别的模型标识符或别名(例如 Qwen3.8-27B-MLX-8bit 或 qwen3.8-27b)。
- 显示名称(displayName):在 Harness UI 模型选择器中显示的可选标签(例如 “Qwen 3.8 Local”)。如果留空,则显示模型 ID。
- API 密钥(apiKey):如果你的服务器需要身份验证,则为可选的 bearer token。对于无需身份验证的本地服务器,请留空。
2. 上下文窗口与 Token 限制
- 上下文窗口(contextWindow):模型能够处理的总 token 容量(提示词 + 响应)。Harness 使用它来判断会话何时即将填满,并自动触发压缩以防止溢出。
- 最大输出 Token 数(maxTokens):模型在单次响应中能够生成的最大 token 数。
3. 思考与推理预算
- 思考预算(thinkingBudgets):模型在生成答案之前进行内部推理(...)的 token 限制:
- 低:针对较简单问题的快速推理(默认:4,096 个 token)。
- 中:针对一般编码和任务的均衡推理(默认:8,192 个 token)。
- 超高:针对复杂 bug 或架构的深度逐步思考(默认:16,384 个 token)。
- 默认强度(defaultEffort):所使用的默认思考级别(off、low、medium 或 xhigh)。选择 off 会完全跳过思考,以获得更快、更直接的答案。
- 默认思考预算(defaultThinkingBudget):适用于在启动时全局设置思考容量而非按请求设置的引擎(例如 NInfer)的回退 token 预算。
4. 历史压缩与裁剪
当对话接近上下文窗口限制时,Harness 会将较早的历史压缩为摘要:
- 摘要图像(summarize.images):
- strip(推荐):用简短的文本占位符替换较早的图像,以节省大量上下文空间。
- keep:在记忆中保留过去的图像。
- 保留近期推理(summarize.keepTurns):有多少个最近的助手回合保留其完整思考日志()。较早回合的思考会被裁剪,因为一旦某个操作成功,之前的推理就很少需要了。
- 限制工具输出(summarize.toolChars):在压缩历史中,为庞大的命令输出或文件读取保留的最大字符长度(默认:2,000 个字符)。防止巨大的终端日志淹没上下文窗口。
5. 按行记忆
设置选项卡为每种方言(llamacpp、omlx、ninfer、tabbyapi)保留独立设置。在服务器按钮之间切换时,会自动恢复每个服务器特定的端口、模型别名和上下文大小,而无需重新输入。
限制
- TabbyAPI / oMLX 上的视觉 token 计费未固定:在后端图像处理器公式校准之前,这些线路上的 token 计量器会将图像容量报告为未知(请求本身可用;仅预检容量预估受影响)。
- 多模态工具消息是一种较新的传输形式:携带已解析图像的工具消息以包含 image_url 条目的内容数组形式发送;每条线路的服务器都必须接受该形式。拒绝的线路会返回 HTTP 错误,适配器会原样呈现其响应体(绝不静默丢弃)。
- 视觉预算拒绝可自愈:NInfer 400 media_budget_exceeded(“vision raw patches exceed processor budget”)会被归类为 CONTEXT_WINDOW_EXCEEDED,因此 harness 的溢出恢复会在低于正常阈值的情况下压缩历史并重试该步骤;只有反复出现的预算失败(例如单张图像本身就超过单图上限)才会作为错误暴露。
- 预设接缝是 Web 界面功能:无头 profile 不会挂载 agent-presets 行;provider 路由(thinking 预算)在两种界面上都可用。
- 摘要器内部机制取决于引擎版本:传输规则(关闭 thinking、完整输出上限)适用于每个引擎版本;引擎内部机制不在插件的控制范围内。
更新
dsh plugin --profile web update dsh-qwen38-local-qol
github: 依赖会解析到确切的 commit。如果 profile 锁文件仍固定为首次安装时的 commit,请移除并重新添加插件以强制重新解析。更新绝不会改动生成的预设或设置部分。
卸载
1. dsh plugin --profile web remove dsh-qwen38-local-qol
2. 在 Agent presets 页面删除 qwen38 预设。
3. 从 ~/.dsh/settings.yaml 中删除 agent-presets: { default: qwen38 }。
4. 重启 DSH。
会话历史、转录记录、模型线路和引擎并非插件所拥有的状态。
开发
pnpm install
pnpm test
pnpm run build:client # rebuild lib/client.js after touching src/client*
宿主部分 = 带 JSDoc 的纯 ESM JavaScript;浏览器部分由 scripts/build-client.mjs 构建,并作为已提交的 lib/client.js 发布。设计细节:DESIGN.md。
许可证
MIT
中文
给本地跑 Qwen3.8 的人用的 DeepSeek Harness(DSH)QoL 插件(llama.cpp llama-server、NInfer、TabbyAPI(ExLlamaV3 后端服务器),或 oMLX(Apple Silicon MLX 推理后端);均提供 OpenAI 兼容 /v1 API;配置层面兼容 Qwen3.8-Flash-Next)。零核心补丁、零 pi-ai 补丁文件。
安装
dsh plugin --profile web add github:Yunado/dsh-qwen38-local-qol
重启 dsh web:启动时插件从 standard preset 的组成生成 qwen38 用户 preset,且未配置默认时将其设为默认 agent preset。新会话自动使用;已有会话保留创建时的 preset。
也可以钉住某个具体 release:在 spec 里加 tag(#v0.2.0 或任意历史 tag)。每个 tag 钉住什么、之后怎么升,见 Releases。
生成的 qwen38 预设(Agent 预设页)
功能特性
- 逐请求 thinking 预算。 llama.cpp 线每请求发送所选 effort 的预算(reasoning_effort + reasoning_budget_tokens,覆盖服务端 --reasoning-budget);NInfer 引擎的 thinking 预算由服务端启动参数(--default-thinking-budget)决定;设置 tab 在 NInfer 线只显示说明(无输入),defaultThinkingBudget 字段保留为 headless/env 配置项;TabbyAPI 线两者都原生接受;oMLX 线(Apple Silicon MLX)原生接受顶层 thinking_budget 与 chat_template_kwargs.enable_thinking,逐请求按档发送。
- 压缩(compaction)后端。 摘要 prefill 先裁剪(只留近 N 轮 reasoning、图片降为文本占位符、工具结果按字数帽截断),且压缩调用强制 thinking off + 该线完整输出帽,checkpoint 不再被 token 帽截断。
- 工具结果里的图片不再丢弃。 嵌套在 tool-result 内的 image block(如 read_image 的结果)现在会上线:attachment 能解出 data URL 时,图以多模态 tool 消息(content 数组 + image_url 条目)发送;读不出来时用与用户侧相同的文本占位符,模型知道“这里有张图但看不见像素”。
- 设置 tab:图形化配置四条服务线,即时生效。
设置 tab
DSH 设置 → Qwen3.8 本地:
服务器线选择器:llama.cpp / NInfer / TabbyAPI / oMLX
Qwen3.8 本地设置页
按线记忆(连接、窗口数字、预算、裁剪旋钮)。状态圆点:绿 = qwen38 是默认 preset,黄 = 默认是别的 preset,灰 = preset 缺失。改动即时生效并持久化到 settings.yaml(热加载)。
可调项
设置 tab 是主入口;headless profile 或补丁/环境接受同样字段(按 id 定向的补丁替换整个 config,环境回退只覆盖补丁没写的字段):
| 区域 | 字段(环境变量) | 默认 |
|---|---|---|
| 服务器 | baseURL、model、displayName、apiKey(DSH_QWEN38_BASE_URL / _MODEL / _DISPLAY_NAME / _API_KEY) | http://localhost:8080/v1(llama)/ 8082(ninfer)/ 8083(tabbyapi)/ 8000(omlx)、模型别名、同 model、无 |
| 方言 | dialect(DSH_QWEN38_DIALECT) | llamacpp(可选:ninfer、tabbyapi、omlx) |
| 窗口 | contextWindow、maxTokens(DSH_QWEN38_CONTEXT_WINDOW / _MAX_TOKENS) | 262144、52428(输出帽 ≈ 窗口的 20%,为 0.8× 压缩触发线留余量) |
| Thinking | thinkingBudgets(llamacpp + tabbyapi + omlx,按 effort)、defaultThinkingBudget(ninfer,仅 headless/env;tab 显示启动参数)、defaultEffort(DSH_QWEN38_DEFAULT_EFFORT) | { low: 4096, medium: 8192, xhigh: 16384 }、16384、medium |
| Prefill 裁剪 | DSH_QWEN38_SUMMARIZE_IMAGES、DSH_QWEN38_SUMMARIZE_KEEP_TURNS、DSH_QWEN38_SUMMARIZE_TOOL_CHARS(仅环境变量) | strip、5、2000 |
设置项与字段说明
1. 服务器连接与方言
- 方言(dialect):运行模型的本地推理后端类型:
- llamacpp:标准 llama.cpp 服务(llama-server),每请求通过 reasoning_budget_tokens 动态控制思考预算。
- omlx:Apple Silicon 专用的 MLX 推理服务,每请求通过顶层 thinking_budget 控制思考预算。
- tabbyapi:ExLlamaV3 推理服务,EXL3 量化的快线,原生支持每请求思考预算。
- ninfer:高性能 TensorRT-LLM 引擎,思考预算在服务端启动参数中指定。
- 服务地址(baseURL):本地后端服务的 HTTP 地址(需包含 /v1)。默认端口:llama.cpp 为 8080、oMLX 为 8000、NInfer 为 8082、TabbyAPI 为 8083。
- 模型标识(model):服务端配置的模型名称或别名(如 Qwen3.8-27B-MLX-8bit 或 qwen3.8-27b)。
- 显示名称(displayName):在 Harness UI 界面模型下拉菜单中显示的友好名称(如 “Qwen 3.8 本地”)。留空时直接显示模型标识。
- API 密钥(apiKey):若本地服务开启了鉴权,在此填入 API Key。若无需鉴权可留空。
2. 上下文与输出窗口
- 上下文窗口(contextWindow):模型能容纳的最大总 token 容量(输入 + 输出)。Harness 据此判断会话何时接近上限并自动触发压缩(compaction),防止超窗。
- 最大输出 Token(maxTokens):单轮回复中模型允许生成的最大 token 数量。
3. Thinking 思考预算
- 思考预算档位(thinkingBudgets):模型在给出最终答案前在 标签内能思考的最大 token 数量:
- Low(低):轻度思考,适合简单明确的任务(默认 4,096 tokens)。
- Medium(中):平衡思考,适合日常编码与问答(默认 8,192 tokens)。
- Extra High(超高):深度多步推理,适合复杂架构与疑难调试(默认 16,384 tokens)。
- 默认档位(defaultEffort):默认启用的思考强度(off、low、medium、xhigh)。选 off 则完全关闭 thinking 模式,回复更快速直接。
- 默认思考预算(defaultThinkingBudget):针对不支持逐请求切换档位的引擎(如 NInfer)使用的回退预算值。
4. 历史压缩与裁剪(Compaction)
当会话过长接近上下文上限时,Harness 会将较早的历史压缩成摘要:
- 图片处理(summarize.images):
- strip(推荐):在旧轮次中移除大图并替换为简短占位文本,大幅节省上下文空间。
- keep:在历史中保留原图。
- 保留近期思考(summarize.keepTurns):压缩时保留最近多少轮助手的完整 思考过程(默认 5 轮)。更早轮次的思考过程会被裁掉(通常只需最终操作结果,无需保留早期心路历程)。
- 工具输出截断(summarize.toolChars):历史中单次工具输出(如大段终端日志或文件读取)保留的最大字符数(默认 2000 字),防止巨量日志挤占宝贵的上下文。
5. 按线独立记忆
设置 tab 为每种方言(llamacpp、omlx、ninfer、tabbyapi)保留独立的配置记忆。切换方言单选框会自动恢复该服务线的地址、模型名与窗口大小,无需反复重新填写。
已知限制
- TabbyAPI / oMLX 线的视觉 token 数未钉:这些线上 token meter 报图片容量未知(请求本身正常,只影响预检容量投影)。
- preset 接缝是 web 面功能:headless profile 不挂 agent-presets 行;provider 路由(thinking 预算)两面都工作。
- 摘要器内部行为依赖引擎版本:wire 层规则(thinking off、完整输出帽)对所有引擎版本生效;引擎内部行为不在本插件控制之内。
更新
dsh plugin --profile web update dsh-qwen38-local-qol
github: 依赖按精确 commit 解析。若 profile 锁文件仍钉在首次安装时的 commit,remove 后重新 add 插件即可强制重新解析。更新不触碰生成的 preset 与设置节。
卸载
1. dsh plugin --profile web remove dsh-qwen38-local-qol
2. 在 Agent 预设页删除 qwen38 preset。
3. ~/.dsh/settings.yaml 删掉 agent-presets: { default: qwen38 }。
4. 重启 DSH。
会话历史、transcript、模型线、引擎都不是插件持有的状态。
开发
pnpm install
pnpm test
pnpm run build:client # 改完 src/client* 后重建 lib/client.js
宿主半边 = 带 JSDoc 的裸 ESM JavaScript;浏览器半边由 scripts/build-client.mjs 构建并以已提交的 lib/client.js 出货。设计细节:DESIGN.md。
许可
MIT