dsh-narrative-voice:DeepSeek Harness 請求工具代詞一致性插件

前言

在 DeepSeek Harness (DSH) 的開發中,ask_user_question 工具常用於向用戶發起交互。如果不對工具的描述做約束,模型在生成選項時容易產生視角漂移:同一個選項裏,標籤可能是“我”(用戶視角),而描述卻變成了“我”(AI視角),導致用戶無法判斷當前正在執行動作的是誰。

dsh-narrative-voice 插件通過在 prompt-assembly 階段重寫工具描述,強制 ask_user_question 中的問題、選項保持統一的敘述視角,解決這一問題。

這是什麼

這是一個 DSH bundle 插件,由 TellToday 維護。它會在 DSH 構建系統提示詞時介入,重寫 ask_user_question 工具的 questions.description 字段,植入固定的代詞規則。

插件支持兩種敘述模式,並通過 /voice 命令實時切換。它不依賴其他第三方庫,採用 MIT 許可證。

核心功能

  1. 視角重寫
    插件在 SystemPrompt.assemble() 階段監聽 system-prompt/assemble 事件,找到 ask_user_question 工具,修改其參數描述。它只處理代詞出現的地方,不強制修改不需要代詞的內容。

  2. 雙模式支持
    根據配置,支持兩種敘述方案:

    • Scheme A (voice: "ai"):選項由 AI 敘述,內部使用“我”指代 AI,“你”指代用戶。
    • Scheme B (voice: "user"):選項由用戶敘述,內部使用“我”指代用戶,“你”指代 AI。這是默認模式。
  3. 運行時控制
    通過 /voice 命令可以開啓、關閉或切換模式。該命令由宿主的 commands 服務處理,無需重啓進程即可生效。

安裝

安裝前需確保系統中 pnpm 和 git 已在 PATH 中。

dsh plugin --profile <profile> add "github:TellToday/dsh-narrative-voice#main"

安裝完成後,必須重啓 profile 的進程。對於 Web profile,請使用 dsh web 重啓。

典型用法

通過 /voice 命令控制插件行爲。命令列表如下:

命令 效果
/voice on 啓用重寫(從下一條消息開始生效)
/voice off 禁用重寫(恢復原始工具描述)
/voice user 切換至 Scheme B(用戶敘述)並啓用
/voice ai 切換至 Scheme A(AI 敘述)並啓用
/voice 顯示當前狀態(開啓/關閉 + 激活的方案)

配置與默認值

插件的默認配置在安裝時已激活,可通過 profile 的 patch 文件覆蓋。

配置項 默認值 含義
voice user 使用的敘述方案:user 或 ai
defaultActive true 是否默認啓用

若要修改默認配置,需編輯 $DSH_HOME/profiles/<profile>/cordis.patch.yml,完整替換配置段:

- id: narrative-voice
  config:
    voice: user          # user (方案B: 用戶敘述) | ai (方案A: AI敘述)
    defaultActive: true  # false = 默認禁用,需手動 /voice on

插件使用無依賴的 Standard Schema 實現進行配置校驗,無效配置會在加載時報錯。

適用場景與注意事項

  • 適用場景:僅當你的應用大量使用 ask_user_question 工具,且對交互視角的一致性有較高要求時適用。
  • 作用範圍:插件僅影響 ask_user_question 工具,不會干預其他工具或普通回覆。
  • 依賴:插件本身無運行時依賴,但安裝和運行需要宿主環境具備 pnpm 和 git。

結語

dsh-narrative-voice 是一個解決大模型視角漂移問題的輕量級插件。通過在 prompt assembly 層面介入,它確保了交互中代詞的一致性。更多細節及源碼可參考:GitHub

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

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

小夜