前言¶
在多人协作仓库里,改动的文件该由谁关注,往往写在根目录或 .github 下的 CODEOWNERS 里。GitHub 会按「最后一条匹配规则生效」(last-match-wins)把路径映射到负责人。DeepSeek Harness(DSH)侧若要做审查分流、提示「这些文件对应哪些 owner」,需要同样的匹配语义,但不必也不应在本机重复走 GitHub API 或分支保护逻辑。
下面介绍社区插件 dsh-codeowners(维护者 lengrufeng2008,分类 admin-security)。它在 DSH 生态里提供 只读 的文件路径到 owner 的路由辅助,规则风格与 GitHub 的 last-match-wins 一致;SkillHub 目录页见 skillhub.cn/plugins/lengrufeng2008/dsh-codeowners,源码与说明在 GitHub。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身强调「一切皆插件」,本插件是其中一条小型、可自审的匹配实现(MIT,package.json 版本 0.1.0,Node >=20)。
这是什么¶
dsh-codeowners 一句话定位:Read-only CODEOWNERS matching for DSH with GitHub-style last-match-wins patterns(只读 CODEOWNERS 匹配,last-match-wins 模式)。
它解决的是「给定仓库根目录与一组变更文件路径,按 CODEOWNERS 规则算出对应 owner」的问题,用作 routing helper,不是审批或强制门禁。README 明确:不做 GitHub API、owner 校验或 branch protection;glob 为实用子集,非常规 pattern 建议自行跑测试验证。
核心功能¶
- GitHub 风格 last-match-wins:多条规则命中时,以最后匹配为准,与常见 CODEOWNERS 语义对齐。
- 只读匹配:仅解析本地
CODEOWNERS并对路径做匹配,不修改仓库、不调用远端。 - 双入口:
- 命令行:bin/dsh-codeowners.mjs(npm 包名dsh-codeowners,bin 同名)。
- DSH 内:通过codeowners_lookup,传入root=.与变更文件列表(见 README Use 节)。 - 可导出模块:package.json 中 exports 含
./codeowners、./plugin等,供插件 bundle 与 Cordis patch(dsh.bundle.patch:./plugin/cordis.patch.yml)集成。 - 自带测试:
npm test运行node --test test/*.test.mjs。
安装与启用¶
已抓取 README 与 package.json 未给出 dsh plugin add … 一类官方安装命令,本文不凭仓库名拼接安装语句。若要从社区安装,请以 SkillHub 目录页 与仓库 README 当时记载为准。
本地验证或集成开发时,可在克隆或解压后的仓库根目录使用 Node 20+ 直接调用 CLI(与 README 一致):
node bin/dsh-codeowners.mjs --root . docs/a.md src/a.js
node bin/dsh-codeowners.mjs --root . --json
第一条对指定文件做匹配;第二条以 JSON 形式输出(便于脚本或智能体消费)。在 DSH 进程内启用插件 bundle 后,按文档使用 codeowners_lookup,并传入仓库 root 与变更文件列表。
安全提示:插件随当前 DSH 进程权限运行,安装或启用前请阅读源码、LICENSE(MIT)与 NOTICE.md,确认只读匹配范围符合你的环境策略。
典型用法¶
命令行:指定 root 与文件¶
在仓库根目录执行,对 docs/a.md、src/a.js 做 owner 路由查询:
node bin/dsh-codeowners.mjs --root . docs/a.md src/a.js
需要结构化结果时加 --json:
node bin/dsh-codeowners.mjs --root . --json
在 DSH 中¶
README 说明:
Use codeowners_lookup with root=. and the changed files.
即:将仓库根设为 root(示例为 .),并把本次变更的文件路径交给 codeowners_lookup,由插件按 CODEOWNERS 做 last-match-wins 匹配。
开发自测¶
npm test
适用场景与注意¶
适合谁
- 已在仓库维护
CODEOWNERS,希望在 DSH 工作流里 只读 地把「改了哪些文件 → 对应哪些 owner」算出来,用于提示、分流或审查上下文。 - 需要与 GitHub 常见 last-match-wins 行为一致、又不想在本机插件里绑 GitHub API 的团队。
务必注意(来自 README Limits)
| 项 | 说明 |
|---|---|
| 角色 | Routing helper,不是 approval / enforcement |
| 外部依赖 | 无 GitHub API、无 owner 验证、无 branch protection |
| Glob | 实用子集; unusual patterns 请用测试或 CLI 实测 |
| 权限 | 以 DSH 进程权限读文件;安装前检查源码与许可证 |
结尾¶
dsh-codeowners 把 CODEOWNERS 的 last-match-wins 只读匹配搬进 DSH,CLI 与 codeowners_lookup 两条路径即可复现 README 中的用法;边界清晰——路由辅助,而非平台级强制。进一步信息: