DSH Session Toolkit:會話工作區遷移與運行中切換 Agent 預設

前言

在 DeepSeek Harness(DSH)裏,會話歸屬哪個工作區,取決於會話頭裏的 cwd 是否與該工作區路徑一致;這條規則是推導出來的,而不是單獨存一條「成員關係」。因此,單靠瀏覽器端很難把「已經跑過幾輪」的會話挪到另一個已註冊工作區,也很難在會話已經開始之後更換 Agent 預設——官方 agentPresets.select 只接受空白會話,一旦有回合就會拋出 agent-preset/locked。

dsh-session-toolkit(GitHub:QqiqiQ/dsh-session-toolkit)在對話標題欄增加兩個按鈕,並在插件裏提供 host 端路由,用來完成上述兩類操作。下面介紹它的定位、安裝方式,以及使用時需要接受的機制與限制。

這是什麼

維護者爲 QqiqiQ,在社區插件目錄中歸類爲客戶端(面向 dsh web 注入 UI)。當前 package 版本爲 0.1.2,許可證 MIT。

一句話:在 DSH 對話頭增加 ⇄ Workspace(把工作區會話遷到另一工作區,可選歸檔原會話)和 ◈ Preset(對已開始的會話切換 Agent 預設),歷史不重寫,由 host 半與 harness API 配合完成。

核心功能

工作區遷移(⇄ Workspace)

工作區成員關係每次由 dsh-workspace 根據會話頭 cwd 過濾;attachSession 也會拒絕 cwd 不匹配的路徑。會話頭不可變,也沒有 API 能改寫 cwd,因此「遷移」實際是:在目標目錄開一條延續會話,帶上完整歷史,並在元數據裏保留 fork 來源(如 parentSession、isSeeded 等)。

插件側大致流程爲:讀源會話 → 用 seed 與 inheritedEventCount 等在目標 cwd 上 agents.create → workspace.attachSession 新 id → 可選 archiveSession 源 id。新會話會沿用源會話最後一次使用的模型(來自最後的 model/selection,或從未改選時來自最後一條 request/header 的 config),與 preset 裏的 {{model}} 解析方式一致。

遷移完成後會得到新的 session id;原會話歷史仍在原工作區,需要時可取消歸檔源會話找回。

運行中切換預設(◈ Preset)

插件先嚐試官方路徑 agentPresets.select;若會話已非空白而被拒絕,則通過 agentPresets.recompose(agent.ctx, id) 在同一 Agent 作用域上重綁,並寫入本應由 select 產生的 agent-preset/selected 事件。對話投影與瀏覽器標籤會跟隨,不會改寫已有歷史。

注意:換 preset 會改變下一輪請求的系統提示與工具目錄,提供商側 prefix 緩存從首 token 起失效;不會順帶切換模型——模型歸屬會話,不歸屬 preset。若當前回合仍在跑,host 路由會返回 session-busy。

爲何需要 host 半

瀏覽器半無法單獨完成上述語義;插件通過相對 URL 的 fetch 調用本包兩條 host 路由(刻意不走 session command,避免在會話日誌裏留下 command/run):

  • POST /session-toolkit/migrate — body:{ sessionId, workspaceId, archiveSource?, agentPreset? }
  • POST /session-toolkit/preset — body:{ sessionId, agentPreset }

請求會先經過 connection.requestRejection(登錄 cookie / loopback / 同源等檢查),僅接受 application/json,body 上限 64 KiB。

安裝與啓用

可從插件市場搜索 “Session Toolkit”,或手動安裝 release 包:

dsh plugin --profile web add https://github.com/QqiqiQ/dsh-session-toolkit/releases/latest/download/dsh-session-toolkit.tgz

安裝後重啓 dsh web。插件在 dsh 配置裏聲明 client.platform: web,並注入 @deepseek-ai/dsh-client-ui-conversation,對話頭按鈕在 web 端加載。

典型用法

  1. 在 dsh web 打開一條已有歷史的會話。
  2. 需要換工作區目錄時,點 ⇄ Workspace,選擇目標已註冊工作區;按需勾選是否歸檔源會話,必要時可同時指定 agentPreset(由 migrate 路由 body 支持)。
  3. 需要換 Agent 人格/工具集但不希望開新會話時,點 ◈ Preset,選擇目標 preset;若當前有請求在跑,需等回合結束再試,避免 session-busy。
  4. 遷移後瀏覽器會指向新 session id;若誤操作,到原工作區對源會話取消歸檔即可繼續訪問原 id 上的歷史。

適用場景與注意

適合:多工作區協作、同一對話鏈要在另一 cwd 下繼續開發;長會話中途想換 preset 又不想丟上下文。

使用前請知悉:

  • 插件以當前 dsh 進程權限運行;安裝前建議閱讀 GitHub 倉庫 源碼與 MIT 許可證。
  • 社區目錄 skillhub 插件頁 與 DeepSeek / 幻方無官方從屬關係,DSH 生態是「一切皆插件」的獨立社區分發方式,並非官方應用商店。
  • 已知限制以 README 爲準:遷移必產生新 id;preset 切換 invalidate 提供商 prefix cache;不切換模型。

結尾

dsh-session-toolkit 補的是 DSH 在「已開始的會話」上對工作區與 Agent 預設的兩處缺口:遷移用延續會話 + 可選歸檔,預設用 select 或 recompose,並統一走 host 路由。查閱詳情與 issue 見 GitHub:https://github.com/QqiqiQ/dsh-session-toolkit;目錄入口:https://www.skillhub.cn/plugins/QqiqiQ/dsh-session-toolkit。

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

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

小夜