dsh-context-curator:把常駐提示詞折成索引,按需再取回全文

前言

在 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 將常駐上下文概括爲三部分:

  1. .dsh 裏各插件註冊的系統提示詞段(協作協議、記憶指南、敘述規則等)——通常是字符大頭;
  2. 技能目錄(<available_skills>,每條約 500 字符量級);
  3. 工具 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:… 一類命令代替):

  1. 將倉庫克隆或拷貝到本地任意目錄(不要放進 profile 的 node_modules);
  2. 在 Harness 裏通過 plugin_manager 的 install_bundle,target 填該目錄的絕對路徑;
  3. 安裝後重啓 Harness(插件沒有熱重載)。

經過上面的步驟,建議按 README 的使用順序操作:

  1. 保持默認 enabled: false,先觀察不改文;
  2. 讓模型或你自己執行 context_ledger,看清哪幾段最貴;
  3. 把不能折的段寫入 protect(例如規定工具調用格式、不看就會違規的段);
  4. 在 context_config 裏設 enabled: true,下一次請求生效;
  5. 若某能力行爲退化,先 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 在需要時取回全文,在不大改生態配置的前提下壓低每輪常駐上下文體積。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜