前言¶
在 DSH / 智能體開發中,模型網關、代理或審計鏈路有時會按 HTTP header 識別會話。dsh-session-header 是一個 DeepSeek Harness 插件,用來在 DSH 發出的 LLM provider 請求上注入 x-session-id,讓每次調用攜帶對應 harness session id。下面介紹它的定位、核心行爲、安裝方式和驗證方法。
這是什麼¶
dsh-session-header 由 homily707 維護,許可證爲 MIT。
它的作用是:給 DeepSeek Harness 發出的每一個 LLM provider 請求注入 x-session-id HTTP header,值來自當次調用的 harness session id。插件面向 provider 層,不改變 adapter 代碼,也不覆蓋已有 header。
核心功能¶
- 在 LLM provider 請求上注入
x-session-id。默認值是當次調用GenerateOptions.sessionId,並去掉session-branding prefix。 - 使用
llm/streamwaterfall 和globalThis.fetchpatch 覆蓋基於fetch的 adapter,例如llm-deepseek、llm-pi-ai。 - 通過
AsyncLocalStorage傳播會話上下文,隻影響 LLM 調用 stream 內的 fetch;併發會話按調用解析 header 值。 - 不覆蓋已存在的同名 header,判斷按大小寫不敏感處理。
- 支持爲每次調用配置固定值;如果既沒有可用的 session id,也沒有配置固定值,則該調用不注入 header。
- 插件卸載時恢復原來的
fetch。 - 不觸碰
attributionHeaders()。
安裝與啓用¶
插件要求 dsh CLI 和 Node ≥ 22。
作爲 bundle 安裝:
dsh plugin --profile <name> add github:homily707/dsh-session-header
該包是 plain JavaScript,沒有 build scripts;pnpm ≥ 10 的 build allowance 不需要。安裝後用 --dump-config 查看配置層:
dsh --profile <name> --dump-config
輸出中查找層標記:
# == dsh-session-header
確認存在後啓動:
dsh --profile <name>
如果使用本地 checkout 並通過 --patch overlay 加載,可以在 overlay 中插入插件配置。下面的 name 必須寫成插件入口文件的絕對路徑:
# my-overlay.yml
- insert:
- id: session-header
name: /absolute/path/to/dsh-session-header/index.js
config:
header: x-session-id
# value: my-fixed-session-id
然後運行:
dsh --patch ./my-overlay.yml
配置項:
header:要注入的 header 名,默認x-session-id。value:可選;設置後每次調用使用這個固定值,否則使用當次調用的 session id。
典型用法¶
把某個 provider 的 baseURL 指向一個會記錄請求頭的網關,或一個能回顯請求頭的 endpoint,然後開始一次會話。請求頭應類似:
x-session-id: ba104306-a748-4052-a6e3-ab60be2e4c1f
每次調用使用當次調用的 session id;併發會話通過 AsyncLocalStorage 按調用解析 header 值。
適用場景與注意¶
適合在網關、代理或審計系統中按會話頭做路由、緩存、審計的 DSH 使用場景,也適合需要覆蓋 fetch 型 LLM adapter 的配置。
使用前注意:
- 插件以當前
dsh進程權限運行;安裝前應檢查源碼與許可證。 - 插件是 provider-neutral,並且不會覆蓋已經存在的 header。
llm-deepseekadapter 本身會發送x-deepseek-harness-session-id;該插件不覆蓋已有 header。 - 沒有可用 session id 且未配置固定值時,調用不會收到 header。
- 插件運行時會 patch
globalThis.fetch,卸載後會恢復原fetch。
鏈接¶
- 社區目錄頁:https://www.skillhub.cn/plugins/homily707/dsh-session-header
- GitHub:https://github.com/homily707/dsh-session-header