前言¶
在 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、耗時)。
代碼側保證的三件事¶
- 憑據類文件不外發:
.env、credentials*、密鑰擴展名,以及.git、node_modules等目錄在遍歷階段即排除,不讀也不送到 Jev 端點。 - 逐文件一次請求:N 個文件對應 N 次請求,靠併發攤薄;不能把多文件塞進一份 state 做一次 Choice。
- 檔位取
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 倉庫。