[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94995":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},94995,"dsh-pocket","shaobeichen\u002Fdsh-pocket","shaobeichen","把 DeepSeek Harness 装进你的口袋：电脑上跑 dsh web，手机扫码即同步访问（局域网 + 公网，实时同屏）","",null,"JavaScript",306,22,115,6,0,165,36,74.09,"GNU General Public License v2.0",false,"main",[24,25,26,27,28,29,30,31,32,33,34],"deepseek","deepseek-harness","deepseek-harness-plugin","dsh","dsh-plugin","dsh-plugin-market","dsh-plugins","mobile","qr","remote","tunnel","2026-08-24 04:01:23","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fbanner.jpg\" alt=\"DSH Pocket\" width=\"100%\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">DSH Pocket\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\u003Ca href=\"README.en.md\">English\u003C\u002Fa> | \u003Ca href=\"README.md\">中文\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fdsh-pocket\">\u003Cimg alt=\"npm\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fdsh-pocket?color=4d6bfe&label=npm\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fdsh-pocket\">\u003Cimg alt=\"downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fdsh-pocket?color=4d6bfe\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshaobeichen\u002Fdsh-pocket\u002Factions\">\u003Cimg alt=\"CI\" src=\"https:\u002F\u002Fgithub.com\u002Fshaobeichen\u002Fdsh-pocket\u002Factions\u002Fworkflows\u002Fnpm-publish.yml\u002Fbadge.svg\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPL--2.0-red.svg\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshaobeichen\u002Fdsh-pocket\u002Fstargazers\">\u003Cimg alt=\"GitHub stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fshaobeichen\u002Fdsh-pocket\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fawesome-dsh-plugin.com\u002Fzh\u002F\">\u003Cimg alt=\"Awesome DSH Plugin\" src=\"https:\u002F\u002Fawesome-dsh-plugin.com\u002Fbadge.svg\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n> 把 **DeepSeek Harness 装进你的口袋**：一个包、一个设置页，手机扫二维码就实时看到电脑上的同一个界面——人在外面也能用。\n\n\u003Cp align=\"center\">\n  ⭐ 顺手留颗 Star，作者能高兴一整天 &nbsp;·&nbsp; \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshaobeichen\u002Fdsh-pocket\">行，给你一颗 Star\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 这是什么\n\n**你不在电脑前，也想用电脑上的 DeepSeek Harness。**\n\n- 下班路上，agent 在电脑上跑任务，你想掏出手机看看它干到哪了、结果如何\n- 出门在外，突然想让电脑上的 agent 查点资料、写段代码，但没有远程桌面、没有 SSH\n- 电脑在宿舍\u002F办公室，你人在外面，想随时\"操控你的 DeepSeek Harness\"——发任务、看输出、点审批\n\nDSH Pocket 就是干这个的：**装上它，手机扫个码，就能实时看到并操控电脑上的 DeepSeek Harness 界面**——人在外面也能用。\n\n实际效果——手机上的界面就是电脑上的界面，实时同步：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Finterface.jpg\" alt=\"手机上的 DSH 界面\" width=\"100%\">\n\u003C\u002Fp>\n\n## ✨ 特性\n\n| 特性 | 说明 |\n|---|---|\n| 📶 局域网扫码 | 装好即用：设置 → 手机访问，打开就有局域网二维码，手机连同一 WiFi 扫码即开 |\n| 🌐 公网扫码（人在外面） | 点「开启公网访问」→ cloudflared 隧道 → 出公网二维码，4G\u002F任何网络都能访问 |\n| 🔐 访问密码 | 公网链接需输入 **8 位数字密码**（每次开启公网自动换新，旧链接立即作废）；局域网有独立 **8 位数字密码**（默认开启，设置页可**一键关闭**——关闭后局域网扫码直连） |\n| ⚡ 实时同步 | 流式输出走 WebSocket 全透传——**电脑上在输出，手机上同步在滚**，可双向操作 |\n| 📱 移动端适配 | 窄屏自动变抽屉布局（移植 dsh-web-mobile，MIT）：侧栏抽屉、会话全宽、状态栏安全区、触控优化 |\n| 🗜️ 传输压缩 | 大 JSON 响应自动 gzip\u002Fbrotli（长会话 17MB → ~1MB，brotli 质量 6：快且省流量），手机加载更快、更省流量 |\n| 🔁 隧道自动恢复 | DSH 重启后自动重新拉起之前开着的公网隧道，无需手动重开 |\n| 🧩 零依赖安装 | 一个 npm 包、一个设置页，没有核心\u002F适配器要分开装；无需账号、无需服务器 |\n\n## 🚀 怎么用\n\n**入口在哪**：安装完成并重启 `dsh web` 后，打开 **设置**，左侧边栏就能看到 **「手机访问」** 入口（和「通用设置」「模型」同级）：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fentry.jpg\" alt=\"手机访问入口\" width=\"70%\">\n\u003C\u002Fp>\n\n**前提**：电脑上已装好 [DeepSeek Harness](https:\u002F\u002Fgithub.com\u002Fdeepseek-ai\u002Fdeepseek-harness)。如果终端提示 `dsh: command not found`（找不到 dsh 命令），先安装：\n\n```sh\nnpm install -g @deepseek-ai\u002Fdsh     # 全局安装；验证：dsh --version\n# 不想全局装？每次命令前加 npx：npx @deepseek-ai\u002Fdsh \u003C命令>\n```\n\n```sh\n# 1. 装插件（一个包全都有）\ndsh plugin --profile web add dsh-pocket -w\n\n# 2. 重启 dsh web\nnpx @deepseek-ai\u002Fdsh web\n```\n\n### 局域网（同一 WiFi）\n\n设置 → **手机访问** → 手机扫「📶 局域网」二维码 → 打开链接**输入局域网密码**（显示在设置页局域网区块，点「刷新」可换新）→ 打开的就是电脑上的 DSH，实时同步。\n\n> 局域网密码**默认开启**（安全优先）。如果只有自己用、嫌每次输密码麻烦，可在设置页局域网区块把「局域网访问密码」切到**关**——之后局域网扫码直连、无需密码（仅同一局域网设备可访问；**公网始终要密码**，不受影响）。\n\n### 公网（人在外面）\n\n同一页点「**开启公网访问**」→ 等隧道建立（首次会下载 cloudflared，macOS\u002FLinux 走清华镜像秒下）→ 手机扫「🌐 公网」二维码 → 打开链接**输入 8 位访问密码**（密码显示在设置页公网区块，**每次开启公网变新**）→ 人在外面（4G\u002F公司网）也能访问。\n\n> 更新到新版本：`dsh plugin --profile web update dsh-pocket --latest -w`（跨大版本时 `--latest` 是必须的，`^0.x` 范围不会自动升到 1.x）。\n\n## ⚠️ 安全（必读）\n\n- **DSH 能执行你电脑上的代码**。**局域网**二维码\u002FURL 配上独立 **8 位数字密码**才是钥匙（密码**默认开启**，可关——关闭后局域网扫码直连，仅同一网络设备可访问），**请勿把局域网二维码、URL 或密码发给别人**\n- **公网**有 **8 位数字密码**保护：链接随机分配、每次开启换新密码、旧链接立即作废——泄露了也进不来，改密码\u002F重开即可作废\n- 公网 URL 由 cloudflared 随机分配，**每次重启会变化**（旧链接自动失效，相当于天然轮换）\n- 局域网模式不暴露公网，只有同一网络内的设备能访问\n- 适合个人自用；公网密码存本机 `$DSH_HOME\u002Fdsh-pocket\u002Ftoken`（每次开启公网自动换新），局域网密码存 `$DSH_HOME\u002Fdsh-pocket\u002Ftoken-lan`（设置页手动刷新），开关状态存 `$DSH_HOME\u002Fdsh-pocket\u002Fsettings.json`\n\n## 💻 DSH Desktop（桌面版）\n\n- 桌面版里 dsh-pocket 的**扫码同屏**正常可用；**更新\u002F重启由桌面版管理**（插件内这两项自动停用）\n- ⚠️ 桌面端 **advanced 模式**暂不支持手机访问（该模式禁用网页布局、手机拿不到 layout 服务，会白屏）——请切回 **compatibility** 模式后重启；advanced 模式下手机打开会看到明确的提示层\n\n## 🩹 常见问题（别踩的坑）\n\n| 现象 | 原因与解决 |\n|---|---|\n| `dsh: command not found` \u002F 提示 DSH 未定义 | dsh CLI 没装：`npm install -g @deepseek-ai\u002Fdsh`，或命令前加 `npx @deepseek-ai\u002Fdsh` |\n| `ERR_PNPM_ADDING_TO_ROOT` | pnpm 9 对 workspace 根的限制：安装\u002F更新命令**末尾加 `-w`**（`--workspace-root`） |\n| 装完\u002F更新了但界面没变化 | **必须重启 `dsh web`** 才生效；运行中的进程仍加载旧代码 |\n| `listen EADDRINUSE ... :3081` | 旧 dsh-pocket 进程还占着端口：macOS\u002FLinux `lsof -ti :3081 \\| xargs kill -9`；Windows `netstat -ano \\| findstr :3081`（找 LISTENING 的 PID）→ `taskkill \u002FPID \u003CPID> \u002FF`，后重试 |\n| 版本停在 0.x 升不上去 | `^0.x` 范围不允许升到 1.x：更新用 `--latest`（`dsh plugin --profile web update dsh-pocket --latest -w`） |\n| 公网 `error 1033` | 见下方「公网隧道常见问题」——多半是本机代理\u002FVPN（Clash 等 TUN 模式）掐断了隧道 |\n| 点「重启 dsh web」后页面提示进程在后台运行 | 自重启的新进程是 detached 后台进程（不挂终端），是页内更新的标准做法；停止它：macOS\u002FLinux `lsof -ti :3080 \\| xargs kill -9`；Windows `netstat -ano \\| findstr :3080` → `taskkill \u002FPID \u003CPID> \u002FF`（日志在 `$DSH_HOME` 下 `dsh-pocket-restart-*.log`） |\n\n## ⚠️ 公网隧道常见问题（必读）\n\n**现象**：点「开启公网访问」后，手机上打开公网地址报 `error 1033`（Tunnel error）。\n\n**最常见原因：本机开着代理\u002FVPN（Clash、Surge、v2ray、sing-box 等，尤其 TUN 模式）**。\n这类工具会接管全部流量，并常常把 cloudflared 的隧道边缘连接\n（`*.argotunnel.com`、Cloudflare 边缘 IP）掐断，导致隧道注册成功但数据面连不上。\n\n**解决（从轻到重，按顺序试）**：\n\n1. 先**只关闭代理的 TUN 模式**，不用退出代理软件——多数情况这一步就够：\n   - Clash：设置里关掉「**TUN 模式**」开关（或右键菜单栏图标 → 取消勾选 TUN 模式）\n   - Surge：关「**增强模式**」；v2ray\u002Fsing-box：关「**虚拟网卡\u002F路由接管**」\n   - 然后回设置页重新点「开启公网访问」\n2. 仍不行就**彻底退出代理软件**（不只是关界面：Clash 要右键菜单栏图标 → 退出；若装有\n   后台服务还要在服务管理器里停掉，`ps aux | grep clash` 确认进程消失），再重试\n3. 给代理加**直连规则**，放行隧道域名与 Cloudflare 边缘（Clash 规则示例）：\n   ```yaml\n   - DOMAIN-SUFFIX,argotunnel.com,DIRECT\n   - DOMAIN-SUFFIX,trycloudflare.com,DIRECT\n   - IP-CIDR,198.41.192.0\u002F24,DIRECT,no-resolve\n   ```\n4. 网络实在不通时，改用**局域网模式**：手机开热点 → 电脑连手机热点 → 扫局域网码，\n   效果完全一样（人在外面也能用）\n\n**其他可能**：企业防火墙\u002F校园网拦截出站；此时请让 IT 放行或改用热点。\n\n**首次开启时「下载 cloudflared」失败\u002F卡住**：\n- **macOS\u002FLinux**：优先走**清华镜像**（实测 ~3MB\u002Fs，几秒下完）；失败自动回退官方 GitHub + 加速源。\n- **Windows**：无清华镜像（Homebrew 不支持 Windows），走官方直连下载（约 50MB，**单线程会慢，属正常**，耐心等几分钟；也可挂代理加速）。\n- 全部失败时设置页会给出提示。备选方案（任选其一）：\n1. 手动装好命令行 cloudflared 后重试（装好后 dsh-pocket 直接用 PATH 里的，不再下载）：\n   - macOS：`brew install cloudflared`；Linux：`sudo apt install cloudflared` 或官网下载\n   - Windows：`winget install cloudflared` 或官网下载\n   - 任何平台：`npm i -g cloudflared`\n2. 挂代理（系统代理\u002FClash 等）后重新点「开启公网访问」\n3. 手动下载二进制放到 `$DSH_HOME\u002Fdsh-pocket\u002Fbin\u002F` 目录（`$DSH_HOME` 一般是 `~\u002F.dsh`，Windows 是 `%USERPROFILE%\\.dsh`；文件名用 `cloudflared`（Windows 加 `.exe`）或发布资产名均可，插件都认）\n\n## 🗂 架构（单包）\n\n| 文件 | 说明 |\n|---|---|\n| `lib\u002Findex.js` | 插件入口：自动起代理 + 注册 RPC + 访问密码管理（公网 8 位每次开启变新；局域网独立 8 位可手动刷新\u002F开关）+ 桌面端环境适配 |\n| `lib\u002Fsettings.mjs` | 设置持久化：局域网密码开关（默认开启）存 `$DSH_HOME\u002Fdsh-pocket\u002Fsettings.json` |\n| `lib\u002Fservice.mjs` | 服务：代理生命周期（端口自适应）、公网隧道（自动恢复）、状态快照（含二维码） |\n| `lib\u002Fproxy.mjs` | 改头反向代理：Host\u002FOrigin → loopback，HTTP + WebSocket 透传 + polyfill 注入 + gzip\u002Fbrotli 压缩 + 按 Host 区分的访问令牌认证（公网必验；局域网按开关） |\n| `lib\u002Ftunnel.mjs` | cloudflared：多镜像源下载（清华优先）\u002F自适应多线程\u002F启动\u002F解析公网 URL（HTTP\u002F2） |\n| `lib\u002Fweb-rpc.js` | loopback RPC：`status` \u002F `tunnel.start` \u002F `tunnel.stop` \u002F `version` \u002F `update` \u002F `restart` |\n| `client\u002F` | 设置页「手机访问」+ 移动端适配（dsh-web-mobile 移植） |\n| `bin\u002Fdsh-pocket.mjs` | CLI：局域网\u002F公网模式，打印 URL + 二维码 |\n\n## 🛠 开发\n\n```sh\nnpm install\nnode client\u002Fbuild.mjs   # 改 client\u002F 后重新打包\nnpm test                # 代理 \u002F 认证 \u002F 压缩 \u002F 隧道 \u002F 服务 \u002F RPC（43 测试）\n```\n\n## 🤝 致谢\n\n- 移动端适配移植自 [mexiaosqwq\u002Fdsh-web-mobile](https:\u002F\u002Fgithub.com\u002Fmexiaosqwq\u002Fdsh-web-mobile)（MIT）\n- 公网隧道基于 [cloudflared](https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fcloudflared)\n\n## 📄 License\n\n[GPL-2.0](LICENSE) —— 自由软件许可：可自由使用、修改、分发，但**修改版必须同样以 GPL 开源**并保留版权声明；商用同样适用。\n\n> 说明：移动端适配部分移植自 [dsh-web-mobile](https:\u002F\u002Fgithub.com\u002Fmexiaosqwq\u002Fdsh-web-mobile)（MIT 许可，兼容 GPL），其版权声明保留在 `client\u002Fmobile\u002FLICENSE.dsh-web-mobile`。\n\n---\n\n**有问题？欢迎反馈**：遇到 Bug、有想法、想提需求，请到 [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fshaobeichen\u002Fdsh-pocket\u002Fissues) 告诉我们 🙏\n","DSH Pocket 是一个为 DeepSeek Harness（DSH）设计的轻量级远程访问插件，实现电脑端 DSH Web 界面在手机上的实时同屏与双向操控。核心功能包括局域网扫码直连、基于 cloudflared 的公网隧道访问、8位动态访问密码、WebSocket 流式同步、移动端自适应布局及 JSON 响应压缩（gzip\u002Fbrotli）。它无需额外服务器或账号，仅通过一个 npm 插件即可集成，适用于出差、通勤等场景下随时监控或操作本地运行的 AI Agent 任务。",2,"2026-08-19 02:30:08","CREATED_QUERY"]