前言¶
在多人協作倉庫裏,改動的文件該由誰關注,往往寫在根目錄或 .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 中的用法;邊界清晰——路由輔助,而非平臺級強制。進一步信息: