BotonJ/dsh-windtunnel

BotonJ★ 0JavaScript最后同步: 2026-08-15

在 GitHub 打开

A windtunnel Plugin for DeepSeek Harness

README 摘要

dsh-windtunnel 🌪️ · 安装: dsh plugin --profile add github:BotonJ/dsh-windtunnel DSH 插件风洞 — 给 DeepSeek Harness 插件作者的契约回归测试舱: 剧本适配器驱动真实管线 ,零 API key、零网络、确定性、可进 CI。 核心手法:被测插件不在乎是真模型还是剧本决定调用它。把"决策"换成剧本(进程内 registerAdapter 注册脚本化 LLM 适配器),把"管线"留成真的——agent loop、工具注册表、参数校验、执行、渲染、事件流、持久化全部真实运行。 它测什么(v1) 层 内容 L0 加载 overlay 层出现在 --dump-config ; 双行重挂载探针 (两行指向同一源文件 → 同一模块实例二次 apply → 非幂等插件当场暴露);非 ctx 足迹快照(globalThis/监听器/timer/fd,post-mount vs exit 差分) L1 契约 schema 子集过真实注册表校验; presentCall / presentResult 对畸形输入的软校验契约(fuzz); render 全量性;声明了 timeoutMs 的取消响应 L2 行为 剧本页产出类型化 tool-call → 真实注册表执行 → 会话事件序列断言 ( tool/call / tool/result / turn/end + 内容谓词) L3 注入 缺参故障(可预测失败而非崩溃); 并发重入 (一页多调用经 Promise.allSettled 真实并发执行) 边界声明(重要) :风洞是 契约回归网,不是效用测试床 ——它证明"当工具以参数 X 被调用时管线正确产出事件流",不证明"真模型会主动、正确地调用工具"(那是真模型双盲实测的领域)。剧本直接产出类型化 tool-call 块,绕过了"模型输出→调用解析"层。 执行模型 被测 bundle 永远跑在 隔离子进程 里(最小 headless profile + --patch overlay),风洞宿主只做编排与断言: - 崩溃隔离:被测插件崩了,子进程死,风洞活着收尸出报告 - 干净基线:泄漏检测无宿主噪声(chokidar/socket/keep-alive 漂移) - 事件回传走 windtunnel 自有 IPC( %%WT%% stdout JSON 行), 绝不解析 dsh 内部存储格式 - 子进程内禁用真实网络适配器(overlay disabled: true )——物理上无法出网 使用 CLI(CI 友好): bundle(对话内跑):装进 profile 后对 DSH 说"帮我跑一下插件风洞",模型调用 windtunnel run 工具。 写一个用例( cases/x…

在 GitHub 查看完整 README →
工具/开发deepseek-harnessdsh-plugintestingagent

分类