DeepSeek Harness 會話重命名插件

前言

DeepSeek Harness(DSH)把對話重命名能力開放給用戶,但 Agent 在默認情況下無法修改當前會話的標題。當會話標題需要攜帶狀態(例如 [wip] / [pending] / [done] 前綴),或者標題需要基於已完成工件生成而不是僅基於第一條提示時,Agent 無法自己維護標題就成爲一個痛點。dsh-plugin-session-rename 插件通過給 Agent 一個原生工具,讓 Agent 可以直接調用 Cordis 的 sessionTitle.rename 服務,真實地重命名當前對話。

插件定位

  • 名稱:dsh-plugin-session-rename
  • 維護者:CCLUCKY
  • 分類:記憶
  • 功能:給 Agent 提供一個原生工具 session_rename(title: string),直接調用 Cordis 的 sessionTitle.rename(session, title) 服務,真實重命名當前對話

安裝與啓用

從 npm 官方源安裝(推薦):

dsh plugin --profile <profile> add dsh-plugin-session-rename

安裝後,插件會通過聲明 dsh.bundle.patch 自動追加到 dsh.profile.bundles,並掛載爲 session-rename 這一行。

從源碼安裝(適用於發佈前):

dsh plugin --profile <profile> add git+https://github.com/ccclucky/dsh-plugin-session-rename.git

本地 checkout 安裝(僅用於開發):

在 profile 目錄下創建或修改 cordis.patch.yml:

# ~/.dsh/profiles/<profile>/cordis.patch.yml
- insert:
    - id: session-rename
      name: './plugins/session-rename/index.js'

注意:npm、git 和本地 row 三種方式同時使用會生成重複的 session-rename 行,請只使用一種。

典型用法

Agent 可以通過自然語言請求重命名,例如:

rename this conversation to "[done] 遷移收尾"

或者 Agent 直接調用工具:

{
  "title": "[wip] 遷移進行中"
}

重命名成功後,返回如下結果:

{
  "title": "[wip] 遷移進行中",
  "eventSeq": 514,
  "source": "user"
}

插件對錯誤做了顯式處理,不會靜默失敗:

  • 空標題或僅空白字符會被拒絕,不會調用服務;
  • 無所屬 Agent 或 Agent 沒有活躍會話的調用會被拒絕;
  • 服務將標題規範化爲空時,會傳播服務的錯誤。

工作原理

每次調用 sessionTitle.rename(session, title) 會向會話日誌追加一個 session/title 事件,source: user。這帶來三個後果:

屬性 效果
可復現 對話、分叉、恢復等操作會從日誌重建標題
固定 正在進行的自動標題生成會被覆蓋,後續提示不再自動重命名
實時 會話列表和聊天頭部會在事件到達時立即重繪,無需刷新頁面

技術細節

  • 無外部依賴:插件不導入任何外部模塊,直接依賴 DSH 運行時提供的 sessionTitle 服務。
  • 零導入:註冊工具使用原始 JSON Schema,不依賴 defineTool 的類型化方言,避免加載器激活失敗。
  • 會話歸屬:模型無法操作其他會話,會話來源爲 exec.agent.session,不從工具參數傳入。
  • 兼容模式:插件通過 inject = ['tools', 'sessionTitle'] 注入依賴,當 profile 中缺少任一服務時插件保持非活躍而非報錯。
  • 生命週期:工具註冊在 ctx.effect(...) 中,禁用 row 時工具會自動註銷。

測試與兼容性

  • 運行測試:node --test(14 個契約測試,無外部依賴,無需安裝 DSH)。
  • DSH 版本:插件面向 DSH 0.2.x 插件 API,package.json 聲明 engines.dsh: ">=0.2.1-rc.2 <0.3.0"。
  • Node.js 版本:要求 >=20。

適用場景

  • 需要在會話標題中標註工作狀態(如 [wip]、[done]);
  • 標題需要基於已完成工件生成,而不是第一條提示;
  • 希望在狀態變化時由 Agent 自動修正標題,而不是依賴用戶手動操作。

注意事項

  • 插件以當前 DSH 進程的權限運行,安裝前建議閱讀源碼與許可證(MIT)。
  • 確保使用支持的 DSH 版本(0.2.x),否則安裝會被拒絕。
  • 同時使用 npm、git 和本地安裝方式會產生重複的 session-rename 行,請保持單一安裝方式。

總結

dsh-plugin-session-rename 通過一個原生工具,讓 Agent 可以在狀態變化時真實地重命名當前對話,而不是隻在模型內部修改標題。它不依賴外部庫,兼容 DSH 0.2.x,適合需要在會話標題中攜帶狀態或自動維護標題的場景。插件已在 npm 發佈 v1.0.0,支持從官方源和 GitHub 源安裝。

  • 插件目錄頁:https://www.skillhub.cn/plugins/ccclucky/dsh-plugin-session-rename
  • GitHub 倉庫:https://github.com/ccclucky/dsh-plugin-session-rename
羽毛球分组比赛记分
小程序二维码

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

小夜