dsh-title-index:DeepSeek Harness Web 端會話標題索引加速插件

前言

DeepSeek Harness (DSH) 的設計理念是“一切皆插件”。在 Web 端使用 @ 觸發會話候選時,DSH 官方引擎會對每個持久化會話完整解壓並逐行解析 session.jsonl.zstd 來獲取最新標題。隨着會話數量增加,每次按鍵都要掃描大量日誌,且緩存機制(LRU 僅緩存 5 個)難以應對高頻查詢。dsh-title-index 旨在通過磁盤索引解決這一性能瓶頸。

是什麼

這是一個爲 dsh Web 端會話標題讀取加磁盤索引的插件,由維護者 gtaifu 開發,遵循 MIT 許可證。

核心功能

替換官方行
通過 cordis.patch.yml 禁用官方 session-query-sqlite 行並插入新行,注入名爲 dsh-title-index 的服務。該插件繼承官方 SqliteSessionQueryEngine 類,僅覆蓋 readTitleSnapshots 方法,其餘行爲(如 listSessions、搜索等)保持官方實現。

索引機制
插件在磁盤上維護一個索引文件(默認 <DSH_HOME>/title-index.json),以 (sessionId, mtimeMs, size) 作爲失效鍵。當命中索引時,直接返回緩存的標題快照;未命中時(新會話或日誌有追加),走官方摺疊邏輯並將結果寫回索引。

自動失效重摺疊
當標題生成插件重寫日誌導致文件 mtime 變化時,索引會自動失效,下次查詢時重新摺疊。

降級策略
對於活動會話、官方讀取失敗或索引損壞的情況,插件會原樣回退到官方路徑,不會劣化用戶體驗。

實測性能
在約 60MB zstd 日誌的 114 個會話環境中,Top-50 @ 菜單標題讀取時間從官方的 ~9.7s 降低至 ~0.3s。

安裝與啓用

  1. 安裝插件
    在 Web profile 下運行:
    dsh plugin --profile web install
  1. 配置依賴與 bundle
    在 profile 的 package.json 中添加依賴,並在 dsh.profile.bundles 中配置。必須將 dsh-title-index 排在 @deepseek-ai/dsh-web-app 之後,以保證補丁在官方行定義之後生效。
    {
      "dsh": {
        "profile": {
          "bundles": [
            "@deepseek-ai/dsh-base",
            "@deepseek-ai/dsh-web-app",
            "dsh-title-index"
          ]
        }
      },
      "dependencies": {
        "dsh-title-index": "github:gtaifu/dsh-title-index"
      }
    }
  1. 預熱索引
    首次冷啓動會全量摺疊一次以填充索引。可以使用預熱命令提前完成:
    node <profile>/node_modules/dsh-title-index/lib/bench.mjs

注意事項

  • 已棄用:該插件目前已標記爲 deprecated。DeepSeek Harness 0.1.2rc 已內置實現了更快的 @ 函數。
  • 冷啓動耗時:冷啓動一次(索引缺失或格式升級後)約需要 8–9 秒。
  • 依賴內部行爲:插件依賴官方引擎的內部實現細節。

結語

dsh-title-index 通過引入磁盤索引機制,顯著降低了 Web 端會話標題查詢的開銷。目前該功能已集成至 DSH 官方版本,社區目錄與 GitHub 倉庫仍保留此插件作爲參考實現。

GitHub | 社區目錄

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

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

小夜