口袋远程助手 Mrsirlila/dsh-pocket-reportModify-and-add
DeepSeek Harnessv2.12.0把 DeepSeek Harness 装进你的口袋,对原作者shaobeichen的版本源码用deepseek跑了一点修改,并且做出了能使用的APK手机版进行操作,能够自动一键公网内网互通
37.7/100
综合分
12
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:npm 同名包「dsh-pocket」归属 shaobeichen/dsh-pocket,装到的可能不是本插件;安装清单取自 plugin/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Mrsirlila/dsh-pocket-reportModify-and-add该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意npm 同名包「dsh-pocket」归属 shaobeichen/dsh-pocket,装到的可能不是本插件;安装清单取自 plugin/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-pocket @ 2.12.0
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 20:48:35
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 59 处,展示前 54 条)
- 写入本地文件plugin/client/build.mjs:45
await mkdir(dirname(outputPath), { recursive: true }); - 写入本地文件plugin/client/build.mjs:46
await writeFile(outputPath, wrapped, 'utf8'); - 写入剪贴板plugin/client/client.js:496
await navigator.clipboard.writeText(text); - 请求外部主机registry.npmjs.orgplugin/client/client.js:2291
const meta = await (await fetch("https://registry.npmjs.org/dsh-pocket/latest", { cache: "no-store" })).json(); - 发起网络请求plugin/client/client.js:2291
const meta = await (await fetch("https://registry.npmjs.org/dsh-pocket/latest", { cache: "no-store" })).json(); - 读取本地文件plugin/lib/index.js:37
return JSON.parse(readFileSync(pkgPath, 'utf8')).version; - 写入本地文件plugin/lib/index.js:56
mkdirSync(dirname(p), { recursive: true }); - 写入本地文件plugin/lib/index.js:57
writeFileSync(p, fresh, { mode: 0o600 }); - 读取本地文件plugin/lib/index.js:63
const existing = readFileSync(p, 'utf8').trim(); - 读取本地文件plugin/lib/index.js:197
const raw = JSON.parse(await readFile(restartNoticePath(), 'utf8')); - 写入本地文件plugin/lib/index.js:204
return mkdir(dirname(restartNoticePath()), { recursive: true }) - 写入本地文件plugin/lib/index.js:205
.then(() => writeFile(restartNoticePath(), JSON.stringify({ at: Date.now(), pid: process.pid }), 'utf8')); - 删除本地文件plugin/lib/index.js:214
await rm(restartNoticePath(), { force: true }).catch(() => {}); - 执行外部命令固定命令plugin/lib/index.js:236
const child = spawn('dsh', ['plugin', '--profile', profile, 'update', 'dsh-pocket', '--latest', '-w'], { - 读取本地文件plugin/lib/index.js:298
const raw = readFileSync(join(process.env.DSH_HOME ?? join(homedir(), '.dsh'), 'settings.yaml'), 'utf8'); - 读取本地文件plugin/lib/service.mjs:93
const v = readFileSync('/proc/version', 'utf8').toLowerCase(); - 执行外部命令来自配置/变量plugin/lib/service.mjs:129
execFile(candidates[i], [], { timeout: 5000, windowsHide: true }, (err, stdout) => { - 写入本地文件plugin/lib/service.mjs:258
await mkdir(dirname(autoStatePath), { recursive: true }); - 写入本地文件plugin/lib/service.mjs:259
await writeFile(autoStatePath, JSON.stringify({ at: Date.now() }), 'utf8'); - 删除本地文件plugin/lib/service.mjs:267
try { await rm(autoStatePath, { force: true }); } catch { } - 读取本地文件plugin/lib/service.mjs:422
const raw = await readFile(autoStatePath, 'utf8'); - 读取本地文件plugin/lib/settings.mjs:28
const raw = JSON.parse(readFileSync(settingsPath(), 'utf8')); - 写入本地文件plugin/lib/settings.mjs:36
mkdirSync(dirname(settingsPath()), { recursive: true }); - 写入本地文件plugin/lib/settings.mjs:37
writeFileSync(settingsPath(), JSON.stringify(s, null, 2), { mode: 0o600 }); - 删除本地文件plugin/lib/settings.mjs:129
rmSync(settingsPath(), { force: true }); - 写入本地文件plugin/lib/tunnel.mjs:119
const out = createWriteStream(dest); - 发起网络请求plugin/lib/tunnel.mjs:146
try { head = await fetch(url, { method: 'HEAD', signal }); } catch { head = null; } - 发起网络请求plugin/lib/tunnel.mjs:152
const res = await fetch(url, { signal }); - 写入本地文件plugin/lib/tunnel.mjs:154
await pipeline(Readable.fromWeb(res.body), createWriteStream(dest)); - 发起网络请求plugin/lib/tunnel.mjs:162
const probeRes = await fetch(url, { signal, headers: { Range: `bytes=0-${probeBytes - 1}` } }); - 写入本地文件plugin/lib/tunnel.mjs:170
const w = createWriteStream(dest); - 发起网络请求plugin/lib/tunnel.mjs:176
const restRes = await fetch(url, { signal, headers: { Range: `bytes=${probeBytes}-${len - 1}` } }); - 写入本地文件plugin/lib/tunnel.mjs:178
await pipeline(Readable.fromWeb(restRes.body), createWriteStream(dest, { flags: 'a' })); - 删除本地文件plugin/lib/tunnel.mjs:182
await rm(dest, { force: true }).catch(() => {}); - 删除本地文件plugin/lib/tunnel.mjs:184
await rm(dest, { force: true }).catch(() => {}); - 发起网络请求plugin/lib/tunnel.mjs:200
const res = await fetch(url, { signal, headers: { Range: `bytes=${p.start}-${p.end}` } }); - 写入本地文件plugin/lib/tunnel.mjs:202
await pipeline(Readable.fromWeb(res.body), createWriteStream(p.file)); - 删除本地文件plugin/lib/tunnel.mjs:206
await Promise.all(parts.map((p) => rm(p.file, { force: true }).catch(() => {}))); - 发起网络请求plugin/lib/tunnel.mjs:224
res = await fetch(TUNA_BOTTLES, { signal: AbortSignal.timeout(20_000) }); - 读取本地文件plugin/lib/tunnel.mjs:281
const st = await stat(tmpFile); - 删除本地文件plugin/lib/tunnel.mjs:288
await rm(tmpFile, { force: true }).catch(() => {}); - 写入本地文件plugin/lib/tunnel.mjs:306
await rename(tmpFile, extracted).catch(async () => { - 执行外部命令固定命令plugin/lib/tunnel.mjs:316
const child = spawn('tar', ['-xzf', tmpFile, '-C', extractDir], { stdio: 'ignore' }); - 读取本地文件plugin/lib/tunnel.mjs:332
try { if ((await stat(direct)).isFile()) found = direct; } catch { } - 读取本地文件plugin/lib/tunnel.mjs:339
try { if ((await stat(bin)).isFile()) { found = bin; break; } } catch { } - 删除本地文件递归plugin/lib/tunnel.mjs:348
await rm(extractDir, { recursive: true, force: true }).catch(() => {}); - 删除本地文件plugin/lib/tunnel.mjs:353
await rm(tmpFile, { force: true }).catch(() => {}); - 执行外部命令来自配置/变量plugin/lib/tunnel.mjs:360
execSync(process.platform === 'win32' ? 'where cloudflared' : 'command -v cloudflared', { stdio: 'ignore' }); - 读取本地文件plugin/lib/tunnel.mjs:384
await access(explicit); - 读取本地文件plugin/lib/tunnel.mjs:405
await access(bin); - 执行外部命令来自配置/变量plugin/lib/tunnel.mjs:466
const child = spawn(bin, ['--no-autoupdate', 'tunnel', 'run', '--protocol', 'http2'], { - 执行外部命令来自配置/变量plugin/lib/tunnel.mjs:561
const child = spawn(bin, ['--no-autoupdate', 'tunnel', '--url', `http://127.0.0.1:${port}`, '--protocol', 'http2'], { - 发起网络请求plugin/lib/web-rpc.js:71
async fetch(request) { - 发起网络请求plugin/lib/web-rpc.js:172
const response = await fetchHandler.fetch(request);
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 一键公网内网互通
- 手机APK操作
README
由 DeepSeek 最新模型翻译生成dsh-pocket-reportModify-and-add
把 DeepSeek Harness 装进你的口袋。原作者 shaobeichen 的版本 github.com/shaobeichen/dsh-pocket 源码,我用 deepseek 跑了一些修改,做出了能用的 APK 手机版,可以一键打通公网与内网。
新增功能介绍与更新 https://www.bilibili.com/video/BV1XaeU65EHJ
软件功能介绍:对软件做了一坨优化,也拉了一坨大的,还加了功能
1. 自动切换内外网。打开原版的 CF 隧道之后,启动软件时自动匹配网络,在家出门都能用
2. 加了功能:只要连过内网的 IP,就会自动拓扑出外网链接,不用二次扫码(如果 DSH 软件重启,只需连一次家里 WIFI,或者扫一次码,就能自动匹配外网)
3. 新增手机发送文件给 DSH 的功能,手机端用起来更方便
4. 修复 2.11.0 打开公网时莫名其妙弹出一个 CMD 窗口的 BUG(那个窗口一关,公网就断)
下载(当前版本 1.37)
| 文件 | 装在哪 | 说明 |
| DSH掌上版-1.37.apk | 手机 | 手机端 App,包名 com.boss.dshpocket,最低 Android 7.0,正式密钥签名可直接覆盖升级 |
展开完整文档(README 剩余 1 节)
dsh-pocket-reportModify-and-add 把 DeepSeek Harness 装进你的口袋。原作者 shaobeichen 的版本 github.com/shaobeichen/dsh-pocket 源码,我用 deepseek 跑了一些修改,做出了能用的 APK 手机版,可以一键打通公网与内网。 新增功能介绍与更新 https://www.bilibili.com/video/BV1XaeU65EHJ 软件功能介绍:对软件做了一坨优化,也拉了一坨大的,还加了功能 1. 自动切换内外网。打开原版的 CF 隧道之后,启动软件时自动匹配网络,在家出门都能用 2. 加了功能:只要连过内网的 IP,就会自动拓扑出外网链接,不用二次扫码(如果 DSH 软件重启,只需连一次家里 WIFI,或者扫一次码,就能自动匹配外网) 3. 新增手机发送文件给 DSH 的功能,手机端用起来更方便 4. 修复 2.11.0 打开公网时莫名其妙弹出一个 CMD 窗口的 BUG(那个窗口一关,公网就断) 下载(当前版本 1.37) | 文件 | 装在哪 | 说明 | | DSH掌上版-1.37.apk | 手机 | 手机端 App,包名 com.boss.dshpocket,最低 Android 7.0,正式密钥签名可直接覆盖升级 | | dsh-pocket插件-已打补丁.zip | 电脑 | 电脑端插件(解压后照里面的「安装说明-必读.txt」装) | | 使用说明.txt | — | App 的用法 + 完整更新记录 | | 先读我-包内容说明.txt | — | 整个包的导读 | | SHA256校验.txt | — | APK 与插件包校验值,下载后可比对 | | plugin/ | — | 上面那个 zip 的原样源码目录(基于上游 v2.12.0 的四处改动),方便直接看代码与 diff | App 是「壳」,插件是「门」,两边要配对使用:只装 App 不装插件,App 没有东西可连。 本版插件基于上游 v2.12.0,改了四处: 1. 二维码自动带上访问密码(lib/service.mjs) 2. 新增 /dsh-pocket/entry.json 入口信息接口(lib/service.mjs、lib/index.js) 3. 修复 Windows 上开公网弹控制台黑框、关掉黑框隧道即断的问题(lib/tunnel.mjs 两处 spawn 补 windowsHide: true) 4. 修复 DSH 重启后手机端 401 黑屏、必须清 App 数据才能恢复的问题(lib/proxy.mjs:检测到陈旧 dsh-auth-* cookie 造成的 401 时,清 cookie 并自动重握手) 明细见 plugin/本地修改声明.md。 维护约定:以后以我们自己的补丁版为准。官方出新版时只作参照、重打补丁,不要用 dsh plugin update 或插件页的「更新」直接覆盖。完整流程见插件维护规范.md。 许可与来源声明 电脑端插件是 shaobeichen/dsh-pocket(GPL-2.0)的修改副本,以 GPL-2.0 分发,与原作者无关;有问题请提到本仓库,不要反馈给上游。 界面与图标中的形象版权归其原作者所有。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Mrsirlila/dsh-pocket-reportModify-and-add
把 DeepSeek Harness 装进你的口袋,对原作者shaobeichen的版本源码用deepseek跑了一点修改,并且做出了能使用的APK手机版进行操作,能够自动一键公网内网互通
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7