下载视频、适配推理强度并预检插件源码
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 73 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
tkwkeven/dsh-utility-plugins
下载视频、适配推理强度并预检插件源码
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9