前言¶
在 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。