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

腕上会话 DING-HAO-RAN/dsh-watch

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

在智能手表上查看并操作电脑的 AI 会话

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

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

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/DING-HAO-RAN/dsh-watch.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · desktop
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-watch(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 15:15:35

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 发起网络请求
    relay/src/dsh.mjs:115
    response = await fetch(`${this.base}/api/${method}`, {
  • 读取本地文件
    relay/src/relay.mjs:33
    if (existsSync(join(candidate, 'index.html'))) return candidate
  • 读取本地文件
    relay/src/relay.mjs:168
    const raw = readFileSync(this.stateFile, 'utf8')
  • 写入本地文件
    relay/src/relay.mjs:189
    writeFileSync(this.stateFile, JSON.stringify({ version: 1, tokens }, null, 2), { mode: 0o600 })
  • 读取本地文件
    relay/src/relay.mjs:209
    readFile(file, 'utf8').then((html) => {
  • 读取本地文件
    relay/src/server.mjs:58
    if (existsSync(candidate)) return candidate
  • 读取本地文件
    relay/src/tunnel.mjs:34
    return typeof this.binary === 'string' && this.binary !== '' && existsSync(this.binary)
  • 执行外部命令来自配置/变量
    relay/src/tunnel.mjs:47
    const child = spawn(this.binary, [
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

DSH Watch:在智能手表上读取和操作 DeepSeek Harness 会话。桌面中继(单个 exe)、手表应用和命令行中继。|把电脑上的 DSH 会话搬到手表上:浏览项目、查看工具调用、发消息、答题、切换模型、查看用量。

README

由 DeepSeek 最新模型翻译生成
| English 手表 DSH 在智能手表上查看和操作电脑上的 DeepSeek Harness 会话。 电脑上跑着 DSH,手表连上它,就能随时掏出手腕看 AI 干到哪一步了: - 按项目浏览全部会话,点进去看对话正文 - 展开工具调用,看每一步读了什么文件、执行了什么命令、返回了什么结果 - 发消息、停止生成、往前翻历史 - 回答 AI 的提问(单选、多选、打字都支持) - 切换模型与推理强度,查看 token 用量与上下文占用 - 看子智能体:谁被派出去干活、在跑还是做完了、花了多久,点进去读它的完整对话 - 看计划与任务:待办清单勾到哪一步、团队里谁负责哪件事、当前目标进展如何 不需要公网服务器,不需要改动 DSH 的任何配置,也不依赖任何 DSH 插件。 开发环境为 OPPO Watch(Android 11,466×466 圆屏)。应用最低支持 Android 8.0,其它 Wear OS / Android 手表理论可用,但界面是按圆屏设计的。
展开完整文档(README 剩余 1 节)
| English

手表 DSH

在智能手表上查看和操作电脑上的 DeepSeek Harness 会话。

电脑上跑着 DSH,手表连上它,就能随时掏出手腕看 AI 干到哪一步了:

- 按项目浏览全部会话,点进去看对话正文
- 展开工具调用,看每一步读了什么文件、执行了什么命令、返回了什么结果
- 发消息、停止生成、往前翻历史
- 回答 AI 的提问(单选、多选、打字都支持)
- 切换模型与推理强度,查看 token 用量与上下文占用
- 看子智能体:谁被派出去干活、在跑还是做完了、花了多久,点进去读它的完整对话
- 看计划与任务:待办清单勾到哪一步、团队里谁负责哪件事、当前目标进展如何

不需要公网服务器,不需要改动 DSH 的任何配置,也不依赖任何 DSH 插件。

开发环境为 OPPO Watch(Android 11,466×466 圆屏)。应用最低支持 Android 8.0,其它 Wear OS / Android 手表理论可用,但界面是按圆屏设计的。

工作原理

┌─────────────┐ HTTP/JSON ┌──────────────┐ DSH 协议 ┌─────────┐ │ 手表端应用 │ ───────────────────────▶ │ 中继服务 │ ───────────────────▶ │ DSH │
│ (Android) │ ◀─────────────────────── │ (电脑上运行) │ ◀─────────────────── │ 桌面版 │
└─────────────┘ 只有 10 个简单接口 └──────────────┘ 签名 cookie + 裁剪 └─────────┘ ▲ │ └── UDP 广播自动发现 ───┘

为什么不能直连 DSH? 两个硬障碍:

1. DSH 的 /api 只接受它自己签发的、绑定到自身地址的签名 cookie,手表无法自行鉴权;
2. 一次会话的原始响应有几百 KB(含大量流式分片与工具 diff),手表既收不下也没必要收。

中继把这两件事都吸收掉:它从本机 DSH 的凭据里推导出一张合法票据完成鉴权,再把数据裁剪成手表真正要用的部分,对外只暴露一组简单的 REST 接口。它只读凭据,不改配置、不装插件。

下载与安装

1. 电脑端(二选一)

方式 A:桌面程序(推荐)

到 Releases 下载 DSH-Relay.exe,双击即可。也可以直接点:

https://github.com/DING-HAO-RAN/dsh-watch/releases/latest/download/DSH-Relay.exe

这是主推形态:一个文件,拷到任何 Windows 10/11 上都能跑,目标电脑不需要装 .NET、Node.js 或任何其它东西。程序会自动找到本机正在运行的 DSH,并在窗口里显示配对码和地址。

方式 B:命令行中继(需装 Node.js)

不需要界面、或要在服务器上跑时,直接用源码运行:

node relay/src/server.mjs # 只开局域网
node relay/src/server.mjs --tunnel # 同时开一条公网地址

常用参数:--port 19390(手表接入端口)、--dsh-port 19387(本机 DSH 端口)、--state-file <文件>(配对令牌存档位置)。

也可以用 scripts/pack-relay.ps1 把它打包成单个 exe(内含 Node 运行时),见从源码构建。

两种方式都要求电脑上已安装并正在运行 DSH 桌面版(中继需要读取它的登录凭据)。

公网访问是可选的附加功能,需要 cloudflared。它不随 Releases 提供(体积约 50 MB),把 cloudflared.exe 放到程序(或中继)所在目录即可启用;缺了它只影响公网访问,局域网照常可用。

2. 手表端

到 Releases 下载 DSH-Watch.apk(直接下载地址:https://github.com/DING-HAO-RAN/dsh-watch/releases/latest/download/DSH-Watch.apk),然后:

1. 手表开启「开发者选项」与「USB 调试」(通常在「关于手表」里连点版本号);
2. 用数据线连接电脑,在手表上允许调试授权;
3. 确认设备已就绪:

adb devices # 状态应为 device,而不是 unauthorized

4. 安装:

adb install -r "DSH-Watch.apk"

也可以直接用启动参数预填地址与配对码,省去在手表上输入:

adb shell am start -n cn.dsh.watch/.MainActivity
--es host 192.168.1.100 --ei port 19390 --es code 123456 --ez autopair true

autopair 会在填好之后自动发起配对,连点一次都不用在手表上做。

3. 配对

有两种方式,推荐第一种。

一键配对(省事):手表上「设置」→ 点「一键配对」→ 手表自己找到同一 WiFi 下的电脑 → 电脑上弹出确认框 → 点「同意这次」;勾上「把这台设备保存为常用设备」后点确认,这台手表以后再来配对会自动同意,不再弹窗(可以在电脑端「常用设备」里随时删掉)。

手动填:电脑端窗口里会显示 6 位配对码和若干条地址,在手表「设置」里:

- 地址:填窗口里显示的地址(同一个 WiFi 填「局域网」那条;也可以点「自动查找局域网」自动填入)
- 配对码:填窗口里的 6 位数字
- 点「配对并连接」 一次配对,内网公网都能用:配对成功时中继会把局域网地址与公网地址一起下发,手表把两条都记在这一台设备上,共用一个令牌。在家走局域网直连,出门自动改用公网地址,不需要重新配对。公网地址每次重启中继都会变,手表连上中继时会自动同步最新的一条。

配对成功后手表会记住,之后打开直接就是会话列表。配对码与令牌都会保存在电脑上,中继重启、甚至升级程序都不会变,不用重配。需要换码时点窗口里的「换一个配对码」。

4. 多台设备之间切换

手表会记住每一台连过的设备(显示电脑名与地址)。在「设置」→「已记住的设备」里点一条就能直接切过去,不用重新配对。出门用公网、回家用局域网、换另一台电脑,都在这个列表里。

5. 电脑端的开机自启与随 DSH 启动

电脑端「设置」卡片里有两个开关,可以同时开:

| 开关 | 效果 |
| 开机自启 | 登录 Windows 后自动运行,窗口收进托盘不打扰你(写当前用户的 Run 项,不需要管理员权限) |
| 随 DSH 启动而启动 | 只在 DSH 运行时对外服务;DSH 退出就暂停,DSH 回来自动恢复 |

两个都选不会冲突:开机后先待在托盘待命,DSH 一启动就自动开始服务,始终只有一个程序实例。

公网默认开启:「启动时自动开启公网访问」默认勾选,程序起来就会拉起 cloudflared 拿一条公网地址,所以手表配一次就能在外面用。不需要跨网络访问时可以关掉。

关闭窗口不等于退出:点窗口右上角关闭只是收进托盘,中继继续为手表服务;要彻底退出请用托盘图标的右键菜单「退出」。单击托盘图标即可重新打开窗口。

在 Windows 11 上找不到托盘图标? 系统默认把新出现的托盘图标收进任务栏的「^」隐藏区,程序其实已经在运行。点任务栏的「^」就能找到「DSH 中继」,也可以把它从那里拖到任务栏固定,以后一直在外面。开机自启时程序会在托盘弹出一次气泡提示,说明它已在后台运行。

6. 看会话里的文件

会话里出现过 md、txt 与代码文件时,会话页左滑菜单会多出「查看文件」:列出这次会话碰到的文件,点进去看全文。Markdown 会渲染成标题、列表与代码块;代码带行号与关键字高亮。

手表只能打开这次会话里真正出现过的文件——中继按会话里工具步骤的路径做白名单,不接受任意路径,所以不会把电脑上的其它文件暴露给手表。

日常使用

手势:右滑返回上一级,左滑打开操作菜单。

| 想做什么 | 怎么做 |
| 看有哪些项目 | 打开应用即是项目列表;点项目看它下面的会话 |
| 看对话 | 点会话卡片;进入时自动定位到最新内容 |
| 看 AI 的思考 | 每条回复上方有「思考 ▸」,点开就是他得出这句话之前的推理 |
| 看每一步操作 | 两段回复之间的工具调用会收成一组(显示「N 项」);点一下列出清单,再点某一条看它的参数与结果 |
| 看会话里的文件 | 左滑 →「查看文件」:md / txt / 代码,Markdown 与代码都会渲染 |
| 只想要纯对话 | 左滑 →「只看对话」 |
| 发消息 | 会话页点「发消息」→ 输入 →「发送」 |
| 停止生成 | 会话页点「停止」 |
| 回答问题 | 有待答提问时会显示「AI 在等你回答」,点进去选选项 |
| 换模型 | 左滑 →「模型」:先显示当前模型,再逐级选供应商 → 模型 → 推理强度 |
| 看用量 | 左滑 →「用量」:token 消耗、上下文占用、耗时统计 |
| 看子智能体 | 左滑 →「子任务」:每个子任务的名字、状态(运行中/已完成/失败)、耗时与轮数;点一条看它的完整对话 |
| 看计划与任务 | 左滑 →「计划与任务」:待办清单(带状态)、团队成员与任务板、当前目标 |
| 往前翻历史 | 左滑 →「看更早的内容」 |
| 换主题 / 关圆屏优化 | 左滑 →「设置」→「外观」:深色与浅色,圆屏优化可关 |
| 换电脑 / 切设备 | 左滑 →「设置」:已记住的设备点一条就切过去 |
| 连一台新电脑 | 设置页点「一键配对」,电脑上点「同意」即可 |

从源码构建

手表应用

需要 JDK 17+、Android SDK platform-35 与 build-tools。

$env:JAVA_HOME = "C:\path\to\jdk" # JDK 17 或更高 $env:ANDROID_HOME = "C:\path\to\android-sdk" $env:WATCH_BUILD_ROOT = "D:\build\watch-dsh" # 必须在项目目录之外 pwsh -File scripts/build.ps1 -WorkRoot .

产出 dist/DSH手表.apk。构建过程是直接用 SDK 工具链(aapt2 → javac → d8 → zipalign → apksigner),不依赖 Gradle。

签名密钥首次构建时自动生成在 $env:WATCH_BUILD_ROOT/signing/dsh-watch-dev.jks(默认口令 android-dev)。请保留同一个密钥以便覆盖安装;正式分发请换成自己的密钥。

WATCH_BUILD_ROOT 不在项目目录内是硬性要求,脚本会拒绝在工作树里构建——避免把临时产物和私钥混进版本库。

桌面程序

只需要 Windows 自带的 .NET Framework 4.8 编译器,不必安装 .NET SDK:

pwsh -File scripts/build-app.ps1 -WorkRoot .

产出 dist/DSH中继/。首次构建会从 NuGet 取一次 WebView2 的托管程序集并缓存,之后离线可用。

命令行中继

需要 Node.js 22+:

pwsh -File scripts/pack-relay.ps1 -WorkRoot .

产出 dist/中继命令行版/。它用 Node 的 SEA(Single Executable Application)把中继和 Node 运行时打进单个 exe,拷到没装 Node 的机器上也能跑。首次打包会联网获取一次 postject 并缓存。

上述脚本用 PowerShell 7(pwsh)调用;Windows 自带的 Windows PowerShell 5.1 也能运行。

测试

中继提供了几个自检脚本,走的是手表实际调用的同一组接口,因此可以在电脑上替代大部分真机点击验证:

node tests/check-protocol.mjs # 逐个核对 DSH 端点的参数形态(只读)
node tests/check-features.mjs # 项目分组、步骤详情、模型目录、用量、翻页(只读)
node tests/e2e.mjs --port 19390 --code 123456 # 端到端:配对、列表、读消息、发消息
node tests/answer-once.mjs --pick 米饭 # 回答当前待答问题,并确认它从待答列表消失
node tests/send.mjs --session <id> --text "内容" # 从中继侧发一条消息

e2e.mjs 会真的往会话里发一条带时间戳的消息并确认它进入 DSH(发送用例会单独建一个空白会话,不污染现有对话)。

以下几个用于排查问题:

node tests/watch-events.mjs --seconds 15 # 观察 DSH 事件流(提问没冒出来时用)
node tests/probe-shapes.mjs # 查看 DSH 实际返回的字段形状

涉及界面行为的改动,建议再用 adb 在真机上从实际入口走一遍(启动 → 点项目 → 点会话 → 发消息 / 答题)。

实现要点

- 鉴权:DSH 的 /api 只认它自己签发的 dsh-auth-<hash> cookie。中继从 ~/.dsh/.credentials.yaml 读取签名密钥,按同一算法为 127.0.0.1:<port> 签一张票,因此无需改动 DSH 即可合法调用。有效期不得超过 DSH 的 cookieMaxAgeDays(默认 30 天)。
- 自动找到 DSH:桌面程序按「运行中的 DSH 进程位置 → 用户主目录 → 常见安装位置 → 其它盘符」的顺序查找 .dsh 配置目录,并探测几个常见端口,两样都对上才算可用。找不到时会明确说明原因(没装 / 没启动 / 读不出凭据)。
- 提问有两条通道:仍在等待(open)的问题只经 WebSocket $events 流下发,且不带 callId,必须用 $events/result 按 eventId 回填;已超时挂起(continued)的问题才走 userQuestions/answer RPC。中继按情况自动选路。
- 补齐遗漏的提问:DSH 会在新客户端接入事件流时重放所有待处理事件,中继据此在「有会话运行但看不到提问」时重连一次事件流来补齐。
- 数据裁剪:中继只保留真人消息、助手正文与工具步骤,把长文本截断后再给手表。会话事件里混有大量系统注入的 user/message(时间上下文、记忆快照、指令),只有 source.kind 为 user / user-question-reply 的才是真人消息。
- 局域网发现:中继每 2 秒向 UDP 19391 端口广播一条 JSON({service, port, name}),手表收到即可自动填地址;广播不可靠时仍可手动输入。选择 UDP 广播而不是 mDNS,是为了让手表端不引入任何依赖。
- 单文件分发:桌面程序把 WebView2 的托管程序集与原生加载器都嵌进 exe——托管程序集在启动时从内存装入,原生加载器释放到程序目录。这样分发只需一个文件,也不会往用户配置目录里堆东西。
- 圆屏适配:按圆的内接矩形统一留边(左右 15%、上下 18%),四角到圆心约 0.474 < 半径 0.5,整个滚动区都在圆内,因此不需要为每个页面单独算边距。
- 界面永远可用:桌面程序有两层界面——内嵌浏览器的网页控制台(好看、信息密度高)和纯 WinForms 的原生界面(零依赖)。前者依赖 WebView2 运行时,精简版 Windows 上可能没有,此时自动降级到后者,配对码与地址照常显示。
- 只有新界面:原生界面不再预先摆出来等浏览器盖上去——那样每次启动都会先闪一屏旧样式。现在正常启动只显示新控制台,浏览器真的起不来时才创建原生界面。控制台支持深色/浅色主题,立即生效并记住。
- 高分屏不模糊:程序带 DPI 感知清单(PerMonitor V2),在 125%/150%/200% 缩放的屏幕上按真实分辨率渲染,文字与边框不发虚;窗口初始尺寸按当前显示器工作区的比例算出,小屏不超出、大屏不空旷。
- 一次配对两个入口:配对响应同时给局域网与公网地址,手表把两条都记在这一台设备上共用一个令牌;公网地址每次重启都会变,手表连上后通过无需鉴权的 /api/identity 同步最新值。
- 常用设备:手表首次配对时生成随机设备标识并永久保存;用户勾「保存为常用设备」后,中继按标识记住它,之后同类请求自动同意。记住不等于放宽安全模型——仍然发放一次性票据、仍然只能换一次令牌,且可以在控制台随时删除。
- 文件查看的白名单:/api/file 只接受「这次会话里工具步骤出现过的路径」,路径来自中继自己从会话记录里抽取的文件列表,不接受调用方任意指定。

项目结构

.
├── app/ 手表端应用(Android,原生 Java) │ └── src/main/ │ ├── AndroidManifest.xml │ ├── java/cn/dsh/watch/ │ │ ├── MainActivity.java 全部页面与交互逻辑 │ │ ├── WatchUi.java 圆屏控件、安全区与主题取色 │ │ ├── Theme.java 深色/浅色两套语义色 │ │ ├── Markdown.java 正文与工具结果的富文本渲染 │ │ ├── CodeView.java 代码渲染(行号 + 关键字高亮) │ │ ├── Api.java HTTP 客户端 │ │ ├── Store.java 地址与令牌的存取 │ │ └── Discovery.java UDP 自动发现 │ └── res/ ├── desktop/ 电脑端桌面程序(C#,单文件 exe) │ ├── src/ │ │ ├── MainForm.cs 窗口、内嵌浏览器、托盘与开窗尺寸 │ │ ├── NativePanel.cs 零依赖原生界面(降级目标) │ │ ├── PairingDialog.cs 配对确认框(可否保存为常用设备) │ │ ├── Autostart.cs 开机自启(当前用户 Run 项) │ │ ├── panel.html 网页控制台 │ │ ├── app.manifest DPI 感知清单(高分屏不模糊) │ │ ├── RelayServer.cs 中继服务 │ │ ├── DshClient.cs DSH 鉴权与 RPC │ │ ├── DshLocator.cs 查找本机 DSH 与凭据 │ │ ├── Steps.cs 会话数据裁剪 │ │ ├── PublicTunnel.cs cloudflared 公网中转 │ │ ├── Bootstrap.cs 内嵌依赖的装载 │ │ └── StartupLog.cs 启动日志 │ └── 使用说明.txt 随分发包给使用者的说明 ├── relay/ 命令行中继(Node,SEA 打包) │ ├── src/ │ │ ├── server.mjs 入口与参数解析 │ │ ├── relay.mjs 面向手表的 REST 接口 + UDP 广播 │ │ ├── dsh.mjs DSH 协议与鉴权 │ │ ├── state.mjs DSH 数据的裁剪与归一化 │ │ ├── tunnel.mjs 公网中转 │ │ └── paths.mjs 取自身目录(打包兼容) │ ├── public/index.html 控制面板 │ └── start-relay.cmd 双击启动 ├── scripts/ 构建脚本 │ ├── build.ps1 构建手表 APK │ ├── build-app.ps1 构建桌面程序 │ ├── pack-relay.ps1 打包命令行中继 │ └── bundle-relay.mjs 把中继源码合成单文件 └── tests/ 自检脚本

已知边界

- 中继以明文 HTTP 提供局域网服务(公网走 HTTPS),并靠 6 位配对码保护。它只应在你信任的网络里运行,用完关掉即可。
- 手表上一次最多显示 40 条消息 / 60 个会话;更早的历史要点「看更早的内容」逐批加载。
- 中继需要电脑上的 DSH 桌面版处于运行状态;关掉窗口只是收进托盘,手表不受影响,彻底退出才会停止服务。
- 公网地址是 cloudflared 的临时隧道,每次启动都会变;需要固定地址得自备域名或反向代理。
- Cloudflare 对免注册隧道有频率限制,短时间内反复开关会提示限流。等几分钟再试即可,局域网功能不受影响。
- 手表走 HTTPS 时放行全部证书——手表上没有便捷的证书安装入口,访问控制由配对令牌承担。
- 桌面程序要求 Windows 10 1903 以上或 Windows 11;更早的系统自带 .NET Framework 低于 4.8,需要自行安装。

常见问题

提示「没有找到 DSH」? 先启动 DSH 桌面版,再重新打开中继。中继需要读取它的凭据,DSH 没运行就读不到。

手表一直转圈连不上? 确认手表和电脑在同一个 WiFi;地址填「局域网」那条(形如 http://192.168.1.x:19390),不要填 127.0.0.1——那指向手表自己。也检查电脑的防火墙是否拦了 19390 端口。

配对码会变吗? 不会。配对码与令牌都保存在电脑上,中继重启、升级程序都不会变,手表不用重配。只有你主动点「换一个配对码」才会换。

一键配对找不到电脑? 确认手表与电脑在同一个 WiFi。Windows 防火墙可能拦了 UDP 19391,允许它通过即可;也可以改用手动填地址与配对码,效果一样。

中继会改动我的 DSH 配置吗? 不会。它只读取 DSH 的登录凭据用于本机通信,不修改任何配置文件,也不安装任何插件。

关掉窗口后手表还能连吗? 能。点窗口右上角关闭只是收进托盘,中继继续服务;要彻底停止请在托盘图标上右键 →「退出」。

手表在家能连、出门连不上? 先确认电脑端「启动时自动开启公网访问」是勾上的,并且地址列表里有「公网」那条。手表配对时会同时拿到两条地址,出门会自动改用公网地址;如果中继刚重启过,公网地址变了,手表下次连上时会自动同步。

桌面程序打不开或闪退? 程序目录下的 startup.log 记录了启动全过程(DSH 定位、端口、依赖释放、异常堆栈),这是排查的第一手线索。

许可

MIT。可以自由使用、修改、分发,包括商用;保留版权声明即可。
预览分享卡片长什么样 ↓DING-HAO-RAN/dsh-watch
分享 · DeepSeek Harness Hub
DING-HAO-RAN/dsh-watch

在智能手表上查看并操作电脑的 AI 会话

回到顶部