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 Web GUI 的手机响应式适配与 WireGuard 远程增强插件(双面包,不改 Harness 源码、不改 npx 安装内容)。npm 包名带作用域(无作用域的 dsh-mobile-remote 已被他人占用)。
标准 / 极简 / PTC / 创造(英文同理),去掉"模式"二字;桌面端保持全称。-copy-2 后缀防重名;按扩展名打开(文本预览/编辑保存、图片/视频/音频内联预览、PDF 新标签页、未知类型自定义打开方式),十六进制编辑(64KB 分窗、8MB 上限)、上传(8MB)、下载、删除(非空文件夹二次确认);文件夹属性显示递归统计的真实大小;隐藏文件以半透明显示;手机端保留行内触控按钮。-NoProfile),其他平台 bash。persistence:"memory"——手机上的设置标签页(插件配置/通用/模型/欢迎)不发任何请求、整页空白。本插件在可信远程会话中把连接句柄的 isLoopback 置真,并对已消费旧值的设置消费者条目(settings-plugins / settings-general / settings-models / deliverables)做一次 fiber 重应用,让它们重新绑定到主机持久化传输(经下文的特权转发通道)。桌面(loopback)完全不受影响。http://隧道IP(非安全源)访问时浏览器不提供 crypto.randomUUID,导致所有 RPC(设置、目录列表、模型/插件/预设)报 crypto.randomUUID is not a function。插件启动时安装 UUIDv4 回退(基于 crypto.getRandomValues,任何源可用),手机上接口恢复正常。dsh plugin --profile web add @az7627/dsh-mobile-remote
重启 npx @deepseek-ai/dsh web 生效。
dsh plugin --profile web remove @az7627/dsh-mobile-remotedsh plugin --profile web add C:\path\to\dsh-mobile-remote
改完源码 pnpm run build 后重启 npx @deepseek-ai/dsh web 即生效,无需重新 add。
重要(rc.6 实测):rc.6 的 webserver 只接受
127.0.0.1/0.0.0.0绑定,且 CLI 有意拒绝0.0.0.0——无法直接把服务绑到 10.66.66.1。远程访问采用:本机绑定 + WireGuard 地址端口转发,目录选择由本插件钉为 Web 目录页(上面已说明)。
~/.dsh/profiles/web/cordis.patch.yml)的 web-runtime 配置需包含隧道地址的 trustedHosts(例如 10.66.66.1 与 10.66.66.1:3080),手机请求才能通过 /api 信任栅栏。netsh interface portproxy add v4tov4 listenaddress=10.66.66.1 listenport=3080 connectaddress=127.0.0.1 connectport=3080
http://10.66.66.1:3080。推荐的无人值守启动方式(scripts/start-dsh-web.ps1):
pwsh -File scripts\start-dsh-web.ps1 -InstallPortProxy # 一次:安装端口转发(管理员)
pwsh -File scripts\start-dsh-web.ps1 # 启动(检测接口/端口占用/转发状态)
pwsh -File scripts\start-dsh-web.ps1 -RegisterStartup # 可选:注册登录自启计划任务
按 DeepSeek Harness 0.1.0-rc.6 的 Web 外壳 DOM 契约实现(三栏 inline grid、data-sidebar-collapsed/data-details-collapsed 状态属性、ctx.layout 面板契约、shell.overlay/settings.general.item 槽位)。核心升级后需重新验证并随版本跟进。
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
# 一次性测试实例(必须!与真实 ~/.dsh 完全隔离,避免污染真实会话日志):
pwsh -File scripts\start-test-dsh.ps1 # 启动 http://127.0.0.1:3097
pwsh -File scripts\start-test-dsh.ps1 -Remove # 清空隔离测试目录
# 实测(针对上面的隔离实例):
node scripts/verify-mobile.mjs
node scripts/verify-file-manager.mjs http://127.0.0.1:3097
node scripts/verify-terminal.mjs http://127.0.0.1:3097
node scripts/verify-settings-loopback.mjs http://127.0.0.1:3097 # 手机权威仿真(10.66.66.1 映射回环)
node scripts/verify-usage-remote.mjs http://127.0.0.1:3097 # token-usage /usage 信任栅栏
⚠️ 不要用共享
~/.dsh的实例跑验证脚本:验证浏览器打开会话会触发加载修复,向真实会话日志写入 closers,与运行中实例的写入冲突会造成日志 seq gap。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。