dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
给 DeepSeek Harness(dsh)Web UI 添加“远程连接”入口:
127.0.0.1,不暴露公网端口本文所有示例均使用占位符,不含任何真实 IP、域名、密钥或 Token。
┌────────────┐
│ 手机浏览器 │
└─────┬──────┘
│ 1) Tailscale 专用网 2) Cloudflare 公网隧道
▼
┌──────────────────────────────────────────────┐
│ Caddy 认证代理(本机 127.0.0.1:18080) │
│ - /enter/<token> 写入 cookie 后跳转 │
│ - 带 cookie 的请求才允许反向代理 │
│ - 强制改写 Host/Origin,避免 DSH 信任栅栏 403 │
└──────────────┬───────────────────────────────┘
▼
DSH Web(127.0.0.1:3080,不对外监听)
配套组件:
| 组件 | 作用 |
|---|---|
dsh-plugin/ |
DSH 客户端插件:两个二维码 + 状态检测 |
patch-dsh.ps1 |
把插件装进 DSH 源码树并构建 |
install.ps1 |
下载 Caddy/cloudflared,生成 token,启动隧道,安装开机自启 |
start-cloud-access.ps1 |
开机时拉起 Caddy 和 cloudflared,并发布最新隧道 URL |
uninstall.ps1 |
停止服务并清理 |
pnpm dsh web 的 DeepSeek Harness 源码 checkouttrycloudflare.com不需要:公网 IP、光猫/路由器端口映射、云服务器、域名。
git clone <你的仓库地址>
cd dsh-remote-access
powershell -ExecutionPolicy Bypass -File .\install.ps1
脚本会:
caddy.exe 和 cloudflared.exe 到 ~/.dsh-remote-access/bin成功后脚本会打印一个 <tunnel>/enter/<token> 入口地址。不要公开发这个地址。
powershell -ExecutionPolicy Bypass -File .\patch-dsh.ps1 -DshRoot D:\path\to\deepseek-harness
脚本会:
dsh-plugin/ 到 packages/client/ui-remote-accessweb-app bundle 中登记插件pnpm installcd D:\path\to\deepseek-harness
pnpm dsh web
然后点击侧边栏底部的 远程连接,扫描 外出高速通道 二维码即可。
默认数据目录:
C:\Users\<你>\.dsh-remote-access\
├── bin\caddy.exe
├── bin\cloudflared.exe
├── caddy\Caddyfile
├── access-token.txt # 随机登录 token
├── tunnel-url.txt # 当前隧道入口 URL(插件读取)
├── start-cloud-access.ps1
└── logs\
DSH 插件通过环境变量读取同一目录:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
DSH_REMOTE_ACCESS_DIR |
~/.dsh-remote-access |
数据目录 |
DSH_REMOTE_AUTH_PROXY |
http://127.0.0.1:18080 |
Caddy 认证代理地址 |
install.ps1 已自动写入这两个用户环境变量。
# DSH 在 4000,代理用 9090
.\install.ps1 -DshPort 4000 -ProxyPort 9090
之后记得用相同参数启动 DSH:
pnpm dsh web --port 4000
即使没有 Tailscale,公网隧道也能用。想保留两个通道:
插件会执行:
tailscale serve --bg --https=443 http://127.0.0.1:<ProxyPort>
所以 Tailscale 流量也会经过 Caddy 认证代理。
如果运营商是双层 NAT,Tailscale 可能仍走 DERP 中继而偏慢;这正是保留 Cloudflare 通道的原因。
所有示例值均为占位符:
<你的仓库地址>
<你的用户名>
<你的安装目录>
<你的 DSH checkout 路径>
真实 token、隧道地址、Tailscale 域名、IP 都在你机器本地生成,不会进入仓库。
/enter/<token> 能写入登录 cookie401Origin 并把 Host 改写为 127.0.0.1:<DSH端口>,所以 DSH 的 /api 信任栅栏正常工作0.0.0.0tunnel-url.txt 的内容发给别人access-token.txt 提交到任何 Git 仓库install.ps1确认 DSH 正在本机 127.0.0.1:3080 运行
确认 Caddy 在运行:
Get-Process caddy
查看日志:
Get-Content ~\.dsh-remote-access\logs\caddy.err.log -Tail 30
Get-Content ~\.dsh-remote-access\logs\cloudflared.err.log -Tail 30
tunnel-url.txt 会自动更新。打开“远程连接”弹窗点一下 刷新,二维码就是新地址。
检查 Caddy 是否在转发时改写了 Host/Origin。正确配置中的两行是:
header_up -Origin
header_up Host 127.0.0.1:<DSH端口>
说明 cookie 没有写入。直接扫“外出高速通道”二维码,URL 里应包含 /enter/<token>。不要用裸域名。
Cloudflare 免费隧道不保证全球线路质量。常见优化:
.
├── README.md
├── LICENSE
├── SECURITY.md
├── .gitignore
├── dsh-plugin/
│ ├── package.json
│ ├── tsconfig.json
│ ├── tsdown.config.ts
│ └── src/
│ ├── index.ts
│ ├── invariant.ts
│ ├── css-modules.d.ts
│ └── client/
│ ├── index.ts
│ ├── RemoteAccessAction.tsx
│ └── RemoteAccessAction.module.css
├── install.ps1
├── patch-dsh.ps1
├── start-cloud-access.ps1
└── uninstall.ps1
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。