dsh-jev-screen:用 Jev 把本地文件候選收斂成短名單

前言

在 DeepSeek Harness(DSH)裏,Agent 常要在本地知識庫或項目目錄裏找「和當前任務最相關的幾個文件」。字面檢索(glob、grep)召回面大,但容易把「正文裏順帶出現關鍵詞、主旨卻無關」的文檔一起撈上來;若讓 Agent 逐個通讀,上下文和延遲都會失控。

下面介紹社區插件 dsh-jev-screen(維護者 chaoguang668):代碼遍歷目錄並讀取每個文件的前部摘要,Jev(OpenJev / Codiv 判別式模型)逐文件打分排序,把幾十個候選壓成短名單,供 Agent 再讀全文做終審。插件歸類爲「模型推理」,MIT 許可,當前版本 0.3.0,零 npm 依賴——index.js 不 import 任何包。

這是什麼

一句話:不是找全,是排序。 glob / grep 已經是召回超集;Jev 不提供「多找文件」的優勢,而是在已有候選上做語義降噪。README 裏的一次實測(154 個資料文件,query 爲「量化交易 選股 回測 策略」)中,規則層讀文件頭部命中 34 個,Jev 層高度相關 4 個、部分相關 3 個,其餘 147 個判無關,且沒有出現「Jev 高相關但規則層漏掉」的額外召回——價值在於把 34 收斂到 4。文件名幾乎不含查詢詞、但正文相關的文件,反而可能被 Jev 排到前面(README 舉例:Agent記憶/02_金融數據源與實證方法論紅線.md 被排到第 1,conf 0.964)。

DSH 生態裏是「一切皆插件」;插件目錄在 SkillHub,與 DeepSeek / 幻方無官方從屬關係。

核心功能

工具 jev_screen

Agent 通過 DSH 調用:

jev_screen(root = "/path/to/knowledge-base", query = "用量化方法做股票投資決策", top = 20)
  • root:待檢索目錄的絕對路徑。
  • query:自然語言檢索目標,會編入分檔標準;README 建議寫清主題,而不是羅列關鍵詞。
  • top:返回條數,默認 20,上限 200。

返回按相關度排序的候選(路徑、檔位、歸一化分、連續分、檔位來源、置信度等)以及統計(掃描數、失敗數、failedPaths、並列比例 tieRatio、tokens、耗時)。

代碼側保證的三件事

  1. 憑據類文件不外發:.env、credentials*、密鑰擴展名,以及 .git、node_modules 等目錄在遍歷階段即排除,不讀也不送到 Jev 端點。
  2. 逐文件一次請求:N 個文件對應 N 次請求,靠併發攤薄;不能把多文件塞進一份 state 做一次 Choice。
  3. 檔位取 argmax(probabilities):不能對連續 score 做 round 當檔位;score 作爲連續分用於同級並列時的次級排序。

同質門控與失敗名單

當同檔並列佔比 tieRatio 超過 tieWarnRatio(默認 0.3)時,輸出會提示候選集同質、Jev 降不了噪——這隻用於否決「別指望 Jev 篩掉噪音」,不能證明排序正確。請求失敗的文件會在正文中逐個列出並計入 stats.failedPaths。

安裝與啓用

插件以當前 DSH 宿主進程權限運行;安裝前請自行查看 GitHub 倉庫 源碼與 LICENSE。Node 要求 >=20。

方式一:本地路徑登記爲 bundle(README 推薦)

將倉庫放到本地後,在 profile 的 package.json 裏聲明 file 依賴並加入 bundles(路徑換成實際位置):

{
  "dependencies": {
    "dsh-jev-screen": "file:/absolute/path/to/dsh-jev-screen"
  },
  "dsh": {
    "profile": {
      "bundles": ["dsh-jev-screen"]
    }
  }
}

方式二:tarball

在插件目錄執行 npm pack 得到例如 dsh-jev-screen-0.3.0.tgz,再在 profile 裏用 file:/absolute/path/to/dsh-jev-screen-0.3.0.tgz 引用。

方式三:插件管理器

若宿主提供 plugin_manager(DSH 桌面版自帶):

plugin_manager install_bundle  /absolute/path/to/dsh-jev-screen

生效與驗證

cordis.patch.yml 會向組合樹插入 loader entry(id: jev-screen,name: dsh-jev-screen)。登記後執行 profile 的依賴解析(如 pnpm install 或插件管理器安裝命令),宿主重啓後 entry 生效。改插件代碼後應 node --check 並重啓宿主驗證;README 說明存在版本閘,勿用強制熱重載驗證。

驗證是否裝好,可讓模型調用:

jev_screen(root = "/path/to/some/dir", query = "這類文件是幹什麼的", top = 5)

憑據

工具按 apiKeyEnv(默認 TYPESAFE_API_KEY)從 DSH 憑據服務解析密鑰,優先級爲:進程環境 > $DSH_HOME/.credentials.yaml(可寫)> 宿主 cwd 的 .env > $DSH_HOME/.env。插件不含內置密鑰。示例:

export TYPESAFE_API_KEY=<your-key>

或通過憑據服務寫入(值來自你自己的安全位置):

await ctx.credentials.set('TYPESAFE_API_KEY', process.env.MY_JEV_KEY)

換 key 無需重啓宿主。

配置

默認值可在 profile 的 cordis.patch.yml 裏覆蓋,常用項包括:

鍵 默認 說明
apiKeyEnv TYPESAFE_API_KEY 憑據環境變量名
baseUrl https://api.codiv.ai OpenJev 兼容端點
model openjev-latest 也可用 openjev-0.1
maxFiles 400 送審文件數上限
concurrency 6 併發請求數
headBytes 4096 每文件讀取字節數
headChars 500 送審摘要字符數
tieWarnRatio 0.3 同質警告閾值

完整表格見倉庫 README。

本地 Laya(可選)

若使用 Jev 兼容的本地模型 convaiinnovations/laya-multilingual,須顯式設置 model: multilingual,且 levelOrder 必須爲 ascending(默認 descending 面向 Codiv Jev)。示例:

- id: jev-screen
  name: dsh-jev-screen
  config:
    baseUrl: http://127.0.0.1:11500
    model: multilingual
    levelOrder: ascending

README 註明:Laya 適合快速粗篩,不宜替代終審;文件摘要仍會發往 baseUrl,敏感目錄勿指向不可信端點。

適用場景與注意

適合:先用 grep 等拿到候選或在中等規模目錄裏做語義重排,再讓 Agent 只讀 top 短名單。

不適合:指望 Jev「找全」、交互式實時檢索(README 記錄單次調用 p50 約 2.0s,靠併發攤薄)、或把返回清單當最終結論而不讀全文。

其他限制(來自 README):摘要會出境到配置的 baseUrl;Codiv 公共服務穩定性取決於社區維護者環境;按文檔估算成本約爲輸入 $0.042 / 百萬 tokens。插件定位是降噪排序器,找全仍交給 grep。

結尾

dsh-jev-screen 把目錄遍歷與 Jev 逐文件打分接到 DSH 工具鏈裏:在已有召回之上做精度排序,並用排除規則、失敗名單和同質提示劃清輸出邊界。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜