🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

远程工作台 TangYT/dsh-work-anywhere

DeepSeek Harness
TangYT59 天前有提交已提供中文文档扫描:含敏感能力

绑定远程 GPU 跑实验,微信随时接管开发

33.4/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TangYT/dsh-work-anywhere
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 59 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-work-anywhere(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 14:12:42

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 34 条)
  • 发起网络请求
    lib/client.js:2143
    const res = await fetch(url);
  • 发起网络请求
    lib/client.js:2149
    const res = await fetch(url, {
  • 读取本地文件
    lib/remote-lab.js:146
    if (existsSync(LAB_ROOT)) {
  • 读取本地文件
    lib/remote-lab.js:148
    for (const n of await readdir(LAB_ROOT)) {
  • 发起网络请求
    lib/remote-lab.js:200
    const net = createNetLayer({ fetchImpl: (url, opts) => fetch(url, opts), log })
  • 写入本地文件
    lib/remote-lab.js:220
    await mkdir(dirname(WA_CONFIG_PATH), { recursive: true })
  • 写入本地文件
    lib/remote-lab.js:221
    await writeFile(WA_CONFIG_PATH, JSON.stringify(waConfig, null, 2), 'utf8')
  • 发起网络请求
    lib/remote-lab.js:246
    const outcome = await approval.request({
  • 写入本地文件
    lib/remote-lab.js:256
    appendFile(GIT_AUDIT_PATH, JSON.stringify(rec) + '\n', 'utf8').catch(() => {})
  • 读取本地文件
    lib/remote-lab.js:277
    try { return await readFile(path, 'utf8') } catch { return undefined }
  • 写入本地文件
    lib/remote-lab.js:280
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    lib/remote-lab.js:281
    await writeFile(path, JSON.stringify(obj, null, 2), 'utf8')
  • 读取本地文件
    lib/remote-lab.js:431
    if (h.keyPath) { try { keyText = await readFile(h.keyPath, 'utf8') } catch (e) { log('key read failed: ' + String(e && e.message || e)) } }
  • 写入本地文件
    lib/remote-lab.js:573
    await mkdir(dirname(localPath), { recursive: true })
  • 发起网络请求
    lib/remote-lab.js:692
    await net.fetch(url, {
  • 读取本地文件
    lib/remote-lab.js:847
    if (existsSync(LAB_ROOT)) {
  • 读取本地文件
    lib/remote-lab.js:849
    for (const n of await readdir(LAB_ROOT)) {
  • 删除本地文件
    lib/remote-lab.js:914
    try { await unlink(bindingFile(dir)) } catch { return false }
  • 发起网络请求
    lib/remote-lab.js:1020
    const res = await net.fetch(String(args.url), {
  • 读取本地文件
    lib/wechat-channel.js:67
    s = JSON.parse(readFileSync(STATE_FILE, 'utf8'))
  • 写入本地文件
    lib/wechat-channel.js:85
    mkdirSync(STATE_DIR, { recursive: true })
  • 写入本地文件
    lib/wechat-channel.js:86
    writeFileSync(STATE_FILE, JSON.stringify(s, null, 2))
  • 读取本地文件
    lib/wechat-channel.js:102
    .filter((w) => w && w.path && existsSync(w.path))
  • 读取本地文件
    lib/wechat-channel.js:103
    .map((w) => ({ path: w.path, title: w.title || basename(w.path), remote: existsSync(join(w.path, '.dsh-remote.json')) }))
  • 读取本地文件
    lib/wechat-channel.js:392
    if (!project || !existsSync(project)) return null
  • 读取本地文件
    lib/wechat-channel.js:416
    if (!project || !existsSync(project)) return null
  • 读取本地文件
    lib/wechat-channel.js:732
    const remote = cur && existsSync(join(cur, '.dsh-remote.json')) ? '(已绑定远程)' : '(未绑定远程)'
  • 执行外部命令固定命令
    lib/net.js:40
    const out = spawnSync('reg', ['query', 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings', '/v', 'ProxyServer'], { encoding: 'utf
  • 发起网络请求
    lib/net.js:80
    fetchImpl = (url, opts) => fetch(url, opts),
  • 发起网络请求
    lib/net.js:115
    return await undici.fetch(url, merged)
  • 执行外部命令来自配置/变量
    lib/local-git.js:170
    spawnImpl = (argv, opts) => nodeSpawn(argv[0], argv.slice(1), opts),
  • 发起网络请求
    lib/ilink.js:47
    const res = await fetch(url.toString(), {
  • 发起网络请求
    lib/ilink.js:73
    const res = await fetch(url.toString(), {
  • 发起网络请求
    lib/interactions.js:40
    const res = await fetch(base + '/api/respond', {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 远程实验工作区
  • 微信远程控制
  • 本地Git与模型下载

DeepSeek Harness 插件:远程实验工作区 + 微信远程控制 + 免沙箱审批的本地 Git 与 GitHub/HuggingFace 下载

README

由 DeepSeek 最新模型翻译生成
dsh-work-anywhere DeepSeek Harness 的「远程工作」插件合集远程实验工作区 · 微信远程控制 · 免沙箱审批的本地 Git 与 GitHub/HuggingFace 下载 dsh-work-anywhere 是 DeepSeek Harness(DSH)标准插件。装上它,你能在 dsh web 里做到三件事: 1. 远程实验:把项目绑定到远程 GPU 服务器,让智能体直接在服务器上跑训练/评测,结果自动下载回来; 2. 微信远程控制:扫码把微信连上 dsh,出门在外也能查项目、切会话、推进对话,审批/问答/计划评审都能在微信里回答; 3. 本地 Git 与下载:智能体需要 clone、推送、下载 GitHub / HuggingFace 大文件时自动走插件内置通道,不再弹沙箱审批。
展开完整文档(README 剩余 1 节)
dsh-work-anywhere

DeepSeek Harness 的「远程工作」插件合集远程实验工作区 · 微信远程控制 · 免沙箱审批的本地 Git 与 GitHub/HuggingFace 下载

dsh-work-anywhere 是 DeepSeek Harness(DSH)标准插件。装上它,你能在 dsh web 里做到三件事:

1. 远程实验:把项目绑定到远程 GPU 服务器,让智能体直接在服务器上跑训练/评测,结果自动下载回来;
2. 微信远程控制:扫码把微信连上 dsh,出门在外也能查项目、切会话、推进对话,审批/问答/计划评审都能在微信里回答;
3. 本地 Git 与下载:智能体需要 clone、推送、下载 GitHub / HuggingFace 大文件时自动走插件内置通道,不再弹沙箱审批。

- 功能特性
- 安装
- 快速上手
- 配置
- 安全模型
- 开发
- 常见问题
- License

功能特性

| 模块 | 能力 | 主要场景 |
| remote-lab | 项目 ↔ 远程服务器绑定;SSH 执行 / 文件同步;回调驱动实验计划;断线续跑;产物自动下载;飞书 / 企微 webhook 通知 | GPU 训练、长任务评测、批量实验 |
| wechat-channel | 微信扫码接管整个 dsh web;消息驱动智能体;项目 / 会话切换;微信交互桥(审批、问答、计划评审可微信回复) | 通勤 / 出差时远程推进开发 |
| local-git + download | 进程内 git 全操作(HTTPS/SSH/LFS);GitHub / HuggingFace 大文件流式下载;通用网络抓取 | AI 开发依赖 GitHub / HuggingFace 时的免审批通路 |
| arxiv | dwa_arxiv_read:链接或编号 → HTML 版论文全文纯文本(公式保留 LaTeX),秒级返回;无 HTML 的老论文自动给 PDF 下载建议 | 文献调研、读论文 |
| 网络权限层 | 直连优先,失败自动扫描本机代理回退 | 本机网络受限(需代理)的环境 |

安装

DSH 的插件安装只需一条命令(没有界面入口)。在命令行执行:

dsh plugin --profile web add "git+https://gitee.com/tang-yongtao/dsh-work-anywhere.git"

- GitHub 镜像源:把上面地址换成 git+https://github.com/TangYT/dsh-work-anywhere.git;
- 本地开发调试:dsh plugin --profile web add "link:E:\dsh-work-anywhere\dsh-work-anywhere"。

执行完成后重启 dsh web。打开 dsh web → 左下角「设置」→「插件」,能看到 dsh-work-anywhere 条目即安装成功。

快速上手

装好之后,以下三步全部在 dsh web 页面上完成,不需要任何命令行操作。

① 扫码绑定微信(可选,强烈推荐)

1. 打开 dsh web → 左下角「设置」→ 左侧选择「远程控制」;
2. 在「微信 / 飞书远程控制」卡片点击「扫码登录」;
3. 用微信扫描页面上的二维码,页面显示「已连接」即完成(登录态会保存,之后重启无需重扫)。

绑定后:微信里直接发消息即可查看进度、切换项目/会话、推进对话;DSH 出现审批请求、选项问答、计划评审时,也会推送到微信,直接回复就能处理。常用指令(在微信里发送,仅消息开头解析):

| 命令 | 说明 |
| /status | 当前项目与会话(显示会话标题) |
| /projects | 项目列表 |
| /switch <编号\|名称> | 切换项目 |
| /sessions | 当前项目会话列表 |
| /session <编号\|名称\|id前缀> | 切换会话 + 完整进度回放;/session new 新建会话 |
| /help | 帮助 |

② 给每个项目绑定远程服务器

1. 先在 dsh web 侧边栏「SSH」面板添加服务器(别名、地址、账号、密钥或密码);
2. 打开该项目对应的对话,点击对话标题栏的「远程实验」按钮 → 选择服务器(可选填远端目录、sudo 密码)→ 保存;也可以走:设置 →「远程控制」→「项目绑定 / 换绑」,选择项目与服务器后点击「绑定 / 换绑」;
3. 绑定完成,这个项目的对话即可让智能体在服务器上跑训练 / 评测 / 脚本。实验结束自动把结果下载到项目本地,还可在绑定时填写飞书 / 企微机器人地址接收完成通知。

换服务器、解绑:随时在同一个「远程实验」弹窗或设置页完成。

③ 其他自动生效的能力(无需任何操作)

- 本地 Git 与下载:智能体需要 clone / 提交 / 推送、下载 GitHub release 或 HuggingFace 模型时,自动走插件内置通道,不再弹沙箱审批。如需额外管控(push 需审批、路径限制、HF token),在设置 →「远程控制」→「网络与 Git」里按需开启;
- arXiv 论文阅读:智能体拿到 arXiv 链接或编号会直接用 dwa_arxiv_read 读取 HTML 版全文(比 PDF 快得多、且是纯文本),无需任何操作;
- 网络代理:直连失败自动切换本机代理,无需手动配置。

配置

| 文件 | 说明 |
| $DSH_HOME/dsh-ssh.json | SSH 主机(dsh web 侧边栏「SSH」面板配置) |
| <项目根>/.dsh-remote.json | 项目 ↔ 服务器绑定(由「远程实验」按钮 / 设置页生成) |
| $DSH_HOME/wechat-channel/state.json | 微信登录态(重启自动恢复) |
| $DSH_HOME/work-anywhere/config.json | Git 安全策略与 HuggingFace token(设置页「网络与 Git」维护) |
| $DSH_HOME/work-anywhere/git-audit.jsonl | git 全量审计日志 |

安全模型

- 沙箱关系:插件不改动 DSH 的沙箱与审批策略。git 与下载在插件自身进程内执行(DSH 的受限 token 只作用于 shell 命令),因此不受 schannel 与命名管道限制;
- 纵深防御:git 子命令白名单、危险选项拒绝、无 shell 展开;下载目标可配置为仅限项目目录;每次 git 执行写审计日志;
- 可选审批:设置页可开启 push 审批(Web 或微信端放行);微信端审批超时自动拒绝;
- 设置页 API 全部仅回环可访问。

开发

git clone https://gitee.com/tang-yongtao/dsh-work-anywhere.git
cd dsh-work-anywhere
npm install
npm test # 7 套离线测试
npm run build # 构建浏览器半(设置页 UI)→ lib/client.js

代码结构:

lib/
index.js # 组合入口(remote-lab + wechat-channel) remote-lab.js # 远程实验:绑定 / SSH / 实验计划 / 回调 watcher / 工具注册 wechat-channel.js # 微信 ClawBot:iLink 扫码 / 消息驱动 Agent / 命令 interactions.js # 微信交互桥(审批 / 问答 / 计划评审转发) local-git.js # 本地 git 执行器(白名单 / 策略 / 审计 / 代理重试) download.js # 流式下载器(镜像回退 / 上限 / sha256) net.js # 网络权限层(直连 → 代理扫描回退) ilink.js # iLink 协议客户端 src/client.js # 设置页「远程控制」+ 会话头「远程实验」按钮 test/ # 7 套离线测试

维护者注意事项

- HMR 重载不得杀死会话:卸载清理绝不 dispose agent 句柄(新实例收养);实验 watcher 重载后自动重挂;
- 密码认证主机必须透传(normalizeSshHost),密码只驻内存、绝不落盘;
- 项目目录名允许空格与 CJK:远端命令一律用双引号包裹路径;
- 每会话服务器速查只注入一次,且只含该会话绑定的一台服务器;
- 新增工具默认作用于「当前会话所在项目」;绑定只在项目根读取,绝不跨项目继承。

常见问题

Q:shell 里 git / curl 报 SEC_E_NO_CREDENTIALS 或管道错误? A:正常现象(DSH 沙箱限制)。让智能体用插件内置通道即可,无需审批。

Q:huggingface.co 直连超时? A:插件下载会自动回退 hf-mirror.com 或经本机代理;私有 / 受限模型请在设置页「网络与 Git」配置 HF token。

Q:想给 git push 加一道审批? A:设置 →「远程控制」→「网络与 Git」开启「push 需审批」,审批请求可转发到微信处理。

Q:微信里出现「⚠ 门控」? A:该会话已在 Web 端归档,插件拒绝在不可见会话中执行操作;请先在 Web 端取消归档。

Q:换服务器 / 换项目绑定怎么办? A:对话标题栏「远程实验」按钮或设置页「项目绑定 / 换绑」重新选择即可。

License

MIT © 2026 tang-yongtao
预览分享卡片长什么样 ↓TangYT/dsh-work-anywhere
分享 · DeepSeek Harness Hub
TangYT/dsh-work-anywhere

绑定远程 GPU 跑实验,微信随时接管开发

这是你的仓库?认领条目

回到顶部