dsh-context-explorer:在 Web UI 裏看清 Session 發給模型的上下文

前言

在 DeepSeek Harness(DSH)裏跑 Session 時,模型實際收到的是一整段渲染後的 prompt:系統提示、工具 schema、歷史消息等,都佔同一塊上下文窗口。日誌裏往往只有對話摘要,看不到各塊各佔多少 token、順序如何、截斷髮生在哪一段。調試上下文膨脹、工具定義過長或 compaction 效果時,缺少直觀視圖會多猜很多步。

dsh-context-explorer 是社區維護的客戶端插件,在 Harness Web UI 右側邊欄增加「上下文 / Context」標籤頁,用 token 方格網格和分區列表展示 Session 提交給模型的內容構成。下面介紹它的定位、面板能力、安裝方式,以及使用時應接受的限制。

這是什麼

dsh-context-explorer(npm 包名 dsh-context-explorer,當前版本 0.1.1)由 LionNatsu 維護,MIT 許可,與 DeepSeek 無隸屬或背書關係。插件分 Host 與瀏覽器兩半:index.js 把 Session 摺疊成視圖,client.js 渲染標籤頁、網格與列表。

一句話定位:在 DSH Web UI 中可視化「最後一次請求視角下」的上下文窗口——系統 prompt、工具塊、每條消息各佔多少、整窗如何被填滿。

核心功能

安裝並加載 profile 後,右側面板會出現 上下文 / Context Explorer 標籤(多語言名見 locale/*.json)。

標題行

顯示 已用 {used} / {total}:used 爲提供商對上一次請求報告的 prompt 大小;在尚未有報告前,用面板自身統計的總數。total 爲上下文窗口長度;Host 尚未提供窗口大小時顯示 —。懸停可看各數字含義。

組成芯片(Composition chips)

按內容類型列出當前視圖中存在的種類,按 token 從多到少排序。每項含 8×8 色塊、類型名、token 數及佔面板總量的比例;同時作爲網格圖例。點擊某芯片可只列出該類型分區,再點一次取消篩選。

Token 方格網格

整張上下文窗口(含未使用部分)被切成等份,每格代表窗口中的一段。已佔用格按該段內佔比最大的內容類型着色;若第二類型在同一格內至少佔 35%,則對角混色。超出實際上下文長度的區域以「空閒」深色平鋪。每格 7 設備像素、間隔 1 像素,不同縮放下一格物理大小一致。懸停顯示類型名;點擊打開該格主要歸屬的分區詳情。

分區列表

每一行對應模型看到順序中的一個 region:色塊、一行摘要、必要時 已截斷 / clipped 標記,以及 token 數與佔比。提供商直接統計的數字原樣顯示;插件用 Harness 同款啓發式估算的數字帶 ≈。摘要用於在未展開前說明「這段是什麼」——例如僅含工具調用的輪次會按調用名概括,JSON 結果按 leading 字段,其餘取首行 prose。點擊行展開的是模型實際收到的那一段 fragment(含 role 標記等),不是摘要;截斷說明在展開正文中由 detail.clippedNote 承擔。可在「模型順序」與「按大小排序」之間切換。

無可用視圖或視圖中無 region 時,面板會明確提示,而不是空白殼。摺疊失敗時在標題上方打印錯誤;渲染錯誤會替換整個標籤內容。

數字從哪來

標題行的已用量優先用提供商對最後一次請求的計數。各 region 在提供商有分項計數時用該數,否則用與 DSH 上下文計量相同的固定啓發式(約每 4 個 UTF-16 碼元 1 token,另加 content block 與 message 的固定開銷),並標 ≈。估算反映構成而非賬單精度,隨文本語言會有漂移。

安裝與啓用

在目標 profile 下執行(dsh plugin 會把參數轉給該 profile 的 pnpm,--profile 指定 profile 名):

dsh plugin --profile <name> add dsh-context-explorer

也可在 Web UI 的 Plugins 頁:Add plugin,輸入包名、GitHub 地址或本地目錄路徑完成同樣安裝。

包聲明 dsh.bundle.patch → ./cordis.patch.yml,profile 下次加載時會應用 Host 側一行配置。運行時代碼爲倉庫內 JavaScript,無構建步驟、無 install script,因此通過 github: 安裝時不需要 build 權限。要求 Node ^22.19.0 或 >=24.0.0。README 寫明在 @deepseek-ai/dsh 0.2.0-rc.2 上驗證;插件未聲明版本門控,若上游擴展點變更,可能表現爲面板缺失或爲空而非安裝拒絕。

Host 半側變更通常需重啓 DSH 進程;瀏覽器半側由客戶端模塊系統加載,會自行熱更新。修改 Host 側 index.js、serve.js、estimate.js 後,默認 HMR 不監視源碼目錄時,需重啓、在 profile patch 中爲 hmr 配置 root,或換路徑重裝才能生效。

典型用法

1、按上文命令把插件裝進常用 profile,啓動或重載 Harness,打開 Web UI。

2、選中要觀察的 Session,在右側邊欄打開 上下文 / Context 標籤。

3、發起或等待一次模型調用,使面板能獲得提供商報告的 prompt 大小;查看標題行 已用 / 總量 與網格中各色塊佔比。

4、用組成芯片篩選某一類內容(如工具 envelope、系統 prompt),在列表中點開行,覈對展開 fragment 是否與預期一致;注意帶 已截斷 的行只保留 fragment 開頭(單條 message fragment 上限 4000 UTF-16 碼元)。

5、在列表排序方式間切換,快速找出佔用最大的 region。

以上流程均來自 README 對面板交互的描述,無需額外配置文件。

適用場景與注意

適合誰: 在 DSH 裏開發或調試 Agent、需要覈對系統 prompt 與工具 schema 是否擠佔過多上下文、或要理解 compaction / 多輪消息後窗口如何被填滿的開發者。

權限與安全: 插件以當前 DSH 進程權限運行;安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,並知悉 THIRD_PARTY_NOTICES.md 中自 DeepSeek 項目複用的 estimate.js、serve.js。

已知限制(使用前應接受):

  • 展示的正文是對官方 serving 實現的重建(serve.js 轉寫),不是從 API 抓取的原始請求體;Session 日誌不存 request body。
  • 面板按 region 分片展示,不是一條連續 prompt;系統 prompt(最早一次 hoist)、## Tools 塊等各成一片;長 message 會被截斷並標記 clipped。
  • 無自動化瀏覽器視覺測試,佈局依賴人工查看。

社區插件目錄見 SkillHub 條目;該站點爲社區生態索引,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-context-explorer 把「Session 發給模型的上下文」從黑盒變成可讀的網格與分區列表,便於在 Web UI 內做 token 構成分析與截斷排查。需要安裝命令、限制說明與架構細節時,以倉庫 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/LionNatsu/dsh-context-explorer
  • GitHub:https://github.com/LionNatsu/dsh-context-explorer
羽毛球分组比赛记分
小程序二维码

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

小夜