🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

实用插件合集 tkwkeven/dsh-utility-plugins

DeepSeek Harness
tkwkeven73 天前有提交已提供中文文档扫描:含敏感能力

下载视频、适配推理强度并预检插件源码

24.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tkwkeven/dsh-utility-plugins
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 73 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    plugins/preflight.mjs:86
    buf = readFileSync(path)
  • 写入本地文件
    plugins/preflight.mjs:101
    writeFileSync(path, buf.subarray(3))
  • 执行外部命令来自配置/变量
    plugins/preflight.mjs:116
    const r = spawnSync(process.execPath, ['--check', path], { encoding: 'utf8', timeout: 15000 })
  • 读取本地文件
    plugins/preflight.mjs:159
    try { text = readFileSync(dist, 'utf8') } catch { continue }
扫描于 2026/11/2(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 实用插件:ytdlp 视频下载工具(支持 1000+ 网站)、reasoning-effort-auto 跨服务商适配、preflight 源码编码与语法检查。

README

由 DeepSeek 最新模型翻译生成
dsh-utility-plugins DeepSeek Harness(DSH)实用小插件合集。三个插件各自独立、零依赖或近零依赖,按需取用: | 插件 | 文件 | 作用 | | ytdlp | plugins/ytdlp.mjs + plugins/ytdlp_cli.py | 视频/音频查询与下载工具(yt-dlp 桥接) | | reasoning-effort-auto | plugins/reasoning-effort-auto.mjs | 模型推理强度(reasoning effort)跨 Provider 自动适配 | | preflight | plugins/preflight.mjs | 插件源码预检:BOM / UTF-8 / mojibake / 语法检查 | 三个插件都通过 cordis.patch.yml 挂载,注册的工具对所有会话(Web GUI、飞书/Lark 等)可用。
展开完整文档(README 剩余 1 节)
dsh-utility-plugins

DeepSeek Harness(DSH)实用小插件合集。三个插件各自独立、零依赖或近零依赖,按需取用:

| 插件 | 文件 | 作用 |
| ytdlp | plugins/ytdlp.mjs + plugins/ytdlp_cli.py | 视频/音频查询与下载工具(yt-dlp 桥接) |
| reasoning-effort-auto | plugins/reasoning-effort-auto.mjs | 模型推理强度(reasoning effort)跨 Provider 自动适配 |
| preflight | plugins/preflight.mjs | 插件源码预检:BOM / UTF-8 / mojibake / 语法检查 |

三个插件都通过 cordis.patch.yml 挂载,注册的工具对所有会话(Web GUI、飞书/Lark 等)可用。

1. ytdlp — 视频/音频查询与下载工具

解决什么问题

DSH 会话中经常需要「查一下这个视频是什么 / 下载这段视频发给用户」,但:

- 让模型直接拼 shell 命令调 yt-dlp 非常危险:URL 与格式串会经过 shell 命令行,存在注入风险,且参数一多就容易出错;
- yt-dlp 输出大、格式杂,原始 stdout 灌给模型既浪费 token 又难以结构化消费;
- 下载目标目录缺少边界校验,模型可能把文件写到任意位置。

功能

注册两个工具(全会话可用):

- video_info:不下载,仅查询链接元信息——标题、上传者、时长、清晰度(最高分辨率)、可用格式数、播放列表条目数等。下载前先确认链接有效与内容。
- video_download:下载视频或提取音频,返回本地文件路径(可与飞书 [lark-file:] 标记配合直接发送给用户)。支持播放列表、音频提取(mp3/m4a/opus)、cookies、代理。

安全设计:

- stdin/stdout JSON 桥接:URL、格式串、输出路径一律不经过 shell 命令行(无注入面);
- 路径越界校验:output_dir 必须落在下载根目录内,否则拒绝;
- 格式白名单化:format 拒绝以 - 开头的选项串、拒绝超长输入;
- URL 校验:仅接受 http/https,长度上限 8KB;
- 支持 1000+ 站点(YouTube、Bilibili 等,由 yt-dlp 项目提供)。

安装

- insert:
- id: ytdlp
name: ./plugins/ytdlp.mjs
config:
cliPath: 可选,ytdlp_cli.py 的绝对路径(默认:与插件同目录的 ytdlp_cli.py) pythonBin: 可选,Python 解释器(默认 "python") downloadDir: 可选,下载根目录;绝对路径原样使用,相对路径相对工作目录解析(默认 "downloads")

把 ytdlp.mjs 与 ytdlp_cli.py 放在同一目录(ytdlp_cli.py 会被自动找到)。依赖:Python 3 + yt-dlp(pip install yt-dlp);音频提取与格式合并需要 ffmpeg(缺省时纯音频按原始流下载)。

输出示例

video_download 返回 { ok, filepath, title, duration, download_dir, ... },可直接用 [lark-file: <filepath>] 发到飞书会话。

2. reasoning-effort-auto — 模型推理强度自动适配

解决什么问题

DSH 在多个模型供应商之间切换时,各家的「推理强度」档位并不一致,例如:

- DeepSeek 路由(deepseek-v4-flash):支持 off | high | max
- MiMo Token Plan 路由(mimo-):只支持 off | minimal | low | medium | high

若某个会话/插件固定请求 max(例如飞书任务会话默认请求最高强度),切到 MiMo 路由后请求会直接失败:UNSUPPORTED_REASONING_EFFORT。用户只切换了模型,会话却创建不出来。

功能

注册一个宿主服务 ctx.reasoningEffortAuto.clamp(selection, desired):

- 查询目标 provider/model 实际支持的能力(ctx.llm.resolveModelInfo),
- 若 desired 已被支持则原样返回;否则向下收敛到支持列表里最强的档位(如 max → high),
- 能力查询失败时保持原值返回——宁可让下游按原档位请求,也不因本服务导致会话创建失败。

任何插件(如 lark-channel)在组合新会话的模型选择时调用 clamp;本插件未挂载时请求原样透传。

安装

- insert:
- id: reasoning-effort-auto
name: ./plugins/reasoning-effort-auto.mjs

依赖:DSH 宿主的 llm 服务(ctx.llm.resolveModelInfo)。需在依赖它的插件(如 lark-channel)之前挂载。

3. preflight — 插件源码预检

解决什么问题

Windows 上编辑/部署 DSH 插件文件时有一套经典的「编码三连坑」,会直接导致 DSH 启动失败:

1. PowerShell 5.1 的 Get-Content 默认按 ANSI/GBK 读 UTF-8 文件 → 内容变成乱码;
2. Set-Content -Encoding UTF8 写出带 BOM 的文件(Node ESM 通常能容忍 BOM,但叠加第 1 条时内容已经坏了);
3. 两者叠加 → 插件文件变成「带 BOM + 内容错乱」(mojibake)→ DSH 启动时 SyntaxError,日志却可能一片空白,静默宕机、无人知道为什么。

功能

双模式复用:
- 命令行:node preflight.mjs [--fix] [--no-syntax] <file...> — 检查并报告(--fix 自动剥离 BOM);exit 0 = 全部通过 / 已修复,exit 1 = 存在不可自动修复的问题,调用方应拒绝启动。输出为纯 ASCII JSON,避免 PowerShell 按 ANSI 读取输出时二次乱码。
- import:checkText(text, { name })(检查字符串源码)、checkFile(path, { fix, syntax })
(检查单个文件)、checkFiles(paths, opts)(批量检查),供其他工具(如
dsh-sim-restart-tester)复用。

检查项:

| 检查项 | 判定 |
| UTF-8 BOM(EF BB BF) | 检出即告警;--fix 自动剥离 |
| 非法 UTF-8(GBK/ANSI 或损坏) | 拒绝(启动必失败) |
| 解码替换符 U+FFFD | 拒绝 |
| GBK 二次编码(mojibake 特征字) | 命中特征字即拒绝,提示用 UTF-8 重新保存 |
| 语法检查 | .mjs / .js 执行 node --check,失败给出前 3 行错误 |

安装

无需挂载为插件(无运行时副作用),适合作为启动前预检脚本或集成进其他插件:

node preflight.mjs --fix plugins/.mjs

目录结构

dsh-utility-plugins/
├── plugins/
│ ├── ytdlp.mjs 视频下载工具(宿主插件) │ ├── ytdlp_cli.py yt-dlp 桥接命令行(stdin JSON -> stdout JSON) │ ├── reasoning-effort-auto.mjs 推理强度适配服务(宿主插件) │ └── preflight.mjs 源码预检模块(命令行 + import 双模式) ├── LICENSE ├── package.json └── README.md

许可

MIT License,见 LICENSE。
预览分享卡片长什么样 ↓tkwkeven/dsh-utility-plugins
分享 · DeepSeek Harness Hub
tkwkeven/dsh-utility-plugins

下载视频、适配推理强度并预检插件源码

回到顶部