dsh-web-speech-input
leozou320-ai
Voice-to-text for the DeepSeek Harness Web UI — live, editable, never auto-sends. | DeepSeek Harness 网页语音输入
PROJECT TOPICS
PROJECT README
仓库:https://github.com/imkingjh999/dsh-shorts-wall · Issues 欢迎
English | 中文
竖屏短视频墙 —— 默认以贴边竖栏形态运行的 DeepSeek Harness(DSH)竖屏短视频插件:可切换为可拖拽/缩放浮窗,也能关闭后从右下角按钮唤回。双源:YouTube Shorts + B站竖屏,滚轮/键盘/按钮逐条切换,播完自动下一条,到尾自动续批。
仅供个人观看。全部走匿名公开接口与官方播放通道:不登录、不破解、不伪造签名。请遵守对应平台服务条款。
顶栏 YT / B站 chip 一键切换(记住选择),切换时提示「切换中…」。
| YouTube Shorts | B站竖屏 | |
|---|---|---|
| 播放方式 | 官方 iframe embed | 原生 mp4 <video>(经宿主代理,Range 可拖进度) |
| 内容获取 | 匿名搜索页(shorts 过滤器) | 匿名搜索 + 竖屏预检(并发 view 确认 9:16,横版自动过滤) |
| 自动连播 | 播完事件 + 看门狗双保险 | 原生事件(最稳) |
| 续批 | 关键词重搜去重追加 | 分页续批 |
Alt+S 一键最小化,再按一次还原到最小化前的浮窗/贴边状态与尺寸,播放器保持挂载不重载;最小化期间自动暂停播放(YT embed 与 B站原生视频一致),还原后自动继续↑↓ / j·k / ‹ › 按钮;iframe 上有滚轮捕获层(滚轮切换不被吞),单击临时交给播放器操作(6 秒后盖回)Alt+M 快速静音/开启声音当前 review_audit 综合评分:91 / 100(2026-08-16,v1.0.3 审查基线)。
评分使用 DSH 的 review_audit 作为客观基线,再抽样复核入口、代理边界、窗口状态模块和生命周期测试。review_audit 不是安全认证;分数只说明当前可度量的工程健康度。
综合分计算
维度与扣分规则
| 维度 | 当前分 | 计分口径 |
|---|---|---|
| 结构 | 88 | 基线 88;每个超过 500 行的源码文件扣 6 分,无目录结构扣 15 分 |
| 可维护性 | 90 | 基线 90;每个含遗留标记的文件扣 2 分,每个超大文件扣 4 分,每 40 行超过 120 字符的长行扣 1 分(最多扣 30) |
| 一致性 | 90 | 基线 90;每个混用 Tab/空格缩进的文件扣 8 分,项目级 Tab/空格混用另扣 15 分 |
| 健壮性 | 85 | 基线 85;每个空 catch 扣 5 分,每个调试输出残留扣 2 分 |
| 测试 | 100 | 测试全部通过时为 60 + min(40, 测试文件数 × 10);测试失败记 20 分 |
| 文档 | 100 | README 40 分、LICENSE 25 分、.gitignore 20 分、README 内容完整性 15 分 |
| 性能 | 84 | 基线 85;每个超大文件扣 3 分,每 10 个依赖扣 4 分(最多扣 20),代码超过 2 万行另扣 15 分 |
| 安全 | 87 | 基线 90;按依赖数扣分(最多 25),调试残留与空 catch 另扣分;启用依赖审计时按高危/严重漏洞追加扣分 |
人工复核最低要求
pnpm typecheck、pnpm test、pnpm run buildnode tests/smoke-client.mjs 与 node tests/e2e-client.mjscatch、无调试残留、无未解释的错误吞并| 浮窗模式 | 贴边模式 | 最小化 |
|---|---|---|
![]() |
![]() |
![]() |
前置:DSH ≥ 0.1.0 的 web profile。better-sidebar 不再需要。
dsh plugin --profile web add github:imkingjh999/dsh-shorts-wall
# 重启 dsh web,浏览器硬刷新(⌘⇧R / Ctrl+Shift+R)
页面右下角会出现「Shorts」浮窗入口。
cd ~/.dsh/profiles/web
pnpm add link:~/projects/dsh-plugins/dsh-shorts-wall
# package.json 的 dsh.profile.bundles 里追加 "dsh-shorts-wall"
pnpm install && pnpm run build # 在插件目录
profile 的 cordis.patch.yml:
- id: shorts-wall
config:
extraAllowSuffixes: [cdn.example.com] # 代理白名单追加域名后缀
resolveProxyUrl: http://127.0.0.1:7890 # 可选:YouTube 抓取/缩略图走个人代理(HTTP CONNECT)
resolveProxyUrl 未配置时自动回退读 HTTPS_PROXY / HTTP_PROXY(等)环境变量(仅 http:// 代理;Node fetch 不读这些变量,WSL 桌面环境常见)。无论哪种来源,只有 YouTube 系域名(youtube.com / ytimg.com 等)走隧道,B 站 API 与视频 CDN 始终直连。
src/index.ts):POST /shorts/api/feed(youtube shorts 搜索 · bilibili 竖屏搜索)+ POST /shorts/api/play(bilibili mp4 取流)+ GET /shorts/proxy(浏览器信任围栏 + CDN 白名单 + Range 直通)。旧 /bilibili/* 前缀保留兼容。src/youtube.ts、src/bilibili-shorts.ts):YT 匿名搜索页 shortsLockupViewModel(兼容 reelItemRenderer);B站搜索 + 并发 view 竖屏预检 + html5 mp4 playurl。src/client/):浮窗渲染组件 + 三个行为 hook——embed-events(YT 播放器事件/看门狗)、feed-state(双源批次/续批/关键词)、card-timers(封面/标题时序)+ i18n(zh/en)。不再依赖 better-sidebar。pnpm install
pnpm test # vitest:解析器 / 生命周期(jsdom) / i18n 词典
pnpm typecheck
pnpm run build # tsdown:宿主 ESM + 双通道 client CJS 工厂
node tests/smoke-client.mjs && node tests/e2e-client.mjs # 无头冒烟 + jsdom 渲染端到端
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。