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

装备升级套件 piggy00544/dsh-upgrade-kit

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

一条命令装齐费用面板、文件预览、联网搜索与看图能力

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 49 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 56 处,展示前 47 条)
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:106
    if (!existsSync(root)) return [];
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:108
    for (const cwdDir of readdirSync(root)) {
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:112
    st = statSync(cwdPath);
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:117
    for (const s of readdirSync(cwdPath)) {
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:119
    if (existsSync(f)) files.push(f);
  • 执行外部命令固定命令
    plugins/dsh-cost/lib/index.js:128
    text = execFileSync("zstd", ["-dc", f], { maxBuffer: 512 * 1024 * 1024 }).toString("utf8");
  • 读取本地文件
    plugins/dsh-cost/lib/index.js:173
    st = statSync(f);
  • 读取密钥环境变量
    plugins/dsh-cost/lib/index.js:337
    const key = process.env.DEEPSEEK_API_KEY || apiKeyFromYaml();
  • 请求外部主机api.deepseek.com
    plugins/dsh-cost/lib/index.js:340
    const resp = await fetch("https://api.deepseek.com/user/balance", {
  • 发起网络请求
    plugins/dsh-cost/lib/index.js:340
    const resp = await fetch("https://api.deepseek.com/user/balance", {
  • 写入本地文件
    plugins/dsh-plugin-file-preview/build.mjs:22
    mkdirSync(outDir, { recursive: true });
  • 删除本地文件
    plugins/dsh-plugin-file-preview/build.mjs:23
    rmSync(bodyPath, { force: true });
  • 执行外部命令固定命令
    plugins/dsh-plugin-file-preview/build.mjs:41
    execFileSync("npx", args, { cwd: root, stdio: "inherit" });
  • 读取本地文件
    plugins/dsh-plugin-file-preview/build.mjs:43
    const body = readFileSync(bodyPath, "utf8").trimEnd();
  • 写入本地文件
    plugins/dsh-plugin-file-preview/build.mjs:55
    writeFileSync(bundlePath, wrapped);
  • 删除本地文件
    plugins/dsh-plugin-file-preview/build.mjs:56
    rmSync(bodyPath, { force: true });
  • 发起网络请求
    plugins/dsh-plugin-file-preview/lib/client.js:67
    let response = await fetch(url, init);
  • 发起网络请求
    plugins/dsh-plugin-file-preview/lib/client.js:324
    return setText(null), setTruncated(!1), setFailed(!1), fetch(url).then((response) => response.text()).then((value) => {
  • 发起网络请求
    plugins/dsh-plugin-file-preview/lib/client.js:473
    return setText(null), setTruncated(!1), setFailed(!1), fetch(rawUrl).then((response) => response.text()).then((value) => {
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:78
    const stat = statSync(filePath);
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:87
    if (existsSync(cached)) return cached;
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:88
    mkdirSync(thumbsDir(), { recursive: true });
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:90
    mkdirSync(tmp, { recursive: true });
  • 执行外部命令固定命令
    plugins/dsh-plugin-file-preview/lib/index.js:92
    execFileSync("/usr/bin/qlmanage", ["-t", "-s", String(size), "-o", tmp, filePath], {
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:97
    if (!existsSync(produced)) return null;
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:98
    writeFileSync(cached, readFileSync(produced));
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:98
    writeFileSync(cached, readFileSync(produced));
  • 删除本地文件递归
    plugins/dsh-plugin-file-preview/lib/index.js:104
    rmSync(tmp, { recursive: true, force: true });
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:158
    if (!existsSync(path)) return [];
  • 读取本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:159
    return readFileSync(path, "utf8")
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:173
    mkdirSync(filesDir(), { recursive: true });
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:195
    mkdirSync(uploadsDir, { recursive: true });
  • 写入本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:206
    writeFileSync(path, body);
  • 删除本地文件
    plugins/dsh-plugin-file-preview/lib/index.js:242
    if (existsSync(filePath)) rmSync(filePath);
  • 发起网络请求
    plugins/research-mcp/server.mjs:30
    setGlobalDispatcher(new EnvHttpProxyAgent());
  • 发起网络请求
    plugins/research-mcp/server.mjs:30
    setGlobalDispatcher(new EnvHttpProxyAgent());
  • 发起网络请求
    plugins/research-mcp/server.mjs:40
    const res = await fetch(url, {
  • 读取本地文件
    plugins/research-mcp/server.mjs:262
    if (existsSync(file)) {
  • 读取本地文件
    plugins/research-mcp/server.mjs:263
    const content = await readFile(file, 'utf8');
  • 执行外部命令来自配置/变量
    plugins/research-mcp/test.mjs:12
    const child = spawn(process.execPath, [SERVER], {
  • 执行外部命令固定命令
    plugins/wechat-bridge/dsh-wechat-daemon.mjs:32
    try { return execFileSync('which', ['dsh'], { encoding: 'utf8' }).trim(); }
  • 发起网络请求
    plugins/wechat-bridge/dsh-wechat-daemon.mjs:104
    const res = await fetch(new URL(endpoint, BASE + '/'), {
  • 执行外部命令来自配置/变量
    plugins/wechat-bridge/dsh-wechat-daemon.mjs:159
    const child = spawn(DSH_BIN, ['--profile', 'headless', prompt], {
  • 执行外部命令来自配置/变量
    plugins/wechat-bridge/dsh-wechat-daemon.mjs:185
    spawn(DSH_NOTIFY_BIN, [title, message], { stdio: 'ignore' });
  • 发起网络请求
    plugins/wechat-bridge/dsh-wechat-daemon.mjs:191
    const res = await fetch(`${DSH_WEB_URL}/api/${method}`, {
  • 发起网络请求
    plugins/wechat-bridge/dsh-wechat.mjs:54
    const res = await fetch(new URL(endpoint, BASE + '/'), {
  • 发起网络请求
    plugins/wechat-bridge/dsh-wechat.mjs:80
    const res = await fetch(new URL(endpoint, BASE + '/'), {
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.deepseek.com

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

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

DSH 装备升级套件:看钱(dsh-cost 费用面板)、看文件(file-preview 预览)、搜外网(research-mcp)、看图片(vision-bridge)。一条命令全装。

README

由 DeepSeek 最新模型翻译生成
DSH 装备升级套件 · dsh-upgrade-kit 给 DeepSeek Harness(DSH)补上五件趁手装备:看钱、看文件、搜外网、看图片、通微信。一条命令全装,装完即用。 五件装备 | # | 装备 | 一句话 | 装完你在哪看到它 | | 1 | 💰 dsh-cost 用量与费用面板 | token 消耗、峰谷计价估算、DeepSeek 官方真实余额,本地台账可对账 | 侧栏底部 ¥ 按钮 | | 2 | 📄 dsh-plugin-file-preview 文件预览 | 每条回复产出的文件自动挂预览卡片,会话附件一键预览,拖文件进窗口即上传 | 会话头部 「附件」按钮 + 回复尾部的文件卡片 | | 3 | 🌐 dsh-research-mcp 外网搜集 | 多引擎国际搜索(DDG/HN/arXiv/GitHub)+ 网页全文抓取 + 站点经验,零 API key | 模型自动获得 mcp__research__search 等 3 个工具 | | 4 | 👁 vision-bridge 视觉桥接 | 无视觉模型也能看图:描述 / OCR / 报错截图 / UI 元素坐标 | 在聊天里贴图说"看这张图" 自动触发 |
展开完整文档(README 剩余 1 节)
DSH 装备升级套件 · dsh-upgrade-kit

给 DeepSeek Harness(DSH)补上五件趁手装备:看钱、看文件、搜外网、看图片、通微信。一条命令全装,装完即用。

五件装备

| # | 装备 | 一句话 | 装完你在哪看到它 |
| 1 | 💰 dsh-cost 用量与费用面板 | token 消耗、峰谷计价估算、DeepSeek 官方真实余额,本地台账可对账 | 侧栏底部 ¥ 按钮 |
| 2 | 📄 dsh-plugin-file-preview 文件预览 | 每条回复产出的文件自动挂预览卡片,会话附件一键预览,拖文件进窗口即上传 | 会话头部 「附件」按钮 + 回复尾部的文件卡片 |
| 3 | 🌐 dsh-research-mcp 外网搜集 | 多引擎国际搜索(DDG/HN/arXiv/GitHub)+ 网页全文抓取 + 站点经验,零 API key | 模型自动获得 mcp__research__search 等 3 个工具 |
| 4 | 👁 vision-bridge 视觉桥接 | 无视觉模型也能看图:描述 / OCR / 报错截图 / UI 元素坐标 | 在聊天里贴图说"看这张图" 自动触发 |
| 5 | 💬 dsh-wechat-bridge 微信双向通道 | 微信里发消息 → 本机执行 → 结果回微信(持久记忆);智能体也能主动推消息到你微信 | 扫码后直接在微信里指挥 DSH,会话同步挂进 WebUI |

效果预览

dsh-cost · 用量与费用面板(侧栏 ¥ 按钮):

dsh-cost 面板

dsh-plugin-file-preview · 附件预览面板(会话头部「附件」按钮):

文件预览面板

安装(两种方式)

方式 A · macOS 一键安装包(推荐小白)

到 GitHub Releases 下载 DSH-Upgrade-Kit-*.dmg,双击装上,打开填 DeepSeek API key 就能用。DSH 本体和五件装备全部内嵌,无需装 Node/终端。

方式 B · 命令行(已装 DSH 的用户)

curl -fsSL https://raw.githubusercontent.com/piggy00544/dsh-upgrade-kit/main/install.sh | bash

装完重启 DSH web(launchctl kickstart -k gui/$(id -u)/com.deepseek.dsh-web,或重启你的 dsh web 进程),侧栏就会长出 ¥ 按钮和「附件」按钮。

唯一需要手动配的是 vision-bridge 的视觉 key 和微信扫码(都不配也不影响其他装备):

视觉 key(可选)
cp ~/.agents/skills/vision-bridge/config.example.json ~/.config/vision-bridge/config.json
chmod 600 ~/.config/vision-bridge/config.json
编辑填入任一 provider 的 apiKey(推荐阿里百炼 DashScope,新用户限免 50 万 token)

微信扫码(可选):~/bin/dsh-wechat.mjs login

各装备详情

- plugins/dsh-cost/README.md — 费用面板(余额 + 峰谷计价 + 会话明细)
- plugins/dsh-plugin-file-preview/README.md — 文件预览(产物卡片 + 附件面板 + 拖拽上传)
- plugins/research-mcp/README.md — 外网搜集 MCP(多引擎搜索 + 全文抓取)
- skills/vision-bridge/README.md — 视觉桥接(云端视觉模型,OCR/UI 坐标)
- plugins/wechat-bridge/README.md — 微信双向通道(收发守护 + 持久记忆 + WebUI 挂会话)

卸载

dsh plugin --profile web remove dsh-cost dsh-plugin-file-preview
rm -rf ~/.agents/skills/vision-bridge ~/.local/share/dsh-upgrade-kit
rm -f ~/bin/dsh-wechat.mjs ~/bin/dsh-wechat-daemon.mjs ~/bin/dsh-notify ~/bin/dsh-notify-wechat
launchctl bootout gui/$(id -u)/com.deepseek.dsh-wechat-daemon 2>/dev/null || true
编辑 $DSH_HOME/profiles/web/cordis.patch.yml,删掉 dsh-cost / file-preview / mcp-research 三段后重启

常见问题

Q: 装完没看到 ¥ 按钮? 重启 web 了吗?dsh plugin --profile web add link:... 只会影响已重启的进程。还不行就确认 $DSH_HOME/profiles/web/cordis.patch.yml 里有 id: dsh-cost 段。

Q: 余额对不上账单? 面板金额按官方公开牌价估算,真实扣费以 platform.deepseek.com 账单为准,面板里两者并排显示方便对账。
问:搜索工具没出现? MCP 注册发生在 web 进程启动时。确认 cordis.patch.yml 里 id: mcp-research 段存在,且 server.mjs 路径正确,然后重启。

问:vision-bridge 提示没有 key? 你还没配 ~/.config/vision-bridge/config.json,或某个服务商的 apiKey 是空的。运行 node ~/.agents/skills/vision-bridge/scripts/vision.mjs --list 可查看哪些服务商已配 key。

问:微信桥没反应? 依次检查:dsh-wechat.mjs status 是否已登录(login 扫码)→ daemon 是否在跑(launchctl list | grep wechat)→ ~/.local/share/dsh-wechat/daemon.log 最新日志。

问:隐私? 费用台账、会话文件全部本地处理,不联网上传。外发只有两处:vision-bridge 把图片发给云端视觉模型(服务商自选),以及微信桥走微信 iLink bot 官方接口(凭证 0600 本地保存,只认扫码人消息)。

许可

MIT License。vision-bridge 核心脚本 vendored 自 JochenYang/luma-mcp(MIT)。macOS 安装包构建见 macos/。

本仓库是第三方社区项目,与 DeepSeek 官方无关。"DeepSeek Harness" 为 DeepSeek 注册商标,本页仅在说明兼容对象时提及。
预览分享卡片长什么样 ↓piggy00544/dsh-upgrade-kit
分享 · DeepSeek Harness Hub
piggy00544/dsh-upgrade-kit

一条命令装齐费用面板、文件预览、联网搜索与看图能力

回到顶部