DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Mp Automator — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-mp-automator

Mp Automator

WeChat Mini Program 自动化测试 DeepSeek Harness (dsh):选择器定位操作、构建新鲜度检查门槛、适用于纯文本模型的几何优先断言,以及视觉路由上的截图图像块。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-mp-automator@0.3.0
README兼容性版本

兼容性与来源证明

Mp Automator 以 dsh-mp-automator 发布,当前版本为 0.3.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.3.0stable
2026/8/16
0.1.0stable
2026/8/16

相关插件

正在加载相关插件…

最新版
0.3.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
140.3 kB
文件数
16
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
48
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-mp-automator

WeChat Mini Program automated testing for DeepSeek Harness (dsh) 微信小程序自动化测试 · DeepSeek Harness 插件

Eight mp_* tools that let a dsh agent drive a real Mini Program in WeChat DevTools — inspect pages, act on elements, capture screenshots, read the console — with the correctness discipline built into the tools instead of into prompts the model may ignore.

让 dsh 智能体驱动微信开发者工具里真实运行的小程序:读取页面、操作元素、截图、 看控制台。正确性纪律内建在工具里,而不是写在模型可能无视的提示词里。


Why this exists · 为什么做这个

Testing a Mini Program through an LLM agent fails in three quiet ways, and each one produces a green result that means nothing:

  1. Stale element handles. The DevTools automation layer renumbers element uids on reconnect, navigation, snapshot, and whenever a second client touches it — invisibly. An agent that replays a remembered uid taps the wrong element, and nothing errors.
  2. Stale builds. If the compiled .js is older than its .ts, every assertion runs against code nobody intends to ship.
  3. Invisible screenshots. A text-only model "takes" a screenshot it can never see, then quietly describes what it imagines.

三种静默失败,每一种都产出毫无意义的绿色结果:uid 被运行时无声重编号(点错 元素不报错);编译产物比源码旧(断言的是没人要发布的代码);纯文本模型"截"了一张 自己永远看不见的图(然后凭想象描述它)。

This plugin's answer, respectively · 对应的三个答案:

Failure · 失败Mechanism · 机制
stale uidSelector-addressed actions — mp_act re-resolves the element inside one exclusive tool call; no uid ever crosses a call boundary. 选择器寻址:查找与操作在同一次独占调用内背靠背完成,uid 永不跨调用存活
stale buildFreshness gate — act-class tools refuse when .js is older than .ts, and say honestly when freshness is unknowable (plain-JS projects) instead of pretending. 新鲜度门:产物过期直接拒绝执行;无从判断时如实警告,绝不伪装
invisible screenshotDual path — every screenshot yields a geometry fact table (works on ANY model); vision-declared routes additionally get the real PNG as an image block, and the result always says which happened (<imageStatus>). 双路径:几何事实表全模型可用;声明视觉的路由额外附真图,结果永远写明发生了哪种

Install · 安装

# 1. the automation CLI this plugin drives (owns the DevTools connection)
npm i -g vince-mp-cli

# 2. the plugin, into your dsh profile
dsh plugin --profile web add dsh-mp-automator

Requirements · 前置:macOS + WeChat DevTools (automation/CLI port enabled in 设置→安全设置) · Node ≥ 20 · dsh ≥ 0.1.0-rc.5.

Open a dsh session inside your Mini Program project (the directory with project.config.json) — the tools resolve the project from the session's working directory. 会话必须开在小程序项目目录内。

The tools · 工具

toolwhat it does · 作用
mp_sessionstart / status / stop / restart / reconnect the persistent DevTools session(其余工具会自动起会话)
mp_doctorproject health: DevTools cli, tsc --noEmit, compiled-JS freshness — feeds the gate · 健康检查,喂给新鲜度门
mp_inspectpage / stack / data(+path) / sysinfo / snapshot(元素事实表)
mp_queryselector → geometry fact table: fully-visible / partial / offscreen / read-failed flags + overlap candidates(0.2.0 起相对当前滚动窗口判定,事实表披露 scrollTop=;scroll-aware since 0.2.0)
mp_acttap / input / longpress by selector · nav / switchTab / reLaunch · camera-less scan
mp_screenshotPNG to captures/ + fact table; real image block on vision routes; <imageStatus> says which path fired
mp_consoleerrors first, then the most recent entries(自动翻到缓冲区尾部)
mp_evalescape hatch: evaluate JS in the page context — freshness-gated, config kill-switch

Every result is byte-clamped under the host's compaction pruner and is self-contained — long test sessions survive context compaction without the results rotting into "see above". 所有结果自带字节上限且自包含,长会话压缩后依然可读。

A test run looks like · 一次测试长这样

you › 测试首页的"立刻开始"按钮能进入扫码页

agent › mp_doctor            → freshness: fresh — freshness verified: 12 .ts/.js pair(s) checked, typecheck passed
agent › mp_query .start-btn  → matched=1 · button_3 | button | 24,180,342,96 | fully-visible | 立刻开始 简单扫码
agent › mp_act tap .start-btn → tap on .start-btn[0] (resolved button_3, 1 match(es)) | route now: pages/scan/index
agent › mp_console           → console: total=2 errors=0
agent › ✅ 按钮可见、可点、路由跳转正确、无控制台错误

And when the build is stale · 构建过期时:

agent › mp_act tap .start-btn
      ✗ refusing to act on this runtime: 1 compiled file(s) are older than their
        TypeScript source (e.g. utils/debounce.ts) — rebuild the project (or let
        DevTools finish compiling) so the runtime matches the source

Vision routes · 视觉路由

Declare input: [text, image] on any pi-ai provider model and mp_screenshot attaches the real PNG — verified live with kimi-k2.7-code, which read button text and page colors straight from the pixels (evidence). Text-only routes (e.g. DeepSeek V4) get the same geometry table plus an explicit "the PNG is on disk but NOT in context" note, so the model can never pretend it saw one.

给任意 pi-ai provider 的模型声明 input: [text, image],截图就会作为真实 image block 进入上下文(已用 kimi-k2.7-code 实测:从像素读出按钮文字与配色)。 纯文本路由拿到同样的几何表 + 一行明示"图在磁盘、不在上下文",模型无法假装看过图。

Provider template · 配置模板:docs/PROVIDER-TEMPLATE.yaml

Configuration · 配置

# in your profile's cordis.patch.yml
- id: mp-automator
  config:
    freshnessMode: block   # block(默认) | warn | off
    enableEval: true       # mp_eval kill-switch
    imageBudget: 3         # max ATTACHED screenshots per session (vision routes) — each
                           # attached image keeps billing on every later request; unchanged
                           # screens are never re-attached · 视觉路由的图片附加预算
    screenshotDir: captures
    binPath: vince-mp      # absolute path if not on PATH

Design notes · 设计笔记

This plugin was built by adversarial iteration: a five-lens attack battery (plus a cross-vendor DeepSeek attacker) destroyed the first design — 9 P1 findings, four root causes — and v3 eliminated the root causes structurally rather than patching symptoms. The full ledger, the red→green test evidence, and the live test matrix live in the repo's docs/ (kept out of the npm tarball to stay lean).

本插件经对抗性迭代产出:五透镜攻击电池(外加跨厂商 DeepSeek 攻击手)击穿了第一版 设计(9 个 P1、四个根因),v3 用结构性设计消灭根因而非打补丁。完整台账、红绿测试 证据与真机测试矩阵见仓库 docs/(未打进 npm 包以保持精简)。

The four structural decisions · 四个结构性决策:

  • Don't mirror shared state — change the addressing model. The uid map is daemon-owned and renumbers invisibly; no plugin-side counter can win. 不镜像共享状态,改寻址模型。
  • Fail closed everywhere. Only strict ok === true is success; a missing doctor document refuses instead of assuming. 一切解析默认失败。
  • stderr is half the contract. The CLI prints thrown errors to stderr; both streams are parsed. stderr 是契约的另一半。
  • Budgets live in code. Byte-clamps with disclosed truncation, not prose promises. 预算写进代码,截断必声明。

Companion skill · 配套技能

skill/mp-testing/SKILL.md carries the judgment layer (inspect→act→verify rhythm, selector discipline, the assertion recipe). Load it into any skill root dsh reads — the tools work without it, but test quality comes from doctrine.

工具携带能力与门,技能携带打法(先看后动再验证、选择器纪律、断言配方)。

Relationship to vince-mp-cli · 与 CLI 的关系

This plugin is a thin shell: vince-mp-cli owns the automation truth (DevTools connection, element resolution, path policy); the plugin owns agent-facing discipline. Version negotiation is explicit — the plugin verifies vince-mp-cli >=0.2.0 <0.3.0 at first use and refuses with an upgrade hint outside that window.

薄壳架构:CLI 拥有自动化事实,插件拥有面向智能体的纪律;首次调用时协商版本, 窗口外拒绝并给出升级指引。

License

MIT © Vincent Jiang