dsh 系統提示詞(system prompt)詳解
DeepSeek Harness 在每輪模型呼叫前往系統提示詞裡組裝了什麼——固定身分、人格槽位、工具指引,以及改寫它們的外掛。
最近更新: 2026-10-04
每一輪對話開始前,模型都會先讀到一段系統提示詞。在 DeepSeek Harness(dsh)裡,這段文字不是手工維護的檔案,而是由官方 system-prompt 套件(packages/core/system-prompt)在每次請求時即時組裝:固定的身分行、你的部署人格(persona)、第一方工具指引,以及所有外掛註冊的 prompt 段落,按順序合併成一條系統訊息。
本頁講清楚這次組裝裡有什麼、誰能改它,以及三類熱門提示詞外掛——persona 編輯器、prompt armor、思考語言注入——分別怎麼接入。提示詞送出去之後發生的事,請讀 agent loop 指南;本頁只談這段文字本身。
TL;DR
- ▸系統提示詞是逐輪組裝的,不是存好的檔案:system-prompt 套件把註冊的段落按 order 排序,用 renderPrompt 渲染成最終文字。
- ▸固定部分只有一行——「You are an AI agent powered by DeepSeek Harness.」,由 includeHarnessIdentity 設定控制(預設開啟)。
- ▸不改程式也能加內容:personaPrefix 與 personaSuffix 兩個設定欄位,或者一個設定頁裡的 persona 外掛。
- ▸外掛透過 ctx.systemPrompt.section(...) 注入;標記為 complete 的段落會整段接管該作用域的系統提示詞。
dsh 系統提示詞從哪來
官方子系統文件把契約寫得非常精確:system-prompt 套件擁有「prompt 貢獻方與一次組裝呼叫之間交換的資料」。貢獻方註冊 PromptSection——每段都有唯一的 name、一個數字 order,以及靜態或按次解析的 text。段落按 order 升序拼接(同序按名字排),合併結果就是模型收到的系統訊息。
三個術語撐起整個設計:
PromptSection
一段被貢獻的內容:name、order、text(靜態或按組裝解析的函式),可選 undefined} 插值。重名註冊直接拋錯。
Assembly(組裝)
一次 assemble() 呼叫:合併全域層與請求作用域層,解析工具 schema 與變數,再跑 system-prompt/assemble 瀑布。
Surface node 0
渲染後的文字作為「衍生歷史的系統訊息」提交——首輪作為 surface 節點 0 附加,文字變化時就地替換。它不是請求欄位。
模型實際收到什麼:按順序
第一方預設全開時,渲染結果遵循固定順序——從 −1000 的身分行到 10200 的人格後綴,下面每個槽位都真實存在,與套件 README 記載的渲染順序一致:
- 1
固定身分行
order −1000 · includeHarnessIdentity「You are an AI agent powered by DeepSeek Harness.」——唯一的硬編碼句子,排在最前。includeHarnessIdentity: false 可去掉它,官方只建議完全接管提示詞的部署這麼做。
- 2
部署人格前綴
order 0 · deployment:persona-prefix你的 personaPrefix 設定,或 persona 外掛的貢獻。README 註明這個槽位承載模型名介紹。預設為空。
- 3
第一方通用指引
first-party guidance生成的工具 SDK 與結構化輸出指引:告訴模型怎麼呼叫已掛載的能力。註冊的工具 schema 也在同一次組裝中隨行。
- 4
Harness source 行
order 10000 · harness source帶環境資訊的後綴從 order 10000 的 harness source 條目開始。
- 5
Web surface
order 10100 · Web surface部署暴露的本機 Web URL,在 order 10100 處隨後渲染。
- 6
部署人格後綴
order 10200 · deployment:persona-suffix你的 personaSuffix 設定——order 10200,整份提示詞的最後一句話。
- ↻
動態執行時上下文
獨立通道PromptContext → user-role snapshot有序的 PromptContext 不進入系統文字:它們作為帶來源的 user-role 快照進入模型歷史——另一條對快取更友善的通道。includeRuntimeContext: false 或作用域級 suppressor 可整體移除。
部署註冊的其它內容落在它宣告的 order 上——外部貢獻可用任意有限整數。還有一個逃生艙:標記 complete: true 的段落會成為唯一的提示詞段落——組裝仍然解析工具與變數,然後以這段原文作為全部系統提示詞;若有兩個生效的 complete 段落,組裝會大聲失敗,而不是送出殘缺提示詞。
誰能改它:三類外掛
幾乎沒人手改 YAML——社群透過外掛改提示詞。本站目錄在此叢收錄了 40+ 支外掛,按實際用途分三類(星標 2026-10-04 核驗):
Persona 編輯器
xilin3/dsh-prompt-persona(★14)在設定頁直接編輯部署人格並即時預覽——不寫程式填兩個人格槽位的方式。同樣的槽位用原生 personaPrefix / personaSuffix 設定也能改。
Prompt armor(提示詞護甲)
minglink/dsh-infinite-gen-4(★2,294,本叢星標最高)是最知名的 armor 類條目:它加固已部署的提示詞、抵抗探測與套取,而不是往裡加文字——做防護,不做注入。
注入與提示詞上下文
len7183/dsh-think-zh(★32)與 max-null/dsh-chinese-thinking(★10)注入思考語言指令(見下節);asktheway/dsh-auto-memory(★81)把長期記憶作為動態執行時上下文貢獻,而非提示詞文字。
中文思考這條差異軸
這個叢最早的需求來自中文使用者:即便對話用中文,模型的思考鏈預設仍是英文。官方討論 #8798 收集了這條訴求,兩個社群外掛從提示詞層給出答案——不用 fork,也不用換模型。
len7183/dsh-think-zh(★32)在設定裡加了思考語言檔位(簡體中文/預設英文),回覆語言跟隨提問語言,程式與識別子保持原文;max-null/dsh-chinese-thinking(★10)是更輕量的替代。兩者的原理都是往組裝好的提示詞裡注入一條指令——這正是人格槽位與外掛段落存在的意義。
成本帳:提示詞如何到達模型
README 對這筆帳算得很坦率:身分行開啟後是每請求的固定成本,人格前後綴與外掛文字隨每次請求重複,開銷隨渲染長度伸縮。對沖機制是快取,不是刪減:
- ▸渲染結果不變時,提示詞保持前綴穩定:歷史中的系統節點原地不動,KV 快取逐輪複用。
- ▸任何變化——改人格、換工具、調順序——都會從第一個變化的 token 起使快取失效。
- ▸在同一請求系列的後續呼叫中宣告 systemPromptUpdate: 'in-history' 時,變化後的提示詞附加在快取歷史之後,前綴到歷史為止仍然可複用。
- ▸上下文壓縮壓不掉這部分——壓縮作用於保留的歷史,不作用於逐輪組裝的提示詞。省的槓桿是少註冊,而不是更用力壓縮。
常見問題
關於 dsh 系統提示詞最常被問到的幾件事。
dsh 系統提示詞能改嗎?
能,三種方式,威力遞增。設定:在 system-prompt 外掛項上設 personaPrefix 與 personaSuffix(includeHarnessIdentity: false 可去掉身分行)。設定頁:dsh-prompt-persona 這類 persona 編輯器視覺化改同樣的槽位,不碰 YAML。程式:用 ctx.systemPrompt.section(undefined) 註冊段落——標記 complete: true 的段落會整段接管所在作用域,但兩個生效的 complete 段落會讓組裝直接失敗。
系統提示詞變長會拖慢會話嗎?
它多花 token,而快取能消化掉大部分。身分行加人格加外掛文字隨每個請求重複,但只要渲染結果不變,歷史中的系統節點就原地不動,服務商側 KV 快取在輪與輪之間持續複用。只有從第一個變化的 token 起才重新全額計價——所以每輪都在變的 persona 文字才是貴的模式,穩定的文字在首次請求之後幾乎免費。
外掛是怎麼注入進提示詞的?
透過註冊表。外掛呼叫 ctx.systemPrompt.section(undefined),段落就會在每次組裝時按 order 升序拼進結果。透過 agent 自己的 ctx 註冊的是作用域內條目:只對該 agent 遮蔽同名全域項。合併之後,system-prompt/assemble 瀑布還可以改寫結果——除非存在 complete 段落,監聽者不能增刪它。
不同 profile 看到的系統提示詞不一樣嗎?
可以不一樣。組裝把全域層與請求作用域層合併,作用域內的段落、變數與工具提供方按 agent 遮蔽同名全域項——同一個安裝裡,工作 profile 和個人 profile 註冊了不同 persona 段落,就會拿到不同的提示詞。固定身分行與第一方指引保持一致,除非某個 profile 明確關掉它們或自帶 complete 段落。
它是模型內建的系統提示詞嗎?
不是——這是兩層東西。模型廠商的行為調校在權重裡,dsh 看不見也改不了。dsh 系統提示詞是 harness 在執行時組裝、以系統訊息送出的文字;其中固定的只有一行身分句。正因為這層分離,同一個模型在 dsh 和別的 harness 下表現可以不同,提示詞層外掛也能在你掛載的任何模型上生效。
在哪裡能看到實際組裝出的提示詞?
下面兩個官方來源就是權威契約:子系統文件列出精確型別,套件 README 記載渲染順序與全部設定欄位。執行時,會話的 trajectory 記錄了每輪模型實際收到什麼——配合 loop 記錄的系統節點替換日誌,能精確看到提示詞在會話中哪一刻發生了變化。
相關指南
系統提示詞在整張原理圖裡的位置。
dsh agent loop 詳解
一次 dsh 對話到底怎麼跑:turn 生命週期、外掛攔截點,以及防止工作階段失控的 loop guard。
閱讀教學DeepSeek Harness 子代理與多智慧體實戰
一次啟動五個子代理並行作業:從對話標頭逐一監控、完成報告逐份檢視、為每個子代理指定模型,附逐步截圖
閱讀教學四種模式:Standard、PTC、Minimal、Creator
每種 agent preset 包含什麼、什麼情境用哪一種,以及怎麼在 Creator 模式裡做自己的 preset。
閱讀教學最值得安裝的 dsh 技能推薦
哪些 skill 值得裝、裝完能做什麼,逐一實測示範,附啟用步驟
閱讀教學來源與證據
本頁每個機制都能追溯到下列來源;commit 與星標核驗於 2026-10-04。
