dsh-session-observer:用一句判決回答「我現在要不要插手」

前言

在 DeepSeek Harness(DSH)裏跑 agent 會話時,事件流往往比人眼跟讀快得多。Chat 告訴你說了什麼,Trajectory 告訴你發生了什麼,但日常更關心的其實是另一件事:能不能先去做別的事、什麼時候必須回來。

常見做法是再加一層摘要,但一份三十分鐘運行的摘要,往往只是又多了一件要讀的東西。dsh-session-observer 是 DSH 上的第三個會話視圖(客戶端插件),定位不是摘要器,而是「通告器」:會話健康時儘量安靜,只在需要人做決定時開口。默認完全基於規則、在本地從事件流計算,不調模型、不消耗 token。

這是什麼

插件用 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 連續失敗達到該次數後忽略間隔

典型用法與觀察方式

  1. 用上述命令爲 web profile 安裝插件並重啓 dsh web。
  2. 打開長時會話,切到 Observer 標籤;健康時應看到簡短「運行中」與時長、密度條帶。
  3. 需要審批或破壞性操作待決時,關注 waiting / dangerous;長時間無實質進展時關注 stuck / erroring。
  4. 若需要 turn 級細節,在脊上點選 turn,右側數字與左側敘述同步。
  5. 僅當確實需要邊界註解時,再在配置中把 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 組成三種互補視角。

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

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

小夜