前言¶
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.jsonrequiredFields:必填字段列表,默认id,title,amountFen,imageimageBase:图片根目录(如集中放在static/时使用)scanPatterns:模板扫描 glob,默认pages/components/templates/utilsrender:是否扫描 wxml/js,默认truelegacyAmountIsYuan:旧金额字段是否按「元」解释,默认trueminDuplicateLength:副标题重复判定的最短长度,默认6dataDir:面板状态与历史落盘目录,默认$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