maomitgd2006/dsh-CalibGuard

dsh-CalibGuard

CalibGuard 文件安全审计的 DeepSeek Harness 插件:本地校准 CodeBERT 门控 + 云端复核,以 agent 工具与侧边栏面板两种形态使用

未分類calibguardcodebertdeepseek-harness

dsh-calibguard

中文 | English

把 CalibGuard 的文件安全审计引擎接进 DeepSeek Harness(DSH): 让 AI 在执行 / 安装来路不明的代码之前先过一道本地门控,你也可以在侧边栏面板里直接拖文件审计。

  • 🔒 默认离线:本地 CodeBERT + Platt 校准给出可解释的「恶意概率」,文件内容不会上传;
  • ☁️ 灰区才上云:只有本地拿不准的文件才发一次云端复核(可关闭);
  • 🧭 四档结论:放行 / 可疑 / 拦截 / 转人工,附证据与 Markdown 报告;
  • 🧰 三种用法:AI 工具(calibguard_audit 审计 / calibguard_status 状态 / calibguard_configure 改设置)+ 浏览器面板;
  • 🛡️ 插件体检:安装/更新别的 DSH 插件时自动扫一遍并提醒(一个频率下拉控制:插件列表更新时 / 周期 / 关闭;不扫自己);
  • 🔔 新版本提示:定时检查本插件是否有新版本,弹窗询问是否升级,绝不静默升级(可设置跳过此版本/以后不再询问);
  • ⚙️ 一套设置:面板里保存的阈值与送审口径,AI 调用同样生效。
本仓库只是 DSH 插件,不是 CalibGuard 主仓库。
CalibGuard 主仓库(引擎、桌面 GUI、基准):P-436/CalibGuard。
为了让插件开箱即用,运行所需的引擎核心
(calibguard/、audit_service.py、词表与校准参数)已复制到本仓库 `engine/`
(只复制、不改逻辑,同步方法见该目录 README);模型权重(475 MB)由本仓库 Release 资产分发;
运行时通过常驻 Python 子进程调用引擎。

有什么用(典型场景)

场景 · 你怎么用 · 它给你什么 AI 要运行下载的脚本/安装包 · 说一句「安装前先审一下 D:\downloads\setup.py」 · 四档结论 + 触发证据 + 报告路径,AI 据此决定是否继续 手动检查可疑文件 / 压缩包 · 拖进侧边栏面板 · 逐文件结论、可排序、可点开 Markdown 报告 审计一整个目录 · 粘宿主机目录路径 · 递归逐文件审计(超过上限会明确提示「只审了前 N 个」) 不想把代码传到云上 · 默认即离线;需要时关掉云端复核 · 全程本地推理,灰区按本地 0.5 切分 想要更稳/更省 · 面板调阈值、送审内容源、投递方式并保存 · 面板与 AI 共用同一套口径

结论怎么读

标签 · 含义 · 建议动作 BLOCK 拦截 · 本地模型高置信度恶意 · 不要执行;看报告里的证据 MANUAL 转人工 · 拿不准 / 云端复核失败 · 人工确认,或换个送审口径再跑 SUSPICIOUS 可疑 · 中等概率,可能是正常库里的危险 API · 结合报告判断;压缩后的第三方库常落这里或拦截(见 FAQ) ALLOW 放行 · 本地模型判定安全 · 可以继续

结果里还有:校准后概率 p、推理设备(cpu/cuda)、窗口数、文件 sha256、以及报告文件路径。

安装

开始前:引擎依赖会自动准备(对齐 CG_GUI 的「首启装环境」)

本插件自带引擎(engine/:复制自 CG_GUI 的 calibguard/ 包、audit_service.py、词表与校准参数), 只差 475 MB 模型权重和 Python 依赖。不用手动装——装好插件重启 DSH 后, 若检测到缺少 /.venv,插件会在后台自动:

  1. 把内置 engine/ 复制到 `(默认 ~/.dsh/calibguard-engine`);
  2. 从本仓库 Release 下载模型权重 model.safetensors(约 442 MB 压缩包,GitHub 直连失败会自动尝试 ghproxy 等镜像,

缓存于 ~/.dsh/calibguard-tools/model-cache);

  1. 创建 .venv(不需要你预装 Python:会自动选择本机 64 位 Python 3.10–3.12——会检查 PATH、py 启动器、

%LOCALAPPDATA%\Programs\Python、常见安装目录;只有 3.13+ 或 32 位 Python 时自动下载便携 Python 3.10.8, 约 30 MB,走 GitHub 镜像回退);想单独准备/排查 Python 可运行 node setup.mjs --prepare-python;

  1. 按 requirements-gui.txt 安装依赖(约 1–3 GB,默认清华 PyPI 镜像);
  2. 就绪后工具/面板自动可用。
默认不再从 GitHub 下载 CG 发行包;只有显式 node setup.mjs --from 或 --url
才会走 CG 发行包,用于离线/指定引擎版本。

安装速度:模型/引擎包默认 4 路并发分段下载(实测单连接 0.6 MB/s → 并发 2.3 MB/s), GitHub 直连失败会自动换 gh-proxy / ghfast / ghproxy 镜像;pip 依赖按 清华 → 阿里 → 中科大 → 腾讯 → 官方 依次回退。可用 DSH_CALIBGUARD_DOWNLOAD_CONNECTIONS 调整并发数。

GPU 自动定档:检测到 NVIDIA 且 CUDA ≥ 12.8、算力 ≥ 7.5(RTX 20/30/40 系)时自动安装 CUDA(cu128)版 torch;否则装 CPU 版(GTX 10 系算力 6.1,cu128 轮子里没有对应 kernel,只能 CPU)。 面板顶部会显示「推理设备:cpu/cuda」和定档原因。

手动覆盖(可选): node setup.mjs --force-cuda(强制装 CUDA 版,跳过 CUDA/算力检查,风险自负)、 node setup.mjs --cpu(强制 CPU 版),或环境变量 DSH_CALIBGUARD_FORCE_CUDA=1 / DSH_CALIBGUARD_CPU_ONLY=1。装完想切换:node setup.mjs --reinstall-torch --force-cuda 或 --reinstall-torch --cpu。

CPU 版与 CUDA 版 torch 不能同时存在于同一个 venv(同名包会互相覆盖);
但 CUDA 版 torch 本身就是完整 torch,没有 GPU 时会自动用 CPU,所以不需要共存。
已经有 CPU 版的机器:仅当显卡算力 ≥7.5(如 RTX 2060)且 torch 是 CPU 版时,面板顶部才会显示
「检测到 NVIDIA … 但当前 torch 是 CPU 版」并提供 「一键重装 GPU 版 torch(约 2.5 GB)」 按钮
(会先卸载 CPU 版再装 CUDA 版,完成后自动重启桥接);算力低于 7.5 的卡(如 GTX 1060 5GB / 6.1)强制 CPU
是正常行为,不会再提示重装。命令行:node "/setup.mjs" --reinstall-torch --force-cuda。

进度在哪看:面板顶部会出现「首次运行:正在自动准备引擎与依赖」卡片(含当前步骤与输出尾巴); 宿主日志里是 [calibguard] 开头的行。准备期间审计按钮不可用,完成后点「刷新状态」即可。 首次约需 10–20 分钟(取决于网速和 pip 源),只需一次。

安装被中断怎么办:0.5.4 起,装完依赖会实际导入 torch / transformers / sklearn / openai 校验,
成功才写 /.deps-ok.json;如果安装中途被中断(关掉 DSH、关机),下次启动会检测到
依赖不完整并自动补装,不会再把半成品 venv 当作就绪(面板会显示"正在自动补装缺失依赖")。
想提前预热、或断网/锁网环境需要离线安装,也可以手动跑安装器(同一套逻辑,幂等):
```powershell
node setup.mjs # 一键:内置引擎 → 下载模型 → venv → 依赖 → 自检
node setup.mjs --from D:\CalibGuard-GUI.zip # 用已下载的发行包,不联网
node setup.mjs --dest D:\CG_GUI # 装到自定义位置(之后配置 engineRoot)
`
已有可用 CG_GUI/(含 .venv)的机器不会重复安装。
如果不想让插件自动联网,把插件配置 autoSetup 设为 false(此时缺环境会直接报错并提示手动安装)。

前提

  1. DSH(DeepSeek Harness)0.1.5-rc.2 实测可用;
  2. Python:无需预装——没有 64 位 3.10–3.12 时安装器会自动下载便携版(缓存在 ~/.dsh/calibguard-tools,可用 --no-portable-python 关闭);
  3. 引擎:插件自带;模型权重会自动从本仓库 Release 下载(自动镜像回退)。也可用 --from 指定 CG 发行包,或把 engineRoot 指向已有 CG_GUI/。

方式 0:桌面端「添加插件」(最省事,推荐)

DSH 桌面版只需要一步:设置 → 添加插件 → 输入 `dsh-calibguard` → 重启 DSH。 默认装 npm 上的最新版;要固定版本就写 dsh-calibguard@0.3.3(@ 后面是版本号)。 不需要命令行、不需要下载源码。

输入框里也可以填以下任意一种(装完按提示重启 DSH):

填什么 · 示例 · 说明 GitHub 仓库地址(推荐) · https://github.com/maomitgd2006/dsh-CalibGuard · 自动拉取源码并登记到当前 profile 的 bundle 本地目录路径 · `(例:D:\code\dsh-calibguard) · 已 clone / 解压到本地时用 **包名** · dsh-calibguard 或 dsh-calibguard@0.3.3 · ✅ **已发布到 npm**;不写版本=装 latest,写 @版本`=固定版本

等价命令行(已实测:安装后 DSH 会自动把包加进 profile 的 dsh.profile.bundles):
```powershell
dsh plugin --profile add dsh-calibguard # npm 包(推荐)
dsh plugin --profile add https://github.com/maomitgd2006/dsh-CalibGuard # GitHub 源码
dsh plugin --profile add file: # 本地目录
`
npm 包页:

无论用哪种方式,装好后首次运行都不需要手动装引擎——插件会自动准备(见下一节)。

方式 A:命令行安装(npm 包,适合非桌面版 / 脚本化)

dsh plugin --profile <profile> add dsh-calibguard

之后同样在 profile 的 cordis.patch.yml 里插一行,name 直接写包名 dsh-calibguard (本包自带的 cordis.patch.yml 会自动把插件行叠加进配置树)。

desktop profile 被 Electron 独占,CLI 拒绝管理它 —— 桌面版请用「方式 0」,
或「方式 B」的 file:// 行。

方式 B:源码方式(file:// 行,适合本地开发 / 离线)

在 profile 的 cordis.patch.yml 末尾追加(路径改成你的实际位置):

- insert:
    - id: calibguard
      name: 'file:///<本包绝对路径>/lib/index.js'
      config:
        enabled: true
        device: auto
        announceToModel: true

insert 行的路径会被 DSH 自动改写成 file:// URL;桌面版的 profile 在 /profiles/desktop/cordis.patch.yml(` 默认 ~/.dsh`)。

可选:node scripts/link-dsh.mjs 把 DSH 自带的 @deepseek-ai/* 以目录联接挂到本包,让 defineTool / Config 结构校验这两个可选能力生效(不做也能跑)。

方式 C:发行包(离线 / 不想用 npm)

从 Releases 下载 dsh-calibguard-.zip(约 100 KB,不含 test/),解压到一个固定目录,然后按「方式 B」 把 name 指向解压目录下的 lib/index.js 即可。

验证

  • 重启 DSH 后,左侧边栏出现盾牌图标;面板顶部显示「引擎就绪 / 阈值 / 云端复核」状态;
  • 或在对话里让我调用 calibguard_status,应返回设备、模型、阈值、凭据是否就绪;
  • 命令行自检(不经 DSH,直接测引擎):
node scripts/bridge-selftest.mjs                       # 只看引擎状态
node scripts/bridge-selftest.mjs "<engineRoot>/samples" # 状态 + 试审计
⚠️ 改完 patch / 面板代码后必须重启 DSH:客户端 bundle 在宿主启动时加载,
已加载的 ESM 模块也有缓存。

使用

1) 让 AI 审计(工具调用)

直接说自然语言即可,AI 会调用 calibguard_audit: