前言¶
在 DeepSeek Harness(DSH)裏做模型能力評測或對照實驗時,默認請求往往並不「乾淨」:全局層仍會帶上工具 schema,用戶輸入之後還會追發一條 runtime-context 工作目錄消息。預設配置層無法單獨關掉這兩類注入。若只改系統提示詞、卻希望請求裏只有用戶文本(以及你明確指定的 system 內容),就需要在裝配瀑布和 context 註冊層另行處理。
下面介紹社區插件 dsh-chat-preset(維護者 Xxx-Bin),它在 DSH 中提供名爲 ChatOnly 的預設 agent:默認抑制工具與工作目錄注入,系統提示詞從本地文件熱讀,便於在受控條件下觀察模型本身的行爲。
這是什麼¶
dsh-chat-preset 是 DSH 的 ChatOnly 預設包:無工具(可開關)、無運行時工作目錄快照的純對話形態;系統提示詞存放在 ~/.dsh/chatonly-system-prompt.md,通過命令或直接編輯文件更新,下一條消息生效。
該包在 npm 上發佈爲 dsh-chat-preset(當前資料中版本 1.2.0,MIT 許可證,Node.js ≥ 18)。它聲明 dsh.bundle.patch,安裝後由 profile 的 layer stack 自動登記;分類上可歸入「模型推理」——側重控制請求形態以便評測,而非提供新的推理運行時。
需要事先了解:本包依賴 DSH 的三處內部語義(作用域同名 shadow 覆蓋、system-prompt/assemble 瀑布、refreshContext() 的合併順序)。DSH 升級若改變這些語義,插件可能靜默失效(不報錯,僅退回默認請求形態)。安裝前應閱讀倉庫說明中的「兼容性與脆弱性」一節,並自行覈對源碼與許可證。
默認請求裏多出來的東西¶
DSH 即便在精簡模式下,仍有兩類預設層無法消除的注入:
- 工具 schema:在全局層收集,預設只能追加、不能移除。
- 工作目錄消息:默認在用戶輸入之後追加
runtime-context,內容爲當前工作目錄;且該 contribution 以required: true註冊,includeRuntimeContext: false只能過濾可選項。
本包在桌面端 desktop profile 下觀測到的抑制前後對比如下(工具數量隨已安裝插件變化,資料中給出本機區間 8–14 個):
# 抑制前
- tools: 9 個 — acp_cache, acp_read_original_image, …
- messages: [ …, { source: { kind: "runtime-context" } } ]
# 抑制後
+ tools: 該鍵不存在
+ messages: 僅用戶輸入
核心功能¶
ChatOnly 預設¶
安裝並在預設選擇中啓用 ChatOnly 後,本包通過 agent 作用域內的同名空 shadow、system-prompt/assemble 瀑布,以及 buildRequest() 在工具列表爲空時省略 tools 鍵的行爲,分別處理工作目錄與工具注入;section 角色從文件讀取系統提示詞,並以 complete: true 獨佔 deployment:persona-prefix 段。
/chatprompt:系統提示詞¶
提示詞文件:~/.dsh/chatonly-system-prompt.md。命令是讀寫入口,也可直接編輯文件。
| 命令 | 行爲 |
|---|---|
/chatprompt <text> |
寫入文件,下一條消息生效 |
/chatprompt |
預覽、字符數與路徑 |
/chatprompt show |
輸出全文 |
/chatprompt clear |
清空;此後不發送系統提示詞 |
文件爲空時不發送任何系統消息。該命令全局註冊,僅對 ChatOnly 生效;在其它預設下修改不會生效且無提示。
/chattools:工具抑制開關¶
默認抑制工具,即請求不攜帶工具 schema。狀態文件:~/.dsh/chatonly-strip-tools.state(內容爲 strip 或 pass),每次裝配重新讀取;不存在時採用配置項 stripTools(出廠默認 true)。
| 命令 | 行爲 |
|---|---|
/chattools 或 /chattools status |
當前模式與狀態文件路徑 |
/chattools on |
抑制工具注入 |
/chattools off |
放行,assembly.tools 原樣傳遞 |
/chattools reset |
刪除狀態文件,回退出廠默認 |
/chattools off 只放行工具;該會話中 working-directory:current 仍被抑制,模型不會從 runtime 獲得工作目錄。若評測需要文件類工具,資料建議同時限制工具集(例如通過 dsh-tool-manager)並在系統提示詞中寫明工作目錄等環境約束。
工具開關是全局單一文件,對所有 ChatOnly 會話同時生效;工作目錄抑制按 agent 註冊且在同一會話內切換預設後仍可能保持爲空,直至新建會話。兩者機制不同,使用評測方案時需分開考慮。
其它限制(摘自文檔)¶
- 未掛載壓縮插件,不支持自動壓縮與
/compact;上下文超長時請求可能直接失敗。 - 與
dsh-prompt-setting的「我的 Prompt」互斥(同作用域complete: true)。 - 預設內不應再掛載同名 section(如
dsh-persona)。 - 插件以當前 DSH 進程權限運行;安裝前請檢查源碼與 MIT 許可證,並知悉其對非公開 DSH 行爲的依賴。
安裝與啓用¶
依賴:dsh(桌面端或 CLI)、pnpm 在 PATH(dsh plugin add 內部轉發 pnpm add)、Node.js ≥ 18。安裝後須重啓 dsh(bundles 層僅在啓動時合成)。
桌面端(desktop):
# npm
dsh plugin --profile desktop add dsh-chat-preset
# GitHub
dsh plugin --profile desktop add github:Xxx-Bin/dsh-chat-preset
dsh web(web):
dsh plugin --profile web add -w https://github.com/Xxx-Bin/dsh-chat-preset
--profile 對應 ~/.dsh/profiles/ 下的目錄名。安裝完成後重啓,在預設中選擇 ChatOnly。
配置要點(cordis.patch.yml):presetId 須與預設 config.id(chatonly)一致;兩處 file 必須都指向 ~/.dsh/chatonly-system-prompt.md;toolsStateFile 不得與提示詞文件同路徑。
典型用法¶
- 按上文命令安裝並重啓 DSH,啓用 ChatOnly 預設。
- 寫入評測用 system prompt,例如:
# 在 DSH 對話中使用(亦可直接編輯 ~/.dsh/chatonly-system-prompt.md)
/chatprompt 你是嚴謹的評測助手。只根據用戶問題回答,不要假設當前工作目錄。
- 確認默認不攜帶工具;若需對照「帶工具但無目錄注入」的實驗,先評估是否接受全局
/chattools off,並自行在 prompt 中補環境信息:
/chattools status
/chattools off # 放行工具;工作目錄仍被 ChatOnly 抑制
- 卸載插件後,命令與運行期註冊會 dispose;用戶文件(提示詞、開關狀態、調試日誌)需按 README 手動清理,重裝時舊
chatonly-strip-tools.state會沿用上次開關,可用/chattools reset恢復出廠默認。
適用場景與注意¶
適合:需要在 DSH 裏做相對可控的純對話評測、對比不同 system prompt、或觀察「無工具簽名、無自動工作目錄行」時的模型輸出。
不適合或需額外準備:依賴默認工作目錄與全量全局工具的日常工作流;需要 /compact 的長對話;希望與「我的 Prompt」並存的人設配置。
社區插件目錄 SkillHub 上的 dsh-chat-preset 頁 與 GitHub 倉庫相互獨立引用,並非 DeepSeek / 幻方官方應用商店;安裝與啓用仍以上游 README 爲準。
結尾¶
dsh-chat-preset 把 DSH 請求收成「用戶輸入 + 可選文件 system」,並給出 /chatprompt、/chattools 兩個運維入口,適合把變量收窄到提示詞與模型本身。使用前請理解其對 DSH 內部行爲的依賴及靜默失效風險,並在安裝前審閱源碼。
- 目錄頁:https://www.skillhub.cn/plugins/Xxx-Bin/dsh-chat-preset
- 倉庫:https://github.com/Xxx-Bin/dsh-chat-preset