dsh-pocket 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +18 -5
- package/README.md +18 -5
- package/client/client.js +12 -3
- package/client/index.jsx +7 -3
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -18,12 +18,15 @@
|
|
|
18
18
|
|
|
19
19
|
## What is this
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**You want to use DeepSeek Harness on your computer, even when you're not at the computer.**
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
- On your way home, the agent is running a task on your computer — pull out your phone and see where it is, what it produced.
|
|
24
|
+
- Out and about, you want the agent on your computer to look something up or write a snippet — no remote desktop, no SSH.
|
|
25
|
+
- The computer is at home or in the office, you're elsewhere, and you want to **drive your DeepSeek Harness from your phone** — send tasks, watch the output, tap approvals.
|
|
26
|
+
|
|
27
|
+
That's what DSH Pocket does: **install it, scan a QR code, and your phone shows and controls the DeepSeek Harness UI in real time — from anywhere.**
|
|
28
|
+
|
|
29
|
+
> One-liner: `dsh web` only allows local access by default; DSH Pocket puts a proxy in front of it that safely bridges your phone (see [How it works](#-how-it-works)).
|
|
27
30
|
|
|
28
31
|
## ✨ Features
|
|
29
32
|
|
|
@@ -39,6 +42,12 @@ Phone ──scan──> dsh-pocket proxy ──> dsh web :3080
|
|
|
39
42
|
|
|
40
43
|
## 🚀 Usage
|
|
41
44
|
|
|
45
|
+
**Where the entry is**: after installing and restarting `dsh web`, open **Settings** — the left sidebar shows **"Phone access"** at the top level (same level as General / Models):
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<img src="docs/entry.jpg" alt="Phone access entry" width="70%">
|
|
49
|
+
</p>
|
|
50
|
+
|
|
42
51
|
**Prerequisite**: [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) installed. If your terminal says `dsh: command not found`, install it first:
|
|
43
52
|
|
|
44
53
|
```sh
|
|
@@ -139,3 +148,7 @@ npm test # proxy rewrite / WS passthrough / tunnel / service / RP
|
|
|
139
148
|
[GPL-2.0](LICENSE) — copyleft: free to use, modify, and redistribute, but **derivatives must stay GPL** and keep the copyright notice; commercial use included.
|
|
140
149
|
|
|
141
150
|
> Note: the mobile-adaptation portion is ported from [dsh-web-mobile](https://github.com/mexiaosqwq/dsh-web-mobile) (MIT, GPL-compatible); its copyright notice stays in `client/mobile/LICENSE.dsh-web-mobile`.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Questions? Feedback welcome**: bugs, ideas, or feature requests — open an issue at [GitHub Issues](https://github.com/shaobeichen/dsh-pocket/issues) 🙏
|
package/README.md
CHANGED
|
@@ -18,12 +18,15 @@
|
|
|
18
18
|
|
|
19
19
|
## 这是什么
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**你不在电脑前,也想用电脑上的 DeepSeek Harness。**
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
- 下班路上,agent 在电脑上跑任务,你想掏出手机看看它干到哪了、结果如何
|
|
24
|
+
- 出门在外,突然想让电脑上的 agent 查点资料、写段代码,但没有远程桌面、没有 SSH
|
|
25
|
+
- 电脑在宿舍/办公室,你人在外面,想随时"操控你的 DeepSeek Harness"——发任务、看输出、点审批
|
|
26
|
+
|
|
27
|
+
DSH Pocket 就是干这个的:**装上它,手机扫个码,就能实时看到并操控电脑上的 DeepSeek Harness 界面**——人在外面也能用。
|
|
28
|
+
|
|
29
|
+
> 原理一句话:`dsh web` 默认只允许本机访问,DSH Pocket 在它前面加一层代理,把手机访问安全地接入(详见[「原理」](#-原理))。
|
|
27
30
|
|
|
28
31
|
## ✨ 特性
|
|
29
32
|
|
|
@@ -39,6 +42,12 @@
|
|
|
39
42
|
|
|
40
43
|
## 🚀 怎么用
|
|
41
44
|
|
|
45
|
+
**入口在哪**:安装完成并重启 `dsh web` 后,打开 **设置**,左侧边栏就能看到 **「手机访问」** 入口(和「通用设置」「模型」同级):
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<img src="docs/entry.jpg" alt="手机访问入口" width="70%">
|
|
49
|
+
</p>
|
|
50
|
+
|
|
42
51
|
**前提**:电脑上已装好 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)。如果终端提示 `dsh: command not found`(找不到 dsh 命令),先安装:
|
|
43
52
|
|
|
44
53
|
```sh
|
|
@@ -140,3 +149,7 @@ npm test # 代理改写 / WS 透传 / 隧道 / 服务 / RPC(7
|
|
|
140
149
|
[GPL-2.0](LICENSE) —— 自由软件许可:可自由使用、修改、分发,但**修改版必须同样以 GPL 开源**并保留版权声明;商用同样适用。
|
|
141
150
|
|
|
142
151
|
> 说明:移动端适配部分移植自 [dsh-web-mobile](https://github.com/mexiaosqwq/dsh-web-mobile)(MIT 许可,兼容 GPL),其版权声明保留在 `client/mobile/LICENSE.dsh-web-mobile`。
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
**有问题?欢迎反馈**:遇到 Bug、有想法、想提需求,请到 [GitHub Issues](https://github.com/shaobeichen/dsh-pocket/issues) 告诉我们 🙏
|
package/client/client.js
CHANGED
|
@@ -1406,9 +1406,18 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
1406
1406
|
{ style: styles.card },
|
|
1407
1407
|
(0, import_react2.createElement)(
|
|
1408
1408
|
"div",
|
|
1409
|
-
|
|
1410
|
-
(0, import_react2.createElement)(
|
|
1411
|
-
|
|
1409
|
+
{ style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8 } },
|
|
1410
|
+
(0, import_react2.createElement)(
|
|
1411
|
+
"div",
|
|
1412
|
+
null,
|
|
1413
|
+
(0, import_react2.createElement)("strong", null, "\u{1F4F1} \u624B\u673A\u8BBF\u95EE | Phone access"),
|
|
1414
|
+
(0, import_react2.createElement)("div", { style: styles.muted }, "\u624B\u673A\u626B\u7801\u6253\u5F00\u7684\u5C31\u662F\u7535\u8111\u4E0A\u7684\u8FD9\u4E2A\u754C\u9762\uFF0C\u5B9E\u65F6\u540C\u6B65 | the phone shows this exact screen, live")
|
|
1415
|
+
),
|
|
1416
|
+
(0, import_react2.createElement)(
|
|
1417
|
+
"a",
|
|
1418
|
+
{ href: "https://github.com/shaobeichen/dsh-pocket/issues", target: "_blank", rel: "noreferrer", style: { fontSize: 12, color: "var(--dsw-alias-label-tertiary,#8b93a1)", textDecoration: "none", whiteSpace: "nowrap" } },
|
|
1419
|
+
"\u5F00\u53D1\u8005\uFF1A\u7A0B\u5E8F\u5458\u5C11\u5317\u6668 | by \u5C11\u5317\u6668"
|
|
1420
|
+
)
|
|
1412
1421
|
),
|
|
1413
1422
|
// 更新提示
|
|
1414
1423
|
updateInfo ? (0, import_react2.createElement)(
|
package/client/index.jsx
CHANGED
|
@@ -166,9 +166,13 @@ function PocketSettingsTab({ rpcCall }) {
|
|
|
166
166
|
const tunnelStateStarted = tunnelState?.startedAt ?? null;
|
|
167
167
|
|
|
168
168
|
return h('div', { style: styles.card },
|
|
169
|
-
h('div',
|
|
170
|
-
h('
|
|
171
|
-
|
|
169
|
+
h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8 } },
|
|
170
|
+
h('div', null,
|
|
171
|
+
h('strong', null, '📱 手机访问 | Phone access'),
|
|
172
|
+
h('div', { style: styles.muted }, '手机扫码打开的就是电脑上的这个界面,实时同步 | the phone shows this exact screen, live'),
|
|
173
|
+
),
|
|
174
|
+
h('a', { href: 'https://github.com/shaobeichen/dsh-pocket/issues', target: '_blank', rel: 'noreferrer', style: { fontSize: 12, color: 'var(--dsw-alias-label-tertiary,#8b93a1)', textDecoration: 'none', whiteSpace: 'nowrap' } },
|
|
175
|
+
'开发者:程序员少北晨 | by 少北晨'),
|
|
172
176
|
),
|
|
173
177
|
|
|
174
178
|
// 更新提示
|
package/package.json
CHANGED