dsh-ctx-visualizer:看清每次模型調用收到的完整上下文

前言

在 DeepSeek Harness(DSH)裏跑多輪智能體時,真正送進模型的內容往往藏在鏈路深處:系統提示、用戶輸入、工具 schema、歷史輪次、工具返回與壓縮摘要會隨每一步遞增。僅靠日誌或終端輸出,很難對齊「這一步相對上一步多了什麼、哪一段在膨脹」。下面介紹社區插件 dsh-ctx-visualizer,它在不改動 agent loop 的前提下,把每次調用的上下文以時間線與架構視圖呈現出來。

這是什麼

dsh-ctx-visualizer 是標記爲 dsh-plugin 的社區插件,維護者爲 cenbonew,在插件目錄中歸類爲模型推理;當前 GitHub 星標爲 1。它面向需要細讀智能體循環的開發者:在一次多輪交換裏(調用模型 → 解析 tool call → 執行工具 → 回傳結果 → 再次調用模型),逐步展示當時發給模型的內容、相對上一步新增的部分,以及上下文增長的方向。

插件不是 DeepSeek Harness 官方包;DeepSeek Harness 仍處於 Developer Preview,所依賴的事件與接口可能不兼容變更,使用前應對照 README 中的兼容版本。

核心功能

安裝並在對話頂部切換到 Context Lens 後,界面大致分爲三塊:

  1. 左側 · 回合(turns)
    每個回合一張卡片:用戶問題、調用次數、工具運行次數、上下文 token、耗時、常用工具等。列區域爲固定高度,可滾動查看更早回合。

  2. 頂部 · 橫向時間線
    展示當前選中回合內的每一步,例如 Step 1 · model call → runs bash / results fed back → Step 2 …。點擊節點可切換當前步驟。

  3. 右側 · 步驟詳情
    - Architecture(默認):根據實際內容動態生成——系統提示按自身標題分段;工具按來源分組(MCP server / built-in);對話歷史按「user → model call → tool result」鏈展示,本步新增消息高亮,壓縮摘要單獨標出;右側爲本步流程(request → model → 各 tool call 的結果/耗時/體積 → 進入下一次 request)。
    - Request context:默認只顯示本步新增消息;未變化的 system 與工具列表自動摺疊;提供上下文組成堆疊條(system / user input / tool results / plugin injections / assistant history / tool schemas)及 input/output tokens、cache 命中率。
    - Response、Tool runs、Raw JSON(完整記錄及可摺疊、可複製子塊)。

其他已覈實能力:

  • 持久化:實時採集寫入 ~/.dsh/ctx-visualizer/captures/,插件重載或 Harness 重啓後可恢復。
  • Backfill:啓用插件之前的步驟,通過重放 session log 的 context 變更(含 compaction)重建,並標記爲 rebuilt。
  • Redaction:存儲前對形如 Bearer …、sk-…、tos_…、ghp_…、xoxb-… 的密鑰做掩碼。
  • 語言:跟隨 Harness 區域設置(中/英),工具欄可手動切換並記住選擇。

實現上爲只讀觀測:監聽 llm/stream、agent/request、tools/execute、tools/result、agent/error 等事件,以及用 sessionQuery.readSession 做 backfill;前端爲 conversation.view 插槽插件。捕獲失敗被 try/catch 包裹,不影響 agent 本身。

安裝與啓用

插件無 npm 依賴,README 給出的獲取方式爲克隆倉庫:

git clone https://github.com/cenbonew/dsh-ctx-visualizer.git

隨後在 DeepSeek Harness 中安裝該本地 bundle,任選其一:

  • 對 agent 說明:用 Plugin Manager 安裝本地 bundle,路徑爲 /absolute/path/dsh-ctx-visualizer(需替換爲實際絕對路徑)。
  • Settings › Plugins(若當前構建支持從本地路徑安裝 bundle)。

package.json 中的 dsh.bundle.patch 使項目可作爲 bundle 安裝;dsh.client 聲明前端部分,會自動接入 Web GUI。

安裝後刷新頁面,在任意對話頂部切換到 Context Lens。插件啓用之後的模型調用會實時捕獲;更早步驟會自動從 session log backfill。

更新方式:git pull,在 Plugin Manager 中關閉再打開該 bundle(或重啓 Harness),並刷新頁面。

開發與自測(不依賴已安裝的 Harness,且不寫入 ~/.dsh):

npm test

需要 Node.js ≥ 20(見 package.json 的 engines)。

項目 版本
開發與驗證環境 DeepSeek Harness Desktop 0.2.0-rc.2,@deepseek-ai/dsh-* 0.2.2-rc.1(Web GUI)
運行測試 Node.js ≥ 20

配置

尚無獨立設置表單。可在 profile 的 cordis.patch.yml 裏爲 ctx-visualizer 行傳入配置,或修改 lib/index.js 頂部的 DEFAULTS:

Key Default 含義
capture true 總開關
persist true 寫入磁盤
persistDir ~/.dsh/ctx-visualizer/captures 捕獲目錄(目錄 0700,文件 0600)
backfill true 從 session log 重建更早步驟
backfillIntervalMs 30000 同一會話兩次 backfill 的最小間隔
maxStepsPerSession 80 每會話保留的 live 步驟數(rebuilt 不計入)
maxSessions 40 保留的會話數
maxCharsPerText / maxCharsPerToolResult 400000 / 120000 單塊文本截斷上限
redactSecrets true 存儲前脫敏

典型用法

  1. 按上文完成 clone 與本地 bundle 安裝,刷新後打開 Context Lens。
  2. 正常與 agent 對話;在左側選回合,在時間線上點選某一步。
  3. 在 Architecture 查看系統提示分段、工具分組與本步相對歷史的增量;在 Request context 看組成條與 token/cache 信息;需要原始數據時展開 Raw JSON 並複製。
  4. 工具欄可切換語言、清除捕獲(會刪除磁盤文件);勾選 Show aux calls 可在 live 捕獲時看到輔助調用(session 標題生成、context compaction 等無法 backfill 的步驟除外)。

Agent 側還可通過註冊的 Inspect Provider CtxVisualizer,用 cordis_inspect_query 查詢捕獲狀態(見 README「How it works」)。

適用場景與注意

適合誰:調試 DSH 智能體上下文膨脹、對比每步新增消息、覈對 tool 參數與回傳、復盤多輪 tool loop 的開發者與學習場景。

權限與隱私:插件以當前 DSH 進程權限運行;捕獲內容爲完整模型 上下文,可能含代碼、文件片段與工具返回的業務數據,默認僅存本機、不上傳。默認脫敏只識別常見密鑰前綴,不能覆蓋全部敏感信息;模型回覆與 reasoning 暫未脫敏。分享截圖或複製 JSON 前請自行檢查。安裝前建議瀏覽源碼與 MIT 許可證(package.json 版本 0.1.0)。

已知限制(摘自 README):輔助調用無法 backfill;附件在請求中會被投影爲文本,rebuilt 步驟可能仍顯示原始 attachment 塊;字符數爲估計值,精確 token 以 provider 上報的 usage 爲準。

DSH 生態強調「一切皆插件」;SkillHub 插件目錄 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-ctx-visualizer 把「每次模型調用究竟收到什麼」做成可瀏覽的回合時間線與動態架構圖,適合在 Harness 裏做上下文級調試。插件頁:https://www.skillhub.cn/plugins/cenbonew/dsh-ctx-visualizer;源碼與完整說明:https://github.com/cenbonew/dsh-ctx-visualizer。異常時先覈對 Harness 與 @deepseek-ai/dsh-* 版本,再在倉庫 Issues 反饋。

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

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

小夜