前言¶
在 DeepSeek Harness(DSH)裏跑智能體,每輪請求都會帶上一大塊「常駐上下文」:各插件註冊的系統提示詞段、技能目錄條目、工具 schema 等。其中系統提示詞和技能目錄往往很長,卻多數輪次用不上,卻照樣佔字符、佔成本。常見做法是整段刪掉或手工裁剪配置,容易誤傷必須每輪遵守的協議,也不方便按需查原文。
下面介紹社區插件 dsh-context-curator(目錄名 zhangyahao/dsh-context-curator,Harness 內 id 爲 context-curator)。它不改工具 schema,也不動別人的配置文件,只在 Harness 提供的擴展點上把超長段摺疊成一行索引,原文留在插件內存裏;模型或你在需要細節時用工具按名字取回。
這是什麼¶
Context Curator(上下文策展) 由維護者 zhangyahao 發佈,在 SkillHub 社區目錄中歸類爲記憶。一句話定位:把每輪模型請求裏冗長但偶爾才用得上的提示詞段(以及新會話裏的技能目錄描述)壓成一行索引,全文按需加載。
插件版本在倉庫 package.json 中爲 0.1.0,許可證 MIT。社區目錄頁:https://www.skillhub.cn/plugins/zhangyahao/dsh-context-curator;源碼與說明:https://github.com/zhangyahao/dsh-context-curator。SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文僅基於上述倉庫 README 與 package 信息。
Harness 常駐上下文裏它動哪一塊¶
README 將常駐上下文概括爲三部分:
.dsh裏各插件註冊的系統提示詞段(協作協議、記憶指南、敘述規則等)——通常是字符大頭;- 技能目錄(
<available_skills>,每條約 500 字符量級); - 工具 schema——本插件不處理,工具定義必須一直在,否則模型無法調用。
本插件針對第 1、2 項:超過閾值(或可配置策略)的段,在裝配結果裏把 text 換成類似下面的一行索引,原文存入插件內存:
⟨ctx⟩ agent-teams|4821 字符已摺疊|AgentTeams captain protocol …|需要時 context_load("agent-teams")
需要協議細節時,調用 context_load("agent-teams") 取回全文,再按原文執行。
核心機制(擴展點)¶
機制均通過 Harness 自有擴展點實現,README 未描述對第三方配置的改寫:
system-prompt/assemble(global waterfall):在裝配好的assembly.sections上,對超閾值段的text換成索引行,原文進插件內存;返回什麼,模型就看到什麼。agent/pre-step(global waterfall):對@deepseek-ai/dsh-tool-skill注入的、source.kind === 'skill-catalog'的消息,把描述壓成首句;source.entries原樣保留(技能側去重依賴 entries 摘要)。- 回調外層
try/catch:assembly 鏈路拋錯會導致整會話發不出請求,失敗時原樣放行。
技能目錄生效時機(README 已實測說明):新會話首輪由 dsh-tool-skill 發佈目錄後,本插件在最外層改寫,模型看到的是壓縮版(實測首句形如「本會話可用技能 N 個」);已打開的舊會話裏目錄已作爲歷史消息落盤、不再重發,插件改不動——若要讓老會話立刻變短,只能新開會話。context_ledger 的 stats 裏 catalogs 爲 0 時屬正常。
裝插件或升級後,新註冊的提示詞段會在下一次請求自動參與摺疊(enabled: true 時無需額外登記);摺疊按每輪裝配時的字符數實時計算。可選 foldNewSections: true:新出現的段即使不到 minChars 也直接摺疊(老段仍按閾值);風險是極短的狀態段也可能被折,行爲異常時可加入 protect。
工具與配置¶
| 工具 | 作用 |
|---|---|
context_ledger |
逐段列出字符數、是否已摺疊、建議摺疊項(只讀)。先看代價再開開關。 |
context_load |
按段名取回全文;摺疊行裏 ⟨ctx⟩ 後即爲段名。 |
context_config |
讀/改開關與閾值,立即生效並持久化到 DSH 數據目錄的 data/context-curator.json(即 $DSH_HOME/data/context-curator.json)。 |
裝好後默認 enabled: false:只記賬、不改文本。卸載可用 plugin_manager 的 remove_bundle,或用 set_plugin 關閉。
安裝與啓用¶
這是一個 bundle 插件,安裝方式與 README 中其他本地 bundle 一致(不要用未在文檔中出現的 dsh plugin add github:… 一類命令代替):
- 將倉庫克隆或拷貝到本地任意目錄(不要放進 profile 的
node_modules); - 在 Harness 裏通過
plugin_manager的install_bundle,target 填該目錄的絕對路徑; - 安裝後重啓 Harness(插件沒有熱重載)。
經過上面的步驟,建議按 README 的使用順序操作:
- 保持默認
enabled: false,先觀察不改文; - 讓模型或你自己執行
context_ledger,看清哪幾段最貴; - 把不能折的段寫入
protect(例如規定工具調用格式、不看就會違規的段); - 在
context_config裏設enabled: true,下一次請求生效; - 若某能力行爲退化,先
context_load該段覈對原文,再決定是否protect。
裝完或升級後想確認「多花了多少、有沒有被折掉」,再跑一次 context_ledger:新出現過的段會標 [新],並單獨列出本次運行新出現的段名。
已知邊界與適用注意¶
- 摺疊後模型看不到該段正文,僅見索引與首句;若段內是每步變化的動態信息,索引首句會更新,正文不會自動出現——需要時須
context_load。 - 原文在插件內存:Harness 重啓或插件重載後,摺疊前的原文需等下一次裝配重新記錄;此前
context_load可能取不到。摺疊本身仍按實時 assembly 生成。 - 不減少工具 schema 佔用;技能目錄壓縮只對新會話生效(見上)。
context_ledger的stats裏「最近一次裝配節省」只統計系統提示詞段;技能目錄節省記在catalogSavedNow。
插件以當前 DSH 進程的權限運行;安裝前請自行查看 GitHub 源碼與 MIT 許可證,確認符合你的環境與合規要求。
結尾¶
dsh-context-curator 適合已經在 Harness 裏堆了多段系統提示詞、技能目錄又偏長的開發者:先 context_ledger 看清成本,用 protect 保住硬規則,再打開摺疊,用 context_load 在需要時取回全文,在不大改生態配置的前提下壓低每輪常駐上下文體積。