@deepwhale-cn/dsh-release-selfcheck:给 Agent 用的发布前自检

前言

在 DeepSeek Harness(DSH)里做发版、上传安装包、改下载链接或创建 Release 时,CI 全绿、日志无异常,并不保证发布真的做对。常见情况是:多传了无关文件、某个平台产物丢失、版本在各站点不一致、链接 403 却没人发现——表面一切正常,用户侧已经踩坑。

@deepwhale-cn/dsh-release-selfcheck 由 feely0208 维护,以 DSH 插件(skill)形式提供一套发布前自检清单:不只看有没有报错,而是对可核对的最终结果做断言。装进 DSH 后,Agent 在涉及发布的对话里会自动带上这套检查方法。

这是什么

npm 包名:@deepwhale-cn/dsh-release-selfcheck(当前版本 0.1.0,MIT 许可证)。仓库:feely0208/dsh-release-selfcheck。社区目录页:skillhub.cn 上的 feely0208/dsh-release-selfcheck。

一句话:它挡的不是「报错」,而是没有报错但事情没做成或做错了——逐个断言产物、版本、链接、发布标记等最终状态是否与预期一致。

插件依赖 ctx.skills(由 @deepwhale-cn/dsh-skill 提供)。该服务缺失时会静默跳过,不影响 profile 启动。运行环境要求 DSH >=0.1.0-rc.6(见 package.json 的 engines)。

设计思路:三条铁律

下面三条是 skill 正文里的判据原则,也是和「只看 CI 绿灯」做法的主要差别。

1. 断言结果,不断言过程

应核对目标文件里是否真有那段内容、产物清单里每个平台是否在、HTTP 是否返回 200(用 curl -I)、下载哈希是否与原件一致——而不是只看函数返回 changed=true、job success 或 exit 0。验证器与上传器的过滤规则须同源,避免假失败。

2. 只上传显式清单

不上传「整个目录的全部内容」,用预期清单与实际目录逐一比对,防止多传、漏传。

3. 先自检环境与权限,再验业务逻辑

失败时能区分环境问题与逻辑问题,缩短排查时间。

核心功能与覆盖范围

README 与 package.json 描述的能力包括:

范围 内容
A. 产物清单 预期 vs 实际逐一比对
B. 版本一致性 包版本、git tag、多站点、多产品线
C. 平台与架构 解包看二进制头,载荷架构与包一致
D. 上传内容过滤 该排除的排除,同名不同用途不一刀切
E. 站点上线前 从页面抽链接、逐条 HEAD、部署后再验
F. 发布纪律 正式/预发布标记、latest 不被附加发布抢走
G. 对外内容合规 与 @deepwhale-cn/dsh-cn-compliance 配合(本 skill 管「东西对不对」)
H. 现场清理 进程回收、临时文件清理、不误删他人文件

另含「已知假阳性」说明,避免检查误伤(例如下载目录里的 .blockmap、锁文件里 base64 巧合等)。

脚本只做能机械核对的部分;架构是否合理、清单是否合适,仍需人或 Agent 判断。本 skill 提供的是检查方法与判据,不是某个具体项目的发布脚本。

安装与启用

方式一:DSH 插件命令(web profile)

dsh plugin --profile web add @deepwhale-cn/dsh-release-selfcheck

方式二:npm 与 profile bundle

先安装包:

npm install @deepwhale-cn/dsh-release-selfcheck

在 DSH profile 的 dependencies 与 dsh.profile.bundles 中列入该包,例如:

{
  "dependencies": {
    "@deepwhale-cn/dsh-release-selfcheck": "^0.1.0"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "@deepwhale-cn/dsh-release-selfcheck"
      ]
    }
  }
}

重启 DSH 后,涉及发布的对话会自动带上检查清单。

典型用法:selfcheck 脚本

技能正文内带可执行脚本 selfcheck.sh(注册时路径会替换为真实完整路径)。常用子命令如下。

查看当前配置与自动推断结果:

SELFCHECK=/path/to/skill/selfcheck.sh

bash $SELFCHECK config

产物清单比对(核心):

bash $SELFCHECK manifest expected.txt ./实际目录

版本一致性:

bash $SELFCHECK versions

线上页面下载链接逐条 HEAD(403 表示源站没有;000 多为网络抖动):

bash $SELFCHECK links https://example.com/download.html

发布纪律(主程序是否正式发布、附加发布是否标 Pre-release、latest 指向谁):

bash $SELFCHECK release v1.0.19 suite-v1.0.19

可选环境变量

环境变量 说明 默认
SELFCHECK_REPO_DIR 仓库根目录 从当前目录向上找 package.json
SELFCHECK_REPO_SLUG 仓库 slug(owner/repo) 从 git remote origin 推断
SELFCHECK_MAIN_SITE 主站目录(跨站版本比对) 不设则跳过
SELFCHECK_PAGES_INDEX 静态托管站 index 路径 <repo>/docs/index.html

示例:

SELFCHECK_MAIN_SITE=/path/to/main-site bash $SELFCHECK versions

适用场景与注意

适合在 DSH 中让 Agent 参与发版、上架、多平台产物核对、上线前链接检查的团队或个人。社区目录将该插件归类为「模型推理」相关生态条目;功能本身面向软件发布与 CD 质量门禁,与 README 中的 release、preflight、artifact-verification 等关键词一致。

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限运行,自检脚本会访问仓库、网络 HEAD 请求等,需在可信环境中使用。

同系列插件包括 @deepwhale-cn/dsh-cn-compliance(对外内容合规)、@deepwhale-cn/dsh-cn-doc-formatter(中文公文排版)。DSH 本体见 deepseek-ai/deepseek-harness。社区目录(如 skillhub.cn、dsh-plugin.org)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

@deepwhale-cn/dsh-release-selfcheck 把发布事故里「全绿但做错」的一类问题,收成可执行的清单比对、版本校验、链接 HEAD 与发布纪律检查。若你已在用 DSH 做 Agent 驱动的发布流程,可按上文命令安装并在发版前跑一遍 selfcheck.sh。

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

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

Xiaoye