前言¶
在 DSH 里跑智能体评测时,常见矛盾是:既要让模型读写工作区、跑测试,又要防止越界访问宿主机、偷偷联网或拉起子代理拉长评测时间。手工用容器或一次性脚本包一层,往往和 DSH 会话、设置页脱节,任务素材和限时规则也不好统一管理。
dsh-eval-guard(维护者 huhu23333)是 DSH 社区插件目录中归类为 admin-security 的评测守护插件:启用后约束所有用户主对话的文件系统范围、网络与子代理能力,并提供墙钟限时与十一种评测任务的安装与单工作区评测。仓库:https://github.com/huhu23333/dsh-eval-guard;目录页:https://www.skillhub.cn/plugins/huhu23333/dsh-eval-guard。
这是什么¶
一句话:Evaluation guard for DSH——工作区限定文件系统、禁网/禁子代理、可配置墙钟上限,并在设置页安装 tank 等评测任务包。
插件以 Cordis patch 形式注入 DSH Web 客户端(设置与会话 UI),底层依赖 Linux 用户命名空间、bubblewrap(bwrap)与 native supervisor(构建时需 gcc)。当前 package 版本为 0.7.2,许可证 MIT。
核心约束(启用「评测守护」后)¶
下面行为针对所有用户主对话生效;关闭总开关会清空全部 deadline 并停止约束。
文件系统与能力边界¶
- 只能读写会话工作区;工作区外路径(含
/tmp)不可访问。 - 禁止联网、子代理、Agent Team / 跨 agent 通信、读取其它工作区。
- 工具黑名单可配置;未列入黑名单的未知工具默认放行,但 DSH 内置与 dsh-ops 的工具会做参数路径审计。
墙钟限时¶
限时与「评测守护」总开关是两套状态;每条用户消息发送时,用当时的 timeLimitEnabled 和 timeLimitMinutes 为本会话创建或清除 deadline。
- 开启限时:
deadline = 当前时刻 + 当时的分钟数;之后改分钟数、换任务、关开限时不会改动已存在的 deadline。 - 关闭限时后,对已有 deadline 的会话再发消息会清空该会话自己的 deadline;其它会话不受影响。
- 重新打开限时后,已有会话不会自动恢复 deadline;需下一次用户消息才重新计时。
- 每个会话独立计时;deadline 到点只终止该会话及其子代理/后台任务。
- 关闭「评测守护」总开关会清空全部 deadline。
在设置页选择任务时,会把「最长时长 + 限时开关」写成该任务默认值(用户可再改):
| 任务类型 | 默认限时 |
|---|---|
| 原 5 个 meow-ai-arena 任务 | 90 分钟,默认打开 |
| Commit0 单库 | 480 分钟,默认关闭 |
| SWE-Bench Pro 单任务 | 1440 分钟,默认关闭 |
| FeatureBench 单 feature | 1440 分钟,默认关闭 |
| Neural-CPP 纯 C++ 张量后端 | 1440 分钟,默认关闭 |
| Neural-FP32 纯 C++ 运算与性能 | 1440 分钟,默认关闭 |
| Neural-CIFAR 从零训练图像分类 | 1440 分钟,默认关闭 |
任务安装与素材¶
设置页可安装 11 个任务包,安装为后台任务(离开设置页不中断;进度与日志在 $DSH_HOME/eval-guard/jobs/<job-id>/)。
原 5 个比赛任务(来自 meow-ai-arena,MIT,commit 6bd738b,2026-10-16):坦克大战、仓储调度、圈地、炸弹人、夺旗。Linux 打包版将 workspace.zip 放入工作区(baseline 改为 Linux ELF、仓储为单人单次 90 分钟等适配)。
3 个长时单任务:Commit0(tinydb)、SWE-Bench Pro(ansible vars)、FeatureBench(seaborn regression)。安装时由 host 侧 setup 按固定 commit clone、建 .venv 并装依赖,完成后清理 .git、setup.sh 等;agent 运行时仍禁网,用工作区内 .venv 跑测。
3 个纯 C++ 项目:Neural-CPP(张量后端)、Neural-FP32(算子与性能)、Neural-CIFAR(CIFAR-10 训练)。Neural-CPP 安装时解压 workspace.zip 到工作区根并移除 setup.sh;agent 从根目录 CMakeLists.txt 起步,纯 C++17,无 Python/OpenCL/第三方库。Neural-CIFAR 安装会准备 50k train split;隐藏 10k test 由 dsh-eval-guard/neural-cifar-eval/fetch_cifar.py 放在评测目录 hidden/,不进工作区。CIFAR-10 缓存目录:~/.dsh/eval-guard/cache/cifar10/,下载用 .download.lock 独占;设置页可配 CIFAR download mirror 与 CIFAR download proxy(仅 CIFAR 下载)。
安装可单独配置:Git 远端(仅验证过固定 commit 的源会列出)、pip 镜像、Git 代理与 pip 代理(可写 127.0.0.1:7897,自动补 http://;留空会清掉继承的同名代理变量)。安装被取消或失败时,若安装开始前工作区为空,会删除本次已写入的文件并清空工作区;原工作区有内容时不会触发该清理。
安装成功后设置页会给出提示词,可点「填入新会话」。
单工作区评测¶
设置页「评测当前工作区」只评一个结果,不生成排行。eval/ 内置 11 个任务的单结果脚本,评测同样走后台任务,日志与结果写入 jobs 目录。
- Commit0:单元测试通过率。
- SWE-Bench Pro / FeatureBench:隐藏 F2P/P2P;全部通过为 resolved,并返回 passRate。
- Neural-CPP:临时目录独立编译隐藏 C++ 测试,返回 accuracy 与 matmul speedGflops 等;隐藏测试不在工作区。
- Neural-FP32:对
build/nn_task与 PyTorch 参考值逐操作统计 MRE 与速度;汇总项在前,无统一 score。 - Neural-CIFAR:保留算子评测,并在隐藏验证集上用 4 线程与全部逻辑 CPU 测准确率/FPS。
- Tank / Warehouse / Land / Bomberman / CTF:官方引擎/裁判,只返回当前工作区候选结果。
安装与启用¶
插件随 DSH 源码构建;安装到当前 profile 使用仓库内脚本(非 dsh plugin add 拼接命令):
scripts/install.sh web
若脚本找不到 dsh 命令:
DSH_CHECKOUT=/path/to/deepseek-harness scripts/install.sh web
然后重启 dsh web。
从源码构建插件本体:
node_modules/.bin/tsdown
node scripts/build-native.mjs
运行依赖(README 原文):
- Linux + unprivileged user namespaces
- bubblewrap (bwrap)
- gcc(构建 native supervisor)
- unzip(安装任务素材)
- Python 3(长任务 setup 与评测)
DSH 兼容性(package.json):声明与 0.2.0-rc.1、0.2.0-rc.2 等 release 兼容(列表在仓库内完整列出)。
典型用法流程¶
- 按上文执行
scripts/install.sh web并重启 Web 端。 - 在设置页打开「评测守护」,按需配置工具黑名单、限时分钟数、任务类型默认值。
- 选择任务与工作区,配置 clone 源 / pip 镜像 / 代理后启动后台安装;在 jobs 目录或设置页查看日志。
- 安装完成后用「填入新会话」或自行在新会话中开发;agent 受工作区与禁网约束。
- 开发告一段落,在同一设置页选同一工作区,点「评测当前工作区」查看单结果指标。
长时任务(Commit0 等)评测依赖工作区内 .venv;Neural 系列评测在独立环境编译/跑隐藏测试,agent 无法读取隐藏用例源码。
适用场景与注意¶
适合:在 Linux 上自建 DSH Web 环境、需要可重复的 agent 评测边界(文件、网络、子代理、会话级墙钟)并顺带安装 meow-ai-arena、Commit0、SWE-Bench Pro、FeatureBench 或 Neural 系列任务素材的团队或个人。
务必注意:
- 插件以当前 dsh 进程权限运行;安装前应阅读仓库源码与 MIT 许可证,确认沙箱策略符合你的安全预期。
- 仅支持 Linux;README 写明 seccomp 路径检查与
open之间存在极小 TOCTOU 窗口,bwrap 只读/无网络挂载是第二层边界。 - 进程审计只覆盖被拦截的文件/网络 syscall。
- DSH 插件生态独立于 DeepSeek / 幻方;SkillHub 目录页为社区收录,非官方应用商店。
结尾¶
dsh-eval-guard 把「只能动工作区、不能联网拉子代理、会话到点停」和「十一类任务一键装进工作区、单工作区出分」收进同一套设置页与 jobs 流水线,适合把 DSH 当本地评测台时使用。