dsh-mp-catalog-guard:微信小程序内容目录的守卫

前言

DeepSeek Harness(DSH)采用「一切皆插件」的理念,把各类能力都做成可插拔的模块。在智能体开发里,我们经常要管理大量微信小程序的活动页内容,这些内容通常集中在一个 catalog.json 里,同时散落在各页面的 wxml 和 js 中。金额字段、渲染方式、必填项、文案与图片路径,一旦写错,上线后才会暴露成客诉。靠人工 review 很难稳定拦住这类分散在 JSON 与 wxml 中的问题。

dsh-mp-catalog-guard 是一个 DSH 插件,它提供一套规则和一份可应用 unified diff,在发版前把「浮点金额、手写 /100、漏了 image」这类问题变成带行号的报错。

是什么

这是一个 DSH 插件,用于检查微信小程序内容目录的合规性。它向会话注册 mp_catalog_guard 工具,同时提供命令行入口和对话面板展示。

插件维护者为 dingchenhui0618-arch,开源协议为 MIT。

核心功能

插件通过 29 条规则对目录和渲染进行静态检查,覆盖五类问题:

  • 目录结构:验证 catalog.json 是否存在、可解析、结构正确,条目是否为对象。
  • 必填与唯一性:检查 id/title/amountFen/image 是否存在,以及 id/title/subtitle 是否重复(副标题重复有最小长度阈值)。
  • 金额:要求 amountFen 为整数分,检测字符串、负数、零、可疑大值(≥ 1000 万分),检测遗留字段(amount/price/fee/cost)并按约定换算,检测不精确小数、缺失字段、新旧字段并存。
  • 渲染规则:扫描 pages/**、components/**、templates/**、utils/** 中的 wxml 与 js,检查是否使用 money() 渲染,拦截直接除以 100、直接渲染 amountFen、直接渲染旧金额字段、裸符号 ¥、toFixed(2) 拼价格等情况。
  • 图片路径:检查图片是否存在、是否为相对路径、是否越界到项目外、是否为远程地址(远程只提示)。

插件默认为 dry-run,不修改文件。对于三条可自动修复的规则,提供修复建议与 diff。

安装与启用

DSH 插件安装方式需指向本地目录或 GitHub 源。请确保你已安装 DeepSeek Harness,并按照 DSH 的插件安装流程指向该仓库:

  • GitHub:https://github.com/dingchenhui0618-arch/dsh-mp-catalog-guard
  • 分类:工作流

安装完成后,插件会在会话中注册 mp_catalog_guard 工具。

典型用法

1. 作为 DSH 工具

在会话中调用 mp_catalog_guard,传入项目目录与是否应用修复:

{ "projectDir": ".", "apply": false }

返回包含统计(counts)、问题列表(issues)和 diff(fixes.diff)的报告对象,并渲染成可读文本。

2. 作为命令行

使用同源命令行工具进行本地检查:

node bin/catalog-guard.mjs examples/demo          # 人读的摘要 + diff
node bin/catalog-guard.mjs . --json               # 机器读的完整报告
node bin/catalog-guard.mjs . --apply              # 把可自动修复的项写回
node bin/catalog-guard.mjs . --report out.html    # 另存一份自包含 HTML 报告
node bin/catalog-guard.mjs . --no-render --quiet  # 只看目录,只要一行结论

退出码:0 干净、1 有问题(或写回失败)、2 用法错误。

3. 作为对话面板

插件会在 conversation.view 槽位(order 32)提供「内容目录」面板,显示统计卡、按严重级分组的问题行、修复建议与 diff,并提供「重新检查」与「应用修复」按钮。

配置项

在 cordis.patch.yml 的 config 中可配置:

  • projectDir:小程序根目录,默认为会话工作目录
  • catalogFile:目录文件名,默认 catalog.json
  • requiredFields:必填字段列表,默认 id,title,amountFen,image
  • imageBase:图片根目录(如集中放在 static/ 时使用)
  • scanPatterns:模板扫描 glob,默认 pages/components/templates/utils
  • render:是否扫描 wxml/js,默认 true
  • legacyAmountIsYuan:旧金额字段是否按「元」解释,默认 true
  • minDuplicateLength:副标题重复判定的最短长度,默认 6
  • dataDir:面板状态与历史落盘目录,默认 $DSH_HOME/mp-catalog-guard

适用场景与注意

  • 适合在智能体开发、内容运营、发版前校验小程序活动页的场景使用。
  • 插件以当前 DSH 进程权限运行,请确保对 catalog.json 与模板目录有读取权限。
  • 插件为纯静态检查,不调用模型、不联网,依赖本地文件与正则匹配。
  • amount/price 等旧字段按「元」换算是约定,非事实;如旧字段本身就是分,请设置 legacyAmountIsYuan: false。
  • 远程图片仅提示,不影响退出码。
  • 请在安装前检查源码与许可证(MIT)。

结尾

dsh-mp-catalog-guard 把分散在 JSON 与 wxml 中的金额与路径问题,转化成可落地的 diff,让错误在发版前暴露。目录页:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-mp-catalog-guard

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜