前言¶
DeepSeek Harness (dsh) 在初始化新會話時,通常會在第一回合就將完整的工具集(包括文件編輯、bash 執行、子代理等)發送給模型。這種全量 schema 的方式容易導致模型在探索階段過早地執行操作,而非專注於分析。dsh-minimal-anchor 是一個針對這一問題的插件,它通過掛鉤 DSH 的提示詞組裝流程,僅在第一回合對工具列表進行裁剪,並注入結構化前言,讓模型在探索階段保持專注。
插件定位¶
dsh-minimal-anchor 是一個 DeepSeek Harness 插件,由開發者 rand0wn 維護。其核心作用是保護第一回合免受工具模式過載的影響。它採用 MIT 許可證開源。
核心功能¶
- 第一回合工具裁剪:僅在會話的第一回合,將工具列表限制在白名單內。
- 結構化前言注入:在第一回合的提示詞中添加簡短的探索導向前言。
- 後續回合無感:從第二回合開始,插件完全讓路,恢復完整的工具集和正常的提示詞組裝流程。
安裝與啓用¶
安裝插件需要將包添加到指定 profile 的依賴中,並顯式聲明在 bundles 列表中才能生效。
- 安裝插件:
dsh plugin --profile <name> add dsh-minimal-anchor
- 聲明激活:
插件安裝爲依賴後,必須將其添加到 profile 的package.json的dsh.profile.bundles字段中:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-headless",
"dsh-minimal-anchor"
]
}
}
}
- 驗證安裝:
使用dsh --profile <name> --dump-config檢查輸出中是否包含minimal-anchor條目。
典型用法¶
這是一個被動插件,無需額外的調用命令。
- 正常啓動:直接使用
dsh web、dsh --profile headless "..."等常規命令啓動。 - 自動生效:每個新會話的第一回合會自動帶上裁剪後的工具列表和前言;後續回合保持原樣。
配置¶
配置文件位於 profiles/<name>/cordis.patch.yml。以下是默認配置示例:
- insert:
- id: minimal-anchor
name: 'dsh-minimal-anchor'
config:
whitelistedTools: [read, glob, grep]
enforcePreamble: true
customPreamble: 'Your own turn-1 framing text.'
| 字段 | 默認值 | 說明 |
|---|---|---|
whitelistedTools |
[read, glob, grep] |
第一回合保留的工具名稱。必須與 harness 中註冊的名稱完全一致。 |
enforcePreamble |
true |
是否強制注入結構化前言。 |
customPreamble |
(內置探索導向文本) | 自定義前言內容。僅在 enforcePreamble 爲 true 時生效。 |
工作原理¶
該插件通過掛鉤 @deepseek-ai/dsh-system-prompt 包中的 system-prompt/assemble 流水線來實現。
* 首次組裝:使用 WeakSet 記錄作用域,第一次組裝時,將工具列表過濾爲白名單,並在前面插入前言,然後調用 next() 繼續執行後續監聽器。
* 後續組裝:同一個作用域的後續組裝直接調用 next(),不做任何修改,確保工具集恢復原狀。
注意事項與故障排查¶
- 工具名稱匹配:如果第一回合工具列表爲空,通常是因爲
whitelistedTools中的名稱與實際註冊的工具名稱不符。請使用dsh --profile <name> --dump-config查看實際工具名。 - Bundle 必須聲明:僅通過
dsh plugin add安裝依賴是不夠的,必須將其加入dsh.profile.bundles才能激活dsh.bundle補丁。 - Config 類型限制:導出的
Config必須是schemastery的 schema(即z.object({...})),不能是普通對象。否則在 fork 場景下會報錯Cannot read properties of undefined (reading 'validate')。 - 生態說明:DSH 採用插件化架構,本插件爲社區開發,與 DeepSeek 官方無直接從屬關係。
總結¶
dsh-minimal-anchor 適合希望在會話初期引導模型進行探索而非立即執行操作的 DSH 使用者。它通過極輕量的介入,解決了第一回合模式過載的問題。
- 目錄頁:dsh-minimal-anchor
- GitHub 倉庫:rand0wn/dsh-minimal-anchor