前言¶
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