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

受限网络工具箱 d20260825613-hub/dsh-toolbox

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

在无直连机器上登录 GitHub 并管理仓库与 CI

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add d20260825613-hub/dsh-toolbox
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 20 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 54 处,展示前 54 条)
  • 发起网络请求
    agent-inspectors/bingtest.mjs:4
    const res = await fetch(url, {
  • 执行外部命令来自配置/变量
    github-automation/check-epipe.js:24
    const child = spawn(process.execPath, [binPath, ...args], {
  • 读取密钥环境变量
    github-automation/check-repos.mjs:7
    const TOKEN = process.env.GH_TOKEN || process.env.GITHUB_TOKEN;
  • 请求外部主机api.github.com
    github-automation/check-repos.mjs:20
    const res = await fetch(`https://api.github.com/repos/${owner}/${r}/git/trees/main?recursive=1`, {
  • 发起网络请求
    github-automation/check-repos.mjs:20
    const res = await fetch(`https://api.github.com/repos/${owner}/${r}/git/trees/main?recursive=1`, {
  • 执行外部命令固定命令
    github-automation/create-repo.js:45
    ? spawnSync('cmd', ['/c', tool, ...args], { cwd, encoding: 'utf8', env: ENV })
  • 执行外部命令来自配置/变量
    github-automation/create-repo.js:46
    : spawnSync(tool, args, { cwd, encoding: 'utf8', env: ENV });
  • 发起网络请求
    github-automation/dl.js:64
    const req = https.request(
  • 执行外部命令固定命令
    github-automation/finish-and-verify.js:19
    ? spawnSync('cmd', ['/c', tool, ...args], { cwd, encoding: 'utf8', env: ENV })
  • 执行外部命令来自配置/变量
    github-automation/finish-and-verify.js:20
    : spawnSync(tool, args, { cwd, encoding: 'utf8', env: ENV });
  • 发起网络请求
    github-automation/gh-device-code.js:24
    const req = https.request(
  • 发起网络请求
    github-automation/gh-device-diag.js:45
    const req = https.request(
  • 发起网络请求
    github-automation/gh-device-login.js:58
    const req = https.request(
  • 执行外部命令来自配置/变量
    github-automation/gh-device-login.js:145
    const r = spawnSync(GH, ['auth', 'login', '--hostname', 'github.com', '--with-token'], {
  • 发起网络请求
    github-automation/gh-device-poll.js:65
    const req = https.request(
  • 执行外部命令来自配置/变量
    github-automation/gh-device-poll.js:131
    const r = spawnSync(GH, ['auth', 'login', '--hostname', 'github.com', '--with-token'], {
  • 发起网络请求
    github-automation/gh-tunnel.js:53
    const req = http.request({
  • 读取密钥环境变量
    github-automation/gh-tunnel.js:100
    const fromEnv = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
  • 执行外部命令来自配置/变量
    github-automation/gh-tunnel.js:105
    const r = spawnSync(GH, ['auth', 'token'], { encoding: 'utf8' });
  • 发起网络请求
    github-automation/gh-tunnel.js:129
    const req = https.request(
  • 发起网络请求
    github-automation/gql.js:50
    const req = https.request(
  • 发起网络请求
    github-automation/joblog.js:50
    const req = https.request(
  • 执行外部命令固定命令
    github-automation/look-closer.js:19
    ? spawnSync('cmd', ['/c', tool, ...args], { cwd, encoding: 'utf8', env: ENV })
  • 执行外部命令来自配置/变量
    github-automation/look-closer.js:20
    : spawnSync(tool, args, { cwd, encoding: 'utf8', env: ENV });
  • 发起网络请求
    github-automation/probe-gui.js:18
    const res = await fetch(`${url}${path}`, {
  • 发起网络请求
    github-automation/probe-req-close.js:44
    const res = await fetch(url, {
  • 执行外部命令固定命令
    github-automation/publish-to-github.mjs:195
    const r = spawnSync('git', ['-C', dir, 'ls-files', '-co', '--exclude-standard', '-z'], {
  • 读取密钥环境变量
    github-automation/publish-to-github.mjs:292
    const token = process.env.GH_TOKEN || process.env.GITHUB_TOKEN;
  • 执行外部命令固定命令
    github-automation/publish-to-github.mjs:294
    const r = spawnSync('gh', ['auth', 'token'], { encoding: 'utf8' });
  • 发起网络请求
    github-automation/publish-to-github.mjs:302
    const res = await fetch(full, {
  • 执行外部命令固定命令
    github-automation/release-and-verify.js:23
    ? spawnSync('cmd', ['/c', tool, ...args], { cwd, encoding: 'utf8', env: ENV, stdio: inherit ? 'inherit' : 'pipe' })
  • 执行外部命令来自配置/变量
    github-automation/release-and-verify.js:24
    : spawnSync(tool, args, { cwd, encoding: 'utf8', env: ENV, stdio: inherit ? 'inherit' : 'pipe' });
  • 请求外部主机api.github.com
    github-automation/revoke-token.js:32
    const response = await fetch('https://api.github.com/user', {
  • 发起网络请求
    github-automation/revoke-token.js:32
    const response = await fetch('https://api.github.com/user', {
  • 发起网络请求
    github-automation/revoke-token.js:47
    const response = await fetch(
  • 执行外部命令固定命令
    github-automation/run-from-clone.js:20
    ? spawnSync('cmd', ['/c', tool, ...args], { cwd, encoding: 'utf8', env: ENV })
  • 执行外部命令来自配置/变量
    github-automation/run-from-clone.js:21
    : spawnSync(tool, args, { cwd, encoding: 'utf8', env: ENV });
  • 执行外部命令固定命令
    github-automation/set-qwq-meta.js:44
    ? spawnSync('cmd', ['/c', 'gh', ...args], { encoding: 'utf8', env })
  • 执行外部命令固定命令
    github-automation/set-qwq-meta.js:45
    : spawnSync('gh', args, { encoding: 'utf8', env });
  • 执行外部命令固定命令
    github-automation/set-repo-meta.js:66
    ? spawnSync('cmd', ['/c', 'gh', ...args], { encoding: 'utf8', env })
  • 执行外部命令固定命令
    github-automation/set-repo-meta.js:67
    : spawnSync('gh', args, { encoding: 'utf8', env });
  • 读取本地文件
    github-automation/sync-kits.js:14
    const canonical = readFileSync(CANON);
  • 读取本地文件
    github-automation/sync-kits.js:25
    if (!existsSync(target)) {
  • 读取本地文件
    github-automation/sync-kits.js:30
    const before = readFileSync(target);
  • 写入本地文件
    github-automation/sync-kits.js:32
    writeFileSync(target, canonical);
  • 读取本地文件
    github-automation/sync-kits.js:34
    const after = readFileSync(target);
  • 请求外部主机api.github.com
    github-automation/token-audit.js:21
    const response = await fetch('https://api.github.com/user', { headers });
  • 发起网络请求
    github-automation/token-audit.js:21
    const response = await fetch('https://api.github.com/user', { headers });
  • 请求外部主机api.github.com
    github-automation/token-audit.js:36
    const root = await fetch('https://api.github.com/', { headers });
  • 发起网络请求
    github-automation/token-audit.js:36
    const root = await fetch('https://api.github.com/', { headers });
  • 请求外部主机api.github.com
    github-automation/token-audit.js:42
    const grants = await fetch('https://api.github.com/applications/grants', { headers });
  • 发起网络请求
    github-automation/token-audit.js:42
    const grants = await fetch('https://api.github.com/applications/grants', { headers });
  • 执行外部命令固定命令
    github-automation/verify-three.js:17
    ? spawnSync('cmd', ['/c', 'gh', ...args], { encoding: 'utf8', env })
  • 执行外部命令固定命令
    github-automation/verify-three.js:18
    : spawnSync('gh', args, { encoding: 'utf8', env });
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.github.com

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

受限网络下的智能体工具箱:在没有 GitHub 直连的机器上操作 GitHub(设备码登录 / CONNECT 隧道 / git 包装器),DSH 会话 zstd 解码与 Electron asar 探查工具,Hugo 博客脚手架。

README

由 DeepSeek 最新模型翻译生成
dsh-toolbox 一个编码智能体(DeepSeek Harness)在受限网络的 Windows 机器上干活时写的小工具集合。 三块内容:让 GitHub 变得可用、看清 DSH 与 Electron 客户端的内部、一键搭 Hugo 博客。 所有脚本都是「被真实问题逼出来的」,注释里写了每一步为什么必须存在。 Token、密钥、浏览器配置、会话转储一律不进仓库(见文末「没有进仓库的东西」)。 一、github-automation/ —— 在没有直连的机器上操作 GitHub 这台机器上 github.com 直连被重置、registry.npmjs.org 超时、hosts 里也没有可用的兜底条目,能出去的只有本地代理(曾经的 Clash 127.0.0.1:7897)或第三方反代。这套脚本解决的是: | 脚本 | 解决什么 | | gh-device-login.js / gh-device-code.js / gh-device-poll.js / submit-device-code.js | 无浏览器完成 GitHub 设备码登录:申请设备码 → 提示用户去 github.com/login/device 输入 → 轮询拿 token | | gh-tunnel.js | 通过本地代理的 CONNECT 隧道调 GitHub API。
展开完整文档(README 剩余 1 节)
dsh-toolbox

一个编码智能体(DeepSeek Harness)在受限网络的 Windows 机器上干活时写的小工具集合。
三块内容:让 GitHub 变得可用、看清 DSH 与 Electron 客户端的内部、一键搭 Hugo 博客。

所有脚本都是「被真实问题逼出来的」,注释里写了每一步为什么必须存在。
Token、密钥、浏览器配置、会话转储一律不进仓库(见文末「没有进仓库的东西」)。

一、github-automation/ —— 在没有直连的机器上操作 GitHub

这台机器上 github.com 直连被重置、registry.npmjs.org 超时、hosts 里也没有可用的兜底条目,能出去的只有本地代理(曾经的 Clash 127.0.0.1:7897)或第三方反代。这套脚本解决的是:

| 脚本 | 解决什么 |
| gh-device-login.js / gh-device-code.js / gh-device-poll.js / submit-device-code.js | 无浏览器完成 GitHub 设备码登录:申请设备码 → 提示用户去 github.com/login/device 输入 → 轮询拿 token |
| gh-tunnel.js | 通过本地代理的 CONNECT 隧道调 GitHub API。Node 的 https 不读 WinINET 代理设置、又会走 hosts,所以必须先隧道再手工套 TLS(含正确的 SNI) |
| gitnet.ps1 | 给任意仓库跑的 git 包装器:http.proxy + sslBackend=openssl(schannel 过代理握手失败)+ HTTP/1.1(约一半隧道 TLS 会被重置,必须重试)+ 文件型凭据助手(避免已失效的 gh keyring token 被优先使用) |
| git-token-helper.js | git 的 credential helper:从本地文件读 token,兼容 get/store/erase |
| create-repo.js / set-repo-meta.js / set-qwq-meta.js | 建仓库、写描述与 topics、批量改元数据 |
| release-and-verify.js / finish-and-verify.js / verify-three.js | 打 release、上传产物、回读校验 |
| ci-watch.js / ci-watch-all.js / ci-status.js / joblog.js | 盯 GitHub Actions 的运行状态与日志 |
| token-audit.js / narrow-scopes.js / revoke-token.js / delete-token-step1.js / confirm-delete-token.js | 审计 token 权限、收敛 scope、吊销与删除 |
| dl.js | 走本地代理 CONNECT 隧道下载 GitHub 文件并手工跟随 302 重定向(每个新主机各自开隧道,共 8 次重试) |
| probe-.js / dump-device-form.js / find-delete-form.js / fill-token-form.js / click-token-delete.js | 用无头 Edge 排查 GitHub 页面表单(设备码、token 删除流程)的探针 |
| check-epipe.js / probe-req-close.js | 排查 Node 子进程管道 EPIPE、请求提前关闭这类环境噪声 |
| publish-to-github.mjs | 在不支持 git push 的机器上发布仓库:api.github.com 可达而 github.com 被墙时,用 Git Data API(blobs → tree → commit → ref)一次提交推上完整目录,并自动建仓库、写描述与 topics。新仓库要先 bootstrap 一次提交,否则 GitHub 会对建 blob 返回 409 "Git Repository is empty"。发布清单遵循 .gitignore(有 git 仓库时用 git ls-files -co --exclude-standard,否则本地解析 .gitignore),任何像凭据的路径都会拒绝上传;--dry-run 先打印将要上传的清单与将要保留/删除的远端文件,tree 默认带 base_tree 合并到分支(远端独有文件不会被删,除非显式 --delete-remote) |
| check-repos.mjs | 发布后审计:列出仓库里可疑的二进制/垃圾文件(.exe/.zip/.log/日志目录等) |

一个实测结论:这台机器上 github.com:443 被重置,但 api.github.com、raw.githubusercontent.com、 codeload.github.com、objects.githubusercontent.com 都能直连,而且直连时 Authorization 是被真正校验的(拿无效 token 请求 /user 返回 401)。所以「GitHub 完全不可用」是错的——不能用的是网页与 git 协议,能用的是 API。
相比之下,第三方反代 gh-proxy.com 的 API 通道会用反代自己的账号发请求(拿无效 token 请求 /user 竟然返回另一个用户 aeroheaven1 的资料),因此绝不能用它提交代码或传 token。

用法要点:这些脚本需要你自己提供 token(设备码登录或已有的 PAT),环境变量同时接受 GITHUB_TOKEN 和 GH_TOKEN(隧道系列与 publish-to-github.mjs 都认这两个名字,另外都支持 --token 与 gh auth token 兜底),仓库里只有「怎么拿到、怎么用、怎么吊销」的代码,没有任何凭据。

二、agent-inspectors/ —— 看清 DSH 会话与 Electron 客户端的内部

| 脚本 | 作用 |
| zstd-frames.mjs | 共用解码库(不是命令行工具):把多帧 zstd 文件逐帧解开。帧边界取自解码器自己报告的已消费字节数;末尾有无法解码的字节时抛错,而不是静默返回半截内容 |
| zframes.mjs | DSH 会话文件解码器(帧级诊断)。session.v4.jsonl.zstd 是多个 zstd 帧拼接的,zstdDecompressSync 只解第一帧(会得到 200 字节的元数据)——帧边界必须用解码器自己报告的已消费字节数,不能扫魔数:压缩块内部也会出现 28 b5 2f fd,按它切会提前截断。这个坑花了不少时间才定位 |
| zstream.mjs / zdump.mjs / ztail.mjs / zinfo.mjs | 同一套逐帧解码(共用 zstd-frames.mjs)的几种用法:全解写文件、按关键词过滤、看尾部/头部 N 条、只看结构概要。四者都解全部帧;若末尾还有字节解不出来,会打印剩余偏移并以退出码 1 结束,不再把「部分成功」当成功 |
| asar.mjs | Electron app.asar 读取/检索器。自己解析 asar 的 pickle 头(注意:长度字段在偏移 4,字符串从偏移 8 开始),在 163 MB 的包里按关键词定位代码片段——用来搞清 Chatbox 的联网搜索与自定义提供方格式。unpacked 条目改从 app.asar.unpacked/ 读,link 条目跳过,被 40 MB 阈值跳过的文件会在结尾列出来 |
| bingtest.mjs | 用 Chatbox 完全相同的请求头与选择器验证 Bing SERP 抓取链路(#b_results > li.b_algo),确认"自带联网搜索"可用 |

这些工具的效果:把一个打包好的 Electron 客户端的"联网搜索走哪个网、要什么 key、配置怎么写"全部问清楚,并且确认了 webSecurity: false 让渲染层可以跨域抓 SERP。

三、hugo-blog-setup/ —— 一键 Hugo 博客脚手架

bootstrap.ps1(20 KB)+ blog-template/:从一个模板目录生成可部署的 Hugo 站点,包含 PaperMod 主题配置、config.toml、部署脚本 deploy.ps1、Cloudflare Pages 的 wrangler.toml、以及中文写作模板(Markdown 速查、部署笔记)。run-bootstrap.cmd 双击即用。

四、没有进仓库的东西(重要)

- 任何 token / 密钥:gh-token.txt、.env、.token、cookies.txt、-challenge.txt 一律排除(本仓库根目录的 .gitignore 里确实写了这些规则;publish-to-github.mjs 另有独立的凭据文件名兜底检查,即使某个目录没有 .gitignore 也不会把凭据推上去)
- 浏览器配置目录:edge-direct/、edge-profile/ 里是完整 Edge 配置(含 Cookie、Trust Tokens)
- 会话转储:DSH 的原始 .jsonl(几 MB 的私人对话记录)
- 二进制:PortableGit、Hugo、PaperMod、npm 缓存等(几百 MB,且能重新下载)

五、运行环境

Windows 10/11 + Node.js(脚本用 node,无第三方依赖,除 Edge 探针需要本机 Edge)。
GitHub 相关脚本需要本机有可用的出网方式:本地 HTTP 代理(http.proxy)或第三方反代。

六、自检

仓库没有 package.json,自检也是零依赖的纯 node:

node tests/run-tests.mjs # 全部
node tests/run-tests.mjs zstd # 只跑文件名含 zstd 的用例

覆盖三件最容易再犯的事:

- zstd 多帧解码:agent-inspectors/ 必须拿到全部帧的正文(含只出现在第 2、3 帧里的内容),截断文件必须以非 0 退出;
- publish-to-github 的发布清单:.env、secret.txt、*.log、node_modules/、dist/ 必须被忽略, !keep.tmp 这类负向规则必须生效,没有 .gitignore 时凭据文件名也必须被拦下;
- ci-watch-all 的参数解析:带不带 --timeout-min 都要收集到全部仓库名,只给一个仓库时不得报「all repositories green」。

测试不打真实网络:publish-to-github.mjs 由一个本地 mock API(tests/mock-github-api.mjs)接住请求并记录全部请求体,GitHub 客户端逻辑也可以直接对纯函数(listPublishFiles 等)单测。
预览分享卡片长什么样 ↓d20260825613-hub/dsh-toolbox
分享 · DeepSeek Harness Hub
d20260825613-hub/dsh-toolbox

在无直连机器上登录 GitHub 并管理仓库与 CI

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部