前言¶
在 DeepSeek Harness(DSH)裏跑 agent 會話時,事件流往往比人眼跟讀快得多。Chat 告訴你說了什麼,Trajectory 告訴你發生了什麼,但日常更關心的其實是另一件事:能不能先去做別的事、什麼時候必須回來。
常見做法是再加一層摘要,但一份三十分鐘運行的摘要,往往只是又多了一件要讀的東西。dsh-session-observer 是 DSH 上的第三個會話視圖(客戶端插件),定位不是摘要器,而是「通告器」:會話健康時儘量安靜,只在需要人做決定時開口。默認完全基於規則、在本地從事件流計算,不調模型、不消耗 token。
這是什麼¶
- 名稱:dsh-session-observer(npm 包名與倉庫同名)
- 維護者:Anilams
- 分類:客戶端(web)
- 倉庫:github.com/Anilams/dsh-session-observer
- 社區目錄:skillhub.cn 插件頁
插件用 README 裏的一句話概括核心價值:A conversation view for DeepSeek Harness that answers exactly one question: Do I need to step in right now? 中文描述(package.json)爲:把事件流壓成一句判決——我現在需要插手嗎;零模型依賴,默認不花錢。
當前 package.json 中版本爲 0.5.1,要求 Node >=20。
核心功能¶
五種判決,而不是大屏儀表盤¶
界面頂部給出五種判決之一,而不是堆滿指標:
| 判決 | 含義(README 條件摘要) |
|---|---|
running |
正常推進,或有工具仍在執行 |
stuck |
多層規則一致認爲停滯 |
erroring |
某工具耗時超過其自身歷史 p99 |
waiting |
等待審批或回合交還後空閒超過 5s |
dangerous |
當前有破壞性操作正等待你的決定 |
健康時界面極簡:README 示例爲「運行中」加時長,以及表示活動密度的條帶;停滯時提示例如「6 分鐘沒有新進展」。UI 文案默認中文,字符串集中在 client.js 頂部,可自行改翻譯對象。
默認規則模式:本地計算,¥0¶
- 首屏數字默認全部由事件流在本地算出,無模型調用、無 token、無額外延遲。
- 產品原則之一是 Miss rather than mislead:寧可漏報也不要誤報;README 提到在一份 2,357 事件的實日誌回放中,0 次假「stuck」。
- 判定分多層:區分沉默類型(工具在飛、模型未出新步、等你審批、環境超時等);停滯閾值與會話自身節奏綁定(例如
stuck_after = max(p99_advance × 1.5, 180 s));在飛工具自帶「心跳」證據。 - 冷啓動:advance 間隔不足 20 次時只觀察、不報警。
可選 sidecar 模型(smart 模式)¶
配置裏 mode 默認爲 "free"(僅規則)。"smart" 時在語義邊界調用旁路模型做短註解(約 README 報價表:rules + sidecar 約 ¥3 / 8h)。首次打開視圖時會詢問是否願意爲 sidecar 付費(README 截斷處可見)。
佈局與交互(單屏兩欄)¶
- 左:決策脊(decision spine);右:統計面板;點擊某一 turn 的標籤,兩側聯動。
- 按 turn 分節,而非整牆事件;分叉畫成兩條路,選中填充、放棄刪除線。
- 長時間空閒摺疊顯示,避免 overnight 暫停佔滿圖表。
- 顏色跟隨宿主
--dsw-*語義 token,暗色模式無需第二套樣式表。
安裝與啓用¶
環境要求(README):DeepSeek Harness(在 0.1.7-rc.1 上測試過)、Node ≥ 20。
官方安裝命令如下(會安裝依賴並把包寫入 dsh.profile.bundles):
dsh plugin --profile web add github:Anilams/dsh-session-observer
安裝後重啓 dsh web,在 Chat、Trajectory 旁會出現第三個標籤頁。
若手動改 package.json 安裝,還必須執行:
dsh plugin --profile <name> install
否則宿主會靜默跳過整個 bundle;--dump-config 裏可能出現 skipping profile bundle "dsh-session-observer": cannot resolve ... 之類提示。
卸載:
dsh plugin --profile web remove dsh-session-observer
配置要點¶
默認配置隨 cordis.patch.yml 下發,鍵在 apply(ctx, config) 中生效。README 中的字段(僅羅列資料已出現的項):
| 鍵 | 默認值 | 含義 |
|---|---|---|
enabled |
true |
總開關 |
mode |
"free" |
free 僅規則;smart 另調 sidecar 模型 |
intervalMs |
25000 |
sidecar 調用最小間隔 |
minNewEvents |
3 |
窗口內新事件少於該值則跳過 sidecar |
maxTokens |
400 |
須顯式設置 |
reasoningEffort |
"off" |
須顯式設置;省略時 DeepSeek 可能回落到 high,成本上升 |
timeoutMs |
15000 |
單次 sidecar 端到端超時 |
provider / model |
空 | 空則跟隨會話記錄的 request/header |
maxInflight |
1 |
併發閘 |
urgentFailStreak |
2 |
連續失敗達到該次數後忽略間隔 |
典型用法與觀察方式¶
- 用上述命令爲
webprofile 安裝插件並重啓dsh web。 - 打開長時會話,切到 Observer 標籤;健康時應看到簡短「運行中」與時長、密度條帶。
- 需要審批或破壞性操作待決時,關注
waiting/dangerous;長時間無實質進展時關注stuck/erroring。 - 若需要 turn 級細節,在脊上點選 turn,右側數字與左側敘述同步。
- 僅當確實需要邊界註解時,再在配置中把
mode改爲smart,並理解 sidecar 會產生模型費用。
開發側:dev/harness/ 可在不啓動完整 DSH 的情況下渲染真實組件;靜態原型在 design/。
適用場景與注意¶
適合誰
- 長時間掛 DSH agent、不想一直盯着 Chat/Trajectory 滾動的人。
- 希望用單一判決判斷「要不要現在回來」、且默認不想爲觀察視圖付 token 費的團隊。
注意
- 插件以當前 DSH 進程的權限運行;安裝前請自行閱讀倉庫源碼與許可證(README 未在截斷段列出許可證全稱時,以倉庫爲準)。
- DSH 生態理念是「一切皆插件」;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係,本文不將其描述爲官方應用商店。
waiting被設計爲不向用戶誤報——等待往往是你自己造成的操作;dangerous刻意收窄到「破壞性操作正在等你拍板」,避免執行中一閃而過的誤報。
結尾¶
dsh-session-observer 補上了 DSH 會話 UI 裏「要不要插手」這一層:默認規則、零模型、安靜爲主、異常才說話。若你在用 Harness 跑長任務,值得一併裝上,與 Chat、Trajectory 組成三種互補視角。