dsh-repomix:有上限的只讀倉庫打包,便於 DSH 上下文交接

前言

在 DSH 裏讓模型理解一個代碼庫,常見做法是把目錄樹、關鍵文件片段或外部工具生成的摘要塞進上下文。問題在於:倉庫稍大就容易越界,靜默丟文件又難以察覺,敏感路徑若未過濾還會被一併帶出。你需要的是「可讀、可估大小、截斷可標記」的打包結果,而不是無限膨脹的目錄 dump。

下面介紹社區插件 dsh-repomix(維護者 lengrufeng2008,分類:工作流)。它在 spirit 上借鑑 Repomix,輸出單一 XML 或 Markdown 文檔,並配合 per-file / total 上限與 truncated 標記,面向 DSH 的 context handoff。

這是什麼

dsh-repomix 的定位是:Bounded, read-only repository packing for DSH context handoff(有邊界、只讀的倉庫打包,用於 DSH 上下文傳遞)。

  • 維護者:lengrufeng2008
  • 當前版本(社區目錄頁):v0.1.0
  • 許可證:MIT(見倉庫 LICENSE;靈感來源與聲明見 NOTICE.md)
  • 運行環境:Node.js >= 20(見 package.json 的 engines)

插件不提供語義分塊、embedding 或上傳能力;打包內容是數據,不是給模型的指令。

核心功能

輸出格式與體量控制

  • 支持 XML 或 Markdown 兩種 --format。
  • 可按 單文件 與 總字節 設 cap;當內容被省略時,輸出中會體現 truncated: true,而不是靜默跳過。
  • Token 僅爲粗估:characters / 4,不是真實 tokenizer 計數。

默認跳過項(護欄)

打包時會跳過例如:

  • .git、node_modules、dist、build、coverage、各類 cache
  • 常見 lockfile 與二進制
  • .env*、.npmrc、.netrc,以及 SSH / AWS 憑證相關目錄

README 明確說明:跳過列表是 guardrail,不是保證。對外分享前務必自行檢查輸出。

刻意不做的事

  • 不解析 .gitignore 語義
  • 不做語義分塊、embedding 或上傳

倉庫測試用例包含二進制與 node_modules 誘餌目錄,預期均不應出現在打包結果中(npm test)。

安裝與啓用

DSH 生態按「一切皆插件」組織;SkillHub 插件目錄 是獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。該頁標註插件爲「可安裝工作流」,版本 v0.1.0。

目錄頁給出的安裝方式,是向當前 DSH 會話說明要安裝的插件標識(安裝前仍建議自行閱讀 GitHub 源碼與 MIT 許可證):

請安裝 DSH 插件 lengrufeng2008/dsh-repomix

插件以 當前 dsh 進程的權限 讀取你指定的倉庫路徑;安裝與使用前請確認你信任維護者與代碼內容。

若要在本地直接調用 CLI(不依賴 DSH 會話),需在已獲取源碼的環境中使用 Node >= 20,入口爲 bin/dsh-repomix.mjs(package.json 中 bin 字段:dsh-repomix)。

典型用法

命令行

將當前目錄打成 XML 並寫入文件:

node bin/dsh-repomix.mjs . --format xml --output repo.xml

打成 Markdown,並限制總大小(示例爲 500000 字節量級參數):

node bin/dsh-repomix.mjs . --format markdown --max-total 500000

在 DSH 中調用工具

README 給出的 DSH 工具用法示例:

Use repo_pack on /path/to/repo with format=xml and maxTotalBytes=500000.

將 /path/to/repo 換成目標倉庫絕對或相對路徑;format 與 maxTotalBytes 按實際需要調整。收到結果後,若出現 truncated: true,說明仍有內容因 cap 被省略,需要縮小範圍或提高上限後再打包。

適用場景與注意

適合:

  • 要把一個 bounded 快照交給 DSH / 其他模型會話,且希望格式統一(單文件 XML 或 Markdown)
  • 需要在交接前對總體積有大致 token 估計,並明確知道是否發生過截斷

注意:

  • 跳過列表不能替代安全審查;含密鑰、內部 URL 的文件仍可能存在於未跳過路徑中。
  • 無 .gitignore 語義時,「以爲不會被打包」的文件仍可能進入輸出。
  • 星標與社區熱度會變化;以 GitHub 與目錄頁當時信息爲準(撰寫時 GitHub 星標爲 0)。

本地驗證插件行爲:

npm test

結尾

dsh-repomix 解決的是 DSH 場景下「只讀、有上限、截斷可見」的倉庫上下文打包,而不是全量鏡像倉庫。需要安裝入口與簡介時,可看社區目錄頁 lengrufeng2008/dsh-repomix;實現細節、CLI 與測試見 GitHub:https://github.com/lengrufeng2008/dsh-repomix。

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

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

小夜