dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把笔记本上的 Copilot 硬件键变成「启动 / 唤起 DeepSeek Harness」,并且能在 DSH 里直接管理它。
两部分:
| 目录 | 是什么 |
|---|---|
hook/ | 自研按键钩子(9 KB C#,无第三方依赖):识别 Copilot 组合键、避免开始菜单弹出、启动或聚焦 DSH。带登录自启的计划任务。 |
按下这个键不会弹出任何窗口:启动链(cmd → powershell)以 CREATE_NO_WINDOW 运行,从创建起就没有控制台;
唯一会出现的窗口就是 DeepSeek Harness 自己的窗口。
| plugin/ | DeepSeek Harness 插件 dsh-copilot-key:在 App 内管理钩子 —— 状态、启停、手动触发、改配置、看日志,并暴露 7 个 agent 工具。 |
钩子必须在 App 之外运行 —— 否则 App 关着时按键就没人接。所以分工是:
方式 A:直接下载 Release 里的 exe(推荐,不用装编译环境)
$dir = "$env:USERPROFILE\copilot-key"
New-Item -ItemType Directory $dir -Force | Out-Null
$base = "https://github.com/plumeume/dsh-copilot-key"
$raw = "https://raw.githubusercontent.com/plumeume/dsh-copilot-key/master/hook"
Invoke-WebRequest "$base/releases/download/v1.0.2/DshCopilotKey.exe" -OutFile "$dir\DshCopilotKey.exe"
Invoke-WebRequest "$base/releases/download/v1.0.2/DshCopilotKey.exe.sha256" -OutFile "$dir\DshCopilotKey.exe.sha256"
Invoke-WebRequest "$raw/config.example.ini" -OutFile "$dir\config.ini"
Invoke-WebRequest "$raw/install.ps1" -OutFile "$dir\install.ps1"
Invoke-WebRequest "$raw/uninstall.ps1" -OutFile "$dir\uninstall.ps1"
# 校验:exe 由 CI 现场编译,哈希随构建变化,所以 .sha256 随 Release 一起发布
$want = (Get-Content "$dir\DshCopilotKey.exe.sha256" -Raw).Split()[0]
$have = (Get-FileHash "$dir\DshCopilotKey.exe" -Algorithm SHA256).Hash
if ($want -ne $have) { throw "SHA256 mismatch: $have" } else { "SHA256 OK: $have" }
# 注册登录自启的计划任务并立即启动
powershell -ExecutionPolicy Bypass -File "$dir\install.ps1"
脚本都用
$PSScriptRoot,目录放哪都行;但config.ini必须和DshCopilotKey.exe同目录。 GitHub 直连不稳时,把上面两个域名换成镜像/代理地址即可。
方式 B:克隆仓库自己编译(用系统自带 csc.exe,不需要 .NET SDK)
git clone https://github.com/plumeume/dsh-copilot-key
cd dsh-copilot-key\hook
powershell -ExecutionPolicy Bypass -File build.ps1 # 编译 DshCopilotKey.exe
copy config.example.ini config.ini # 按需改 trigger / launcher / dryrun
powershell -ExecutionPolicy Bypass -File install.ps1 # 注册登录自启并立即启动
卸载:powershell -ExecutionPolicy Bypass -File uninstall.ps1(删除计划任务 + 结束进程)
| 你的 DSH 是怎么装的 | 怎么装插件 |
|---|---|
| 桌面端(DeepSeek Harness.exe) | 设置 → 插件 → 添加插件,填 dsh-copilot-key(桌面端 profile 由 Electron 独占,CLI 会拒绝 --profile desktop) |
全局 CLI(npm i -g @deepseek-ai/dsh) | dsh plugin --profile <profile> add dsh-copilot-key |
| 没有全局 CLI、用 npx 跑 dsh | npx -y @deepseek-ai/dsh@alpha plugin --profile <profile> add dsh-copilot-key |
| 插件市场 | 搜 dsh-copilot-key 一键安装 |
npx 方式不会全局安装任何东西:npx 把 dsh 下到
%LOCALAPPDATA%\npm-cache\_npx后复用。 也可以npm i -g dsh-copilot-key,但插件要生效仍需把它加进 profile 的dsh.profile.bundles—— 用上面的命令或 App 界面做这一步即可。
插件默认去 %USERPROFILE%\copilot-key 找钩子;钩子装在别处就设环境变量
DSH_COPILOT_KEY_DIR,或在 profile 的 patch 层里覆盖 directory。
钩子按这个顺序尝试(每一步都会写进 watcher.log):
AppActivate,不新建窗口);%LOCALAPPDATA%\Programs\DeepSeek Harness\DeepSeek Harness.exe;config.ini 的 port 已在监听 → 用默认浏览器打开 url;config.ini 的 launcher(默认 launch-dsh.cmd → launch-dsh.ps1),它依次尝试:
dsh → dsh web%LOCALAPPDATA%\npm-cache\_npx 里版本最高的缓存构建 → node <bin.js> webnpx -y @deepseek-ai/dsh@alpha web(⚠️ 这一步会联网下载一个新的 dsh 到 npx 缓存)dsh web 就绪后由它自己打开浏览器;启动器只在第 3 步(端口已在监听)时开浏览器,避免开出两个标签页。第 4 步全程不可见(1.0.2 起):钩子用
CreateProcess+CREATE_NO_WINDOW而非 ShellExecute 启动启动器,cmd与powershell从创建起就没有控制台窗口,按键不会再闪出 cmd / 终端窗口。 若你自己写launcher,同样不必担心弹窗;但失败时的pause之类要留意 —— 隐藏运行的子进程会拿到DSH_COPILOT_HIDDEN=1,可以用if not defined DSH_COPILOT_HIDDEN跳过。
只用桌面端、不希望第 4 步去下 Web 版?把
config.ini的launcher指向你自己的脚本 (例如只做Start-Process "$env:LOCALAPPDATA\Programs\DeepSeek Harness\DeepSeek Harness.exe")。 想只记录不启动,把dryrun改成1(下一次按键即生效)。
| 工具 | 作用 |
|---|---|
copilot_key_status | 钩子进程/PID、计划任务状态、当前 config.ini、日志末尾 |
copilot_key_start / _stop / _restart | 启停重启钩子 |
copilot_key_trigger | 等效按一下这个键 |
copilot_key_config | 读写 trigger / port / url / launcher / dryrun(带校验与时间戳备份) |
copilot_key_log | 看 watcher / launcher / capture 日志 |
System.Windows.Forms,无第三方依赖。defineTool、dsh.bundle.patch、dsh.profile.bundles。icacls <dir> 查看),钩子拉起的进程会写不了 %USERPROFILE%\.dsh,修复见 hook/README.md。MIT