DeepSeek Harness Hub
← 返回列表

wjingshan/dsh-dock-launcher

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness 开关常驻状态型程序坞应用

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/14 · 已提供中文文档

常驻程序坞的 DeepSeek Harness 开关:左键回到/启动 dsh 网页界面,右键菜单(停止服务、动画开关),图标实时显示服务与任务状态并在完成/需确认时发光提醒。 | Always-on macOS Dock toggle for DeepSeek Harness: left-click to open/start the dsh web UI, right-click menu (stop service, animation toggle); live state icon with glow alerts.

综合分
30.1
GitHub 分
30.1
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add wjingshan/dsh-dock-launcher
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DeepSeek Harness 开关(常驻状态型程序坞应用)

简体中文 | English

中文:常驻程序坞的 DeepSeek Harness 开关 —— 左键点击回到/启动 dsh 网页界面,右键打开菜单(停止服务、动画开关);图标实时显示服务与任务状态,并在任务完成或需要确认时发光提醒。

English: An always-on Dock toggle for DeepSeek Harness — left-click to open or start the dsh web UI, right-click for the menu (stop service, animation toggle). The icon mirrors live service/task state and glows when a task finishes or needs confirmation.

仓库:https://github.com/wjingshan/dsh-dock-launcher

⬇️ 下载最新版(Release) — 解压后把 App 拖进「应用程序」即可。

一个运行在 macOS(Apple Silicon / M4)上的常驻小程序:程序坞图标 = 拨动开关。
左键点击 = 启动 / 回到 DeepSeek Harness(dsh)网页界面;右键点击 = 操作菜单(停止服务、动画开关等)。
图标实时呈现服务与任务状态,并在任务完成 / 需要确认 / 等你选择时做动态提醒。

界面语言跟随系统,内置 简体中文 / English / 日本語 / 한국어(可在「系统设置 → 通用 → 语言与地区 → 应用程序」单独指定本 App 的语言)。

| 图标 | 状态 | 说明 |
|:--:|:--|:--|
| 关闭 | 关闭 | 红 · 滑块在左 |
| 运行 | 运行 · 空闲 | 绿 · 滑块在右 |
| 进行中 | 任务进行中 | 多色极光流动 |
| 完成 | 任务完成 | 边缘内发光 + 白色流光(绿) |
| 需要确认/单选 | 需要确认 / 等你选择 · 单选 | 问号变形动画 |
| 多选 | 等你选择 · 多选 | 对勾淡化叠加 |

六张图放在同一列、而不是排成一行:GitHub 的 max-width: 100% 会把图片压缩到所在单元格的宽度。
横排时每列宽度都不同(实测 121~235px),每张图就被压成不同尺寸,看起来"大小不一";放在同一列则
共用同一个列宽,无论视口多宽,六张图的显示尺寸必然完全一致。

上表里「任务进行中 / 任务完成 / 需要确认 · 单选 / 多选」都是动图。dsh 停下来等你选分支(ask_user_question)或审批计划(exit_plan_mode)时进入「需要你介入」态——DeepSeek 与 HARNESS 分别向上下让开、开关上的白圆点放大成一个大圆角方形、里面浮现蓝色符号,随后不停循环,直到你在 dsh 页面做好选择、dsh 继续运算,才播放反向动画收回成开关:
- 需要确认(审批)· 等你选择 · 单选 / 普通提问:圆内是蓝色问号,循环「亮度呼吸」(圆内蓝光一明一暗)。这几种情形共用同一套问号动画(所以表中并作一列),在 App 里的区别只在提示音与通知文案。
- 多选:圆内是蓝色对勾,循环「淡化叠加」——对勾从起点写出 → 画完从起点逐渐褪掉 → 还剩约一半时新一笔从起点重画,两笔同框。

图标使用连续圆角(squircle) 并随系统浅/深色外观自动切换底板配色(下图左:深色外观;右:浅色外观):

| 深色外观(默认) | 浅色外观 |
|:--:|:--:|
| 深色 | 浅色 |

⚠️ 前置要求(别人装了却用不了,多半是这几条)

本 App 是 DeepSeek Harness(dsh)的配套开关,不是独立软件,请先满足:

1. 已安装 DeepSeek Harness,dsh 命令可用,并至少运行过一次 dsh web 完成初始化(否则点图标会提示「未找到 dsh」);
2. DEEPSEEK_API_KEY:在 ~/.zshrc 里 export DEEPSEEK_API_KEY=...,或在 dsh 网页的 Models 页保存(否则 dsh 发消息会报 no API key);
3. (可选)brew install zstd:任务状态监测与提醒需要它;缺失时 App 仍能启停服务,但图标不反映任务状态;
4. 系统要求:macOS 14+,Apple Silicon 或 Intel(通用二进制);
5. 首次打开:本 App 未使用付费开发者证书签名/公证,若提示「无法验证开发者」或「已损坏」——
右键 App → 打开,或执行:
xattr -dr com.apple.quarantine "/Applications/DeepSeek Harness 开关.app"

推荐直接用下面的一键安装(脚本会自动去掉隔离标记)。

App 菜单里也有 「环境自检…」 可以随时查看以上各项的实际状态与修复建议。

一键安装

复制到「终端」执行,自动下载最新版并安装到 /Applications(含去除隔离标记、并自动启动):

sh -c "$(curl -fsSL https://raw.githubusercontent.com/wjingshan/dsh-dock-launcher/main/install.sh)"

也可以手动安装:从 Releases 下载 .dmg(打开后拖入「应用程序」)或 .zip(解压后拖入)。
首次打开若提示「无法验证开发者」:右键 App → 打开(或 系统设置 → 隐私与安全性 → 仍要打开)。

成品

DeepSeek Harness 开关.app   (当前版本 v0.15.0)

功能

- 程序坞左键 = 回到页面:优先切回已打开的 127.0.0.1:3080 标签;页面被关了就恢复一个新标签;服务没运行则启动它。打开的是带 token 的完整地址,因此不会落到 401 未授权页:优先读 dock-bridge 插件写的运行时文件,未装该插件时回退解析 dsh 启动日志。
- 程序坞右键 = 操作菜单:打开页面 / 知道了(停止提醒) / 停止服务…(二次确认) / 动画开关 / 打开日志 / 退出。
- 状态图标(4 态):
- 关闭(红,滑块左)= 服务已停止
- 运行 · 空闲(绿,滑块右)
- 任务进行中:多色极光流动(蓝→青→绿→紫长色带缓慢流动 + 一道柔光掠过,60fps)
- 待关注提醒:需要你介入(需确认 / 等你选择)= 变形动画(问号 / 对勾,见下);任务完成 = 绿色边缘内发光 + 边缘内侧 2px 白色流光
- 动态提醒:需要确认 / 等你选择时播放变形动画(0.9 秒变形 → 落定后循环 → 你做好选择后 0.42 秒反向收回成开关),并伴随弹跳 + 通知 + 提示音——单选 / 普通提问圆内是蓝色问号,循环「亮度呼吸」;多选圆内是蓝色对勾,循环「淡化叠加」(写出 → 从起点逐渐褪掉 → 还剩约一半时重写,两笔同框);任务完成仍用绿色边缘发光。点图标、选「知道了」或把鼠标移到程序坞也会立即收回。
- 提示音可配置(右键菜单 →「提示音设置…」打开独立设置窗口):窗口里五种提示各占一行——需确认 / 等你选择 / 任务完成 / 服务启动 / 服务停止,每行可选音效(系统音效 + ~/Library/Sounds)、可点试听按钮;三种提醒还能各自设置重复次数:1 / 2 / 3 / 5 次,或「直到鼠标移到程序坞」(鼠标进入程序坞或菜单栏区域即停,无需辅助功能权限)。底部还有「选择音效时自动试听」开关与「恢复默认」;设置持久化保存。
- 关于:右键菜单「关于 …」显示软件名称、版本号(含 build 号)、GitHub 地址与赞助链接,可直接点按钮打开。
- 动画总开关:右键菜单可一键关闭/开启所有图标动画(关闭后为静态图标,弹跳与通知仍保留);开销极低(仅动画态每帧重绘 128px 图标)。
- 自动注入 API key:GUI 启动的进程不读 .zshrc,本 App 会自动解析 ~/.zshenv / .zprofile / .zshrc / .bash_profile / .bashrc / .profile 中的 DEEPSEEK_API_KEY 注入 dsh 子进程(只读、不落盘、不外传)。
- 任务状态监测:读取 ~/.dsh/sessions//session.jsonl.zstd 活跃会话日志:
- approval/request、approval/asked → 需要确认
- turn/end(普通对话回合结束)→ 任务完成;存在活跃 goal 时回合结束不打扰,改为 goal/change(operation == "complete" / goal.phase == "complete")→ 任务完成
- turn/start → 进行中
- tool/call 且工具为 ask_user_question / exit_plan_mode → 等你选择(这两类交互在日志里没有专用事件,只能按工具名识别)

完成提示规则:会话没有活跃 goal 时,一轮对话结束(turn/end)即算完成;会话存在活跃 goal 时,只在整个 goal 真正结束(goal/change · complete)时提示。监测覆盖所有近期活跃会话,多会话并行不漏检。

与同类插件的关系

dsh 生态里已有多个桌面启动器与提醒类项目,本 App 与它们的关键区别在形态:它不是 dsh 插件,而是一个独立的 macOS 原生程序坞应用——dsh 完全没有运行时,它照样在程序坞里待命,左键点一下就把服务拉起来并进入页面。

生态中的相关项目(名称与描述均可对照 awesome-dsh-plugin 精选列表 核实):

| 相关项目 | 形态 | 与本 App 的差异 |
| --- | --- | --- |
| dsh-start | macOS,命令行 + 脚本生成可入坞的 DSH.app | 功能面同为 macOS 启停,但以 CLI 与脚本构建为主,App 需自行生成 |
| dsh-launcher | macOS,菜单栏应用 + 宿主插件写 runtime.json | 入口是状态栏菜单;本 App 的入口是程序坞图标本身 |
| dsh-unread-dot | macOS,Dock 角标与提示音 | 基于 Web 侧 Badging API,属 dsh 插件内部;本 App 是原生程序坞应用,自带图标动效 |
| dsh-task-watcher-plugin | Windows,托盘四态图标 + 任务面板 | 四态状态的思路接近,但只面向 Windows 托盘,且另起独立进程 |
| dsh-tray、dsh-dock、dsh-native-launcher、dsh-desktop-windowos | Windows 托盘 / 桌面壳 | 平台不同 |
| dsh-clean-desktop-shell | Windows + macOS 桌面壳 | 以快捷方式与托盘为主;不提供程序坞图标即状态显示 |

本 App 的组合目前没有第二个项目同时具备:程序坞图标本身就是状态显示与唯一入口(左键回页面 / 右键出菜单),服务未运行时左键直接拉起服务;图标实时区分 关闭 / 空闲 / 进行中 / 待关注 四态;任务完成由真实的 goal 结束事件驱动,并在图标上累加完成数。

使用

1. 把 DeepSeek Harness 开关.app 拖进「应用程序」,双击打开(或拖到程序坞固定)。
2. App 启动时如实显示服务状态(未运行则显示红色「关闭」),不会自动拉起 dsh。
3. 左键点程序坞图标 = 启动服务并打开 dsh 页面(已运行则回到页面)。
4. 右键点程序坞图标 = 打开操作菜单(停止服务需二次确认)。
5. 菜单栏小图标点击可打开同一套菜单。

提示:提醒共有四条通道——Dock 图标动画、程序坞弹跳、提示音、系统通知。系统通知是可选的:不需要横幅的话,右键菜单里选「关闭系统通知」即可,此时连授权框都不会弹(授权只在首次真正要投递通知时才申请)。

权限说明

本 App 只涉及两个系统权限,而且两个都是可选的——不授权也能正常用。

| 权限 | 用途 | 不授权会怎样 |
|---|---|---|
| 系统通知 | 提醒横幅(四条提醒通道之一) | 其余三条照常:Dock 图标动画、程序坞弹跳、提示音。右键菜单可关掉这项 |
| 自动化(AppleEvents) | 只访问浏览器:读活动标签页地址,精确判断你已回到 127.0.0.1:3080;点击图标时切回已打开的标签而非新开 | 退化为「浏览器在前台即视为已回到界面」;点击图标改为激活浏览器 + 打开地址(可能多开一个标签) |

没有申请、也没有使用的权限:辅助功能、输入监控、屏幕录制、完全磁盘访问、文件与文件夹(桌面 / 文稿 / 下载)、麦克风、摄像头、定位、通讯录、日历、照片、登录项。

其中值得一提的是:「鼠标移到程序坞就停提示音」用的是定时轮询鼠标位置(NSEvent.mouseLocation),不是全局事件监听,所以确实不需要辅助功能或输入监控权限。

另外,App 未启用沙盒(entitlements 为空、ad-hoc 签名):这既是它能自由调用 homebrew 里的 dsh / zstd、读写 ~/.dsh 的前提,也意味着它没有公证——首次打开需要靠 install.sh 去掉 quarantine 标记。

可选增强:dock-bridge 宿主插件

本仓库还附带一个小巧的 dsh 宿主插件 plugins/dsh-dock-bridge。装上它之后,App 不必再去解析 dsh 的启动日志,而是由 dsh 进程直接把端口、PID 和带 token 的地址写出来:

从本地路径安装(把路径换成你的克隆位置)
dsh plugin --profile web add /path/to/dsh-dock-launcher/plugins/dsh-dock-bridge

装完重启一次 web profile 即可。要点:

- 插件写 ~/.config/dsh-dock-launcher/runtime.json(权限 0600,因为里面是活的 token),进程退出时删除;SIGTERM 退出路径也覆盖。
- App 只在「上报 PID 仍存活」且「端口仍可连」时才采信该文件,崩溃残留会被自动忽略并回退读日志。
- 不装插件也完全可用:回退路径就是从 ~/Library/Logs/dsh-web.log 里解析带 token 的地址。
- 右键菜单「环境自检…」会显示当前走的是哪条路径。

该插件同时是本仓库向 awesome-dsh-plugin 的投稿条目(它需要一个可 dsh plugin add 安装的宿主插件,而不是纯 .app)。

版本号规范

- 语义化版本,从 0.1.0 开始:
- patch(+0.0.1) = 修 bug / 小改
- minor(+0.1.0) = 新增功能 / 行为增强(0.x 阶段的主要改动也走 minor)
- major(+1.0.0) = 重大改动 / 不兼容(进入稳定期后)
- VERSION = 语义版本号;BUILD_NO = 每次构建递增号(build.sh 自动生成,已 gitignore)。
- 每次改动在 CHANGELOG.md 追加记录。详见 CHANGELOG.md。

构建

cd dsh-dock-launcher
./build.sh          # 一键:绘图标→打包 icns→编译→组装→打包多语言→签名,并注入版本号

- 改图标颜色/造型:src/Icons.swift;改应用图标:src/draw_icon.swift。
- 改启动/监测/提示逻辑:src/ServiceManager.swift、src/TaskMonitor.swift、src/main.swift。
- 多语言文案:resources/.lproj/Localizable.strings(en / zh-Hans / ja / ko)。

目录结构

dsh-dock-launcher/
├── src/
│   ├── main.swift          # 常驻应用:Dock/菜单栏、监测、动画、通知、左键回页面、右键菜单
│   ├── ServiceManager.swift# 启动/停止/端口探测、解析并注入 DEEPSEEK_API_KEY
│   ├── TaskMonitor.swift   # 多会话游标、zstd 解压、事件识别
│   ├── Frontmost.swift     # 前台浏览器/标签检测、聚焦或恢复 dsh 页面
│   ├── Icons.swift         # 各状态开关图标 + 菜单栏模板图标 + 动画绘制(极光/发光/流光)
│   └── draw_icon.swift     # 用 CoreGraphics 绘制 App 图标(生成 1024px PNG)
├── resources/              # 界面多语言(en / zh-Hans / ja / ko 的 Localizable.strings)
├── docs/                   # 状态图标预览图 + 支付宝收款码(README 引用)
├── plugins/dsh-dock-bridge/    # 可选宿主插件:提供端口/PID/带 token 地址(可 dsh plugin add)
├── install.sh              # 一键安装到 /Applications
├── Info.plist              # 应用元数据(含 CFBundleLocalizations)
├── build.sh                # 一键构建脚本(读取 VERSION/BUILD_NO 注入版本号)
├── VERSION                 # 语义版本号(第一行)
├── BUILD_NO                # 构建号(每次构建自增,已 gitignore)
├── CHANGELOG.md            # 版本记录
├── LICENSE                 # MIT
├── README.md / README.en.md    # 中文 / 英文说明
└── DeepSeek Harness 开关.app   # 成品(已 gitignore)

许可

MIT © 2026 wjingshan

☕ 赞助

DeepSeek Harness 开关 是我自用的小工具,顺手开源出来。如果它帮到了你,欢迎请我喝杯咖啡 ☕

感谢你的支持! 💙

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(wjingshan)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群